2026-08-18 14:16:55 +02:00
2026-08-18 14:16:55 +02:00
2026-08-18 12:07:19 +02:00
2026-08-18 14:08:01 +02:00

Flatpak-Mirror (Test-Setup mit Docker Compose)

Kuratiertes Flatpak-Repo: spiegelt nur die in config/apps.yaml freigegebenen Apps von Flathub und stellt sie über nginx bereit. Kein flat-manager nötig.

Schnellstart (lokale apps.yaml, ohne Git)

docker compose up -d --build
  • sync-Container klont/pullt nichts von Git (solange GIT_REPO_URL leer ist), sondern liest direkt config/apps.yaml (read-only gemountet).
  • Beim ersten Lauf: OSTree-Repo wird angelegt, Flathub-Remote eingerichtet, die drei Beispiel-Apps werden gepullt. Das kann je nach App-Größe einige Minuten dauern (Firefox, LibreOffice sind groß).
  • Logs verfolgen: docker compose logs -f sync
  • Repo ist danach erreichbar unter http://localhost:8080

Mit Git-Repo für die apps.yaml

  1. .env.example nach .env kopieren:
    cp .env.example .env
    
  2. In .env mindestens GIT_REPO_URL setzen (öffentliches Repo reicht das schon aus). GIT_BRANCH bei Bedarf anpassen (Standard: main).
  3. Nur bei privaten Repos: zusätzlich GIT_USERNAME und GIT_TOKEN setzen. Als GIT_TOKEN ein Personal Access Token verwenden (nicht das echte Account-Passwort!) erzeugbar unter den Account-Einstellungen von Gitea/GitHub/GitLab, idealerweise mit nur Lese-Rechten auf das eine Repo.

.env wird per .gitignore von Git ignoriert nie versehentlich committen. Das Repo braucht im Root eine apps.yaml mit der gleichen Struktur wie in config/apps.yaml. Der ./config-Mount kann dann entfernt werden (oder bleibt einfach ungenutzt, GIT_REPO_URL hat Vorrang).

Sicherheitshinweis zum Token: Es wird nie in die Git-URL eingebettet (https://user:token@host/...), da URLs in Logs auftauchen können. Stattdessen übergibt sync.sh das Token über GIT_CONFIG_*-Umgebungsvariablen an git, sodass es auch nicht als Kommandozeilenargument sichtbar ist (z. B. über ps aux auf dem Docker-Host). Es steht dennoch im Container-Environment und in .env im Klartext Zugriff auf den Docker-Host und die .env-Datei entsprechend absichern (Dateiberechtigungen, kein Checkout in ein öffentlich lesbares Verzeichnis).

Client testen

Auf einer Test-Maschine mit Flatpak installiert:

flatpak remote-add --no-gpg-verify test-repo http://<server-ip>:8080
flatpak install test-repo org.mozilla.firefox

--no-gpg-verify ist nur für den lokalen Test ok — die Original-Signaturen von Flathub werden zwar mitkopiert, aber ohne den Flathub-Key im Client ist Verifizierung sonst nicht möglich. Für den Produktivbetrieb solltest du ostree remote add bzw. flatpak remote-add mit dem echten Flathub-GPG-Key konfigurieren, statt --no-gpg-verify zu verwenden.

Apps hinzufügen/entfernen

Einfach config/apps.yaml (oder die Datei im Git-Repo) bearbeiten. Der Sync-Container prüft alle SYNC_INTERVAL_SECONDS (Standard: 900 = 15 Min.) erneut und pullt neue Einträge bzw. löscht entfernte Refs automatisch.

Für einen sofortigen Testlauf, statt zu warten:

docker compose restart sync

Nächste Schritte für den Produktivbetrieb

  • Sync über Webhook statt reinem Interval-Polling triggern
  • Shared Volume durch echtes Kubernetes-PVC (ReadWriteMany) oder S3 ersetzen
  • Monitoring/Alerting auf Sync-Fehler
  • Bei Bedarf später flat-manager vor dieses Repo setzen (siehe Chat-Verlauf)
S
Description
No description provided
Readme
61 KiB
Languages
Shell 93.6%
Dockerfile 6.4%