Verbindung Server zu Gitea: Unterschied zwischen den Versionen
Saya (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
|||
| (5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
= Automatisches Git-Push-Skript für Docker-Compose = | = Automatisches Git-Push-Skript für Docker-Compose = | ||
Diese Anleitung beschreibt, wie du ein **automatisches Git-Push-Skript** | 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 | == 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. | |||
<pre class="static-code"> | |||
#!/bin/bash | #!/bin/bash | ||
| Zeile 25: | Zeile 28: | ||
git push origin main | git push origin main | ||
done | done | ||
</ | </pre> | ||
=== 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. | |||
- | <pre class="static-code"> | ||
#!/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 | |||
</pre> | |||
- | > '''Hinweis:''' Das Skript benötigt die `inotify-tools`. Installation: | ||
> <pre class="static-code"> | |||
sudo apt install inotify-tools | |||
</pre> | |||
< | |||
</ | |||
--- | --- | ||
== | == 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: | |||
<pre class="static-code"> | |||
chmod +x auto-git-push.sh | |||
</pre> | |||
< | |||
</ | |||
=== Skript kopieren (Optional) === | |||
Falls du das Skript in einen anderen Projektordner kopieren möchtest: | |||
< | <pre class="dynamic-code"> | ||
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/{{ZielOrdner}} | |||
</pre> | |||
</ | |||
'''Beispiel:''' | |||
<pre class="static-code"> | |||
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/watchtower | |||
</pre> | |||
--- | --- | ||
== | == 3️⃣ Systemd-Dienst einrichten == | ||
Damit das Skript im Hintergrund läuft, nutzen wir einen Systemd-Service. | |||
=== Service-Datei (nur zur Info) === | |||
/etc/systemd/system/auto-git-push.service | Speicherort: `/etc/systemd/system/auto-git-push.service` | ||
<pre class="static-code"> | |||
< | |||
[Unit] | [Unit] | ||
Description=Auto Git Push Service %i | Description=Auto Git Push Service %i | ||
| Zeile 115: | Zeile 114: | ||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
</ | </pre> | ||
=== Dienst aktivieren & starten === | |||
Ersetze `{{Ordner}}` durch den Namen deines Projektverzeichnisses. | |||
<pre class="dynamic-code"> | |||
sudo systemctl enable auto-git-push@{{Ordner}}.service | |||
sudo systemctl start auto-git-push@{{Ordner}}.service | |||
</pre> | |||
'''Beispiel (für Ordner "tower"):''' | |||
<pre class="static-code"> | |||
sudo systemctl enable auto-git-push@tower.service | |||
sudo | sudo systemctl start auto-git-push@tower.service | ||
</ | </pre> | ||
--- | --- | ||
== | == 4️⃣ Wartung & Logs == | ||
Falls du das Skript aktualisiert hast, musst du den Dienst neu starten: | |||
<pre class="dynamic-code"> | |||
sudo systemctl restart auto-git-push@{{Ordner}}.service | |||
</pre> | |||
'''Status und Logs prüfen:''' | |||
<pre class="dynamic-code"> | |||
systemctl status auto-git-push@{{Ordner}}.service | |||
journalctl -u auto-git-push@{{Ordner}}.service -f | |||
</pre> | |||
--- | |||
== ✅ 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 | |||
Aktuelle Version vom 14. Februar 2026, 17:37 Uhr
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