# Radio (Liquidsoap + Icecast) VM. Run from the repository root: # docker compose -f docker/compose.radio.yaml up -d --build # # Version pins are build args - override via environment, e.g.: # LIQUIDSOAP_VERSION=2.1.4 OCAML_VERSION=4.13.0 \ # docker compose -f docker/compose.radio.yaml up -d --build services: conjurer-radio: build: context: .. dockerfile: docker/Dockerfile.radio args: OPAM_VERSION: ${OPAM_VERSION:-2.1.5} OCAML_VERSION: ${OCAML_VERSION:-4.14.2} LIQUIDSOAP_VERSION: ${LIQUIDSOAP_VERSION:-2.1.4} image: conjurer-radio:latest container_name: conjurer-radio restart: unless-stopped environment: # internal = null-sink pulse inside the container (headless VM default) # host = mount the host pulse socket below and set PULSE_SERVER PULSE_MODE: ${PULSE_MODE:-internal} # PULSE_SERVER: unix:/tmp/pulseaudio.socket # Hostname icecast reports in its status/YP pages: ICECAST_HOSTNAME: ${ICECAST_HOSTNAME:-localhost} ports: - "8000:8000" # icecast - listeners tune in here - "54321:54321" # harbor /skip - the bot's CONJURER_RADIO_HARBOR - "9999:9999" # interactive harbor (keep LAN-only!) volumes: # Playlists, logs, script.params and the script itself (seeded on first # run) - same paths inside and outside the container. - /srv/betoniarka/data:/srv/betoniarka/data # The mp3 library. Writable because the entrypoint seeds a silent # emergency-fallback mp3 when the hardcoded single() file is missing. - /srv/betoniarka/music:/srv/betoniarka/music # icecast_credentials.json - provision at install like the other # services' secrets (a CHANGE_ME placeholder is seeded if absent). - /srv/betoniarka/secrets:/srv/betoniarka/secrets # PULSE_MODE=host: uncomment and adjust # - /tmp/pulseaudio.socket:/tmp/pulseaudio.socket