Some checks failed
Deploy Application / deploy (push) Has been cancelled
4.2 KiB
4.2 KiB
Deployment Status
Datum: 2025-11-24
Status: Lokale Vorbereitung abgeschlossen, bereit für Server-Deployment
✅ Abgeschlossen
Legacy-Dateien organisiert
NEW_ARCHITECTURE.md→deployment/legacy/- Alle Legacy-Stacks bereits in
deployment/legacy/stacks/
Secrets erstellt
-
✅ Infrastructure Secrets:
deployment/infrastructure/traefik/secrets/acme_email.txtdeployment/infrastructure/gitea/secrets/postgres_password.txtdeployment/infrastructure/gitea/secrets/redis_password.txtdeployment/infrastructure/postgresql/secrets/postgres_password.txt
-
✅ Application Secrets:
deployment/secrets/staging/db_password.txtdeployment/secrets/staging/redis_password.txtdeployment/secrets/staging/app_key.txtdeployment/secrets/production/db_password.txtdeployment/secrets/production/redis_password.txtdeployment/secrets/production/app_key.txt
Infrastructure Stacks (lokal)
- ✅ Gitea Stack: Läuft erfolgreich
- ✅ PostgreSQL Stack: Läuft erfolgreich
- ⚠️ Traefik Stack: Port 443 bereits belegt (lokale Entwicklung)
Application (lokal)
- ✅ PHP: Läuft
- ✅ Nginx (Web): Läuft
- ✅ Redis: Läuft
- ✅ Queue Worker: Läuft
- ✅ MinIO: Läuft
📋 Nächste Schritte für Production-Deployment
1. Secrets auf Server kopieren
# Auf dem Server: Secrets-Verzeichnisse erstellen
ssh production "mkdir -p /home/deploy/infrastructure/{traefik,gitea,postgresql}/secrets"
ssh production "mkdir -p /home/deploy/michaelschiemer/current/deployment/secrets/{staging,production}"
# Secrets kopieren (von lokalem Rechner)
scp deployment/infrastructure/traefik/secrets/acme_email.txt production:/home/deploy/infrastructure/traefik/secrets/
scp deployment/infrastructure/gitea/secrets/*.txt production:/home/deploy/infrastructure/gitea/secrets/
scp deployment/infrastructure/postgresql/secrets/*.txt production:/home/deploy/infrastructure/postgresql/secrets/
scp deployment/secrets/staging/*.txt production:/home/deploy/michaelschiemer/current/deployment/secrets/staging/
scp deployment/secrets/production/*.txt production:/home/deploy/michaelschiemer/current/deployment/secrets/production/
# Berechtigungen setzen
ssh production "chmod 600 /home/deploy/infrastructure/*/secrets/*.txt"
ssh production "chmod 600 /home/deploy/michaelschiemer/current/deployment/secrets/*/*.txt"
2. Infrastructure auf Server deployen
# Code auf Server kopieren
rsync -avz --exclude 'node_modules' --exclude 'vendor' --exclude '.git' \
deployment/infrastructure/ production:/home/deploy/infrastructure/
# Infrastructure deployen
ssh production "cd /home/deploy/infrastructure && ./deploy.sh all"
3. Application auf Server deployen
# Code auf Server kopieren
rsync -avz --exclude 'node_modules' --exclude 'vendor' --exclude '.git' \
. production:/home/deploy/michaelschiemer/current/
# Application deployen
ssh production "cd /home/deploy/michaelschiemer/current && ./deployment/scripts/deploy.sh staging"
⚠️ Wichtige Hinweise
-
Passwörter synchronisieren: Die PostgreSQL-Passwörter in
deployment/infrastructure/postgresql/secrets/müssen mit denen indeployment/secrets/production/db_password.txtübereinstimmen, oder die Datenbank-Benutzer müssen entsprechend konfiguriert werden. -
Traefik Ports: Auf dem Server sollten Ports 80 und 443 frei sein. Falls nicht, alte Container stoppen.
-
Networks: Die Networks
traefik-public,app-internalundinfrastructurewerden automatisch erstellt, falls sie nicht existieren. -
Daten-Migration: Falls Daten vom alten System migriert werden müssen, siehe
MIGRATION.md.
🔍 Verifikation
Nach dem Deployment auf dem Server:
# Infrastructure prüfen
ssh production "docker ps --filter 'name=traefik\|gitea\|postgres'"
# Application prüfen
ssh production "cd /home/deploy/michaelschiemer/current && docker compose -f docker-compose.base.yml -f docker-compose.prod.yml ps"
# Health Checks
curl https://michaelschiemer.de/health
curl https://git.michaelschiemer.de