Alles was du brauchst, um APBoard zu installieren, zu konfigurieren und zu betreiben – ausführlich erklärt, auch für absolute Einsteiger.
Häufige Probleme und ihre Lösungen — geordnet nach Themenbereich. Wenn du dein Problem hier nicht findest, schau ins Forum oder öffne ein Issue auf GitLab.
Prüfe zuerst die Container-Logs:
docker compose logs apboard
docker compose logs db
docker compose ps Häufige Ursachen:
ss -tlnp | grep ':80'.env prüfendocker compose restart apboard# Welcher Prozess belegt den Port?
ss -tlnp | grep ':80'
ss -tlnp | grep ':443'
# Nginx oder Apache stoppen:
sudo systemctl stop nginx
sudo systemctl stop apache2
# Autostart deaktivieren damit es beim Reboot nicht wieder startet:
sudo systemctl disable nginx
sudo systemctl disable apache2 Symptom: Fehlermeldung „SQLSTATE[HY000] [2002] Connection refused" oder ähnliches.
DB_HOST=db in der .env? (Nicht localhost!)DB_PASSWORD) mit dem was beim ersten Start gesetzt wurde?docker compose ps# Docker: Direkt in die Datenbank einloggen zum Testen
docker compose exec db mysql -u apboard -p APBoard erkennt eine vorhandene Installation und blockiert den Installer. Falls du eine Neuinstallation erzwingen willst (Achtung: löscht alle Daten!):
# LAMP: Installations-Lock-Datei entfernen
rm /var/www/forum/storage/installed.lock
# Docker:
docker compose exec apboard rm /var/www/html/storage/installed.lock # DNS prüfen:
nslookup forum.meine-domain.de
dig forum.meine-domain.de +short
# Ist Port 80 erreichbar? (von außen)
curl -v http://forum.meine-domain.de/ Let's Encrypt / Certbot benötigt, dass Port 80 öffentlich erreichbar ist und die Domain bereits auf den Server zeigt. DNS-Propagation kann bis zu 24 Stunden dauern.
# Traefik-Logs auf ACME-Fehler prüfen:
docker compose logs traefik | grep -i "acme\|certificate\|error"
# Ist Port 80 in der Firewall frei?
ufw status | grep 80 Häufige Ursachen:
acme.json hat falsche Rechte → muss 600 sein: chmod 600 acme.json
Ursache: APP_URL in der .env stimmt nicht mit der tatsächlichen URL überein.
Der Wert muss exakt lauten, z.B. https://forum.meine-domain.de — kein abschließender Schrägstrich,
inkl. https://.
Nach Änderung der .env bei Docker:
docker compose restart apboard
Prüfe ob APP_URL mit https:// beginnt. Wenn das Forum hinter einem Reverse Proxy läuft,
stelle sicher, dass der Header X-Forwarded-Proto: https gesetzt wird.
Apache-Logs prüfen:
tail -100 /var/log/apache2/forum-error.log
# oder wenn du eigene Log-Pfade konfiguriert hast:
tail -100 /var/log/apache2/DEIN-FORUM-error.log Häufige Ursachen:
storage/ oder bootstrap/cache/APP_KEY nicht gesetzt → php artisan key:generateUrsache: mod_rewrite nicht aktiviert oder AllowOverride All fehlt.
sudo a2enmod rewrite
sudo systemctl reload apache2
Prüfe die Apache VirtualHost-Konfiguration: Im <Directory>-Block muss
AllowOverride All stehen.
Prüfe die PHP-Limits in der php.ini:
php -i | grep -E "upload_max_filesize|post_max_size|memory_limit"
Typische Werte die erhöht werden sollten:
upload_max_filesize = 20M, post_max_size = 25M.
Ändere diese in /etc/php/8.5/apache2/php.ini und lade Apache neu.
.env — Host, Port, Username, Passwort# Docker:
docker compose exec apboard php artisan tinker
# Dann: Mail::raw('Test', fn($m) => $m->to('test@example.com')->subject('Test'));
# LAMP:
php artisan tinker
Gmail erlaubt keine direkten SMTP-Verbindungen mit dem Account-Passwort wenn 2FA aktiv ist.
Erstelle ein App-Passwort unter
myaccount.google.com/apppasswords
und nutze das in der .env.
Das ist ein häufiges Problem bei günstigen VPS. Lösungen:
MAIL_FROM_ADDRESS zur Domain des Servers passtfree -hphp -r "echo opcache_get_status()['opcache_enabled'];"docker statsPrüfe die Logs auf Fehlermeldungen. Häufig hilft:
# Cache leeren:
php artisan cache:clear
php artisan config:clear
php artisan view:clear
# Oder bei Docker:
docker compose exec apboard php artisan cache:clear
docker compose exec apboard php artisan config:clear Falls das nicht hilft, spiele das Backup ein. Siehe APBoard aktualisieren → Rollback im Notfall.
# Passwort zurücksetzen (ersetze BENUTZERNAME):
# Docker:
docker compose exec apboard php artisan user:password BENUTZERNAME
# LAMP:
php artisan user:password BENUTZERNAME Schau ins APBoard Forum oder öffne ein Issue auf GitLab. Beschreibe dabei:
git log --oneline -1 oder im Admin-Panel)