# deadair, in production, on a host that is not Unraid. # # One container: the API, the console, the stream chain, the measurement sidecar and — depending # on which variant you pull — a speech server, a database and a cache. Copy `.env.example` to # `.env`, fill it in, and: # # docker compose up -d # # The Unraid path is the app template under `unraid/`, which asks for the same values in a form. # Both point at the same image and the same `/data` volume, so nothing here is Unraid-specific # and nothing there is a second way of configuring the station. services: deadair: # `latest` bundles a speech server and expects an external database and cache. # `full` brings its own database and cache too; `slim` brings neither those nor a voice. image: deadair/deadair:${VARIANT:-latest} container_name: deadair restart: unless-stopped env_file: - .env ports: # The one way in. It serves the console, proxies the API under /api, and carries the # stream itself at /live.mp3, so a tunnel or reverse proxy in front needs this port # and no other. - '${HTTP_PORT:-8080}:80' volumes: # What the station IS: settings, presenters, the schedule, your own recordings, # rendered speech, logs, the stream's own config and state, installed plugins, and — # on `full` — the database. Small, authored, and the thing to back up. - ${DATA_DIR:-./data}:/data # What the station merely HOLDS: records fetched before they air, art, rendered # speech, voice previews, the speech model's weights. All derived, all reproducible by # running the station again, and it grows to the size of the library you play — so it # usually wants a different disk and no backup at all. Uncomment to give it one. The # station goes by whether this path is really mounted rather than by a second setting, # so there is nothing to keep in agreement, and leaving it commented keeps everything # under `/data` where it has always been. # - /srv/bulk/deadair-media:/media healthcheck: # The image declares its own; this only shortens the interval to something an # operator watching a first boot can stand. interval: 30s timeout: 10s retries: 5 start_period: 120s