3.4 KiB
Architektur & Infrastruktur
Übersicht der beteiligten Systeme und Netzwerk-Topologie.
Komponenten
| System | Rolle | Adresse |
|---|---|---|
| Hermes-Server | Assistent + Webhook-Receiver + Download-Hub | 192.168.0.80 |
| Dokploy-Host | PaaS (Docker Swarm) | 192.168.0.184 |
| Gitea | Git-Server | git.kgessner.de (K8s/Talos) |
| Proxmox | Hypervisor (Dokploy-VM + K8s-Cluster) | — |
| Netcup-Gateway | Reverse-Proxy (öffentliche IP) | 192.168.0.222 |
Netzwerk-Topologie
Internet
│
152.53.197.186 (öffentliche IP)
│
┌────────┴────────┐
│ Netcup-Gateway │ (192.168.0.222)
│ Reverse-Proxy │
└────────┬────────┘
│
┌────────────────────┼────────────────────┐
│ │ │
git.kgessner.de dokploy.kgessner.de (weitere Dienste)
│ │
▼ ▼
K8s/Talos-Cluster Docker-Swarm-Host
(auf Proxmox) (192.168.0.184)
- Gitea - Dokploy UI (:3000)
- Traefik (:80/443)
- App-Services
Wichtige Erkenntnisse
-
git.kgessner.deunddokploy.kgessner.deteilen sich die öffentliche IP152.53.197.186. Ein Reverse-Proxy routet anhand des Host-Headers. -
Gitea läuft in Kubernetes (Talos), Dokploy in Docker Swarm — zwei unterschiedliche Orchestrierungswelten auf demselben Proxmox-Host.
-
Netzwerk-Isolation: Der K8s-Cluster (Gitea) kann interne
192.168.0.x-Adressen (Hermes, Dokploy) nicht zuverlässig erreichen. Das ist der Grund, warum der Gitea-Webhook unzuverlässig ist und ein Cron-Polling-Fallback nötig wurde. -
Öffentlicher Zugriff via Reverse-Proxy:
todo.kgessner.dewird über den Reverse-Proxy (öffentliche IP152.53.197.186) auf192.168.0.184:80geleitet. Traefik routet dann anhand des Host-Headers auf die App. Dafür musstodo.kgessner.dein der Traefik-Routing-Regel (Host(...)) stehen. Dersslip.io-Trick (techno-todo.152.53.197.186.sslip.io) funktioniert nicht, weil sslip.io direkt auf die IP zeigt (ohne den Reverse-Proxy-Host-Header-Kontext).
Docker-Swarm auf Dokploy
docker service ls
# dokploy (PaaS-UI)
# dokploy-postgres (interne DB)
# dokploy-traefik (Reverse-Proxy, Ports 80/443)
# techno-todo-v2-... (diese App)
Traefik-Konfiguration
Dokploy schreibt die Routing-Regeln nach /etc/dokploy/traefik/dynamic/<app>.yml
(Bind-Mount in den Traefik-Container).
# Reload nach Config-Änderung
docker kill -s HUP dokploy-traefik
Dokploy-interne DB
PostgreSQL im Container dokploy-postgres. Nützliche Tabellen: application, gitea,
apikey, project, domain, deployment.
docker exec dokploy-postgres.1.<id> psql -U dokploy -d dokploy -c "\dt"
sslip.io — der Magic-DNS-Trick
<name>.192.168.0.184.sslip.io löst automatisch zu 192.168.0.184 auf. So braucht jede
App keine eigene DNS-Config — einfach Subdomain vor die IP setzen.