Deploy synthseek on chaos wired to slskd and the NAS library #193
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#193
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
Deploy Synthseek (
ghcr.io/arukaraz/synthseek) on chaos, wired to slskd and the NAS music library, with its web UI exposed behind Pangolin.Depends on the slskd-on-chaos issue.
Decisions made
latest./data->/srv/stacks/synthseek(inside chaos backup paths),/music-> NASmedia/Music(rw),/downloads-> slskd completed-staging dir.AUTH_SECRETgenerated once (openssl rand -base64 48) and stored via SOPS.seek.nimmog.uk; slskd stays internal.Known gotchas from the music.nimmog.uk setup (2026-08-25)
method=httpfield set explicitly;nullgives a permanent instant503 "no available server"even when resource, target, and newt all report healthy, and it survives stack restarts.sso=true; flip tofalsefor apps that authenticate their own users (synthseek has local accounts + Plex OAuth). Subsonic/OIDC-incapable clients are why Jellyfin runs the same way.hcHostname; update-target calls resethcEnabledunless re-passed and reassigninternalPort.Tasks
modules/containers/synthseek.nixfollowing the killarr/paseo-relay pattern withnixosConfig.synthseek.*optionshttp://slskd:5030(alias on a user-defined network)AUTH_SECRETin SOPS; wire into container environmentdocker-synthseekto failure monitorseek.nimmog.uk(mode http, target method=http, sso=false, GET / health check against the container alias)media/Music-> new material appears in Navidrome on vega without a manual rescanCompletion criteria
Implementation pushed on branch
feat/synthseek-chaos(f05477d):modules/containers/synthseek.nix— dormant untilsecrets/synthseek.yamlexists; joins slskd's new shared docker network (slskd-net) so the API is reachable athttp://slskd:5030/srv/media/Music, which vega's Navidrome watchesnixosConfig.slskd.networkName; network created idempotently at preStartnix flake checkgreen; closure builds; dormancy verifiedNext step (human): check out this branch and run
sops secrets/synthseek.yamlwith:Then activate. First boot: create the admin account in the web UI, then Settings -> connect slskd (URL
http://slskd:5030, API key from secrets/slskd.yaml).Deployment evidence (test activation on chaos, 2026-08-26):
docker-synthseekactive; Synthseek v2.5.0 ready in 5.5s, database connected, container reports healthydocker-slskdrecreated onto the sharedslskd-netnetwork alongside it — both containers healthyRemaining before merge: admin account creation + slskd integration (
http://slskd:5030+ API key from secrets/slskd.yaml) in the Settings UI, then one end-to-end acquisition (search -> download -> Beets organise -> appears in Navidrome).Closing out — full pipeline verified live and merged to main (
1a8e013).Live deployment evidence:
Music/The Aquabats!/Finally!/-> visible in Navidromephotophobic-nucleus) with shares actively browsed by real peersslskd-net; slskd web UI loopback-onlyFixes landed during bring-up (all in the branch):
shares:(upstream PR #1672)Scanner.Schedule = @every 15mon vega — the fs watcher cannot see cross-host NFS writes and upstream disables periodic scanning by defaultUpdaters will make everything permanent on chaos and deliver the scan schedule to vega. Known quirks noted: one transient dead-menu first load (self-healed, watch for recurrence); CGNAT keeps slskd passive (inbound blocked, downloads unaffected); Weezer "1900..." searches found zero sources — genuinely rare material.