From d845041a2542a235bcf45c368b6129e1785e8012 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 30 Jul 2026 15:56:36 +0200 Subject: [PATCH] stack: provisionierbar machen - Projektname thread-net-git fest in der Compose (name:) -- Volume-Bezug - gitea auf 1.27.0 gepinnt (Ist-Stand; :latest war unkontrolliert) - gitea-data als external deklariert: Compose kann die Produktivdaten weder anlegen noch loeschen - letsencrypt vom Portainer-Bind ./letsencrypt auf Named Volume umgestellt - cadvisor aufgenommen (lief bisher ausserhalb der Compose-Definition) Co-Authored-By: Claude Fable 5 --- .gitignore | 2 ++ docker-compose.yml | 43 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cd0b9d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +runner-data/ diff --git a/docker-compose.yml b/docker-compose.yml index f9a91f5..960fc62 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,12 @@ +# Stack "thread-net-git" (CFGMON): Traefik + Gitea + cAdvisor. +# Abgeloest aus Portainer (Stack-ID 8) am 2026-07-30. +# +# WICHTIG: Der Compose-Projektname MUSS "thread-net-git" bleiben (siehe +# "name:" unten), sonst findet Compose das bestehende Gitea-Datenvolumen +# nicht und die Traefik/Portainer-Historie bricht. Deploy immer aus diesem +# Verzeichnis: docker compose up -d +name: thread-net-git + services: reverse-proxy: #lol image: traefik:v3.7.9 @@ -24,11 +33,20 @@ services: - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - - "./letsencrypt:/letsencrypt" + # Named Volume statt frueherem Portainer-Bind ./letsencrypt: enthaelt + # acme.json (LE-Account + Zertifikate rohana/selendis). Verlust erzwingt + # eine Neuausstellung, die an der Firewall scheitert (80/443 nur fuer + # die User-IP offen) -- Volume niemals loeschen. Befuellung beim + # Erst-Deploy: siehe README. + - letsencrypt:/letsencrypt networks: - traefik + gitea: - image: gitea/gitea:latest + # Gepinnt statt :latest (Ist-Stand der Migration). NIEMALS auf eine + # aeltere Version wechseln -- die SQLite-DB kennt kein Downgrade. + image: gitea/gitea:1.27.0 + restart: always environment: - USER_UID=1000 - USER_GID=1000 @@ -44,7 +62,21 @@ services: - traefik.http.services.gitea.loadbalancer.server.port=3000 networks: - traefik + + cadvisor: + # Stand vorher NICHT in der Portainer-Compose (war manuell in den Stack + # gehaengt). Prometheus (monitoring-Stack) scrapt "cadvisor:8080" ueber + # das gemeinsame traefik-Netz -- container_name daher fest. + image: gcr.io/cadvisor/cadvisor:v0.49.1 + container_name: cadvisor restart: always + volumes: + - /:/rootfs:ro + - /var/run:/var/run:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro + networks: + - traefik networks: traefik: @@ -52,4 +84,11 @@ networks: default: volumes: + # Produktivdaten (Repos, SQLite-DB, LFS, Packages, SSH-Hostkeys). + # external, damit Compose das Volume weder anlegen noch loeschen kann: + # ein Deploy mit falschem Projektnamen schlaegt laut fehl, statt leise + # ein leeres Volume zu erzeugen. gitea-data: + external: true + name: thread-net-git_gitea-data + letsencrypt: