Files
michaelschiemer/deployment/DEPLOYMENT_STATUS.md
2025-11-24 21:28:25 +01:00

4.2 KiB

Deployment Status

Datum: 2025-11-24
Status: Lokale Vorbereitung abgeschlossen, bereit für Server-Deployment

Abgeschlossen

Legacy-Dateien organisiert

  • NEW_ARCHITECTURE.mddeployment/legacy/
  • Alle Legacy-Stacks bereits in deployment/legacy/stacks/

Secrets erstellt

  • Infrastructure Secrets:

    • deployment/infrastructure/traefik/secrets/acme_email.txt
    • deployment/infrastructure/gitea/secrets/postgres_password.txt
    • deployment/infrastructure/gitea/secrets/redis_password.txt
    • deployment/infrastructure/postgresql/secrets/postgres_password.txt
  • Application Secrets:

    • deployment/secrets/staging/db_password.txt
    • deployment/secrets/staging/redis_password.txt
    • deployment/secrets/staging/app_key.txt
    • deployment/secrets/production/db_password.txt
    • deployment/secrets/production/redis_password.txt
    • deployment/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

  1. Passwörter synchronisieren: Die PostgreSQL-Passwörter in deployment/infrastructure/postgresql/secrets/ müssen mit denen in deployment/secrets/production/db_password.txt übereinstimmen, oder die Datenbank-Benutzer müssen entsprechend konfiguriert werden.

  2. Traefik Ports: Auf dem Server sollten Ports 80 und 443 frei sein. Falls nicht, alte Container stoppen.

  3. Networks: Die Networks traefik-public, app-internal und infrastructure werden automatisch erstellt, falls sie nicht existieren.

  4. 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

📚 Dokumentation