FROM debian:12-slim RUN apt-get update \ && apt-get -y upgrade \ && apt-get -y install bash curl bzip2 ffmpeg cifs-utils alsa-utils libicu72 ENV ROON_SERVER_PKG RoonServer_linuxx64.tar.bz2 ENV ROON_SERVER_URL https://download.roonlabs.net/builds/${ROON_SERVER_PKG} ENV ROON_DATAROOT /data ENV ROON_ID_DIR /data ENV ROON_DATAROOT=/Roon/data ENV ROON_ID_DIR=/Roon/data COPY entrypoint.sh /entrypoint.sh # Informational only — requires --net=host for multicast discovery EXPOSE 9003/udp 9100-9200/tcp 9200-9250/tcp 9330-9339/tcp 55000/tcp # Healthcheck uses /proc directly instead of pgrep to avoid procps dependency HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=3 \ CMD grep -ql '[R]oonServer.dll' /proc/[0-9]*/cmdline 2>/dev/null || exit 1 STOPSIGNAL SIGTERM # entrypoint.sh downloads RoonServer on first run (to /Roon/app), then # exec's into Server/RoonServer — the stock bash launcher that handles # .NET runtime discovery, ulimit, self-update swap, and restart (exit 122). ENTRYPOINT ["/entrypoint.sh"]