Alles was du brauchst, um APBoard zu installieren, zu konfigurieren und zu betreiben – ausführlich erklärt, auch für absolute Einsteiger.
Die empfohlene Installationsmethode. Docker kümmert sich automatisch um PHP, Apache und MariaDB — du musst nichts manuell konfigurieren. Folge dieser Schritt-für-Schritt-Anleitung.
Du brauchst einen Linux-Server mit SSH-Zugang und eine Domain. Falls du das noch nicht hast, lies zuerst Was du brauchst.
Docker ist eine Software, die Programme in isolierten Umgebungen (sogenannten Containern) ausführt. Stell dir Container wie abgeschlossene Schachteln vor: Jede Schachtel enthält alles, was das Programm braucht, und stört andere Programme nicht.
APBoard nutzt mehrere Container:
Der Vorteil: Du brauchst PHP, Apache und MariaDB nicht auf deinem Server zu installieren. Docker erledigt das für dich.
Falls Docker noch nicht auf deinem Server installiert ist, folge diesen Schritten. Verbinde dich zuerst per SSH mit deinem Server.
# Altes Docker entfernen falls vorhanden
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null
# Abhängigkeiten installieren
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# Offiziellen Docker-GPG-Key hinzufügen
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Docker-Repository hinzufügen
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker installieren
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Docker-Dienst starten und autostart aktivieren
sudo systemctl enable --now docker
# Prüfen ob Docker läuft
docker --version
docker compose version
In dieser Anleitung werden alle Befehle als root ausgeführt. Wenn du als normaler User
arbeitest, stelle sicher, dass dein User in der Gruppe docker ist:
sudo usermod -aG docker DEIN-USERNAME — danach ausloggen und neu einloggen.
Lade den APBoard-Quellcode auf deinen Server herunter. Wähle ein Verzeichnis, in dem APBoard dauerhaft liegen soll.
# In das Zielverzeichnis wechseln (z.B. /opt oder dein Home-Verzeichnis)
cd /opt
# Repository klonen
git clone https://gitlab.apboard.de/app/apboard3.git apboard
# In das APBoard-Verzeichnis wechseln
cd apboard Nach dem Klonen siehst du folgende Dateien und Ordner:
apboard/
├── docker-compose.yml # Docker-Konfiguration (Hauptdatei)
├── docker-compose.traefik.yml # Optionale Traefik-Erweiterung
├── .env.example # Vorlage für deine Konfiguration
├── Dockerfile # Baut den PHP-Container
├── src/ # APBoard PHP-Quellcode
│ ├── public/ # Web-Root (index.php, Assets)
│ ├── config/ # Konfigurationsdateien
│ ├── app/ # Anwendungslogik
│ └── ...
└── storage/ # Uploads, Logs (wird automatisch erstellt) Kopiere die Beispiel-Konfiguration und passe sie an:
cp .env.example .env
nano .env # oder: vim .env | Variable | Beispielwert | Erklärung |
|---|---|---|
APP_URL | https://forum.meine-domain.de | Die vollständige URL deines Forums inkl. https://. Kein Schrägstrich am Ende. |
APP_ENV | production | production für Live-Betrieb, development für lokale Tests. |
APP_DEBUG | false | Im Produktivbetrieb immer false! Sonst werden Fehler mit Datenbankpasswörtern angezeigt. |
APP_KEY | wird automatisch generiert | Zufälliger Sicherheitsschlüssel. Wird beim ersten Start automatisch gesetzt. |
DB_HOST | db | Hostname der Datenbank. Bei Docker immer db lassen. |
DB_PORT | 3306 | Datenbank-Port. Standard: 3306. |
DB_DATABASE | apboard | Name der Datenbank. Kann frei gewählt werden. |
DB_USERNAME | apboard | Datenbankbenutzer. |
DB_PASSWORD | sicheres-passwort-hier | Datenbankpasswort. Wähle ein langes, zufälliges Passwort. |
MYSQL_ROOT_PASSWORD | noch-sichereres-passwort | Root-Passwort für MariaDB. Nur intern genutzt, aber trotzdem sicher wählen. |
ADMIN_USERNAME | admin | Benutzername des ersten Admin-Accounts (wird beim Start erstellt). |
ADMIN_EMAIL | admin@meine-domain.de | E-Mail-Adresse des Admin-Accounts. |
ADMIN_PASSWORD | admin-passwort | Passwort für den ersten Admin. Nach dem Login sofort ändern! |
MAIL_HOST | smtp.mailbox.org | SMTP-Server für ausgehende E-Mails (Registrierung, Passwort-Reset etc.). |
MAIL_PORT | 587 | SMTP-Port. Üblicherweise 587 (STARTTLS) oder 465 (SSL). |
MAIL_USERNAME | forum@meine-domain.de | SMTP-Benutzername (meist die E-Mail-Adresse). |
MAIL_PASSWORD | smtp-passwort | SMTP-Passwort. |
MAIL_FROM_ADDRESS | forum@meine-domain.de | Absender-Adresse für ausgehende E-Mails. |
MAIL_FROM_NAME | Mein Forum | Anzeigename für ausgehende E-Mails. |
TRAEFIK_DOMAIN | forum.meine-domain.de | Domain für Traefik (nur wenn Option A mit Traefik gewählt wird). |
TRAEFIK_ACME_EMAIL | admin@meine-domain.de | E-Mail für Let's Encrypt-Zertifikate (nur Traefik). |
APBoard bietet zwei Docker-Setups:
Traefik ist ein Reverse Proxy, der automatisch HTTPS-Zertifikate von Let's Encrypt holt und verwaltet. Du brauchst nichts weiter zu konfigurieren — Traefik macht alles.
Traefik braucht die Ports 80 (HTTP) und 443 (HTTPS). Wenn auf deinem Server bereits ein Webserver (Apache, Nginx) läuft, musst du diesen zuerst stoppen oder Traefik auf anderen Ports konfigurieren.
Erstelle zuerst ein gemeinsames Docker-Netzwerk für Traefik:
docker network create traefik-public Erstelle die Traefik-Konfigurationsdatei für ACME/Let's Encrypt:
touch acme.json
chmod 600 acme.json Starte APBoard mit Traefik:
docker compose -f docker-compose.yml -f docker-compose.traefik.yml up -d Das Standalone-Setup ist einfacher: APBoard läuft auf Port 80 ohne HTTPS. Du kannst HTTPS nachträglich mit einem vorhandenen Reverse Proxy (Nginx, Apache) einrichten, oder die Option für Produktiv-Betrieb nicht empfohlen nutzen.
# Einfach starten:
docker compose up -d
Nachdem du die .env angepasst und das Setup gewählt hast:
# Container bauen und starten
docker compose up -d --build
# Logs verfolgen (Ctrl+C zum Beenden)
docker compose logs -f
# Status prüfen
docker compose ps Beim ersten Start dauert es 1–3 Minuten, bis alle Container bereit sind. Das ist normal.
APBoard erledigt beim ersten Start folgende Schritte automatisch:
.env)APP_KEY wird automatisch generiert falls noch nicht gesetzt
Öffne jetzt deinen Browser und navigiere zu https://forum.meine-domain.de (oder der URL
aus deiner .env). APBoard sollte die Startseite zeigen.
Klicke oben rechts auf Anmelden und logge dich mit dem Admin-Account ein,
den du in der .env konfiguriert hast (ADMIN_USERNAME / ADMIN_PASSWORD).
Nach dem ersten Login wirst du zum Admin-Panel weitergeleitet. Dort kannst du:
Gehe im Admin-Panel zu Forum-Struktur. Dort legst du Kategorien und Boards an. Eine typische Anfangsstruktur:
Registriere einen Test-Account, um sicherzustellen, dass E-Mails ankommen.
Wenn keine E-Mail ankommt, überprüfe die SMTP-Einstellungen in der .env.
Richte regelmäßige Backups ein. Wichtig sind:
docker compose exec db mysqldump -u root -p apboard > backup.sqlstorage/-Verzeichnis (Uploads).env-Datei| Befehl | Bedeutung |
|---|---|
docker compose ps | Status aller Container anzeigen |
docker compose logs -f | Logs aller Container in Echtzeit |
docker compose logs apboard | Logs nur des APBoard-Containers |
docker compose stop | Alle Container anhalten (Daten bleiben) |
docker compose start | Gestoppte Container wieder starten |
docker compose restart | Alle Container neu starten |
docker compose down | Container stoppen und entfernen (Daten bleiben in Volumes) |
docker compose exec apboard bash | Shell im APBoard-Container öffnen |
docker compose exec db mysql -u apboard -p | MySQL-CLI im Datenbankcontainer |
Ausführliche Informationen zum Update-Prozess findest du auf der Seite APBoard aktualisieren. Kurzversion:
cd /opt/apboard
git pull
docker compose up -d --build Prüfe die Logs:
docker compose logs apboard
docker compose logs db
Häufigste Ursache: Die .env-Variablen für die Datenbank stimmen nicht.
Prüfe insbesondere DB_PASSWORD und MYSQL_ROOT_PASSWORD —
sie müssen nach dem ersten Start konsistent sein. Wenn du sie nach dem ersten Start änderst,
musst du auch die Datenbank neu erstellen oder das Passwort in MariaDB manuell ändern.
# Prüfen welcher Prozess den Port belegt:
ss -tlnp | grep ':80'
ss -tlnp | grep ':443'
Häufig belegt Apache oder Nginx den Port. Stoppe den Dienst:
sudo systemctl stop apache2 oder sudo systemctl stop nginx.
Prüfe ob die DNS-Propagation abgeschlossen ist:
nslookup forum.meine-domain.de
# oder
dig forum.meine-domain.de +short Let's Encrypt benötigt, dass die Domain bereits öffentlich auf den Server zeigt (Port 80 erreichbar). Prüfe:
ufw allow 80)docker compose ps)Schaue in die Traefik-Logs:
docker compose logs traefik | grep -i acme
Wahrscheinlich ist APP_URL in der .env falsch gesetzt.
Der Wert muss exakt der URL entsprechen, über die das Forum erreichbar ist,
inkl. https:// und ohne abschließenden Schrägstrich.