Deploy slskd on chaos (Soulseek daemon with share-back) #192
Labels
No labels
area:authentication
area:flake-utilities
area:performance
area:tbd
host:chaos
host:electra
host:fleet
host:lyra
host:nova
host:vega
investigation
phase:cutover
phase:deploy
phase:mcp
phase:module
phase:packaging
phase:prep
phase:validation
priority:high
priority:medium
project:attic-postgres-lyra-rollout
project:auto-update-reliability
project:auto-update-remediation
project:declarative-purity-cleanup
project:external-review
project:fleet-boundary-cleanup
project:host-facts-refactor
project:lyra-nixos-deploy
project:lyra-service-stack-migration
project:nebula-mesh-network
project:nixos-build-deployment-pipeline
project:security-hardening
project:service-stack-migration
project:vega-sillytavern-cutover
project:wiki-rebuild
repo:numtide/flake-utils
repo:numtide/nix-auth
repo:numtide/nixos-passthru-cache
repo:numtide/nix-relay
service:auto-update
service:mem0
service:nix
service:sillytavern
service:slskd
service:synthseek
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nimmo/nixos-config#192
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Run slskd (Soulseek daemon) as a Nix-managed OCI container on chaos, logged into the Soulseek network and sharing back from the shared NAS music library.
Decisions made
Musiclibrary (read-only usage by slskd).media/Music, where vega's Navidrome (read-only NFS view) picks them up automatically.192.168.8.238:/volume1/mediaover NFS (noro) at/srv/media.Tasks
boot.supportedFilesystems = [ "nfs" ]on chaos (module or host level)192.168.8.238:/volume1/mediaon chaos using the sabnzbd option set plusnofailmodules/containers/slskd.nixfollowing the killarr pattern: pinned image version,nixosConfig.slskd.*options, imported byhosts/chaos/default.nix/srv/stacks/slskd(already inside chaos's backup dataPaths)secrets/slskd.yamlholding Soulseek username/password and an slskd API key; add its creation rule to.sops.yaml(admin keys + chaos)media/Music/_incoming), share config pointing atmedia/Music, listen port 50300docker-slskdto chaos service failure monitor/volume1/mediaUser actions needed
secrets/slskd.yamlCompletion criteria
nix flake checkpasses;just teston chaos brings up slskd healthyImplementation pushed on branch
feat/slskd-chaos(68159fc):modules/containers/slskd.nix— OCI container pinned to slskd 0.26.0, dormant until the secrets file exists (BookStack/Karakeep precedent)SLSKD_*env vars via a sops template; no secrets in rendered YAML/volume1/mediaat/srv/media; downloads stage inmusic-incoming, deliberately outsideMusicso Navidrome's read-only view never sees partial filesMusicshared back to the network; listen port 50300 published and opened for optional router forwardingnix flake checkgreen; dormancy verified (no container/secrets in chaos evaluation while the file is absent)Next step (human): check out this branch and run
sops secrets/slskd.yaml, filling in:The Soulseek account self-registers on first server connect. Remaining user actions: Synology NFS rw rule for chaos's IP, optional router forward of TCP 50300.
Deployment evidence (test activation on chaos, 2026-08-26):
docker-slskdactive; web UI 200 on 127.0.0.1:5030; listening on 50300Connected to the Soulseek server/Logged in to the Soulseek server as photophobic-nucleus— account self-registered/srv/mediaNFS rw verified (touch/rm inmusic-incoming)Fixes landed during bring-up: pre-created directories (docker chown fails on root-squashed NFS; slskd requires custom incomplete dir to exist) and share config moved to top-level
shares:for slskd 0.26 (upstream PR #1672).Merged to main as
5e27442; chaos's pull-only updater will make it permanent. Remaining follow-ups: Synology NFS rw ACL was confirmed working for chaos's IP; CGNAT noted — slskd runs passive (inbound blocked), downloads unaffected for most sources; revisit via VPS tunnel if source availability suffers.Working well, closing issue