APBoard v3 · Dokumentation

Dokumentation

Alles was du brauchst, um APBoard zu installieren, zu konfigurieren und zu betreiben – ausführlich erklärt, auch für absolute Einsteiger.

APBoard Dokumentation Installation mit Docker

APBoard mit Docker installieren

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.

Voraussetzungen

Du brauchst einen Linux-Server mit SSH-Zugang und eine Domain. Falls du das noch nicht hast, lies zuerst Was du brauchst.

1. Was ist Docker?

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:

  • apboard — der PHP-Anwendungscontainer (Apache + PHP 8.5)
  • db — die Datenbank (MariaDB)
  • traefik (optional) — Reverse Proxy mit automatischem HTTPS

Der Vorteil: Du brauchst PHP, Apache und MariaDB nicht auf deinem Server zu installieren. Docker erledigt das für dich.

2. Docker installieren

Falls Docker noch nicht auf deinem Server installiert ist, folge diesen Schritten. Verbinde dich zuerst per SSH mit deinem Server.

Ubuntu / Debian (empfohlen)

bash
# 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
Docker als root oder normaler User?

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.

3. APBoard-Repository klonen

Lade den APBoard-Quellcode auf deinen Server herunter. Wähle ein Verzeichnis, in dem APBoard dauerhaft liegen soll.

bash
# 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

Verzeichnisstruktur

Nach dem Klonen siehst du folgende Dateien und Ordner:

text
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)

4. .env konfigurieren

Kopiere die Beispiel-Konfiguration und passe sie an:

bash
cp .env.example .env
nano .env   # oder: vim .env

Alle .env-Variablen im Überblick

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).

5. Setup wählen: Traefik oder Standalone

APBoard bietet zwei Docker-Setups:

Option A: Mit Traefik (empfohlen für neue Server)

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.

Ports 80 und 443 müssen frei sein

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.

Traefik Minimal-Setup

Erstelle zuerst ein gemeinsames Docker-Netzwerk für Traefik:

bash
docker network create traefik-public

Erstelle die Traefik-Konfigurationsdatei für ACME/Let's Encrypt:

bash
touch acme.json
chmod 600 acme.json

Starte APBoard mit Traefik:

bash
docker compose -f docker-compose.yml -f docker-compose.traefik.yml up -d

Option B: Standalone (ohne Traefik)

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.

bash
# Einfach starten:
docker compose up -d

6. APBoard starten

Nachdem du die .env angepasst und das Setup gewählt hast:

bash
# 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.

7. Was beim Start automatisch passiert

APBoard erledigt beim ersten Start folgende Schritte automatisch:

  • Datenbanktabellen werden angelegt (Migrations)
  • Ein Admin-Account wird erstellt (mit den Daten aus der .env)
  • Standard-Konfiguration wird in der Datenbank gespeichert
  • Ein Beispiel-Board und eine Beispiel-Kategorie werden erstellt
  • Der APP_KEY wird automatisch generiert falls noch nicht gesetzt
Fertig!

Öffne jetzt deinen Browser und navigiere zu https://forum.meine-domain.de (oder der URL aus deiner .env). APBoard sollte die Startseite zeigen.

8. Erster Login

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:

  • Das Admin-Passwort ändern (unbedingt sofort tun!)
  • Den Forum-Titel und die Beschreibung anpassen
  • Kategorien und Boards anlegen
  • Das Design auswählen

9. Nach der Installation

Forum-Struktur einrichten

Gehe im Admin-Panel zu Forum-Struktur. Dort legst du Kategorien und Boards an. Eine typische Anfangsstruktur:

  • Kategorie: Allgemeines
  • Board: Vorstellungen, Off-Topic
  • Kategorie: Themenspezifisch
  • Board: [Dein Hauptthema]

E-Mail testen

Registriere einen Test-Account, um sicherzustellen, dass E-Mails ankommen. Wenn keine E-Mail ankommt, überprüfe die SMTP-Einstellungen in der .env.

Backups einrichten

Richte regelmäßige Backups ein. Wichtig sind:

  • Die Datenbank: docker compose exec db mysqldump -u root -p apboard > backup.sql
  • Das storage/-Verzeichnis (Uploads)
  • Die .env-Datei

10. Nützliche Docker-Befehle

BefehlBedeutung
docker compose psStatus aller Container anzeigen
docker compose logs -fLogs aller Container in Echtzeit
docker compose logs apboardLogs nur des APBoard-Containers
docker compose stopAlle Container anhalten (Daten bleiben)
docker compose startGestoppte Container wieder starten
docker compose restartAlle Container neu starten
docker compose downContainer stoppen und entfernen (Daten bleiben in Volumes)
docker compose exec apboard bashShell im APBoard-Container öffnen
docker compose exec db mysql -u apboard -pMySQL-CLI im Datenbankcontainer

11. APBoard aktualisieren

Ausführliche Informationen zum Update-Prozess findest du auf der Seite APBoard aktualisieren. Kurzversion:

bash
cd /opt/apboard
git pull
docker compose up -d --build

12. Fehlerbehebung

Container startet nicht

Prüfe die Logs:

bash
docker compose logs apboard
docker compose logs db

Datenbank-Verbindungsfehler

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.

Port 80 / 443 bereits belegt

bash
# 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.

Domain zeigt nicht auf den Server

Prüfe ob die DNS-Propagation abgeschlossen ist:

bash
nslookup forum.meine-domain.de
# oder
dig forum.meine-domain.de +short

HTTPS-Zertifikat wird nicht ausgestellt (Traefik)

Let's Encrypt benötigt, dass die Domain bereits öffentlich auf den Server zeigt (Port 80 erreichbar). Prüfe:

  • Ist Port 80 in der Firewall freigegeben? (ufw allow 80)
  • Zeigt die Domain bereits auf die Server-IP?
  • Läuft Traefik? (docker compose ps)

Schaue in die Traefik-Logs:

bash
docker compose logs traefik | grep -i acme

Seite lädt, aber CSS / Bilder fehlen

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.