No description
Find a file
deko 72a602c3fc Fix README: correct deploy command and add bulk update workflow
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 13:25:38 +02:00
adguard Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
arr Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
crowdsec Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
crowdsec-dashboard Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
diun Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
dkrtn-nginx Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
docker-registry Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
dockhand Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
docmost Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
drawio Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
forgejo Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
ganymede Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
hawser Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
homepage Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
ifconfig Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
imapsync Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
inadyn Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
it-tools Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
kitchenowl Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
linkding Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
linkwarden Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
netbootxyz Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
open-webui Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
radicale Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
rustlog Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
rustlog-redirect Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
step-ca Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
ta-symlinks Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
traefik Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
tubearchivist Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
twitch-miner Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
vaultwarden Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
vpn Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
ytptube Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
.gitignore Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
compose-to-env.sh Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
extract-env-from-git.sh Initial commit (history cleaned) 2026-04-16 13:24:04 +02:00
README.md Fix README: correct deploy command and add bulk update workflow 2026-04-16 13:25:38 +02:00

Docker Stacks

Docker Swarm Stacks für die Heiminfrastruktur unter dkrtn.de.

Voraussetzungen

  • Docker Swarm (aktiv)
  • Netzwerk traefik-public vorhanden
  • Traefik als Reverse Proxy läuft
  • PostgreSQL erreichbar unter 172.20.10.152:5432

Stack-Übersicht

Infrastruktur

Stack Beschreibung Domain
traefik Reverse Proxy, TLS-Terminierung, CrowdSec-Plugin traefik.home.dkrtn.de
step-ca Interne Certificate Authority für *.home.dkrtn.de step-ca.home.dkrtn.de
crowdsec Intrusion Prevention System, WAF
crowdsec-dashboard Metabase-Dashboard für CrowdSec crowdsec.home.dkrtn.de
inadyn Dynamic DNS Client
hawser Docker Socket Proxy (global, alle Worker-Nodes)
docker-registry Private Registry + Web-UI + Docker Hub Cache registry.home.dkrtn.de
dockhand Docker Management UI dockhand.home.dkrtn.de
diun Docker Image Update Notifier
homepage Startseite / Dashboard homepage.home.dkrtn.de

Netzwerk & DNS

Stack Beschreibung Domain
adguard DNS-Filter, Ad-Blocking adguard.home.dkrtn.de
netbootxyz Netzwerk-Boot + dnsmasq
ifconfig IP-Info-Service mit GeoIP ifconfig.dkrtn.de / ifconfig.home.dkrtn.de

Git & CI

Stack Beschreibung Domain
forgejo Git-Hosting, CI-Runner git.dkrtn.de / git.home.dkrtn.de

Media & Downloads

Stack Beschreibung Domain
arr Sonarr, Radarr, Bazarr, Jellyseerr, Recyclarr *.home.dkrtn.de
vpn Gluetun (Mullvad WireGuard) + SABnzbd + Prowlarr sabnzbd.home.dkrtn.de
tubearchivist YouTube-Archiv (Elasticsearch + Redis) tubearchivist.home.dkrtn.de
ta-symlinks Cron-Job: TubeArchivist Symlink-Manager
ganymede Twitch VOD-Downloader ganymede.home.dkrtn.de
twitch-miner Twitch Channel Points Miner twitch-miner.home.dkrtn.de
ytptube YouTube-Downloader ytptube.home.dkrtn.de

Produktivität

Stack Beschreibung Domain
vaultwarden Passwortmanager (Bitwarden-kompatibel) vault.dkrtn.de / vault.home.dkrtn.de
docmost Kollaboratives Wiki wiki.dkrtn.de / docmost.home.dkrtn.de
kitchenowl Meal-Planner kitchenowl.dkrtn.de / kitchenowl.home.dkrtn.de
linkding Bookmark-Manager linkding.home.dkrtn.de
linkwarden Link- & Artikel-Manager linkwarden.home.dkrtn.de
radicale CalDAV/CardDAV-Server contacts.dkrtn.de / radicale.home.dkrtn.de
open-webui LLM-Interface (Ollama-Frontend) openwebui.home.dkrtn.de
drawio Diagramm-Editor drawio.home.dkrtn.de
it-tools Sammlung von IT-Utilities it-tools.home.dkrtn.de
imapsync E-Mail-Sync (einmalig, replicas=0)

Web & Sonstiges

Stack Beschreibung Domain
dkrtn-nginx Statische Website dkrtn.de
rustlog Twitch-Chat-Logs mit ClickHouse rustlog.home.dkrtn.de
rustlog-redirect Nginx-Redirect für Rustlog rustlog-redirect.home.dkrtn.de

.env Dateien

Alle sensiblen Werte (Passwörter, API-Keys, Tokens) werden über .env Dateien pro Stack verwaltet. Diese Dateien sind in .gitignore eingetragen und werden nicht committed.

Struktur

Jeder Stack hat eine eigene .env Datei im jeweiligen Verzeichnis:

docker-stacks/
├── forgejo/
│   ├── docker-compose.yml
│   └── .env              ← nicht im Git
├── vaultwarden/
│   ├── docker-compose.yml
│   └── .env              ← nicht im Git
└── ...

.env Datei neu anlegen

Beim erstmaligen Einrichten oder nach einem frischen git clone fehlen die .env Dateien. Sie müssen manuell angelegt werden.

Beispiel für einen Stack:

cd forgejo/
cp .env.example .env    # falls vorhanden
# oder manuell erstellen:
nano .env

Inhalt entnehmen aus der docker-compose.yml — alle ${VAR}-Referenzen müssen in der .env definiert sein.

Stacks mit .env Dateien

Stack Variablen
crowdsec BOUNCER_KEY_TRAEFIK
diun FORGEJO_URL, FORGEJO_TOKEN, FORGEJO_REPO
docker-registry SECRET_KEY_BASE, BASIC_AUTH_USER, BASIC_AUTH_PASSWORD, REGISTRY_PROXY_USERNAME, REGISTRY_PROXY_PASSWORD
docmost APP_URL, APP_SECRET, DATABASE_URL, REDIS_URL
forgejo FORGEJO__database__*, FORGEJO__server__*, FORGEJO__security__*, FORGEJO__mailer__*, FORGEJO_RUNNER_REGISTRATION_TOKEN
ganymede DB_HOST, DB_USER, DB_PASS, DB_NAME, TWITCH_CLIENT_ID, TWITCH_CLIENT_SECRET
ifconfig GEOIPUPDATE_ACCOUNT_ID, GEOIPUPDATE_LICENSE_KEY, IFCONFIG_HOSTNAME
imapsync IMAP_HOST1, IMAP_USER1, IMAP_PASSWORD1, IMAP_HOST2, IMAP_USER2, IMAP_PASSWORD2
kitchenowl FRONT_URL, DB_HOST, DB_NAME, DB_USER, DB_PASSWORD, JWT_SECRET_KEY
linkding LD_SUPERUSER_NAME, LD_SUPERUSER_PASSWORD
linkwarden DATABASE_URL, NEXTAUTH_SECRET, NEXTAUTH_URL, BASE_URL
open-webui OLLAMA_BASE_URL
rustlog CLICKHOUSE_DB, CLICKHOUSE_PASSWORD
ta-symlinks TA_API_TOKEN, TA_HOST, TA_HOSTNAME
traefik DODE_TOKEN
tubearchivist TA_HOST, TA_USERNAME, TA_PASSWORD, ELASTIC_PASSWORD
vaultwarden DOMAIN, DATABASE_URL

Stack deployen

docker stack deploy liest .env Dateien nicht automatisch — die Variablen müssen vorher in die Shell geladen werden:

cd <stack>/
set -a && source .env && set +a
docker stack deploy -c docker-compose.yml <stack-name>

Stack aktualisieren (Einzeln)

cd <stack>/
set -a && source .env && set +a
docker stack deploy -c docker-compose.yml <stack-name>

Swarm updated nur geänderte Services, laufende Container bleiben unberührt.

Alle Stacks aktualisieren

Nach einem git pull alle Stacks mit .env neu deployen:

git pull
for dir in /docker_data/stacks/*/; do
    compose="${dir}docker-compose.yml"
    env="${dir}.env"
    [[ -f "$compose" && -f "$env" ]] || continue
    grep -q '\${' "$compose" || continue
    stack=$(basename "$dir")
    echo "Deploying $stack..."
    (cd "$dir" && set -a && source .env && set +a && docker stack deploy -c docker-compose.yml "$stack")
done

Stack entfernen

docker stack rm <stack-name>