Music Streaming Stack (Gonic & Koito)
This guide covers the deployment of a self-hosted music streaming and scrobbling stack. Gonic serves as the lightweight, Subsonic-compatible music server, while Koito acts as a local ListenBrainz server to track your listening history privately.
1. LXC & Storage Preparation
Because i store my music on an SMB share, so LXC container needs access to it.
- Create the Container: Deploy a Privileged Debian 13 LXC in Proxmox. (A privileged container is required to properly map and handle external storage shares via the Proxmox host).
- Mount SMB to Proxmox: Ensure your SMB share is mounted at the datacenter/node level in the Proxmox GUI (e.g., at
/mnt/pve/<smb_id>). - Pass the Mount to the LXC: Power down the LXC container, then open the Proxmox node shell (not the container shell) and run the following command to map the directory:
2. Docker Installation
Next, install the Docker engine on the Debian 13 LXC.
Automated Deployment via Ansible
Instead of installing Docker manually, I utilized my custom Ansible playbook to automate the deployment. You can view the exact playbook used for this in my GitHub repository: install-docker.yaml
3. Docker Compose Deployment
Create a directory for your music stack and define the docker-compose.yml file.
services:
gonic:
image: sentriz/gonic:latest
container_name: gonic
environment:
- TZ=Europe/Warsaw
- GONIC_SCAN_WATCHER_ENABLED=true
ports:
- "4747:80"
volumes:
- ./data:/data
- /shared/music:/music:ro
- /shared/music/playlists:/playlists
- ./cache:/cache
restart: unless-stopped
koito:
image: gabehf/koito:latest
container_name: koito
ports:
- "4110:4110"
volumes:
- ./koito:/etc/koito
restart: unless-stopped
Start the stack:
4. Post-Install Configuration
With both containers running, we need to configure them and link Gonic to Koito for scrobbling.
Step A: Configure Koito (Scrobbling)
- Navigate to
http://<YOUR_IP>:4110. - Log in with the default credentials:
- Username:
admin -
Password:
changeme -
Immediately change your password in the settings.
- Locate and copy your API Key from the Koito dashboard.
Step B: Configure Gonic (Music Server)
- Navigate to
http://<YOUR_IP>:4747. - Log in with the default credentials:
- Username:
admin -
Password:
admin -
Change your admin password.
- Go to the ListenBrainz settings section.
- Set the ListenBrainz URL to point to your local Koito container:
http://<YOUR_IP>:4110/apis/listenbrainz - Paste the API Key you copied from Koito.
- Finally, trigger a manual Scan of your music folder so Gonic can build your library database.
5. Client Application
Since Gonic uses the standard Subsonic API, it is compatible with dozens of mobile and desktop clients.
I like Feishin.