Zum Inhalt springen

Docker Services versionieren: Unterschied zwischen den Versionen

Aus Home Wiki
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 1: Zeile 1:
= 🟢 Jellyfin Übersicht =
Diese Anleitung beschreibt den Workflow, um Konfigurationsdateien von Docker-Services sicher in einem Git-Repository (z. B. [[Gitea]]) zu versionieren.
Jellyfin ist ein selbst gehosteter Media-Server für Filme, Serien und Musik auf [[Hauptseite|HomeLab]].


== Allgemeine Infos ==
== 1. Ignorierte Dateien prüfen ==
* **Server:** HomeServer2
Bevor Dateien hinzugefügt werden, muss sichergestellt werden, dass die `.gitignore` den Upload nicht blockiert.
* **Projektpfad:** /home/robin/docker/jellyfin
==== Wechsel in das Verzeichnis des Services ====
* **Docker-Container:** jellyfin
<pre class="dynamic-code">
* **Image:** lscr.io/linuxserver/jellyfin:latest
cd ~/docker/{{folder}}
* **WebGUI:** http://192.168.2.217:8096
</pre>
* **Netzwerk:** streaming-net
==== Prüfung der Ignorier-Regeln ====
* **Ports:** 8096 (HTTP), 8920 (HTTPS optional)
<pre class="static-code">
* **App Data:** Container: /config
cat .gitignore
* **Medienordner:** /mnt/HA_MEDIA
</pre>


== Docker Setup ==
'''Häufige Blocker in der .gitignore:'''
{| class="wikitable"
* `config/` (ignoriert den gesamten Ordner)
! Parameter !! Wert
* `*.yaml` oder `*.yml` (ignoriert alle Konfigurationsdateien)
|-
| Container Name || jellyfin
|-
| Image || lscr.io/linuxserver/jellyfin:latest
|-
| Ports || 0.0.0.0:8096->8096/tcp
|-
| Netzwerk || streaming-net
|-
| Restart Policy || unless-stopped
|-
| Volume (App Data) || ./config:/config
|-
| Volume (Cache) || ./cache:/cache
|-
| Volume (Medien) || /mnt/HA_MEDIA:/data
|-
| Environment || PUID=1000, PGID=1000, TZ=Europe/Berlin, LIBVA_DRIVER_NAME=iHD
|-
| Devices || /dev/dri:/dev/dri
|}
 
== Container Pfade ==
{| class="wikitable"
! Host !! Container
|-
| ./config || /config
|-
| ./cache || /cache
|-
| /mnt/HA_MEDIA || /data
|}


== Logs ==
> '''Hinweis:''' Falls eine Datei ignoriert wird, die du dennoch sichern willst, musst du die `.gitignore` anpassen oder den Befehl `git add -f` (force) nutzen.
==== Docker Logs anzeigen ====
<pre class="static-code">docker logs jellyfin</pre>


==== Live Logs verfolgen ====
== 2. Dateien und Ordner zum Repository hinzufügen ==
<pre class="static-code">docker logs -f jellyfin</pre>
Wähle die passende Methode, um deine Konfigurationen für den Commit vorzubereiten.


== Wichtige Pfade ==
=== Variante A: Einzelne Dateien oder Ordner ===
* Projektverzeichnis: /home/robin/docker/jellyfin
Ideal für gezieltes Hinzufügen von Konfigurationsdateien.
* App Data im Container: /config
* Medienverzeichnis: /mnt/HA_MEDIA
* WebGUI Zugriff: http://192.168.2.217:8096


== Wartung ==
==== Einzelne Datei hinzufügen ====
==== Container starten ====
<pre class="dynamic-code">
<pre class="static-code">docker compose up -d</pre>
git add {{pfadZurDatei}}/{{Datei}}
</pre>
==== Liste hinzufügen ====
<pre class="dynamic-code">
git add {{pfadZurDatei}}{{Datei}} {{pfadZurDatei}}/{{Datei2}}
</pre>


