unsubbed.co

Gerbera

Self-hosted media servers tool that provides uPnP Media Server.

Open-source UPnP/DLNA media server, honestly reviewed. What you get when you want to stream your NAS without paying Plex.

TL;DR

  • What it is: Free, open-source UPnP/DLNA media server that makes your files visible to TVs, phones, game consoles, and any UPnP-compatible device on your home network [1].
  • Who it’s for: Home users with an existing media library who want something lightweight running on a NAS, Raspberry Pi, or Linux box without a monthly subscription [1][2].
  • Cost: $0. No SaaS tier, no premium license, no Plex Pass equivalent. You run it on hardware you already own [1].
  • Key strength: Extremely low resource footprint, highly configurable metadata layout via JavaScript scripting, and solid hardware compatibility across x86, ARM, and MIPS architectures [1].
  • Key weakness: This is a pure LAN UPnP server. No built-in remote access, no transcoding GUI, no iOS/Android app of its own, and the official website describes itself as “still a work in progress” [2]. If you want a Netflix-style UI or remote streaming, look elsewhere.
  • Stars: 1,352 on GitHub. A quiet, well-maintained tool that isn’t trying to win popularity contests [1].

What is Gerbera

Gerbera is a UPnP media server. It sits on your Linux machine (or Raspberry Pi, or NAS), scans a directory of media files, and advertises them over your home network using the UPnP/DLNA protocol. Any UPnP-compatible device — smart TVs, PlayStation 3/4/5, Android phones with BubbleUPnP, Kodi, VLC — can browse and play that content directly [1][2].

The project is a direct continuation of MediaTomb, a UPnP server that stopped active development around 2012. Gerbera picked up from MediaTomb 0.12.1 and has been running forward ever since [2]. Current stable release at time of writing is 3.2.1 [2].

This lineage matters because it explains both Gerbera’s strengths and its personality. It’s a C++ application descended from serious systems software. It is not trying to be the next Plex or Jellyfin. It does one thing — serve media to UPnP devices — and it does it without requiring a browser extension, a cloud account, or a quarterly subscription.

The web UI gives you a tree view of your database and filesystem, lets you add/remove/browse media, and handles basic server management. That’s roughly the scope of the GUI ambition [1].


Why people choose it

No substantial third-party reviews of Gerbera-the-software turned up in the source materials provided for this article. What follows is based on primary source documentation and general context within the UPnP server category.

The use case that drives people to Gerbera specifically — rather than Jellyfin or Plex — tends to be one of a few things:

The “I just want DLNA and nothing else” crowd. Plex and Jellyfin are full media systems with transcoding, remote access, metadata scraping, mobile apps, and web players. All of that adds up to RAM, CPU, and complexity. Gerbera does not transcode by default (though it supports transcoding via external scripts) [1]. If your TV can natively play the files on your NAS, you don’t need any of that. Gerbera in this mode is essentially just a catalog server — very light on resources.

Older or lower-power hardware. ARM builds, MIPS builds, and older NAS units without the horsepower to run Jellyfin’s media scanning engine are a natural fit. Gerbera’s dependency list is lean and its C++ core doesn’t carry a .NET or Node runtime [1].

Distro package availability. Gerbera is packaged in a surprising number of Linux distributions — the Repology badge in the README shows broad packaging status [1]. If you’re on Debian, Ubuntu, Alpine, Arch, or various BSDs, you can install it without touching Docker.

MediaTomb refugees. A meaningful portion of users are people who ran MediaTomb for years and followed the project forward when Gerbera took over maintenance.


Features

Based on the README and official documentation [1][3]:

Core streaming:

  • UPnP/DLNA server — compatible with TVs, consoles, Kodi, VLC, BubbleUPnP, and most UPnP renderers
  • Web UI with filesystem and database tree views for browsing and managing content
  • Automatic directory rescans via timed intervals or inotify (filesystem events) [1]
  • Support for external URLs — you can create links to internet content and serve them via UPnP to your renderer [1]

Metadata and organization:

  • Metadata extraction from MP3, OGG, AAC, M4A, FLAC, WavPack, JPG, and many other formats [1]
  • Media thumbnail support including on-the-fly video thumbnail generation [1]
  • User-defined server layout via JavaScript scripting — this is the standout feature for power users. You can write scripts that organize your library by any combination of extracted tags: genre, artist, year, format, whatever you want. If you have 50,000 files and opinionated ideas about folder structure, this matters [1]
  • Last.fm scrobbling support [1]

Format handling:

  • Transcoding via external scripts and plugins — flexible but manual [1]
  • Image processing support [merged profile]

Database backends:

  • SQLite (default, bundled) [1]
  • MySQL [merged profile]
  • PostgreSQL [merged profile]

Deployment:

  • Docker image available [merged profile][1]
  • Native Linux/BSD/macOS builds [1]
  • Packages available across major distros [1]
  • x86, ARM, MIPS architecture support [1]

What it does not do:

  • Remote access or WAN streaming — this is a LAN-only tool by design
  • Built-in transcoding UI — transcoding requires external scripts and configuration
  • Its own client app — you use your TV’s built-in DLNA client, Kodi, BubbleUPnP, VLC, or similar
  • Metadata scraping from TheMovieDB, TheTVDB, or similar sources — unlike Jellyfin/Plex, there’s no automatic poster/synopsis download

Pricing: SaaS vs self-hosted math

Gerbera is free. There is no paid tier, no premium license, no cloud component, and no vendor to send money to [1][2].

The relevant comparison isn’t “Gerbera vs Gerbera Cloud” — there is no cloud version. The relevant comparison is Gerbera versus the paid tiers of its closest competitors:

Plex:

  • Plex Media Server: free
  • Plex Pass: $4.99/month, $39.99/year, or $119.99 lifetime
  • Plex Pass unlocks: hardware transcoding, offline sync, live TV/DVR, mobile sync, Lyrics, intro detection
  • Without Plex Pass, remote streaming is limited and mobile apps are paywalled beyond basic playback

Emby:

  • Emby Server: free
  • Emby Premiere: $4.99/month or $54/year
  • Unlocks: hardware transcoding, live TV, Emby Sync, parental controls, cinema mode

Jellyfin:

  • Completely free, no premium tier — the closest to Gerbera in pricing philosophy

Gerbera:

  • $0. Run it on a Raspberry Pi 4 (~$50 hardware, one-time) or a NAS you already own.

If you’re currently paying Plex Pass at $39.99/year and your only use case is streaming to devices on your home network that natively support DLNA, Gerbera does that for free. The trade-off: you lose Plex’s polished mobile apps, metadata scraping, and any remote access capability.

For a homelab user who just wants to point a TV at a drive full of files: the cost comparison is $0 vs however much Plex Pass costs per year. Over five years, that’s $0 vs $200. The math is obvious; the question is whether the feature trade-off is acceptable.


Deployment reality check

Gerbera can be installed from distro packages or run via Docker [1]. For most users this is the simplest path:

docker run -d \
  --name gerbera \
  -p 49152:49152 \
  -v /your/media:/content:ro \
  -v /config:/var/run/gerbera \
  gerbera/gerbera:latest

What you actually need:

  • A Linux machine (or NAS with Docker, or Raspberry Pi) on the same network as your media devices
  • Network access between your server and your UPnP clients — same LAN segment, or multicast routing configured if across VLANs
  • Docker (simplest) or a supported distro for native install

What can go sideways:

UPnP multicast. UPnP device discovery uses multicast (239.255.255.250:1900). If your router or network switch doesn’t pass multicast between segments, devices on different VLANs won’t see Gerbera. This catches people with more complex home networks.

Transcoding setup. The transcoding system is powerful but requires manual configuration. You’re writing scripts and wiring up FFmpeg or similar external tools yourself. Out of the box, Gerbera serves files as-is — if your TV can’t play MKV with H.265, you’ll need to configure transcoding manually [1].

JavaScript layout scripts. The server layout customization via JavaScript is genuinely powerful, but the documentation assumes you’re comfortable reading it. The default layout works fine; if you want custom organization, expect to invest time reading the docs at https://docs.gerbera.io [3].

The website. The official website frankly admits “This site is still a work in progress! Maybe you can help build the site?” [2]. The documentation at https://docs.gerbera.io is the real reference — it’s considerably more complete than the homepage suggests [3].

Realistic setup time for a technical user already running Docker: 15–30 minutes to a working server. For configuring custom metadata layouts or transcoding: an afternoon. For a non-technical user with no Linux experience: this is not the right starting point.


Pros and Cons

Pros

  • Completely free. No tiers, no upsells, no subscription. The full feature set is everything you get on install [1].
  • Extremely lightweight. C++ binary with minimal runtime requirements. Runs comfortably on a Raspberry Pi 3 or a years-old NAS. Nothing close to the resource demands of Jellyfin or Plex [1].
  • JavaScript-based layout scripting. The ability to define exactly how your library is presented to UPnP clients — by any combination of extracted metadata — is a genuine power-user feature absent from many competitors [1].
  • Broad hardware and OS support. x86, ARM, MIPS. Linux, BSD, macOS. Packaged across a wide range of distros, no Docker required if you prefer native [1].
  • inotify-based rescans. The filesystem event-based rescan means new files appear quickly without polling overhead [1].
  • Continues a proven lineage. Built on MediaTomb 0.12.1 — a server that ran reliably in homes for years before Gerbera picked it up [2].
  • Last.fm scrobbling. Niche, but if you use it, it’s there [1].

Cons

  • LAN-only. No remote access. If you’re not on the same network as the server, you’re not streaming. This is by design but worth stating plainly.
  • No automatic metadata scraping. Gerbera doesn’t download posters, plot summaries, or ratings from external databases. Your library looks like a file tree, not a Netflix shelf. For movie/TV libraries where visual browsing matters, this is a meaningful gap compared to Jellyfin or Plex.
  • No first-party client app. You’re dependent on your device’s built-in UPnP/DLNA client, which varies enormously in quality. Some TV UPnP clients are poor; Gerbera can’t compensate for them.
  • Transcoding requires manual setup. Connecting FFmpeg and writing transcoding scripts is possible but not user-friendly [1]. Plex and Jellyfin handle this transparently.
  • 1,352 GitHub stars puts it well below Jellyfin (~41K), Plex-equivalents, or even its own spiritual successor category. Smaller community means fewer tutorials, less Stack Overflow coverage, and slower issue resolution [merged profile].
  • License listed as NOASSERTION in automated tooling — the actual license (GPL-2.0) is in the repository but wasn’t resolved in the data for this review. Verify before embedding in commercial products.
  • Website is openly incomplete. “Still a work in progress” is an unusual admission for a project shipping stable releases [2]. The documentation site compensates, but first impressions matter for non-technical evaluators.
  • No hosted demo or screenshots on the homepage. Evaluating the UI requires actually running it.

Who should use this / who shouldn’t

Use Gerbera if:

  • You have a media library on a NAS or home server and want to stream it to TVs, game consoles, or UPnP clients on the same network.
  • You’re running low-power hardware (Raspberry Pi, ARM NAS) where Jellyfin’s resource footprint would be a problem.
  • You want zero ongoing cost and no vendor dependency.
  • You’re comfortable with Linux, Docker, and reading documentation.
  • You already have DLNA clients that work well and don’t need a polished browsing UI.
  • Your files are already in formats your devices support natively (no transcoding needed).

Use Jellyfin instead if:

  • You want a polished web player, mobile apps, and automatic metadata scraping without paying anything.
  • You need remote access outside your home network.
  • You want hardware transcoding to handle format-incompatible files transparently.
  • You’re setting this up for non-technical family members who expect a Netflix-like browsing experience.

Use Plex instead if:

  • Remote access (streaming outside the home) is a requirement.
  • You value a highly polished mobile and TV app experience and are willing to pay Plex Pass for it.
  • You want Live TV and DVR functionality.

Skip self-hosting entirely if:

  • You’re not comfortable with a Linux command line and don’t have someone to help.
  • Your media collection is small enough that a personal YouTube or Google Photos account covers it.
  • You need support channels — Gerbera’s IRC channel on Libera.chat is the listed support mechanism [1].

Alternatives worth considering

  • Jellyfin — the free, open-source Plex alternative with a polished web UI, mobile apps, hardware transcoding, and automatic metadata. More resource-hungry than Gerbera but dramatically more feature-complete. The obvious upgrade path if Gerbera’s feature set feels too minimal.
  • MiniDLNA / ReadyMedia — even simpler than Gerbera. A single binary, no web UI, no scripting. If you want the absolute minimum viable DLNA server, this is it. Fewer features, lower complexity.
  • Plex — the market-leader home media server. Cloud-first, polished apps, strong remote access, Plex Pass required for full features. Closed source.
  • Emby — Plex competitor with similar feature set, partially open source core. Emby Premiere adds hardware transcoding and sync.
  • Kodi — media player first, server second. Can share libraries, but it’s primarily a client application. Different use case.
  • Universal Media Server — Java-based UPnP server with a similar philosophy to Gerbera. More built-in transcoding profiles out of the box, heavier resource footprint.

For a non-technical user: Jellyfin is almost certainly a better starting point despite being heavier. The UI quality and documentation are substantially more accessible. Gerbera rewards technical users who know what they want and prefer a lean, configurable tool over a batteries-included experience.


Bottom line

Gerbera is a well-maintained, no-frills UPnP media server for people who know what UPnP is and want a free, lightweight tool to do exactly that. It doesn’t try to be Plex. It streams files to DLNA devices on your local network, lets you customize how your library is organized through JavaScript scripting, handles metadata extraction well, and runs on nearly any Linux hardware. The trade-offs are real: no remote access, no automatic metadata enrichment from external sources, no polished client apps, manual transcoding setup. For a Raspberry Pi 4 streaming to a TV that already handles DLNA natively, it’s hard to argue with a $0 solution that stays out of your way. For anyone wanting a modern browsing experience, mobile apps, or remote streaming, Jellyfin covers that ground without a subscription and with considerably less configuration overhead.


Sources

  1. Gerbera GitHub Repository — README, features, dependencies, build instructions. https://github.com/gerbera/gerbera
  2. Gerbera Official Website — Homepage and project overview. https://gerbera.io
  3. Gerbera Documentation — Installation, configuration, scripting reference. https://docs.gerbera.io

Features

Integrations & APIs

  • Plugin / Extension System

Media & Files

  • Image Processing
  • Media Transcoding