Official BubbleUPnP Server multi-platform docker images based on openSUSE Tumbleweed are available on Docker Hub, for easily running BubbleUPnP Server on Linux x86_64, x86 (32-bit), arm64 and armv7 plaftorms.
It provides everyting needed to run BubbleUPnP Server optimally, including Java and FFmpeg binaries. The image is compatible with Intel QSV (Intel only) and VA-API (Intel/AMD) GPU transcoding, but not NVIDIA.
If your user is not already part of the
dockergroup, you will have to prefix all
sudo. To avoid this, add you user to the
dockergroup whit this command, then launch a new terminal to make the change effective:
sudo usermod -aG docker $USER
Create a persistent container named
bubbleupnpserver from the image:
docker create --name bubbleupnpserver \ --net=host \ --device /dev/dri:/dev/dri \ --restart=unless-stopped \ bubblesoftapps/bubbleupnpserver
There is an alternate bubblesoftapps/bubbleupnpserver-openj9 image based on the OpenJ9 JRE instead of OpenJDK. This image uses less memory, making it ideal for memory constrained devices. OpenJ9 is supposedly a bit slower than OpenJDK, but for software such as BubbleUPnP Server, it does not matter.
Moreover, some Synology NAS running DSM7 may crash with the
bubblesoftapps/bubbleupnpserverimage, and the workaround is to use the
--net=host: required for proper networking
--device /dev/dri:/dev/dri: only necessary for Intel QSV or VA-API Chromecast GPU transcoding
--restart=unless-stopped: only necessary for starting the
bubbleupnpservercontainer automatically when the docker daemon starts
- at the end of the line you can pass BubbleUPnP Server command-line arguments
If your Docker installation and BubbleUPnP Server container reside on a spinning hard drive and you do not want the running container to prevent the hard drive to go to sleep, there are additional options required to prevent all periodic writing to disk, both performed by Docker on the host and BubbleUPnP Server in the running container:
-e USER_JVM_ARGS="-XX:-UsePerfData": to pass JVM arguments to BubbleUPnP Server to disable the JVM writing performance data at regular intervals into the image’s
/tmpfolder. This is only needed if using the OpenJDK Docker image. This
USER_JVM_ARGSenvironment variable is only available since the BubbleUPnP Server container released in August 2022.
--log-driver none: for Docker to not write to file (stored on host) BubbleUPnP Server’s console output (stdout)
--no-healthcheck: for Docker to not write health check status to
config.v2.jsonfile (stored on host) at periodic intervals
-nologfile: BubbleUPnP Server option for BubbleUPnP Server to not write log files (stored in the running container)
With everything combined:
docker create --name bubbleupnpserver \ --net=host \ --device /dev/dri:/dev/dri \ --log-driver none \ --no-healthcheck \ --restart=unless-stopped \ -e USER_JVM_ARGS="-XX:-UsePerfData" \ bubblesoftapps/bubbleupnpserver \ -nologfile
Start the container with:
docker start bubbleupnpserver
On some older Docker versions, the container may fail to start. In that case and if you cannot update Docker to a newer version, recreate the container adding the
Connect to the web configuration with your web browser: http://localhost:58050 (from your machine) or http://<server LAN ip>:58050 (from another machine on the LAN). The container will always run the latest version of BubbleUPnP Server. There is no need to recreate it just for that purpose.
to stop the container:
docker stop bubbleupnpserver
to restart the container:
docker restart bubbleupnpserver
to show continuously updated logs:
docker logs -f bubbleupnpserver
to remove the container (for uninstalling or recreating it):
docker rm -f bubbleupnpserver
to remove the image:
docker rmi bubblesoftapps/bubbleupnpserver
If you need to edit
configuration.xml, copy it to your host, edit it it, then copy it back to the container and restart it:
docker stop bubbleupnpserver docker cp bubbleupnpserver:/opt/bubbleupnpserver/configuration.xml . <edit configuration.xml> docker cp configuration.xml bubbleupnpserver:/opt/bubbleupnpserver docker start bubbleupnpserver docker exec -u root bubbleupnpserver chown bubbleupnpserver.users /opt/bubbleupnpserver/configuration.xml
BubbleUPnP Server running in the container will update automatically to newer versions of the core, as well as FFmpeg binaries, so there is no need to recreate a new container for that. However, the Docker image itself can be updated to newer Java versions (which cannot be auto updated). If you want to upgrade to an updated Docker image, you will need to recreate the container. Prior to that, to keep your existing configuration, you can copy on your local filesystem the configuration.xml from the old container to be able to copy it later to the new container.