Installation und Deployment
Empfohlener Produktivbetrieb: Registry-Image
Das Image wird von Forgejo Actions auf dem Runner arch getestet, gebaut und
unter folgender Adresse veröffentlicht:
git.home.schumbi.de/ralf/ntfy-downloader
Zu jedem Build gibt es latest und den vollständigen Commit-SHA. Für einen
reproduzierbaren Betrieb ist immer der SHA zu bevorzugen.
Voraussetzungen
- Linux-Host mit Docker Engine und Docker Compose v2
- Zugriff auf die Forgejo Container Registry
- vorhandenes, beschreibbares Downloadverzeichnis
compose.image.yamlund eine lokale.env- funktionierende ntfy-Zugangsdaten
Einmalige Einrichtung
mkdir -p /opt/ntfy-downloader
cd /opt/ntfy-downloader
compose.image.yaml und die angepasste .env nach
/opt/ntfy-downloader kopieren. Danach Downloadverzeichnis und externe Volumes
vorbereiten:
mkdir -p ./downloads
docker volume create ntfy-downloader_ntfy-state
docker volume create ntfy-downloader_ntfy-thumbs
Falls DOWNLOAD_DIR auf einen absoluten Pfad oder einen SMB-Mount zeigt, muss
statt ./downloads dieser Pfad existieren. Registry-Anmeldung und Start:
docker login git.home.schumbi.de
docker compose -f compose.image.yaml config -q
docker compose -f compose.image.yaml pull
docker compose -f compose.image.yaml up -d
docker compose -f compose.image.yaml ps
Beide Container müssen nach der Startphase healthy melden.
Dateirechte
Die Container laufen standardmäßig als UID/GID 1000:1000. Abweichende
Eigentümer des Downloadverzeichnisses werden in .env gesetzt:
DOWNLOADER_UID=1000
DOWNLOADER_GID=1000
Die numerischen IDs sind entscheidend; Benutzernamen im Container und auf dem Host müssen nicht übereinstimmen.
Bei bestehenden Volumes können Rechte einmalig mit dem Runtime-Image korrigiert werden:
docker run --rm --user 0:0 \
-v ntfy-downloader_ntfy-thumbs:/thumbs \
git.home.schumbi.de/ralf/ntfy-downloader:<SHA> \
chown -R 1000:1000 /thumbs
Lokaler Build aus dem Checkout
Diese Variante ist für Entwicklung und Tests gedacht:
cp .env.example .env
mkdir -p downloads
docker compose up -d --build
docker compose ps
docker compose logs -f
Das lokale docker-compose.yml baut den Checkout direkt. Das produktive
compose.image.yaml verwendet dagegen ausschließlich das Registry-Image.
Betrieb ohne Docker
Voraussetzungen sind Python 3.12 oder neuer und ffmpeg im PATH:
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
export NTFY_BASE_URL=https://ntfy.example.com
export NTFY_TOPIC=downloads
export NTFY_USERNAME=meinuser
export NTFY_PASSWORD=meinpasswort
export DOWNLOAD_DIR=./downloads
python -m ntfy_downloader.listener
Die Web-UI wird separat gestartet:
uvicorn ntfy_downloader.webui:app --host 0.0.0.0 --port 2310
Erster Funktionstest
Eine URL an ntfy senden:
curl -u meinuser:meinpasswort \
-d 'https://example.com/video' \
https://ntfy.example.com/downloads
Danach prüfen:
docker compose -f compose.image.yaml ps
docker compose -f compose.image.yaml logs --since 10m ntfy-downloader
docker compose -f compose.image.yaml logs --since 10m ntfy-webui
Die Galerie ist unter http://<host>:2310 beziehungsweise unter der
konfigurierten Reverse-Proxy-URL erreichbar.