kurse:youtube:digitalcraft_corestack:digitalcraft_corestack

Dies ist eine alte Version des Dokuments!


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/SD-Größe).


sudo apt install -y mc git curl wget ca-certificates gnupg
  • mc – Midnight Commander (Dateimanager)
  • git – für Repos/Tools
  • curl/wget – Download-Tools
  • gnupg/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. Zwischenverzeichnisse
  • chown 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:

  • System-Logs
  • Dienste verwalten
  • Updates
  • Speicherplatz überwachen

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


Wichtig: RAM-Limits nutzen wir mit mem_limit – das wirkt in normalem Docker Compose zuverlässig. (Hinweis: deploy.resources wird außerhalb von Docker Swarm oft ignoriert.)


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
    mem_limit: 256m

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
    mem_limit: 128m

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
Password: admin

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
    mem_limit: 256m

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

  • Existiert database/filebrowser.db?
  • Ist database/ beschreibbar für UID/GID (1000:1000)?
  • Läuft der Container mit user: „1000:1000“?

Fertig! 🎉 Dein Raspberry Pi 4 (2GB RAM) läuft jetzt stabil mit:

  • DokuWiki (Dokumentation)
  • File Browser (Dateimanagement)
  • Gogs (Git-Repository)
  • Cockpit (Systemverwaltung)

Viel Erfolg beim Test heute Abend – damit der Videodreh morgen absolut sauber läuft. 🚀

  • kurse/youtube/digitalcraft_corestack/digitalcraft_corestack.1773590946.txt.gz
  • Zuletzt geändert: 2026/03/15 17:09
  • von strangelove