Zum Inhalt springen

Verbindung Server zu Gitea

Aus Home Wiki

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