Gerbera

UPnP media server for streaming to DLNA devices

Media Servers ★ 1.4k stars Medium setup GPL-2.0

Gerbera is a UPnP/DLNA media server that streams audio and video to compatible TVs and devices on a local network. It targets users with DLNA hardware who want simple local streaming. It is deployed via Docker or native packages.

Key features

  • Standards-based UPnP/DLNA streaming
  • Web UI for managing media
  • Transcoding support
  • Lightweight footprint

Pros & cons

Strengths

  • Works with DLNA TVs
  • Low resource use
  • No client apps needed

Trade-offs

  • DLNA UX is basic
  • No remote streaming

Gerbera replaces

Last reviewed Sep 13, 2026 · 787 words

One line decides whether Gerbera works: network_mode: host. UPnP discovery runs over multicast on UDP 1900, and a bridged Docker network swallows it, so a Gerbera container without host networking starts cleanly, shows a healthy web UI, and never appears on a single television. Get that line in, and you have a 128 MB C++ media server that every DLNA-capable TV, receiver, and games console on your LAN can browse with zero apps installed.

DLNA is the protocol nobody chooses and everybody has

Every smart TV since about 2010, every PlayStation and Xbox, most AV receivers, and a good share of network speakers ship with a DLNA client under some name like "Media Player" or "Home Network". The experience is a folder tree with thumbnails, rendered by the device's own firmware. It is ugly, it is fast, and it needs no login, no account, and no app store. That is the whole pitch: your parents' TV plays the family videos off the NAS without anyone installing anything.

Gerbera is the maintained descendant of MediaTomb, which means it has been serving this protocol under one name or another since 2005. It is stable in the way old C++ daemons are stable: it starts, it scans, it sits there.

The compose file, with the line that matters

services:
  gerbera:
    image: gerbera/gerbera:latest
    network_mode: host
    environment:
      - TZ=Europe/London
    volumes:
      - ./config:/var/run/gerbera
      - /srv/media:/content:ro
    restart: unless-stopped

The web UI listens on port 49494. First start writes a config.xml into the config volume, and almost every subsequent change happens in that file: which directories to scan, whether to scan them on a timer or via inotify, and which UPnP profile quirks to enable for a picky TV. Add your library through the web UI under Filesystem, tick "autoscan", and it appears on the TV within a minute. Mount media read-only; a DLNA server has no business writing to your collection.

If you run on bare metal instead, the Debian and Ubuntu packages, plus the Arch and Alpine ones, work fine and avoid the networking question entirely.

Transcoding is a hand-written profile, not a checkbox

Gerbera supports transcoding, and the catalogue is right to list it. What it does not do is guess. Each profile is an XML block naming a MIME type, an ffmpeg (or any other) command line, and a list of client profiles it applies to. Nothing transcodes until you write one. In practice you write two: one to turn FLAC into WAV for a receiver that only speaks PCM, and one to remux MKV into MPEG-TS for a TV that refuses Matroska. Anything more, such as burning in subtitles or serving HEVC to a 2013 panel, is an afternoon of reading the Gerbera docs and the TV's format list. This is the point where people either accept the container format their TV likes or switch to Jellyfin.

What you do not get, and what to run instead

No remote streaming: DLNA is a LAN protocol and Gerbera has no auth, no accounts, and no TLS. Exposing port 49494 to the internet exposes your entire library to anyone who finds it. No metadata: posters, plot summaries, and "continue watching" are the client's job, and a TV client does none of that. No mobile app: your phone's "cast to DLNA" support is whatever the vendor bothered with.

Jellyfin does all of the above and still exposes a DLNA server, although in recent releases that server is a plugin rather than core and gets far less attention than the apps. If DLNA is your only target and you want something even smaller than Gerbera, MiniDLNA has no web UI, no transcoding, and about 20 MB of memory use; it is the right call for a single-folder music share. Gerbera sits between the two: a real UI and transcoding hooks, without the 1 GB of metadata scraping that comes with a full media server.

What I'd do

Two situations justify Gerbera in 2026. One: a household where the playback devices are older TVs and receivers with no Jellyfin app, and the goal is "browse the NAS from the remote". Two: an audio-only setup feeding a network receiver that speaks UPnP well and everything else badly. In both cases run the container with host networking, mount media read-only, enable inotify autoscan, and write exactly the transcoding profiles your devices demand and no more. Everyone else should run Jellyfin and enable its DLNA plugin for the one old TV, because the moment someone asks for subtitles or watching from a hotel room, Gerbera has nothing to offer.

Compare Gerbera

19 head-to-head comparisons.

Similar media servers apps