Ziel: Stabiler Betrieb mit
DokuWiki,
File Browser,
Cockpit
und Gogs (Git) auf einem Raspberry Pi 4 mit 2GB RAM.
Wichtig: Alle Befehle sind copy-paste-fertig.
Alles hier ist so geschrieben, dass du es 1:1 ins Terminal kopieren kannst. Unter jedem Block steht kurz, was er macht.
getconf LONG_BIT
Ausgabe: 64 → Dein System läuft in 64-Bit (wichtig für Docker-Images).
free -h
Zeigt freien RAM an (ideal: möglichst viel frei vor dem Start).
df -h
Zeigt freien Speicherplatz (mind. 10GB frei auf / empfohlen).
sudo apt update && sudo apt full-upgrade -y sudo reboot
Aktualisiert alle Pakete und startet neu (wichtig nach Kernel-Updates).
Optional (nur Raspberry Pi OS):
sudo raspi-config
→ Advanced Options → Expand Filesystem (nutze die volle SSD-Größe).
sudo apt install -y mc git curl wget ca-certificates gnupg
mc – Midnight Commander (Dateimanager)git – für Repos/Toolscurl/wget – Download-Toolsgnupg/ca-certificates – für Docker-Repo
Root: /srv/docker/corestack
Pro Dienst ein Ordner:
/srv/docker/corestack/wikicore (DokuWiki)/srv/docker/corestack/filebrowser (File Browser)/srv/docker/corestack/gogs (Git-Repository)/srv/docker/corestack/shared (Gemeinsame Daten)sudo mkdir -p /srv/docker/corestack/{wikicore,filebrowser,gogs,shared} sudo chown -R $USER:$USER /srv/docker/corestack
Erklärung:
mkdir -p erstellt alle Ordner inkl. Zwischenverzeichnissechown setzt dich als Besitzer (im CoreStack weniger sudo nötig)cd /srv/docker/corestack
Ab hier arbeitest du im CoreStack-Root.
sudo apt install -y cockpit sudo systemctl enable --now cockpit.socket
Zugriff:
https://<PI-IP>:9090
Nutze Cockpit für:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") 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-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER newgrp docker docker version docker compose version
Test:
docker run --rm hello-world
→ Sollte „Hello from Docker!“ ausgeben.
docker network create dc-net docker network ls | grep dc-net
Zweck: Alle Container kommunizieren über dc-net (z. B. dc-gogs statt IP-Adressen).
Pfad: /srv/docker/corestack/wikicore/
Datei: /srv/docker/corestack/wikicore/.env
TZ=Europe/Berlin PUID=1000 PGID=1000 WIKICORE_PORT=8080
Hinweis: PUID/PGID prüfen:
id -u id -g
Datei: /srv/docker/corestack/wikicore/docker-compose.yml
services: wikicore: image: lscr.io/linuxserver/dokuwiki:latest container_name: dc-wikicore environment: - TZ=${TZ} - PUID=${PUID} - PGID=${PGID} volumes: - ./config:/config ports: - "${WIKICORE_PORT}:80" networks: - dc-net restart: unless-stopped networks: dc-net: external: true
cd /srv/docker/corestack/wikicore docker compose up -d docker compose ps
Zugriff:
http://<PI-IP>:8080
Pfad: /srv/docker/corestack/filebrowser/
Warum dieser Fix wichtig ist: File Browser nutzt eine SQLite-DB. Wenn die DB-Datei/der DB-Ordner nicht existiert oder nicht beschreibbar ist, startet der Container zwar ggf. – aber Settings/Login/Initialisierung gehen schief. Lösung: DB-Datei einmalig anlegen + Rechte sauber setzen.
cd /srv/docker/corestack/filebrowser # Ordnerstruktur anlegen (config + database sind Pflicht) mkdir -p config database # DB-Datei manuell anlegen (WICHTIG!) touch database/filebrowser.db # Rechte setzen (Standard-User 1000:1000) sudo chown -R 1000:1000 config database
Datei: /srv/docker/corestack/filebrowser/.env
TZ=Europe/Berlin PUID=1000 PGID=1000 FILEBROWSER_PORT=8081
Datei: /srv/docker/corestack/filebrowser/docker-compose.yml
services: filebrowser: image: filebrowser/filebrowser:latest container_name: dc-filebrowser user: "${PUID}:${PGID}" ports: - "${FILEBROWSER_PORT}:80" volumes: - /srv/docker/corestack/shared:/srv - ./config:/config - ./database:/database command: > --database /database/filebrowser.db --root /srv --port 80 networks: - dc-net restart: unless-stopped networks: dc-net: external: true
cd /srv/docker/corestack/filebrowser docker compose up -d docker compose ps
Zugriff:
http://<PI-IP>:8081
Standard-Login (bei neuer DB):
Username: admin
Für das Passwort führen wir einmal
docker logs --tail 200 dc-filebrowser
aus und kopieren uns das Passwort einmal herraus.
Tipp: Direkt nach dem ersten Login Passwort ändern.
Pfad: /srv/docker/corestack/gogs/
Datei: /srv/docker/corestack/gogs/.env
TZ=Europe/Berlin GOGS_HTTP_PORT=3000 GOGS_SSH_PORT=2222
Datei: /srv/docker/corestack/gogs/docker-compose.yml
services: gogs: image: gogs/gogs:latest container_name: dc-gogs environment: - TZ=${TZ} volumes: - ./data:/data ports: - "${GOGS_HTTP_PORT}:3000" - "${GOGS_SSH_PORT}:22" networks: - dc-net restart: unless-stopped networks: dc-net: external: true
cd /srv/docker/corestack/gogs docker compose up -d docker compose ps
1. Öffne ''http://<PI-IP>:3000'' 2. **Datenbank:** Wähle **SQLite3** (kein PostgreSQL nötig) 3. **Domain:** ''<PI-IP>'' (oder Hostname, falls DNS) 4. **SSH-Port:** ''2222'' (falls Git über SSH) 5. Admin-Benutzer erstellen und speichern
Git SSH:
ssh -p 2222 git@<PI-IP>
# 1) DokuWiki cd /srv/docker/corestack/wikicore && docker compose up -d # 2) File Browser (inkl. DB-Fix vorher!) cd /srv/docker/corestack/filebrowser && docker compose up -d # 3) Gogs cd /srv/docker/corestack/gogs && docker compose up -d
cd /srv/docker/corestack/<stack> docker compose pull docker compose up -d docker image prune -f
Wichtige Pfade sichern:
/srv/docker/corestack/wikicore/config/ (DokuWiki)/srv/docker/corestack/gogs/data/ (Gogs Repos + Config)/srv/docker/corestack/filebrowser/config/ (File Browser Settings)/srv/docker/corestack/filebrowser/database/ (File Browser DB!)/srv/docker/corestack/shared/ (Gemeinsame Daten)Backup-Befehl (Beispiel):
cd /srv/docker/corestack tar -czvf backup_$(date +%Y-%m-%d).tar.gz wikicore/config gogs/data filebrowser/config filebrowser/database shared/
Ersetze <PI-IP> durch die IP deines Raspberry Pi:
| Dienst | URL | Port |
|---|---|---|
| Gogs | http://<PI-IP>:3000 | 3000 |
| DokuWiki | http://<PI-IP>:8080 | 8080 |
| File Browser | http://<PI-IP>:8081 | 8081 |
| Cockpit | https://<PI-IP>:9090 | 9090 |
sudo apt install -y htop htop
Docker live prüfen:
docker stats
Ziel: Unter Last möglichst unter ~1.8GB RAM bleiben (sonst Swapping → Performance-Einbruch).
# Status docker ps -a # Logs (Beispiel) docker logs --tail 120 dc-filebrowser docker logs --tail 120 dc-wikicore docker logs --tail 120 dc-gogs # Ports belegt? sudo ss -tulpn | grep -E ':8080|:8081|:3000|:2222|:9090' # Rechte prüfen (File Browser) ls -la /srv/docker/corestack/filebrowser ls -la /srv/docker/corestack/filebrowser/database
File Browser DB-Fix (wenn es hakt):
database/filebrowser.db?database/ beschreibbar für UID/GID (1000:1000)?user: „1000:1000“?Fertig! 🎉 Dein Raspberry Pi 4 (2GB RAM) läuft jetzt stabil mit: