Gerbera
Gerbera is a UPnP media server which allows you to stream your digital media through your home network and consume it on a variety of UPnP compatible devices.
Ports
Port 49494/tcp
(HTTP, also set as gerbera port via command line) and 1900/udp
(SSDP Multicast) are exposed by default.
Multicast
UPnP relies on having clients and servers able to communicate via IP Multicast. The default docker bridge network setup does not support multicast. The easiest way to achieve this is to use "host networking". Connecting Gerbera to your network via the "macvlan" driver should work, but remember you will not be able to access the container from the docker host with this method by default.
Transcoding Tools
Transcoding tools are made available in a separate image with the -transcoding
suffix. e.g. gerbera/gerbera:2.3.0-transcoding
. Includes tools such as ffmpeg and vlc.
Examples
Serve some files via a volume
$ docker run \
--name some-gerbera \
--network=host \
-v /some/files:/mnt/content:ro \
gerbera/gerbera:2.3.0
or for those that prefer docker-compose:
---
version: "2.3"
services:
gerbera:
image: gerbera/gerbera
container_name: gerbera
network_mode: host
volumes:
- ./gerbera-config:/var/run/gerbera
- /some/files:/mnt/content:ro
volumes:
gerbera-config:
external: false
The directory /mnt/content
is automatically scanned for content by default. Host networking enables us to bypass issues with broadcast across docker bridges.
You may place custom JavaScript files in the directory /mnt/customization/js
. Every time Gerbera creates /var/run/gerbera/config.xml
, the shell script /mnt/customization/shell/gerbera_config.sh
(if existing) will be executed.
Provide your own config file
$ docker run \
--name another-gerbera \
--network=host \
-v /some/files:/mnt/content:ro \
-v /some/path/config.xml:/var/run/gerbera/config.xml \
gerbera/gerbera:2.3.0
Overwrite default ports
In cases (e.g. running multiple gerbera containers with different versions) you can override the exported ports
$ docker run \
--name another-gerbera \
--network=host \
--expose <your-port>:<your-port> \
-v /some/files:/mnt/content:ro \
gerbera/gerbera:2.3.0 gerbera --port <your-port> --config /var/run/gerbera/config.xml
Overwrite default user and group id
In cases (e.g. running multiple gerbera containers with different versions) you can override the exported ports
$ docker run \
--name another-gerbera \
--network=host \
--env UID=<newuid> \
--env GID=<newgid> \
-v /some/files:/mnt/content:ro \
gerbera/gerbera:2.3.0 gerbera --config /var/run/gerbera/config.xml
BASE_IMAGE
Use a different base image for container. Changing this may lead to build problems if the required packages are not available.
- Default: alpine:3.20
IMAGE_USER, IMAGE_GROUP
Set a different user/group name in the image to match user/group names on your host
- Default: gerbera
IMAGE_UID, IMAGE_GID
Set a different user/group id in the image to match user/group ids on your host
- Default: 1042
IMAGE_PORT
Change the port of gerbera in the image so you don't have to overwrite the port settings on startup.
- Default: 49494