# Infrastructure Layer Dieses Verzeichnis enthält die Infrastruktur-Stacks, die dauerhaft laufen und unabhängig von Application-Deployments sind. ## Übersicht Die Infrastruktur besteht aus drei Core-Komponenten: 1. **Traefik** - Reverse Proxy mit SSL-Zertifikaten 2. **Gitea** - Git Server mit eigener PostgreSQL-Instanz 3. **PostgreSQL** - Shared Database für Application-Stacks ## Verzeichnisstruktur ``` infrastructure/ ├── traefik/ # Reverse Proxy & SSL │ ├── docker-compose.yml │ ├── secrets/ │ └── README.md ├── gitea/ # Git Server │ ├── docker-compose.yml │ ├── secrets/ │ └── README.md ├── postgresql/ # Shared Database │ ├── docker-compose.yml │ ├── secrets/ │ └── README.md └── README.md (dieses Dokument) ``` ## Deployment-Reihenfolge **Wichtig:** Die Stacks müssen in dieser Reihenfolge deployt werden: 1. **Traefik** (muss zuerst laufen) 2. **PostgreSQL** (wird von Application benötigt) 3. **Gitea** (nutzt Traefik für SSL) ## Quick Start ### Initial Setup ```bash # 1. Traefik deployen cd traefik docker compose up -d # 2. PostgreSQL deployen cd ../postgresql docker compose up -d # 3. Gitea deployen cd ../gitea docker compose up -d ``` ### Updates ```bash # Einzelnen Stack updaten cd docker compose pull docker compose up -d # Alle Stacks updaten ./deploy.sh all ``` ## Networks Die Infrastruktur verwendet folgende Networks: - **traefik-public** - Wird von Traefik erstellt, für externe Zugriffe - **infrastructure** - Für interne Infrastruktur-Kommunikation (Gitea ↔ PostgreSQL) - **app-internal** - Wird von PostgreSQL erstellt, für Application-Zugriff ## Secrets Secrets werden in `secrets/` Verzeichnissen pro Stack gespeichert: - `traefik/secrets/acme_email.txt` - Let's Encrypt E-Mail - `gitea/secrets/postgres_password.txt` - Gitea PostgreSQL Passwort - `postgresql/secrets/postgres_password.txt` - Application PostgreSQL Passwort **Wichtig:** Secrets-Dateien sind gitignored und müssen manuell erstellt werden. Siehe `SECRETS.md` für Details zur Secrets-Generierung. ## Troubleshooting ### Traefik nicht erreichbar ```bash cd traefik docker compose logs -f docker compose ps ``` ### PostgreSQL-Verbindungsprobleme ```bash cd postgresql docker compose logs postgres docker network inspect app-internal ``` ### Gitea nicht erreichbar ```bash cd gitea docker compose logs -f gitea docker compose ps ``` ## Weitere Dokumentation - [Traefik Stack](traefik/README.md) - [Gitea Stack](gitea/README.md) - [PostgreSQL Stack](postgresql/README.md) - [Secrets Management](SECRETS.md)