Zum Inhalt springen

Docker Services versionieren: Unterschied zwischen den Versionen

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


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


'''Häufige Blocker in der .gitignore:'''
== Logs ==
* `config/` (ignoriert den gesamten Ordner)
==== Docker Logs anzeigen ====
* `*.yaml` oder `*.yml` (ignoriert alle Konfigurationsdateien)
<pre class="static-code">docker logs jellyfin</pre>


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


== 2. Dateien und Ordner zum Repository hinzufügen ==
== Wichtige Pfade ==
Wähle die passende Methode, um deine Konfigurationen für den Commit vorzubereiten.
* Projektverzeichnis: /home/robin/docker/jellyfin
* App Data im Container: /config
* Medienverzeichnis: /mnt/HA_MEDIA
* WebGUI Zugriff: http://192.168.2.217:8096


=== Variante A: Einzelne Dateien oder Ordner ===
== Wartung ==
Ideal für gezieltes Hinzufügen von Konfigurationsdateien.
==== Container starten ====
<pre class="static-code">docker compose up -d</pre>


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


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


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


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


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


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


== 5. Repository-Informationen & Analyse ==
==== Cache wiederherstellen (optional) ====
Hier findest du nützliche Befehle, um die Verknüpfung zu deinem Gitea-Server zu prüfen.
<pre class="static-code">rsync -avh /pfad/zu/backup/cache ./cache</pre>
==== 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>


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


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


== Best Practices ==
{| class="wikitable"
{| class="wikitable"
! Versionieren (Ja) !! NICHT versionieren (Nein)
! Empfohlen !! Nicht empfohlen
|-
|-
| `docker-compose.yml` || Logs (`*.log`)
| `docker-compose.yml` versionieren || Logs (`*.log`)
|-
|-
| `*.yaml` / `*.yml` Konfigurationen || Datenbank-Verzeichnisse (z.B. `mysql/`, `db/`)
| `*.yaml` / `*.yml` Konfigurationen || Cache- und Laufzeitdaten
|-
|-
| `.env.example` (Templates) || `.env` (mit echten Passwörtern/Secrets!)
| `.env.example` (Templates) || `.env` mit echten Passwörtern
|-
|-
| Eigene Shell-Scripte (`*.sh`) || Cache-Daten & Laufzeitdaten
| Eigene Shell-Scripte (`*.sh`) || Medien-Dateien, Backups
|-
|-
| Dockerfiles || Media-Dateien, Bilder, Backups
| Dockerfiles || Datenbanken (z. B. MariaDB/SQLite)
|}
|}
'''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.

Version vom 15. Februar 2026, 17:03 Uhr

🟢 Jellyfin Übersicht

Jellyfin ist ein selbst gehosteter Media-Server für Filme, Serien und Musik auf HomeLab.

Allgemeine Infos

  • **Server:** HomeServer2
  • **Projektpfad:** /home/robin/docker/jellyfin
  • **Docker-Container:** jellyfin
  • **Image:** lscr.io/linuxserver/jellyfin:latest
  • **WebGUI:** http://192.168.2.217:8096
  • **Netzwerk:** streaming-net
  • **Ports:** 8096 (HTTP), 8920 (HTTPS optional)
  • **App Data:** Container: /config
  • **Medienordner:** /mnt/HA_MEDIA

Docker Setup

Parameter Wert
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

Host Container
./config /config
./cache /cache
/mnt/HA_MEDIA /data

Logs

Docker Logs anzeigen

docker logs jellyfin

Live Logs verfolgen

docker logs -f jellyfin

Wichtige Pfade

  • Projektverzeichnis: /home/robin/docker/jellyfin
  • App Data im Container: /config
  • Medienverzeichnis: /mnt/HA_MEDIA
  • WebGUI Zugriff: http://192.168.2.217:8096

Wartung

Container starten

docker compose up -d

Container stoppen

docker compose down

Container Shell öffnen

docker exec -it jellyfin sh

Backup relevante Daten

App-Daten sichern

rsync -avh ./config /pfad/zu/backup/config

Cache sichern (optional)

rsync -avh ./cache /pfad/zu/backup/cache

Medien sichern (optional)

rsync -avh /mnt/HA_MEDIA /pfad/zu/backup/medien

Wiederherstellung

App-Daten wiederherstellen

rsync -avh /pfad/zu/backup/config ./config

Cache wiederherstellen (optional)

rsync -avh /pfad/zu/backup/cache ./cache

Medien wiederherstellen (optional)

rsync -avh /pfad/zu/backup/medien /mnt/HA_MEDIA

Anleitungen

Best Practices

Empfohlen Nicht empfohlen
`docker-compose.yml` versionieren Logs (`*.log`)
`*.yaml` / `*.yml` Konfigurationen Cache- und Laufzeitdaten
`.env.example` (Templates) `.env` mit echten Passwörtern
Eigene Shell-Scripte (`*.sh`) Medien-Dateien, Backups
Dockerfiles Datenbanken (z. B. MariaDB/SQLite)