1. Überblick
Apache Answer ist eine moderne Open-Source-Q&A-Plattform (Fragen & Antworten), entwickelt von der Apache Software Foundation. Sie basiert auf Go (Backend) und React / TypeScript (Frontend). Mit Docker lässt sie sich schnell, isoliert und updatefreundlich betreiben.
Offizielle Website: https://answer.apache.org GitHub: https://github.com/apache/answer
2. Voraussetzungen
| Komponente | Empfehlung | | ---------- | ------------------------------------- | | OS | Debian 12 / 13 (64-Bit) | | CPU | 2 Kerne oder mehr | | RAM | mind. 2 GB | | Speicher | ≥ 10 GB frei | | Ports | 80 (HTTP), 443 (HTTPS), 9080 (Answer) |
Installiere Docker + Compose
``bash sudo apt update sudo apt install -y curl ca-certificates gnupg lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo systemctl enable --now docker ``
Test:
``bash docker run hello-world ``
3. Projektverzeichnis erstellen
``bash sudo mkdir -p /opt/answer cd /opt/answer ``
4. docker-compose.yml erstellen
``bash sudo nano docker-compose.yml ``
Inhalt:
```yaml version: "3.8"
services: db: image: mariadb:11 container_name: answer_db restart: always environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: answer MYSQL_USER: answer_user MYSQL_PASSWORD: answer_pass volumes: - db_data:/var/lib/mysql networks: - answer_net
answer: image: apache/answer:latest container_name: answer_app restart: always depends_on: - db ports: - "9080:80" environment: DB_TYPE: mysql DB_HOST: db DB_USER: answer_user DB_PASSWORD: answer_pass DB_NAME: answer SERVER_PORT: 80 SITE_URL: https://qa.example.com volumes: - answer_data:/data networks: - answer_net
networks: answer_net:
volumes: db_data: answer_data: ```
5. Container starten
``bash sudo docker compose up -d ``
Status prüfen:
``bash sudo docker compose ps ``
Wenn alles funktioniert, läuft Answer unter:
`` http://SERVER-IP:9080 ``
6. Reverse Proxy mit Nginx + SSL (empfohlen)
Installiere Nginx & Certbot
``bash sudo apt install -y nginx certbot python3-certbot-nginx ``
Nginx-Konfiguration
``bash sudo nano /etc/nginx/sites-available/answer.conf ``
Inhalt:
```nginx server { listen 80; server_name qa.example.com;
location / { proxy_pass http://127.0.0.1:9080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
access_log /var/log/nginx/answer_access.log; error_log /var/log/nginx/answer_error.log; } ```
Aktiviere & teste:
``bash sudo ln -s /etc/nginx/sites-available/answer.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx ``
SSL aktivieren
``bash sudo certbot --nginx -d qa.example.com ``
Nun erreichbar unter: https://qa.example.com
7. Ersteinrichtung
Öffne die Domain im Browser: https://qa.example.com
Du wirst durch den Setup-Wizard geführt:
- Admin-Account erstellen
- Community-Name, Logo, Beschreibung
- Kategorien / Tags einrichten
8. Wartung & Updates
Logs anzeigen
``bash sudo docker compose logs -f ``
Container stoppen/starten
``bash sudo docker compose stop sudo docker compose start ``
Auf neue Version updaten
``bash sudo docker compose pull sudo docker compose up -d ``
Datenbank sichern
``bash sudo docker exec answer_db mysqldump -u root -prootpass answer > /opt/answer/backup_$(date +%F).sql ``
9. Backup & Wiederherstellung
Backup (Datenbank + Uploads):
``bash sudo tar czf /root/answer_backup_$(date +%F).tar.gz /opt/answer/ ``
Restore:
``bash sudo tar xzf /root/answer_backup_DATE.tar.gz -C / sudo docker compose up -d ``
10. Tipps & Best Practices
Sicherheit
- Stelle sicher, dass nur Ports 80/443 öffentlich erreichbar sind
- Nutze starke Passwörter für DB & Admin
fail2banaktivieren gegen Login-Angriffe- Regelmäßige Backups automatisieren (Cronjob)
Performance
- Aktiviere
proxy_cachein Nginx - Verwende SSD-Speicher für DB-Container
- Reduziere Container-Logs regelmäßig (
logrotate)
Monitoring
docker statszur Ressourcenkontrolle- Optional: Integration mit Netdata oder Prometheus
E-Mail-Integration Für Registrierungen und Benachrichtigungen:
``yaml SMTP_HOST: smtp.example.com SMTP_PORT: 587 SMTP_USER: noreply@example.com SMTP_PASSWORD: DEIN_PASSWORT ``
11. Deinstallation
``bash cd /opt/answer sudo docker compose down -v sudo rm -rf /opt/answer ``
Mit Docker lässt sich Apache Answer in wenigen Minuten produktiv einsetzen. Durch das Container-Setup ist das System leicht wartbar, update-sicher und bestens geeignet für eigene Wissenscommunities, Supportforen oder interne Q&A-Plattformen.