Quick start
This is the shortest path from nothing to a station that is talking between records. It makes every choice for you: one container that brings its own database, one port, one music provider. Nothing here is hard to change later, and Install is the page that covers each choice this one skips.
You need Docker, a machine to run it on, and somewhere the music comes from. This page covers a Spotify account (Premium, because the station fetches audio) or a media server of your own: Navidrome or another Subsonic server, Jellyfin, Emby, or Plex. YouTube Music, Pandora and Apple Music are plugins too, and the library says what each needs.
1. Start it
Make a directory, put this in docker-compose.yml, and fill in the address:
services:
deadair:
image: deadair/deadair:full
container_name: deadair
restart: unless-stopped
ports:
- '8080:80'
volumes:
- ./data:/data
environment:
APP_BASE_URL: 'http://localhost:8080'
SPA_BASE_URL: 'http://localhost:8080'
TZ: 'America/New_York'
full is the tag that brings PostgreSQL and Redis with it, so there is nothing else to install. Set
TZ to where the station is, because it is what the presenter reads the clock in.
The two addresses are what you type into a browser to reach the station. http://localhost:8080 is
right if you are opening it on the same machine; use http://192.168.1.10:8080 or
https://radio.example.com if you are not, with the scheme, the host and the port and nothing
after it.
docker compose up -d
The schema is applied before the station starts, so there is no migration step. The two keys the
station encrypts and signs with are made on the first boot, in ./data/secrets: back that up with the
rest of ./data, because losing the first one means typing your provider's credentials in again. On a host whose
./data is not already owned by 99:100, hand it over once with sudo chown -R 99:100 ./data.
2. Make yourself the operator
Open http://localhost:8080. The first thing a station with no accounts asks for is an
administrator: an email address and a password. That account is yours and there is no other way in,
so the password is worth keeping somewhere.
4. Give it music
Open Settings → Plugins.
On Spotify, there are two authorizations and you need both. The connection lets the plugin read your library. The playback authorization, on the card below it, lets the station fetch audio. With only the first, your playlists list perfectly and every record is dropped for want of audio.
The page Spotify sends your browser to will not load, and that is expected rather than a failure: it is an address on the station itself. Copy it out of the address bar and paste it back into the console, which finishes the job. The card walks you through it.
On Navidrome or another Subsonic server, enable the Navidrome plugin instead and give it the server's address and an account on it. There is one authorization and no browser visit.
On Jellyfin, enable the Jellyfin plugin and give it the server's address, an API key made under API Keys in Jellyfin's dashboard, and the Jellyfin user to read the library as.
On Emby, the same three things for the Emby plugin: the server's address, an API key made in Emby's server settings under Advanced → API Keys, and the Emby user to read the library as.
On Plex, enable the Plex plugin and give it the address of the server itself
(http://your-server:32400) and your Plex token. In Plex Web, running
localStorage.myPlexAccessToken in the browser's developer console prints the token.
Either way, let the library sync before going on. Nothing can be programmed until there are records to program.
5. Say where it is, and who is on air
- Settings → Stream: a station name and the public address listeners reach it at. Saving this is what takes the audio chain off its built-in defaults.
- Voice → Characters: pick a presenter. Several come with the station, and a station with no model configured still talks, out of its own phrasings.
6. Put something on
On the Desk, press Plan to have the station fill a running order, or put a record on yourself. Then open the stream:
http://localhost:8080/live.mp3
Any player opens that address, and so do the listener apps.
If it is silent, that is probably on purpose. By default the station airs only while somebody is connected: a loaded station with a full running order and no listeners is quiet, and the Desk says so rather than reporting a fault. Open the stream and it starts. If it stays quiet, Check-up answers why in one sentence, and Help covers the usual causes.
Where to go next
- Install for the choices this page made for you: which tag, bringing your own database, putting it on the internet, and the two-disk layout for a big library.
- On Unraid if that is where it is going, which is a form rather than a compose file.
- Tutorials for step-by-step walkthroughs: the two installs, and giving the station a model, characters, shows and voices of its own.
- Music licensing before you publish an address. The station grants you no rights to broadcast anything in your library.
- What it does for the rest of the station: the schedule, facts, phone-ins, podcasts and readings.