Zum Inhalt springen

Verbindung Server zu Gitea: Unterschied zwischen den Versionen

Aus Home Wiki
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers 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]]** für deine `docker-compose.yml` einrichtest, sodass Änderungen automatisch in dein [[Gitea]]-Repository gepusht werden.
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 erstellen ==
== 1️⃣ Skript-Versionen ==


Erstelle eine Datei namens `auto-git-push.sh` im gleichen Ordner wie deine `docker-compose.yml`.
Hier findest du zwei Varianten des Skripts. Wähle diejenige, die besser zu deinem Projekt passt.
[[Version 2 von autogit push]]


<syntaxhighlight lang="bash">
=== 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 26: Zeile 28:
     git push origin main
     git push origin main
done
done
</syntaxhighlight>
</pre>


> Hinweis: Das Skript verwendet `inotifywait`, um Änderungen an der `docker-compose.yml` zu erkennen. Stelle sicher, dass `inotify-tools` auf deinem Server installiert sind: 
=== Version 2: Erweitert (Mehrere Dateien) ===
> <syntaxhighlight lang="bash">
Diese Version eignet sich, wenn du neben der `docker-compose.yml` auch Konfigurationsdateien (z. B. für die Homepage) überwachen willst.
sudo apt install inotify-tools
</syntaxhighlight>


---
<pre class="static-code">
#!/bin/bash


== 2️⃣ Skript auf dem Server ablegen ==
# Zum Verzeichnis des Scripts wechseln
cd "$(dirname "$0")"


Beispiel für den Speicherort:
# Zu überwachende Dateien
FILES=(
  "docker-compose.yml"
  "homepage/config/settings.yaml"
  "homepage/config/services.yaml"
)


<syntaxhighlight lang="bash">
# Endlosschleife zur Überwachung
/home/robin/docker/wiki/auto-git-push.sh
while true; do
</syntaxhighlight>
    # Warten auf Änderungen an den Dateien
    inotifywait -e close_write "${FILES[@]}"


Du kannst das Skript auch kopieren, z. B. in einen anderen Projektordner:
    # Dateien zum Git-Index hinzufügen
    git add "${FILES[@]}"


<pre class="dynamic-code">
    # Prüfen, ob Änderungen vorliegen
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/{{ZielOrdner}}
    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>
</pre>


---
> '''Hinweis:''' Das Skript benötigt die `inotify-tools`. Installation:
 
> <pre class="static-code">
== 3️⃣ Skript ausführbar machen ==
sudo apt install inotify-tools
 
</pre>
<syntaxhighlight lang="bash">
chmod +x auto-git-push.sh
</syntaxhighlight>


---
---


== 4️⃣ Systemd-Dienst einrichten ==
== 2️⃣ Skript vorbereiten ==


Das Skript kann als **Systemd-Daemon** gestartet werden, sodass es automatisch im Hintergrund läuft.
=== Skript ausführbar machen ===
Nachdem du die Datei (z. B. als `auto-git-push.sh`) gespeichert hast, musst du sie ausführbar machen:


> ⚠️ Hinweis: Der Service muss nur aktiviert und gestartet werden, wenn er noch nicht läuft.
<pre class="static-code">
chmod +x auto-git-push.sh
</pre>


Beispiel zum Starten für das Projekt `wiki`:
=== Skript kopieren (Optional) ===
Falls du das Skript in einen anderen Projektordner kopieren möchtest:


<syntaxhighlight lang="bash">
<pre class="dynamic-code">
sudo systemctl enable auto-git-push@wiki.service
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/{{ZielOrdner}}
sudo systemctl start auto-git-push@wiki.service
</pre>
</syntaxhighlight>
 
Hier muss der Name des Ordners eingesetzt werden: z.b Watchtower
 
Container: watchtower
Git-Repository: Watchtower
Ordner: tower
 
<syntaxhighlight lang="bash">
sudo systemctl enable auto-git-push@tower.service
sudo systemctl start auto-git-push@tower.service
</syntaxhighlight>
 
Leer:
<syntaxhighlight lang="bash">
sudo systemctl enable auto-git-push@.service
sudo systemctl start auto-git-push@t.service
</syntaxhighlight>


'''Beispiel:'''
<pre class="static-code">
cp /home/robin/docker/wiki/auto-git-push.sh /home/robin/docker/watchtower
</pre>


---
---


== 5️⃣ Service-Datei (nur zur Info) ==
== 3️⃣ Systemd-Dienst einrichten ==


Die Service-Datei für Systemd befindet sich unter:
Damit das Skript im Hintergrund läuft, nutzen wir einen Systemd-Service.


<syntaxhighlight lang="bash">
=== Service-Datei (nur zur Info) ===
/etc/systemd/system/auto-git-push.service
Speicherort: `/etc/systemd/system/auto-git-push.service`
</syntaxhighlight>


Beispielinhalt:
<pre class="static-code">
 
<syntaxhighlight lang="ini">
[Unit]
[Unit]
Description=Auto Git Push Service %i
Description=Auto Git Push Service %i
Zeile 116: Zeile 114:
[Install]
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target
</syntaxhighlight>
</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>


> Hinweis: `%i` wird durch den Instanznamen ersetzt, z. B. `wiki`. 
'''Beispiel (für Ordner "tower"):'''
> Du kannst die Datei bearbeiten mit:
<pre class="static-code">
> <syntaxhighlight lang="bash">
sudo systemctl enable auto-git-push@tower.service
sudo nano /etc/systemd/system/auto-git-push.service
sudo systemctl start auto-git-push@tower.service
</syntaxhighlight>
</pre>


---
---


== ✅ Zusammenfassung ==
== 4️⃣ Wartung & Logs ==
 
Falls du das Skript aktualisiert hast, musst du den Dienst neu starten:


1. Skript `auto-git-push.sh` erstellen und ausführbar machen 
<pre class="dynamic-code">
2. Änderungen an `docker-compose.yml` werden automatisch erkannt 
sudo systemctl restart auto-git-push@{{Ordner}}.service
3. Änderungen werden automatisch committet und nach Gitea gepusht 
</pre>
4. Optional: Systemd-Dienst einrichten, um das Skript automatisch im Hintergrund laufen zu lassen 
 
'''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>
 
---


> Dieses Setup sorgt dafür, dass deine Docker-Compose-Konfiguration jederzeit versioniert und gesichert ist.
== ✅ 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