No introduction found. Create it?
Install with:
helm repo add slskd oci://ghcr.io/bjw-s-labs/charts/
helm install slskd slskd/slskd -f values.yamlSee examples from other people.
| Name | Repo | Stars | Version | Timestamp |
|---|---|---|---|---|
| slskd | deedee-ops/home-ops | 36 | 5.3.0 | 6 days ago |
| slskd | onedr0p/home-ops | 2916 | 5.3.0 | 13 days ago |
| slskd | ishioni/homelab-ops | 171 | 5.3.0 | 14 days ago |
See the most popular values for this chart:
| Key | Types |
|---|---|
| number | |
| boolean | |
| number | |
| string | |
| number | |
service.app.forceRename (9) {{ .Release.Name }} | string |
| boolean | |
| string | |
service.app.annotations."lbipam.cilium.io/ips" (2) ${SLSKD_ADDRESS} | string |
service.app.type (2) LoadBalancer | string |
service.soulseek.annotations."lbipam.cilium.io/ips" (7) 192.168.69.127 | string |
| string | |
| number | |
| string | |
service.soulseek.type (7) LoadBalancer | string |
| string | |
service.soulseek.ipFamilies[] (1) - IPv4 | string |
service.soulseek.ipFamilyPolicy (1) PreferDualStack | string |
| string | |
persistence.tmp.type (18) emptyDir | string |
| string | |
persistence.config-file.type (17) configMap | string |
persistence.config-file.globalMounts[].path (16) /config/slskd.yml | string |
| string | |
| boolean | |
| string | |
persistence.config-file.name (5) slskd-configmap | string |
| number | |
persistence.config-file.advancedMounts.slskd.gluetun[].path (1) /config/slskd.yaml | string |
persistence.config-file.advancedMounts.slskd.gluetun[].subPath (1) slskd.yaml | string |
| string | |
| string | |
| string | |
persistence.media.path (11) ${NAS_BASE_URL}/media | string |
persistence.media.server (11) ${NAS_ADDRESS} | string |
| boolean | |
persistence.media.existingClaim (3) downloads-staging | string |
| string | |
persistence.media.hostPath (1) /var/mnt/ssd/media | string |
persistence.media.volumeSpec.nfs.path (1) /var/nfs/shared/media | string |
| string | |
persistence.config.existingClaim (13) {{ .Release.Name }} | string |
persistence.config.accessMode (1) ReadWriteOnce | string |
persistence.config.dataSourceRef.apiGroup (1) volsync.backube | string |
persistence.config.dataSourceRef.kind (1) ReplicationDestination | string |
persistence.config.dataSourceRef.name (1) slskd-restore | string |
| boolean | |
| string | |
| boolean | |
| string | |
persistence.config.storageClass (1) local-hostpath | string |
persistence.config.type (1) persistentVolumeClaim | string |
| string | |
| boolean | |
persistence.music.globalMounts[].subPath (2) media/music | string |
| string | |
persistence.music.volumeSpec.csi.driver (2) nfs.csi.k8s.io | string |
persistence.music.volumeSpec.csi.volumeAttributes.mountOptions (2) noac,nfsvers=4.1,nconnect=16,hard,noatime | string |
persistence.music.volumeSpec.csi.volumeAttributes.server (2) nas-k8s.internal | string |
persistence.music.volumeSpec.csi.volumeAttributes.share (2) /mnt/tank/media | string |
persistence.music.hostPath (1) /var/tank/nas/library/media/music | string |
persistence.music.path (1) /data/media/music | string |
persistence.music.server (1) 192.168.20.11 | string |
| string | |
| string | |
| string | |
persistence.data.volumeSpec.csi.driver (2) nfs.csi.k8s.io | string |
persistence.data.volumeSpec.csi.volumeAttributes.mountOptions (2) noac,nfsvers=4.1,nconnect=16,hard,noatime | string |
persistence.data.volumeSpec.csi.volumeAttributes.server (2) nas-k8s.internal | string |
persistence.data.volumeSpec.csi.volumeAttributes.share (2) /mnt/fast/media | string |
persistence.app-data.accessMode (1) ReadWriteOnce | string |
| string | |
| string | |
persistence.app-data.storageClass (1) openebs-hostpath | string |
persistence.app-data.type (1) persistentVolumeClaim | string |
persistence.coredns.advancedMounts.slskd.coredns[].path (1) /etc/coredns/Corefile | string |
| boolean | |
| string | |
persistence.coredns.name (1) slskd-coredns | string |
persistence.coredns.type (1) configMap | string |
| string | |
persistence.downloads.hostPath (1) /var/tank/nas/downloads | string |
persistence.downloads.type (1) hostPath | string |
persistence.gluetun-config.advancedMounts.slskd.gluetun[].path (1) /gluetun/auth/config.toml | string |
| boolean | |
| string | |
persistence.gluetun-config.name (1) slskd-gluetun-config | string |
| string | |
persistence.media-music.existingClaim (1) media-music-downloads | string |
persistence.media-music.globalMounts[].path (1) /media/music-downloads | string |
persistence.media-music.type (1) persistentVolumeClaim | string |
persistence.media-shared.globalMounts[].path (1) /media/music | string |
| boolean | |
persistence.media-shared.path (1) /media/music | string |
persistence.media-shared.server (1) nas.servers.internal | string |
| string | |
| number | |
persistence.scripts.globalMounts[].path (1) /scripts/wrtag-import.sh | string |
persistence.scripts.globalMounts[].subPath (1) wrtag-import.sh | string |
| string | |
persistence.scripts.type (1) configMap | string |
| string | |
| string | |
persistence.tmpfs.type (1) emptyDir | string |
route.app.hostnames[] (18) - {{ .Release.Name }}.${SECRET_DOMAIN} | string |
route.app.parentRefs[].name (18) envoy-internal | string |
| string | |
| string | |
| number | |
| string | |
| string | |
| string | |
route.app.rules[].filters[].responseHeaderModifier.set[].name (2) Content-Security-Policy | string |
route.app.rules[].filters[].responseHeaderModifier.set[].value (2) default-src 'self' data:; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; | string |
route.app.rules[].filters[].type (2) ResponseHeaderModifier | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
route.app.annotations."gethomepage.dev/description" (2) Soulseek Client | string |
| string | |
| string | |
route.app.annotations."gethomepage.dev/widget.key" (1) {{`{{HOMEPAGE_VAR_SLSKD_API_KEY}}`}} | string |
| string | |
route.app.annotations."gethomepage.dev/widget.url" (1) http://slskd.downloads | string |
controllers.slskd.containers.app.image.repository (17) ghcr.io/slskd/slskd | string |
controllers.slskd.containers.app.image.tag (17) 0.26.2@sha256:d0963a3e5b16facd295bf4f2156dad0182f246b1b21a032cae12f5494c694843 | string |
| boolean | |
| number | |
| number | |
| number | |
| string | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| boolean | |
| number | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
| boolean | |
| boolean | |
| number | |
| number | |
| boolean | |
| string | |
| boolean, string | |
| string | |
| number | |
controllers.slskd.containers.app.env.TZ (15) America/New_York | string |
| number | |
| boolean | |
| boolean | |
| string, boolean | |
controllers.slskd.containers.app.env.SLSKD_SHARED_DIR (3) /media/downloads/soulseek/shared | string |
controllers.slskd.containers.app.env.SLSKD_DOWNLOADS_DIR (2) /media/downloads/slskd/complete | string |
controllers.slskd.containers.app.env.SLSKD_INCOMPLETE_DIR (2) /media/downloads/slskd/incomplete | string |
controllers.slskd.containers.app.env.SLSKD_SHARE_FILTER (2) Thumbs.db$;\.DS_Store$ | string |
| string | |
| number, string | |
| number, string | |
| string, boolean | |
controllers.slskd.containers.app.env.SLSKD_VPN_GLUETUN_URL (2) http://localhost:8000 | string |
| string, boolean | |
| string | |
| string | |
controllers.slskd.containers.app.env.SLSKD_CONFIG (1) /tmp/slskd.yaml | string |
| number | |
| boolean | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| string | |
| string | |
controllers.slskd.containers.app.env.SLSKD_SLSK_PASSWORD (1) ${SLSKD_SLSK_PASSWORD} | string |
| string | |
| string | |
controllers.slskd.containers.app.env.SLSKD_SLSK_USERNAME (1) ${SLSKD_SLSK_USERNAME} | string |
controllers.slskd.containers.app.envFrom[].secretRef.name (14) {{ .Release.Name }}-secret | string |
| string | |
| string | |
| string | |
controllers.slskd.type (4) statefulset | string |
| number, string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.slskd.initContainers.gluetun.env.VPN_PORT_FORWARDING_UP_COMMAND (1) /config/update-port.sh {{ "{{PORT}}" }} | string |
controllers.slskd.initContainers.gluetun.env.WIREGUARD_PRIVATE_KEY (1) ${SECRET_WIREGUARD_SLSKD_PROTON_PRIVATE_KEY} | string |
controllers.slskd.initContainers.gluetun.envFrom[].secretRef.name (3) slskd-gluetun-secret | string |
controllers.slskd.initContainers.gluetun.image.repository (3) ghcr.io/qdm12/gluetun | string |
controllers.slskd.initContainers.gluetun.image.tag (3) v3.41.3@sha256:fa19cc76b2af13d57a8d3dc3066f2ada061b1c761b8aecf989b3877c0486e027 | string |
| string | |
| string | |
| boolean | |
| number | |
| boolean | |
| number | |
| boolean | |
| boolean | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| string | |
| number | |
| string | |
controllers.slskd.initContainers.gluetun.lifecycle.postStart.exec.command[] (1) - /bin/sh | string |
| string | |
controllers.slskd.initContainers.coredns.args[] (1) - -conf | string |
controllers.slskd.initContainers.coredns.image.repository (1) mirror.gcr.io/coredns/coredns | string |
| string | |
| string | |
| number | |
| number | |
| string | |
| string | |
| string | |
| string | |
controllers.slskd.strategy (1) Recreate | string |
| string | |
| string | |
controllers.main.annotations.glance/url (2) https://soulseek.${ROOT_DOMAIN} | string |
| string | |
| string | |
| string | |
| number | |
| boolean | |
| boolean | |
| boolean | |
| number | |
controllers.main.containers.app.env.TZ (2) Europe/Warsaw | string |
| string | |
controllers.main.containers.app.image.repository (2) ghcr.io/slskd/slskd | string |
controllers.main.containers.app.image.tag (2) 0.26.2@sha256:d0963a3e5b16facd295bf4f2156dad0182f246b1b21a032cae12f5494c694843 | string |
| boolean | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| string | |
| string | |
| boolean | |
| string | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
controllers.main.type (2) statefulset | string |
| number | |
| string | |
| number | |
| boolean | |
| number | |
| string | |
defaultPodOptions.annotations."k8s.v1.cni.cncf.io/networks" (5) [{
"name": "vpn",
"namespace": "kube-system",
"ips": ["192.168.69.13/24"],
"mac": "02:00:c0:a8:45:0d"
}] | string |
| boolean | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
configMaps.config.data."slskd.yml" (11) directories:
downloads: /data/complete
incomplete: /data/incomplete
transfers:
download:
destination:
permissions:
mode: 750
shares:
directories:
- /music
filters:
- \.ini$
- Thumbs.db$
- \.DS_Store$ | string |
configMaps.config.data."slskd.yaml" (1) soulseek:
listenPort: 50429
directories:
downloads: /media/Downloads/soulseek/complete
incomplete: /media/Downloads/soulseek/incomplete
transfers:
download:
destination:
permissions:
mode: 750
retry:
partial: resume
attempts: 3
delay: 5000
max_delay: 60000
shares:
directories:
- /media/Music
- /media/Downloads/soulseek/shared
filters:
- \.ini$
- Thumbs.db$
- \.DS_Store$ | string |
configMaps.config.data."update-port.sh" (1) #!/bin/sh
set -eu
PORT="${1:?forwarded port must be passed as the first argument}"
IN="/config/slskd.yaml"
OUT="/tmp/slskd.yaml"
case "$PORT" in
''|*[!0-9]*)
echo "ERROR: PORT must be an integer, got: $PORT" >&2
exit 2
;;
esac
if [ "$PORT" -lt 1 ] || [ "$PORT" -gt 65535 ]; then
echo "ERROR: PORT must be in range 1..65535, got: $PORT" >&2
exit 2
fi
if [ ! -r "$IN" ]; then
echo "ERROR: input config not readable: $IN" >&2
exit 1
fi
tmp="$(mktemp "${OUT}.XXXXXX")"
cleanup() { rm -f "$tmp"; }
trap cleanup EXIT INT TERM
sed -E "s/^([[:space:]]*listenPort:).*/\1 ${PORT}/" "$IN" > "$tmp"
if ! grep -Eq '^[[:space:]]*listenPort:[[:space:]]*[0-9]+' "$tmp"; then
echo "ERROR: listenPort: key not found or not updated in $IN" >&2
exit 3
fi
mv -f "$tmp" "$OUT"
trap - EXIT INT TERM
chown 1000:1000 "$OUT"
echo "Updated listenPort to $PORT in $OUT" | string |
configMaps.config.data."wrtag-import.sh" (1) #!/bin/sh
# Parse JSON directly - jq handles unicode escapes like \u0027
dir=$(printf '%s' "$SLSKD_SCRIPT_DATA" | jq -r .localDirectoryName)
encoded=$(printf '%s' "$dir" | jq -sRr @uri)
wget -q -O/dev/null \
--post-data "path=$encoded" \
--header="Authorization: Basic $(echo -n ":$WRTAG_API_KEY" | base64)" \
"http://wrtag.media.svc.cluster.local/op/move" | string |
defaultExternalSecretStoreRef.kind (1) ClusterSecretStore | string |
| string | |
| string | |
externalSecrets.env.target.template.data.SLSKD_API_KEY (1) {{ .SLSKD_API_KEY }} | string |
externalSecrets.env.target.template.data.SLSKD_SLSK_PASSWORD (1) {{ .SLSKD_SLSK_PASSWORD }} | string |
externalSecrets.env.target.template.data.SLSKD_SLSK_USERNAME (1) {{ .SLSKD_SLSK_USERNAME }} | string |
| string | |
| string |