Vor ein paar Tagen hat sich ein Nutzer meiner Nextcloud-App MediaFetch bei mir gemeldet. Er betreibt seine Nextcloud in Docker und stand vor einem ganz typischen Problem: MediaFetch war installiert, aber im Container fehlten die Programme, die für den eigentlichen Download benötigt werden.

Auf einem normalen Debian- oder Ubuntu-System würde ich yt-dlp, aria2, Python und FFmpeg einfach über die Paketverwaltung installieren. Bei einem Docker-Container ist das zwar ebenfalls möglich. Nur ist die Änderung beim nächsten Austausch des Containers wieder verschwunden. Genau das wollte ich vermeiden.

Zusätzliche Pakete über die AIO-Konfiguration

Bei Nextcloud All-in-One gibt es dafür die Variable NEXTCLOUD_ADDITIONAL_APKS. Darüber lassen sich zusätzliche Betriebssystempakete dauerhaft in den Nextcloud-Container aufnehmen. Für PHP-Erweiterungen ist zusätzlich NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS vorgesehen. Beide Variablen sind auch in der offiziellen Compose-Vorlage von Nextcloud AIO dokumentiert.

Mein Vorschlag an den Nutzer sah schließlich so aus:

environment:
  NEXTCLOUD_ADDITIONAL_APKS: "aria2 imagemagick librsvg yt-dlp python3 ffmpeg"
  NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS: "imagick"

Die erste Zeile stellt die Programme bereit, die MediaFetch und die Verarbeitung der heruntergeladenen Medien benötigen. aria2 übernimmt schnelle Downloads, yt-dlp kümmert sich um unterstützte Video- und Medienseiten, Python wird von yt-dlp benötigt und FFmpeg verarbeitet Audio- und Videodateien. ImageMagick, librsvg und die PHP-Erweiterung Imagick sind für Bildformate und Vorschaubilder hilfreich.

Wichtig ist die Einrückung in der Compose-Datei. Die beiden Variablen gehören in den Abschnitt environment des AIO-Mastercontainers. Typografische Anführungszeichen aus einer Textverarbeitung oder einem Chat sollte man dabei vermeiden. In einer YAML-Datei müssen es normale gerade Anführungszeichen sein.

Die Pfade, die bei MediaFetch eingetragen werden

Nach dem Neustart der Container waren die benötigten Programme vorhanden. Der Nutzer hat mir anschließend auch die erkannten Pfade zurückgemeldet:

yt-dlp: /usr/bin/yt-dlp
aria2c: /usr/bin/aria2c

Diese Pfade können in den Einstellungen von MediaFetch eingetragen beziehungsweise kontrolliert werden. Wer sie im eigenen Container prüfen möchte, kann beispielsweise diese Befehle verwenden:

docker exec -it nextcloud-aio-nextcloud which yt-dlp
docker exec -it nextcloud-aio-nextcloud which aria2c
docker exec -it nextcloud-aio-nextcloud yt-dlp --version

Der Name des Containers kann natürlich abweichen. Mit docker ps lässt sich der tatsächlich verwendete Name vorher nachsehen.

Der erste Download lief

Die beste Rückmeldung kam kurz danach: „Konnte jetzt schon mal ein Video herunterladen.“ Damit war nicht nur bestätigt, dass die Pakete installiert wurden. MediaFetch konnte die Programme auch wirklich verwenden. Genau solche Rückmeldungen sind für mich bei der Entwicklung wichtig, weil meine eigene Nextcloud nicht jede mögliche Installationsart abbildet.

Eine Sache behalte ich dabei im Hinterkopf: yt-dlp muss regelmäßig aktualisiert werden, weil sich die unterstützten Seiten verändern. Die hier installierte Version stammt aus dem Paketbestand, den das verwendete Container-Image anbietet. Wenn Downloads später ohne erkennbare Änderung an MediaFetch scheitern, würde ich deshalb zuerst yt-dlp --version prüfen und danach schauen, ob für das AIO-Image ein Update verfügbar ist.

Wer MediaFetch bisher nur auf einer klassischen Nextcloud-Installation ausprobiert hat, findet in meinem Beitrag über meine erste eigene Nextcloud-App MediaFetch den Hintergrund zur App. Für Docker-Nutzer ist die hier gezeigte AIO-Konfiguration nun der praktisch getestete Einstieg.

Artikelbild: Mohammad Rahmani/Unsplash