meldestelle/docs/07_Infrastructure/Guides/Setup_Git_Deployment_Zora.md
Stefan Mogeritsch d142f2da0e docs: add guide for Git-based deployment on Zora and deployment script
Introduced a comprehensive guide on setting up Git-based deployment for the "Zora" server, including environment setup, repository initialization, and deployment workflow. Added `deploy.sh` script to streamline updates and restarts.
2026-03-05 13:08:44 +01:00

3.1 KiB

type status owner last_update tags
Guide ACTIVE DevOps Engineer 2026-03-05
deployment
git
zora
docker

🚀 Guide: Git-basiertes Deployment auf Zora einrichten

Dieser Guide beschreibt, wie du den Produktions-Server "Zora" so konfigurierst, dass er Updates direkt aus dem Gitea-Repository zieht. Dies stellt sicher, dass nicht nur die Docker-Images, sondern auch die docker-compose.yaml Konfigurationen immer synchron sind.

📋 Voraussetzungen

  • SSH-Zugriff auf Zora (ssh user@10.0.0.xx).
  • git und docker sind auf Zora installiert.
  • Ein Gitea-Account mit Zugriff auf das meldestelle Repository.

🛠️ Schritt-für-Schritt Anleitung

1. Projektverzeichnis vorbereiten

Verbinde dich mit Zora und gehe in das Zielverzeichnis:

ssh user@zora-ip
cd ~/meldestelle

WICHTIG: Falls dort bereits Konfigurationsdateien liegen, erstelle ein Backup:

mkdir -p ../backup_meldestelle_$(date +%F)
cp * ../backup_meldestelle_$(date +%F)/

2. Git-Repository initialisieren

Wir verwandeln den Ordner in ein Git-Repo, das mit Gitea verknüpft ist.

# Git initialisieren
git init

# Remote Origin hinzufügen (HTTPS)
git remote add origin https://git.mo-code.at/mocode-software/meldestelle.git

# Neueste Änderungen holen
git fetch origin

# Hard Reset auf den main-Branch (ACHTUNG: Überschreibt lokale Änderungen!)
git reset --hard origin/main

Jetzt sollten alle dc-*.yaml Dateien und Skripte im Ordner liegen.

3. Environment-Variablen (.env) konfigurieren

Die .env Datei enthält Geheimnisse und wird nicht in Git gespeichert.

  1. Kopiere die Vorlage:

    cp .env.example .env
    
  2. Bearbeite die Datei:

    nano .env
    
  3. Wichtige Anpassungen für Production:

    • KC_HOSTNAME=auth.mo-code.at
    • KC_ISSUER_URI=https://auth.mo-code.at/realms/meldestelle
    • KC_JWK_SET_URI=http://keycloak:8080/realms/meldestelle/protocol/openid-connect/certs
    • Setze starke Passwörter für Datenbank, Keycloak und Grafana!

4. Deployment-Skript einrichten

Das Skript config/scripts/deploy.sh liegt nun im Repo bereit (sobald wir es gepusht haben). Du kannst es direkt nutzen oder manuell anlegen:

Inhalt von deploy.sh:

#!/bin/bash
# deploy.sh - Update & Restart Meldestelle Stack

echo "🚀 Starte Deployment..."

# 1. Neueste Konfiguration holen
echo "   -> Git Pull..."
git pull origin main

# 2. Neue Images laden
echo "   -> Docker Pull..."
docker compose pull

# 3. Container neu starten (nur geänderte)
echo "   -> Docker Up..."
docker compose up -d --remove-orphans

# 4. Aufräumen
echo "   -> Pruning old images..."
docker image prune -f

echo "✅ Deployment erfolgreich!"

Mache das Skript ausführbar:

chmod +x config/scripts/deploy.sh
# Optional: Symlink ins Root
ln -s config/scripts/deploy.sh deploy.sh

🔄 Workflow für Updates

Wenn du Code oder Konfiguration gepusht hast und die CI-Pipeline durchgelaufen ist:

  1. SSH auf Zora.
  2. cd ~/meldestelle
  3. ./deploy.sh

Das System ist nun auf dem neuesten Stand!