From 52b46dd95ecd4de050cb0de075014a1aee007982 Mon Sep 17 00:00:00 2001 From: "David M. Klein" <4+leander19961@noreply.localhost> Date: Thu, 3 Sep 2026 14:40:23 +0200 Subject: [PATCH] Dateien nach "/" hochladen --- .env.example | 40 ++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 .env.example create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c77263f --- /dev/null +++ b/.env.example @@ -0,0 +1,40 @@ +# Domain unter der beide Repos erreichbar sind (Flatpak-Spiegel + dieser DNF-Spiegel). +MIRROR_DOMAIN=software.example.org + +# ID/Name des EINEN gemeinsamen Repos, in das ALLE Fremdrepos aus +# packages.yaml zusammengefuehrt werden. Clients binden nur dieses eine Repo +# ein (baseurl=https:///dnf/), unabhaengig davon, aus wie vielen +# Fremdrepos die Pakete stammen. Ergibt die Datei /dnf/.repo. +MIRROR_REPO_ID=company-mirror + +# Identität des GPG-Keys, mit dem ALLE gespiegelten Pakete umsigniert werden. +GPG_NAME=AlmaLinux Client Mirror +GPG_EMAIL=it-software@example.org + +# Optionale Passphrase fuer den Signing-Key. Leer lassen (empfohlen) fuer einen +# vollautomatischen, unbeaufsichtigten Sync-Container. Wenn gesetzt, wird sie +# dem Container als Datei (Secret) uebergeben, siehe README. +GPG_PASSPHRASE= + +# Wie oft neu synchronisiert wird (Sekunden). 21600 = alle 6 Stunden. +SYNC_INTERVAL_SECONDS=21600 + +# Git-Repo mit der packages.yaml (Fremdrepos + zu spiegelnde Paketnamen), +# siehe sources-repo-template/README.md. Wird vor JEDEM Sync-Lauf neu geholt +# (git fetch), Aenderungen brauchen also keinen Container-Neubau. +# HTTPS mit Token: https://@git.example.org/it/dnf-mirror-sources.git +# SSH (Deploy-Key ins ./git-ssh/-Verzeichnis legen): +SOURCES_GIT_URL=git@git.example.org:it/dnf-mirror-sources.git +SOURCES_GIT_REF=main +# Pfad IM CONTAINER zum SSH-Deploy-Key, nur bei SSH-URLs noetig. Key-Datei +# dafuer in ./git-ssh/ (neben dieser .env) ablegen, z.B. ./git-ssh/id_ed25519. +SOURCES_GIT_SSH_KEY=/run/secrets/git-ssh/id_ed25519 + +# AlmaLinux Release/Arch, gegen die auf "bereits vorhanden" geprueft wird. +# Muss zur Alma-Version des mirror-Images passen (siehe mirror/Dockerfile). +ALMA_RELEASEVER=10 +ALMA_BASEARCH=x86_64 + +# Repo-IDs (siehe mirror/config/alma-baseline.repo.d/) die als "von Alma aufloesbar" +# gelten. Pakete mit diesen Namen werden NICHT gespiegelt. +ALMA_BASELINE_REPOIDS=baseos,appstream,extras,crb,epel diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7d4b4ab --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +services: + dnf-mirror: + build: ./mirror + restart: unless-stopped + environment: + MIRROR_DOMAIN: ${MIRROR_DOMAIN} + MIRROR_REPO_ID: ${MIRROR_REPO_ID:-company-mirror} + GPG_NAME: ${GPG_NAME} + GPG_EMAIL: ${GPG_EMAIL} + GPG_PASSPHRASE: ${GPG_PASSPHRASE} + SYNC_INTERVAL_SECONDS: ${SYNC_INTERVAL_SECONDS:-21600} + SOURCES_GIT_URL: ${SOURCES_GIT_URL} + SOURCES_GIT_REF: ${SOURCES_GIT_REF:-main} + SOURCES_GIT_SSH_KEY: ${SOURCES_GIT_SSH_KEY:-} + ALMA_RELEASEVER: ${ALMA_RELEASEVER:-10} + ALMA_BASEARCH: ${ALMA_BASEARCH:-x86_64} + ALMA_BASELINE_REPOIDS: ${ALMA_BASELINE_REPOIDS:-baseos,appstream,extras,crb,epel} + volumes: + - ./mirror/config/alma-baseline.repo.d:/etc/mirror/alma-baseline.repo.d:ro + - ./git-ssh:/run/secrets/git-ssh:ro + - ./gpg:/var/lib/mirror-gpg + - dnf-repo-data:/srv/dnf + - mirror-cache:/var/cache/mirror + # kein Port-Publish: der Container schreibt nur in das Volume, das nginx + # ausliefert. Braucht ausgehenden Internetzugriff zu den Upstream-Repos + # UND zum Git-Repo mit der Paketliste (SOURCES_GIT_URL), das er vor jedem + # Sync-Lauf neu abruft. + + nginx: + image: nginx:alpine + restart: unless-stopped + depends_on: + - dnf-mirror + ports: + - "80:80" + # - "443:443" # TLS: siehe README (eigene Zertifikate mounten oder + # vorgeschalteten Reverse Proxy/Load Balancer nutzen) + volumes: + - dnf-repo-data:/usr/share/nginx/html/dnf:ro + - ./nginx/conf.d:/etc/nginx/conf.d:ro + +volumes: + dnf-repo-data: + mirror-cache: