Install Guide¶
This page compares the available install methods and helps you pick one. For a quick start after installing, see Getting Started.
Comparison¶
| Method | Best for | Auto-updates | System service | State location |
|---|---|---|---|---|
Native package (.deb / .rpm / .apk) |
Linux servers, headless hosts | via package manager | yes (systemd / OpenRC) | /var/lib/mxlrcgo-svc |
| Docker / Compose | Containers, Unraid, NAS | via image tag | via compose / container runtime | /config volume |
| Homebrew | macOS, Linuxbrew | brew upgrade |
via brew services |
XDG data dir |
| Tarball / zip | Any platform, air-gapped | manual | manual | XDG data dir |
go install |
Developers, bleeding-edge | manual | manual | XDG data dir |
Native packages (Linux)¶
Download the .deb, .rpm, or .apk for your distro from the
GitHub Releases page.
# Debian / Ubuntu
sudo apt install ./canticle_*.deb
# RHEL / Fedora / Rocky
sudo dnf install ./canticle_*.rpm
# Alpine
sudo apk add --allow-untrusted canticle_*.apk
What the package does:
- Installs the binary to
/usr/local/bin/canticle. - Creates a
mxlrcgo-svcsystem user and group (no login shell). - Creates
/var/lib/mxlrcgo-svc(mode0750, owned bymxlrcgo-svc:mxlrcgo-svc) for the SQLite database and state. - Installs a systemd unit with hardening (
ProtectSystem=strict,PrivateTmp,NoNewPrivileges), or an OpenRC script on Alpine (manages ownership and permissions viastart_pre). - Places an example config at
/etc/mxlrcgo-svc/config.example.toml. - Does not enable or start the service automatically.
Upgrading from
mxlrcgo-svc: the package was namedmxlrcgo-svcthrough v1.9.1 and is nowcanticle. Installing thecanticlepackage replaces an existingmxlrcgo-svcinstall in one step (it declares the appropriate debReplaces/rpmObsoletes), removing the old package and any stale binary it owned. The service unit, system user, and/var/lib/mxlrcgo-svcdata directory intentionally keep themxlrcgo-svcname so the SQLite database and an enabled service survive the rename untouched.
First-time setup:
sudo cp /etc/mxlrcgo-svc/config.example.toml /etc/mxlrcgo-svc/config.toml
# Edit config.toml and set [api] token = "YOUR_TOKEN" (and any other settings)
sudo systemctl enable --now mxlrcgo-svc # systemd
# or on Alpine:
# sudo rc-update add mxlrcgo-svc default
# sudo rc-service mxlrcgo-svc start
Service commands (systemd):
sudo systemctl start mxlrcgo-svc
sudo systemctl stop mxlrcgo-svc
sudo systemctl restart mxlrcgo-svc
sudo systemctl status mxlrcgo-svc
sudo journalctl -u mxlrcgo-svc -f
Service commands (OpenRC / Alpine):
sudo rc-service mxlrcgo-svc start
sudo rc-service mxlrcgo-svc stop
sudo rc-service mxlrcgo-svc restart
sudo rc-service mxlrcgo-svc status
Uninstall note: Package removal stops the service but preserves
/var/lib/mxlrcgo-svc and the system user so the database survives a
reinstall or upgrade. Remove them manually for a clean uninstall:
See Native packages in the User Guide for the full operational reference.
Docker¶
The published image is ghcr.io/sydlexius/canticle. It runs the server on
port 50705 and stores config and the SQLite database under the /config
volume. Mount your media data parent to /data:
Export secrets first so they are not inlined in the command (prevents shell history and ps exposure):
docker run -d \
--name canticle \
-p 50705:50705 \
-e MUSIXMATCH_TOKEN \
-e MXLRC_WEBHOOK_API_KEY \
-e PUID=99 -e PGID=100 \
-v canticle-config:/config \
-v /path/to/your/data:/data:rw \
--restart unless-stopped \
ghcr.io/sydlexius/canticle:latest
For Docker Compose, copy docker-compose.example.yml, fill in the token and
key, adjust the music volume, and run docker compose up -d.
See the User Guide for the full Docker and Unraid setup.
Homebrew (macOS / Linuxbrew)¶
Upgrade with brew upgrade canticle. Run as a background service with
brew services start canticle. Storage defaults follow XDG base directories.
Tarball / zip¶
Download the archive for your platform from the
GitHub Releases page,
extract the binary, and place it on your PATH. On Windows, the signed .zip
extracts canticle.exe; see the Windows section of
the User Guide for NSSM service installation.
Build from source¶
Requires Go 1.26.4 or later.
Or clone the repository and use make:
See the Developer Guide for the full build and test setup.