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.
This commit is contained in:
Stefan Mogeritsch 2026-03-05 13:08:44 +01:00
parent 9b40f84e40
commit d142f2da0e
2 changed files with 151 additions and 0 deletions

22
config/scripts/deploy.sh Normal file
View File

@ -0,0 +1,22 @@
#!/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!"

View File

@ -0,0 +1,129 @@
---
type: Guide
status: ACTIVE
owner: DevOps Engineer
last_update: 2026-03-05
tags: [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:
```bash
ssh user@zora-ip
cd ~/meldestelle
```
**WICHTIG:** Falls dort bereits Konfigurationsdateien liegen, erstelle ein Backup:
```bash
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.
```bash
# 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:
```bash
cp .env.example .env
```
2. Bearbeite die Datei:
```bash
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`:**
```bash
#!/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:
```bash
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!