==== Container stoppen ====
==== Ganzen Ordner rekursiv hinzufügen ====
<pre class="static-code">docker compose down</pre>
<pre class="dynamic-code">
git add {{Ordner}}
</pre>


==== Container Shell öffnen ====
=== Variante B: Alles im aktuellen Verzeichnis ===
<pre class="static-code">docker exec -it jellyfin sh</pre>
Um alle Änderungen im Projektordner gleichzeitig zu erfassen:
<pre class="static-code">
git add .
</pre>


== Backup relevante Daten ==
== 3. Status prüfen & Commit erstellen ==
==== App-Daten sichern ====
Vor dem Speichern solltest du immer prüfen, was im "Staging"-Bereich gelandet ist, um keine Passwörter versehentlich hochzuladen.
<pre class="static-code">rsync -avh ./config /pfad/zu/backup/config</pre>
==== Prüfung der vorgemerkten Änderungen ====
<pre class="static-code">
git status
</pre>


==== Cache sichern (optional) ====
==== Änderungen lokal speichern ====
<pre class="static-code">rsync -avh ./cache /pfad/zu/backup/cache</pre>
<pre class="dynamic-code">
git commit -m "{{Update}}"
</pre>


==== Medien sichern (optional) ====
== 4. Änderungen zu Gitea übertragen (Push) ==
<pre class="static-code">rsync -avh /mnt/HA_MEDIA /pfad/zu/backup/medien</pre>
Um die lokalen Commits auf den Server hochzuladen:


== Wiederherstellung ==
==== App-Daten wiederherstellen ====
<pre class="static-code">
<pre class="static-code">
rsync -avh /pfad/zu/backup/config ./config
git push
</pre>
</pre>


==== Cache wiederherstellen (optional) ====
== 5. Repository-Informationen & Analyse ==
<pre class="static-code">rsync -avh /pfad/zu/backup/cache ./cache</pre>
Hier findest du nützliche Befehle, um die Verknüpfung zu deinem Gitea-Server zu prüfen.
==== Welches Remote-Repository wird verwendet? ====
<pre class="static-code">
git remote -v
</pre>
==== Detailinformationen (Tracking, Default-Branch, Push-URL) ====
<pre class="static-code">
git remote show origin
</pre>
==== Aktuellen Branch anzeigen ====
<pre class="static-code">
git branch
</pre>
==== Nur die Remote-URL aus der Konfiguration auslesen ====
<pre class="static-code">
git config --get remote.origin.url
</pre>


==== Medien wiederherstellen (optional) ====
== Best Practices für Docker-Services ==
<pre class="static-code">rsync -avh /pfad/zu/backup/medien /mnt/HA_MEDIA</pre>


== Anleitungen ==
Um das Repository sauber zu halten, sollten nur relevante Dateien versioniert werden.


== Best Practices ==
{| class="wikitable"
{| class="wikitable"
! Empfohlen !! Nicht empfohlen
! Versionieren (Ja) !! NICHT versionieren (Nein)
|-
|-
| `docker-compose.yml` versionieren || Logs (`*.log`)
| `docker-compose.yml` || Logs (`*.log`)
|-
|-
| `*.yaml` / `*.yml` Konfigurationen || Cache- und Laufzeitdaten
| `*.yaml` / `*.yml` Konfigurationen || Datenbank-Verzeichnisse (z.B. `mysql/`, `db/`)
|-
|-
| `.env.example` (Templates) || `.env` mit echten Passwörtern
| `.env.example` (Templates) || `.env` (mit echten Passwörtern/Secrets!)
|-
|-
| Eigene Shell-Scripte (`*.sh`) || Medien-Dateien, Backups
| Eigene Shell-Scripte (`*.sh`) || Cache-Daten & Laufzeitdaten
|-
|-
| Dockerfiles || Datenbanken (z. B. MariaDB/SQLite)
| Dockerfiles || Media-Dateien, Bilder, Backups
|}
|}
'''Tipp zur Einbauposition (Mounting Position):'''
Wenn du Volumes in deiner `docker-compose.yml` verschiebst oder Pfade änderst, stelle sicher, dass die neuen Pfade auch von Git erfasst werden. Nutze dazu oben einfach die Variable `{{folder}}`, um die Befehle schnell für andere Container anzupassen.

