Table of contents
Konfiguration
Alle produktiven Einstellungen liegen in /opt/ntfy-downloader/.env. Nach
einer Änderung müssen die betroffenen Container neu erstellt werden:
docker compose -f compose.image.yaml up -d --force-recreate
ntfy und Downloads
| Variable | Standard | Bedeutung |
|---|---|---|
NTFY_BASE_URL |
erforderlich | Basis-URL des ntfy-Servers ohne abschließenden Slash |
NTFY_TOPIC |
erforderlich | Topic für Eingang und Statusmeldungen |
NTFY_USERNAME |
erforderlich | Basic-Auth-Benutzer des Topics |
NTFY_PASSWORD |
erforderlich | Basic-Auth-Passwort des Topics |
DOWNLOAD_DIR |
./downloads |
Host-Verzeichnis, das nach /downloads gemountet wird |
JOB_DATABASE |
./state/jobs.sqlite3 |
Pfad ohne Docker; Compose setzt intern /state/jobs.sqlite3 |
DOWNLOAD_TIMEOUT |
3600 |
Maximale Laufzeit eines Downloads in Sekunden |
NOTIFY_ON_START |
true |
Meldung beim Start eines Downloads senden |
LOG_LEVEL |
INFO |
DEBUG, INFO, WARNING oder ERROR |
Das Topic ist gleichzeitig Eingangs- und Rückmeldekanal. Eigene Meldungen des Downloaders werden anhand ihres Titels ignoriert, damit keine Schleife entsteht.
yt-dlp
| Variable | Standard | Bedeutung |
|---|---|---|
YTDLP_FORMAT |
leer | Benutzerdefinierter yt-dlp-Format-String; leer nutzt den yt-dlp-Default |
YTDLP_OUTPUT_TEMPLATE |
%(title).120B [%(id)s].%(ext)s |
Relatives Ausgabeformat im Downloadverzeichnis |
YTDLP_IMPERSONATE |
chrome |
Browser-TLS-Fingerprint; leer deaktiviert Impersonation |
Das Standardtemplate begrenzt den Titel auf 120 Bytes und fügt die Quell-ID hinzu. Dadurch bleiben Dateinamen handhabbar und Downloads besser zuordenbar.
Web-UI
| Variable | Standard | Bedeutung |
|---|---|---|
WEBUI_USERNAME |
erforderlich | Benutzername der Galerie |
WEBUI_PASSWORD |
erforderlich | Passwort und zugleich Schlüssel für signierte Links |
WEBUI_PORT |
2310 |
Auf dem Host veröffentlichter TCP-Port |
WEBUI_PUBLIC_URL |
leer | Von Clients erreichbare Basis-URL für ntfy-Links |
WEBUI_DEFAULT_TAG |
leer | Tag, den die Startseite ohne expliziten Filter zeigt |
THUMB_MAX_AGE_DAYS |
30 |
Alter für automatische Thumbnail-Bereinigung; 0 deaktiviert sie |
WEBUI_PUBLIC_URL darf keinen abschließenden Slash enthalten. Für Teilen und
ntfy-Benachrichtigungen muss die URL vom Zielgerät erreichbar sein, zum Beispiel:
WEBUI_PUBLIC_URL=https://videos.example.com
Clips und Exporte
| Variable | Standard | Bedeutung |
|---|---|---|
CLIPS_SUBDIR |
clips |
Zielordner für Videoausschnitte |
CLIP_MAX_DURATION |
600 |
Maximale Clipdauer in Sekunden |
CLIP_TIMEOUT |
120 |
Maximale ffmpeg-Laufzeit für Clips |
GIFS_SUBDIR |
gifs |
Zielordner für GIFs |
GIF_TIMEOUT |
600 |
Maximale ffmpeg-Laufzeit für GIF-Erstellung |
WHATSAPP_SUBDIR |
whatsapp |
Zielordner für WhatsApp-MP4s |
WHATSAPP_TIMEOUT |
120 |
Maximale ffmpeg-Laufzeit für WhatsApp-MP4s |
WHATSAPP_SHARE_TTL |
604800 |
Lebensdauer signierter Links, standardmäßig sieben Tage |
GIF- und WhatsApp-Exporte sind unabhängig von den Variablen auf zehn Sekunden begrenzt.
Container-Ressourcen
| Variable | Standard | Bedeutung |
|---|---|---|
NTFY_DOWNLOADER_IMAGE_TAG |
latest |
Produktiv den vollständigen Commit-SHA verwenden |
DOWNLOADER_UID |
1000 |
Numerische Benutzer-ID beider Container |
DOWNLOADER_GID |
1000 |
Numerische Gruppen-ID beider Container |
DOWNLOADER_MEMORY_LIMIT |
2g |
Speicherlimit des Listeners |
DOWNLOADER_CPU_LIMIT |
2.0 |
CPU-Limit des Listeners |
WEBUI_MEMORY_LIMIT |
512m |
Speicherlimit der Web-UI inklusive ffmpeg |
WEBUI_CPU_LIMIT |
1.0 |
CPU-Limit der Web-UI inklusive ffmpeg |
Die ffmpeg-Exporte laufen im Web-UI-Container. Zu enge CPU- oder Speicherlimits verlangsamen Exporte oder können zu Abbrüchen führen.
Beispiel
NTFY_BASE_URL=https://ntfy.example.com
NTFY_TOPIC=downloads
NTFY_USERNAME=downloader
NTFY_PASSWORD=<starkes-passwort>
DOWNLOAD_DIR=/mnt/media/downloads
WEBUI_USERNAME=galerie
WEBUI_PASSWORD=<anderes-starkes-passwort>
WEBUI_PORT=2310
WEBUI_PUBLIC_URL=https://videos.example.com
WEBUI_DEFAULT_TAG=Startseite
NTFY_DOWNLOADER_IMAGE_TAG=<vollstaendiger-commit-sha>
DOWNLOADER_UID=1000
DOWNLOADER_GID=1000
Keine echten Zugangsdaten in Wiki, Repository, Shell-History oder Supportausgaben kopieren.