Verbindung Server zu Gitea
Automatisches Git-Push-Skript für Docker-Compose
Diese Anleitung beschreibt, wie du ein **automatisches Git-Push-Skript** einrichtest, sodass Änderungen an deiner Konfiguration automatisch in dein Gitea-Repository gepusht werden.
---
1️⃣ Skript-Versionen
Hier findest du zwei Varianten des Skripts. Wähle diejenige, die besser zu deinem Projekt passt.
Version 1: Einfach (Nur docker-compose.yml)
Dieses Skript überwacht lediglich eine einzelne Datei im aktuellen Ordner.
#!/bin/bash
# Skript im gleichen Ordner wie docker-compose.yml
FILE="docker-compose.yml"
# Zum Ordner wechseln (relativ zum Skript)
cd "$(dirname "$0")"
# Endlosschleife für automatische Commits & Push
while true; do
inotifywait -e close_write "$FILE"
git add "$FILE"
git commit -m "Auto-update: $(date '+%Y-%m-%d %H:%M:%S')"
git push origin main
done
Version 2: Erweitert (Mehrere Dateien)
Diese Version eignet sich, wenn du neben der `docker-compose.yml` auch Konfigurationsdateien (z. B. für die Homepage) überwachen willst.
#!/bin/bash
# Zum Verzeichnis des Scripts wechseln
cd "$(dirname "$0")"
# Zu überwachende Dateien
FILES=(
"docker-compose.yml"
"homepage/config/settings.yaml"
"homepage/config/services.yaml"
)
# Endlosschleife zur Überwachung
while true; do
# Warten auf Änderungen an den Dateien
inotifywait -e close_write "${FILES[@]}"
# Dateien zum Git-Index hinzufügen
git add "${FILES[@]}"
# Prüfen, ob Änderungen vorliegen
if ! git diff --cached --quiet; then
# Commit erstellen und pushen
git commit -m "Auto-update: $(date '+%Y-%m-%d %H:%M:%S')"
git push origin main
fi
done
> Hinweis: Das Skript benötigt die `inotify-tools`. Installation:
>
sudo apt install inotify-tools
---
2️⃣ Skript vorbereiten
Skript ausführbar machen
Nachdem du die Datei (z. B. als `auto-git-push.sh`) gespeichert hast, musst du sie ausführbar machen:
chmod +x auto-git-push.sh
Skript kopieren (Optional)
Falls du das Skript in einen anderen Projektordner kopieren möchtest:
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/{{ZielOrdner}}
Beispiel:
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/watchtower
---
3️⃣ Systemd-Dienst einrichten
Damit das Skript im Hintergrund läuft, nutzen wir einen Systemd-Service.
Service-Datei (nur zur Info)
Speicherort: `/etc/systemd/system/auto-git-push.service`
[Unit] Description=Auto Git Push Service %i After=network.target [Service] Type=simple User=robin WorkingDirectory=/home/robin/docker/%i ExecStart=/home/robin/docker/%i/auto-git-push.sh Restart=always [Install] WantedBy=multi-user.target
Dienst aktivieren & starten
Ersetze `Vorlage:Ordner` durch den Namen deines Projektverzeichnisses.
sudo systemctl enable auto-git-push@{{Ordner}}.service
sudo systemctl start auto-git-push@{{Ordner}}.service
Beispiel (für Ordner "tower"):
sudo systemctl enable auto-git-push@tower.service sudo systemctl start auto-git-push@tower.service
---
4️⃣ Wartung & Logs
Falls du das Skript aktualisiert hast, musst du den Dienst neu starten:
sudo systemctl restart auto-git-push@{{Ordner}}.service
Status und Logs prüfen:
systemctl status auto-git-push@{{Ordner}}.service
journalctl -u auto-git-push@{{Ordner}}.service -f
---
✅ Checkliste
- ✅ Skript gespeichert & Pfade in Version 2 angepasst
- ✅ Skript ausführbar gemacht (`chmod +x`)
- ✅ Systemd-Service aktiviert und gestartet
- ✅ Logs auf erfolgreiche Pushes überprüft