MediaFetch – my first published Nextcloud app

I have no support/technical question and have seen the support category. (Be aware that direct support questions will be deleted.)

on

Which general topic do you have

Hi everyone,

I wanted to share MediaFetch, my first published Nextcloud app.

It started with a very simple problem: I wanted a download manager for my own Nextcloud that could handle regular HTTP/HTTPS downloads, torrents, magnet links and yt-dlp downloads – and still be usable from a smartphone.

I eventually found NCDownloader, an older open-source project whose basic idea I really liked. Instead of starting from scratch, I began updating and extending that existing codebase.

I know there is also an App called „Vapor“ but There are some issues; no Menu when using at the mobile Device and some Button don’t work.

MediaFetch is therefore based on the original NCDownloader work and keeps the existing copyright and license history. It is released under AGPL-3.0-or-later.

I am also not a professional software developer. During development I used ChatGPT quite heavily as an assistant for understanding existing code, working with Nextcloud APIs, debugging errors, reviewing security issues and implementing changes.

But it was definitely not a “one prompt and done” project.

Most of the work looked more like:

idea → change code → install → error → check logs → fix → test again

And repeat. Quite a lot. :slight_smile:

What MediaFetch currently does

MediaFetch uses aria2 and yt-dlp as backends and supports:

  • HTTP/HTTPS downloads
  • Torrent files and magnet links
  • yt-dlp media downloads
  • Audio extraction/conversion with ffmpeg
  • Per-user download folders and settings
  • Separate torrent destinations
  • Administrator-controlled aria2/yt-dlp binaries and wrapper scripts
  • Download status directly inside Nextcloud
  • Responsive navigation for phones and tablets

Mobile usability was especially important to me. I often want to start a download when I find something on my phone, so MediaFetch has a proper mobile navigation/drawer and was tested on an actual smartphone.

One of the bigger changes was the yt-dlp workflow.

The old code could write files directly into the Nextcloud data directory and trigger a scan afterwards. MediaFetch now downloads into a private temporary directory first and then imports the finished files through the public Nextcloud Files APIs.

This avoids working around Nextcloud’s storage layer and also makes the process clearer for users, with states such as preparing, downloading, importing and completed.

I also spent quite a bit of time tightening security. User-configurable yt-dlp and aria2 options are restricted, arbitrary binaries and local commands are blocked, paths are limited to the intended download area, and old configurable VPN shell commands were removed.

VPN or network-namespace routing can still be done, but through administrator-controlled wrapper scripts.

From a small patch to an App Store release

MediaFetch received its own app ID, mediafetch, updated dependencies, modern Nextcloud frontend components, CI checks and migration support for existing NCDownloader settings and download records.

At some point I realized that my small private modification had turned into a real project.

I originally just wanted a download manager for my Nextcloud. Eventually I was requesting a Nextcloud code-signing certificate for my own app.

That was not really the plan when I started. :slight_smile:

MediaFetch 1.0 is now published, but I definitely see it as the first public version, not the finished product.

Feedback, bug reports and ideas are very welcome.

GitHub:

Longer blog post about the project:

I Hope you like it.

Best regards Lars

I also work currently on an App for sort and edit my Media with MusicBrainz….

1 Like