2 Installation und Deployment
Ralf Warmuth edited this page 2026-07-17 01:06:21 +02:00

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.yaml und 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.