Skip to content

Install

Debian / Ubuntu / Astra / other deb systems

Section titled “Debian / Ubuntu / Astra / other deb systems”
Terminal window
sudo apt install ./freedome-mediaserver_<version>_<arch>.deb ./freedome-tools_<version>_<arch>.deb

The 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:

Terminal window
sudo cat /etc/freedome/secrets/mediaserver-admin.key # fdk_<id>_<secret>
curl -fsS http://localhost:8080/ready

It 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).

Terminal window
sudo dnf install ./freedome-mediaserver-<version>.<arch>.rpm ./freedome-tools-<version>.<arch>.rpm

Same layout; where systemd-sysusers is missing the post-install script falls back to useradd.

Terminal window
docker compose -f packaging/docker/docker-compose.demo.yml up -d
curl -fsS http://127.0.0.1:8080/ready
docker compose -f packaging/docker/docker-compose.demo.yml exec mediaserver cat /var/lib/freedome/secrets/mediaserver-admin.key

The 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: 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.

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)