Aktuelle Version vom 17. Februar 2026, 21:23 Uhr

Diese Anleitung beschreibt den Workflow, um Konfigurationsdateien von Docker-Services sicher in einem Git-Repository (z. B. Gitea) zu versionieren.

1. Ignorierte Dateien prüfen

Bevor Dateien hinzugefügt werden, muss sichergestellt werden, dass die `.gitignore` den Upload nicht blockiert.

Wechsel in das Verzeichnis des Services

cd ~/docker/{{folder}}

Prüfung der Ignorier-Regeln

cat .gitignore

Häufige Blocker in der .gitignore:

  • `config/` (ignoriert den gesamten Ordner)
  • `*.yaml` oder `*.yml` (ignoriert alle Konfigurationsdateien)

> Hinweis: Falls eine Datei ignoriert wird, die du dennoch sichern willst, musst du die `.gitignore` anpassen oder den Befehl `git add -f` (force) nutzen.

2. Dateien und Ordner zum Repository hinzufügen

Wähle die passende Methode, um deine Konfigurationen für den Commit vorzubereiten.

Variante A: Einzelne Dateien oder Ordner

Ideal für gezieltes Hinzufügen von Konfigurationsdateien.

Einzelne Datei hinzufügen

git add {{pfadZurDatei}}/{{Datei}}

Liste hinzufügen

git add {{pfadZurDatei}}{{Datei}} {{pfadZurDatei}}/{{Datei2}}

Ganzen Ordner rekursiv hinzufügen

git add {{Ordner}}

Variante B: Alles im aktuellen Verzeichnis

Um alle Änderungen im Projektordner gleichzeitig zu erfassen:

git add .

3. Status prüfen & Commit erstellen

Vor dem Speichern solltest du immer prüfen, was im "Staging"-Bereich gelandet ist, um keine Passwörter versehentlich hochzuladen.

Prüfung der vorgemerkten Änderungen

git status

Änderungen lokal speichern

git commit -m "{{Update}}"

4. Änderungen zu Gitea übertragen (Push)

Um die lokalen Commits auf den Server hochzuladen:

git push

5. Repository-Informationen & Analyse

Hier findest du nützliche Befehle, um die Verknüpfung zu deinem Gitea-Server zu prüfen.

Welches Remote-Repository wird verwendet?

git remote -v

Detailinformationen (Tracking, Default-Branch, Push-URL)

git remote show origin

Aktuellen Branch anzeigen

git branch

Nur die Remote-URL aus der Konfiguration auslesen

git config --get remote.origin.url

Best Practices für Docker-Services

Um das Repository sauber zu halten, sollten nur relevante Dateien versioniert werden.

Versionieren (Ja) NICHT versionieren (Nein)
`docker-compose.yml` Logs (`*.log`)
`*.yaml` / `*.yml` Konfigurationen Datenbank-Verzeichnisse (z.B. `mysql/`, `db/`)
`.env.example` (Templates) `.env` (mit echten Passwörtern/Secrets!)
Eigene Shell-Scripte (`*.sh`) Cache-Daten & Laufzeitdaten
Dockerfiles Media-Dateien, Bilder, Backups

Tipp zur Einbauposition (Mounting Position): Wenn du Volumes in deiner `docker-compose.yml` verschiebst oder Pfade änderst, stelle sicher, dass die neuen Pfade auch von Git erfasst werden. Nutze dazu oben einfach die Variable `Vorlage:Folder`, um die Befehle schnell für andere Container anzupassen.