Navidrome — a self-hosted music streaming server and Subsonic/OpenSubsonic API (web player + mobile apps). Deployed as a single host-networked Nomad service with a data volume for its database and a music volume you fill with your library.
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "navidrome"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Navidrome container image. Pin a tag in production.
image = "deluan/navidrome:latest"
# Host port for the Navidrome web UI / Subsonic API.
port = 4533
# Named volume for Navidrome's database, cache, and cover art (/data).
data_volume = "navidrome_data"
# Named volume mounted read-only at /music — fill it with your library (e.g. via the syncthing pack or a host copy).
music_volume = "navidrome_music"
# Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
# The task resources.
resources = {
cpu = 500
memory = 256
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "navidrome" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "deluan/navidrome:latest" | The Navidrome container image. Pin a tag in production. |
| port | number | 4533 | Host port for the Navidrome web UI / Subsonic API. |
| data_volume | string | "navidrome_data" | Named volume for Navidrome's database, cache, and cover art (/data). |
| music_volume | string | "navidrome_music" | Named volume mounted read-only at /music — fill it with your library (e.g. via the syncthing pack or a host copy). |
| constraints | list | [] | Placement constraints. Pin to the node holding the volumes. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 500
memory = 256
} | The task resources. |
No variables match.
Navidrome — a self-hosted music streaming server with a web player and a Subsonic / OpenSubsonic API, so you can stream your own library to phones and desktop apps.
Single host-networked Nomad service. Runs as root so the fresh named volumes are writable out of the box.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run navidrome --registry=nomploy
| Variable | Default | Description |
|---|---|---|
port |
4533 |
Web UI / Subsonic API port (ND_PORT). |
data_volume |
navidrome_data |
/data — database, cache, cover art. |
music_volume |
navidrome_music |
/music, mounted read-only — your library. |
image |
deluan/navidrome:latest |
Container image. Pin a tag in production. |
resources |
{ cpu = 500, memory = 256 } |
Task resources. |
Create the admin account on first visit. The music volume starts empty — fill it (a host
copy, the syncthing pack, etc.) and scan from Settings. Pin the job to the
node that holds the volumes with constraints.