No introduction found. Create it?
Install with:
helm repo add app-template oci://ghcr.io/bjw-s-labs/helm/app-template
helm install slskd app-template/app-template -f values.yamlSee examples from other people.
| Name | Repo | Stars | Version | Timestamp |
|---|---|---|---|---|
| slskd | onedr0p/home-ops | 2715 | 4.6.2 | 10 days ago |
| slskd | ahinko/home-ops | 271 | 4.6.2 | a month ago |
| slskd | carpenike/k8s-gitops | 305 | 4.0.1 | 8 months ago |
See the most popular values for this chart:
| Key | Types |
|---|---|
| number, string | |
| string | |
| number, string | |
| boolean | |
| number, string | |
| string | |
defaultPodOptions.annotations."k8s.v1.cni.cncf.io/networks" (4) [{
"name": "vpn",
"namespace": "kube-system",
"ips": ["192.168.69.13/24"],
"mac": "02:00:c0:a8:45:0d"
}] | string |
| boolean | |
| boolean | |
persistence.config-file.type (24) configMap | string |
persistence.config-file.globalMounts[].path (22) /config/slskd.yml | string |
| string | |
| boolean | |
persistence.config-file.name (15) slskd-configmap | string |
| string | |
| number | |
| string | |
| boolean | |
| string | |
persistence.config-file.advancedMounts.slskd.gluetun[].path (1) /config/slskd.yaml | string |
persistence.config-file.advancedMounts.slskd.gluetun[].subPath (1) slskd.yaml | string |
persistence.config-file.advancedMounts.slskd.slskd[].path (1) /scripts/beets.sh | string |
| boolean | |
| string | |
persistence.tmp.type (23) emptyDir | string |
| string | |
persistence.media.globalMounts[].subPath (10) Downloads/soulseek | string |
| string | |
persistence.media.path (16) /mnt/eros/Media | string |
persistence.media.server (16) nas.internal | string |
persistence.media.existingClaim (6) slskd-downloads-pvc | string |
| boolean | |
persistence.media.volumeSpec.csi.driver (2) nfs.csi.k8s.io | string |
| string | |
persistence.media.volumeSpec.csi.volumeAttributes.share (2) /mnt/cache/merger | string |
| string | |
persistence.config.accessMode (3) ReadWriteOnce | string |
| string | |
persistence.config.type (3) persistentVolumeClaim | string |
| string | |
persistence.config.storageClass (1) local-hostpath | string |
persistence.coredns.advancedMounts.slskd.coredns[].path (2) /etc/coredns/Corefile | string |
| string | |
| boolean | |
persistence.coredns.name (2) slskd-coredns | string |
persistence.coredns.type (2) configMap | string |
| number | |
persistence.scripts.globalMounts[].path (2) /scripts/wrtag.sh | string |
| boolean | |
| string | |
persistence.scripts.name (2) {{ .Release.Name }} | string |
persistence.scripts.type (2) configMap | string |
| string | |
persistence.data.path (1) /mnt/user/data/soulseek | string |
persistence.data.server (1) aincrad.home.vzkn.eu | string |
| 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 | |
| string | |
| string | |
persistence.tmpfs.type (1) emptyDir | string |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| boolean | |
| number | |
service.app.forceRename (10) {{ .Release.Name }} | string |
| boolean | |
| string | |
service.app.annotations."lbipam.cilium.io/ips" (4) ${SLSKD_ADDRESS} | string |
service.app.type (4) LoadBalancer | string |
service.app.ipFamilyPolicy (1) PreferDualStack | string |
| number | |
| string | |
service.soulseek.type (8) LoadBalancer | string |
| string | |
| string | |
service.soulseek.ipFamilies[] (1) - IPv4 | string |
service.soulseek.ipFamilyPolicy (1) PreferDualStack | string |
| string | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| string | |
| string | |
| number | |
| boolean | |
| string | |
| number | |
| boolean | |
controllers.slskd.containers.app.env.TZ (17) ${TIMEZONE} | string |
| boolean | |
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 |
controllers.slskd.containers.app.env.SLSKD_SHARED_DIR (2) /media/downloads/slskd/shared | string |
| string | |
controllers.slskd.containers.app.env.WRTAG_URL (2) wrtag.media.svc.cluster.local | string |
controllers.slskd.containers.app.env.BEETS_HOST (1) beets.default.svc.cluster.local | string |
| string | |
controllers.slskd.containers.app.env.SLSKD_CONFIG (1) /tmp/slskd.yaml | string |
| boolean | |
| boolean | |
| boolean | |
| number | |
| number | |
| number | |
| number | |
| number | |
| number | |
| number | |
controllers.slskd.containers.app.env.SLSKD_SLSK_PASSWORD (1) ${SLSKD_SLSK_PASSWORD} | string |
controllers.slskd.containers.app.env.SLSKD_SLSK_USERNAME (1) ${SLSKD_SLSK_USERNAME} | string |
| string | |
| string | |
controllers.slskd.containers.app.image.repository (22) ghcr.io/slskd/slskd | string |
controllers.slskd.containers.app.image.tag (22) 0.24.3@sha256:bcf9820dab68e21d2bba8ebb1ffd583d71fcba542a50a1e998119f69b7b498fe | string |
| boolean | |
| number | |
| number | |
| number | |
| number | |
| string | |
| number | |
controllers.slskd.containers.app.probes.liveness.spec.exec.command[] (1) - ping | string |
| boolean | |
| boolean | |
| boolean | |
| number | |
| number | |
| number | |
| string | |
| number | |
| number | |
controllers.slskd.containers.app.probes.readiness.spec.exec.command[] (1) - ping | string |
| boolean | |
| number | |
| number | |
| string | |
| string | |
| string | |
controllers.slskd.containers.app.envFrom[].secretRef.name (21) {{ .Release.Name }}-secret | string |
| boolean | |
| string | |
| boolean | |
| number | |
| boolean | |
| number | |
| string | |
| string | |
| string | |
| number | |
| boolean | |
| boolean | |
| number | |
controllers.slskd.containers.slskd.env.TZ (1) America/New_York | string |
| string | |
controllers.slskd.containers.slskd.image.repository (1) ghcr.io/slskd/slskd | string |
| string | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| string | |
| string | |
| string | |
| boolean | |
| string | |
| boolean | |
controllers.slskd.type (7) statefulset | string |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.slskd.initContainers.gluetun.env.FIREWALL_OUTBOUND_SUBNETS (3) 192.168.0.0/20,10.42.0.0/16 | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
controllers.slskd.initContainers.gluetun.env.VPN_PORT_FORWARDING_UP_COMMAND (2) {{`/bin/sh -c 'sed -i "s/^\([[:space:]]*\)listenPort:.*/\1listenPort: {{PORT}}/" /config/slskd.yml'`}}
| string |
| string | |
| string | |
| string | |
controllers.slskd.initContainers.gluetun.env.TZ (1) Europe/Berlin | string |
| string | |
| number | |
controllers.slskd.initContainers.gluetun.envFrom[].secretRef.name (3) {{ .Release.Name }}-secret | string |
controllers.slskd.initContainers.gluetun.image.repository (3) ghcr.io/qdm12/gluetun | string |
controllers.slskd.initContainers.gluetun.image.tag (3) v3.41@sha256:6b54856716d0de56e5bb00a77029b0adea57284cf5a466f23aad5979257d3045 | string |
| boolean | |
| boolean | |
| string | |
| number | |
controllers.slskd.initContainers.gluetun.probes.liveness.spec.httpGet.host (1) vpn-only-service.example.com | string |
| string | |
| boolean | |
| boolean | |
| string | |
| number | |
| boolean | |
| boolean | |
| string | |
| number | |
| number | |
| string | |
| string | |
| string | |
| boolean | |
| boolean | |
| number | |
| boolean | |
| number | |
| string | |
controllers.slskd.initContainers.gluetun.lifecycle.postStart.exec.command[] (2) - /bin/sh | string |
| number | |
| string | |
| string | |
controllers.slskd.initContainers.coredns.args[] (2) - -conf | string |
| string | |
| string | |
| string | |
controllers.slskd.initContainers.config-setup.command[] (1) - /usr/local/bin/bash | string |
| string | |
controllers.slskd.initContainers.config-setup.image.repository (1) ghcr.io/dmfrey/bash | string |
controllers.slskd.initContainers.config-setup.image.tag (1) 5.2.26-alpine3.20 | string |
| number | |
| number | |
| boolean | |
| number | |
controllers.slskd.initContainers.init-slskd-config.command[] (1) - /bin/sh | string |
controllers.slskd.initContainers.init-slskd-config.image.repository (1) ghcr.io/home-operations/busybox | string |
controllers.slskd.initContainers.init-slskd-config.image.tag (1) sandbox@sha256:441b70c7c0a18c2a179b5e1368998654ea58c421fdba01cbc14e0b0257c99455 | string |
| boolean | |
| string | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
| number | |
controllers.slskd.strategy (1) Recreate | 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.24.3@sha256:bcf9820dab68e21d2bba8ebb1ffd583d71fcba542a50a1e998119f69b7b498fe | string |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| boolean | |
| number | |
| string | |
| number | |
| number | |
| number | |
| number | |
| boolean | |
| number | |
| number | |
| string | |
| string | |
| boolean | |
| string | |
| boolean | |
| string | |
| string | |
| string | |
| string | |
controllers.main.type (2) statefulset | string |
route.app.hostnames[] (20) - {{ .Release.Name }}.${SECRET_DOMAIN} | string |
route.app.parentRefs[].name (20) 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 | |
route.app.annotations."gethomepage.dev/icon" (4) sh-slskd-light.png | string |
| string | |
route.app.annotations."gethomepage.dev/description" (3) Soulseek client | string |
route.app.annotations."gatus.home-operations.com/endpoint" (2) group: Downloads | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
route.main.hostnames[] (2) - soulseek.${SECRET_DOMAIN} | string |
route.main.parentRefs[].name (2) internal | string |
| string | |
| string | |
| string | |
| number | |
route.slskd.hostnames[] (2) - {{ .Release.Name }}.${SECRET_DOMAIN} | string |
route.slskd.parentRefs[].name (2) envoy-internal | string |
| string | |
| string | |
| number | |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
route.slskd.annotations."gethomepage.dev/widget.key" (1) {{`{{HOMEPAGE_VAR_SLSKD_API_KEY}}`}} | string |
| string | |
route.slskd.annotations."gethomepage.dev/widget.url" (1) http://slskd.downloads | string |
configMaps.config.data."slskd.yml" (7) directories:
downloads: /data/soulseek/complete
incomplete: /data/soulseek/incomplete
permissions:
file:
mode: 750
shares:
directories:
- /data/media/music
filters:
- \.ini$
- Thumbs.db$
- \.DS_Store$ | string |
configMaps.config.data."slskd.yaml" (1) soulseek:
listenPort: 50429
directories:
downloads: /mnt/media/downloads/soulseek/complete
incomplete: /mnt/media/downloads/soulseek/incomplete
permissions:
file:
mode: 750
shares:
directories:
- /mnt/media/downloads/soulseek/shared
filters:
- \.ini$
- Thumbs.db$
- \.DS_Store$ | string |
configMaps.config.data."update-port.sh" (1) #!/bin/sh
set -eu
: "${PORT:?PORT environment variable is required}"
IN="/config/slskd.yaml"
OUT="/tmp/slskd.yaml"
# Basic sanity check: numeric port, valid range.
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
# Replace the whole listenPort line, keeping indentation and key.
# If no listenPort line exists, we fail loudly (otherwise you'd think it worked).
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
# Make it the target file atomically.
mv -f "$tmp" "$OUT"
trap - EXIT INT TERM
# Match the ownership expected by the app container.
chown 2000:2000 "$OUT"
echo "Updated listenPort to $PORT in $OUT" | string |
configMaps.config-defaults.data."slskd.yml" (1) web:
authentication:
api_keys:
homepage_widget:
key: ${SLSKD_API_KEY_HOMEPAGE}
role: readonly
cidr: 10.42.0.0/16
global:
upload:
slots: 10
speed_limit: 1500
download:
slots: 500
directories:
downloads: /media/downloads/soulseek/complete
incomplete: /media/downloads/soulseek/incomplete
permissions:
file:
mode: 750
shares:
directories:
- /media/media/audio
filters:
- \.ini$
- Thumbs.db$
- \.DS_Store$
soulseek:
listenPort: 50429 | string |
| string | |
| string | |
| string | |
| string | |
| string | |
| string | |
ingress.app.className (1) internal-nginx | string |
ingress.app.hosts[].host (1) slskd.holthome.net | string |
| string | |
| string | |
| string |