Install
Debian / Ubuntu / Astra / other deb systems
Section titled “Debian / Ubuntu / Astra / other deb systems”sudo apt install ./freedome-mediaserver_<version>_<arch>.deb ./freedome-tools_<version>_<arch>.debThe package creates the system user freedome (sysusers.d), the directories /var/lib/freedome and
/etc/freedome/secrets (tmpfiles.d), installs the conffile /etc/freedome/mediaserver.toml and the hardened unit
freedome-mediaserver.service (Type=notify, watchdog, sandbox; systemd-analyze security ≈ 1.1).
On first install it generates the admin API key /etc/freedome/secrets/mediaserver-admin.key (mode 0640,
root:freedome); only its id is written to the journal:
sudo cat /etc/freedome/secrets/mediaserver-admin.key # fdk_<id>_<secret>curl -fsS http://localhost:8080/readyIt replaces the old freedome-core 2.x package (Breaks / Replaces). apt purge removes the configuration and the
key; the database and blobs under /var/lib/freedome are kept unless FREEDOME_PURGE_DATA=1 is set.
ffmpeg is recommended (media probing and thumbnails); without it assets are ready with probe: unavailable.
Host reboot / shutdown from the API needs the opt-in package freedome-mediaserver-power and
[system] host_power = true.
Drop-ins in /usr/share/doc/freedome-mediaserver/examples/: serial.conf (serial ports for show controllers),
lowport.conf (ports below 1024).
RPM (Rocky / Alma / RED OS)
Section titled “RPM (Rocky / Alma / RED OS)”sudo dnf install ./freedome-mediaserver-<version>.<arch>.rpm ./freedome-tools-<version>.<arch>.rpmSame layout; where systemd-sysusers is missing the post-install script falls back to useradd.
Docker
Section titled “Docker”docker compose -f packaging/docker/docker-compose.demo.yml up -dcurl -fsS http://127.0.0.1:8080/readydocker compose -f packaging/docker/docker-compose.demo.yml exec mediaserver cat /var/lib/freedome/secrets/mediaserver-admin.keyThe demo stack runs the media server with the real visual engine (freedome/engined, software renderer) over a
Unix socket on a shared volume. Image: freedome/mediaserver (Debian slim + ffmpeg, uid 10001, health check
/ready). Ports: 8080 (HTTP: REST, GraphQL, WebSocket, socket.io), 7000/udp + 7000/tcp (OSC in), 7001/udp (OSC
replies), 50062 (gRPC, optional).
Windows and macOS
Section titled “Windows and macOS”Windows: MSI (packaging/windows/main.wxs), service FreedomeMediaServer, data in %ProgramData%\Freedome.
macOS: .pkg with a LaunchDaemon (net.nativemind.freedome.mediaserver), user _freedome. Both are built in CI
and not yet tested on real hosts; signed packages come with the first release.
Ports (master port registry)
Section titled “Ports (master port registry)”| Port | Use |
|---|---|
| 8080/tcp | HTTP: REST /api/v1, GraphQL /api/v1/graphql, WS /api/v1/ws, socket.io /socket.io/, /health, /ready, /metrics, Swagger UI /api/docs |
| 7000/udp, 7000/tcp | OSC in (UDP datagrams, TCP SLIP) |
| 7001/udp | OSC replies and pushes |
| 50062/tcp | gRPC freedome.mediaserver.v1 (off unless [grpc] listen_tcp is set; Unix socket by default) |
| 3000/tcp | optional legacy listener for old apps ([legacy] listen_3000) |