Sign inSign up

ppaslan/sabnzbd

By ppaslan

Updated 2 days ago

Image
0

7.3K

ppaslan/sabnzbd repository overview

SABnzbd

Hardened SABnzbd image — no s6-overlay, no shell, non-root, read-only root filesystem.

Features

  • Runs as non-root (USER 1000:1000 default, overridable)
  • readOnlyRootFilesystem compatible
  • No shell — Python entrypoint, SABnzbd runs as PID 1 via os.execv
  • Includes par2cmdline-turbo, official unrar, 7zip
  • Multi-language support (translations pre-built)
  • Multi-arch: amd64, arm64

Environment variables

VariableDescriptionDefault
HOST_WHITELISTComma-separated hostnames for host_whitelist in sabnzbd.ini
SABNZBD_CONFIG_DIRConfig directory path/config
SABNZBD_LISTENListen address and port0.0.0.0:8080
SABNZBD_COMPLETE_DIROverride completed downloads directory in sabnzbd.ini
SABNZBD_DOWNLOAD_DIROverride incomplete downloads directory in sabnzbd.ini

Volumes

PathPurpose
/configPersistent data — sabnzbd.ini, databases, logs
/incompleteTemporary download files
/tmpGeneral temporary files

Docker Compose

services:
  sabnzbd:
    image: ppaslan/sabnzbd:latest
    restart: unless-stopped
    user: "1000:1000"
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL
    environment:
      - HOST_WHITELIST=sabnzbd.example.com
      - SABNZBD_COMPLETE_DIR=/media/downloads
      - SABNZBD_DOWNLOAD_DIR=/incomplete
    ports:
      - "8080:8080"
    volumes:
      - ./config:/config
      - /media:/media
    tmpfs:
      - /tmp:size=128m
      - /incomplete:size=150g

Kubernetes

spec:
  securityContext:
    runAsUser: 1000
    runAsGroup: 1000
    runAsNonRoot: true
    fsGroup: 1000
    fsGroupChangePolicy: OnRootMismatch
    seccompProfile:
      type: RuntimeDefault
  containers:
    - name: sabnzbd
      image: ppaslan/sabnzbd:latest
      securityContext:
        readOnlyRootFilesystem: true
        allowPrivilegeEscalation: false
        capabilities:
          drop: [ALL]
      env:
        - name: HOST_WHITELIST
          value: "sabnzbd.example.com"
      volumeMounts:
        - name: config
          mountPath: /config
        - name: incomplete
          mountPath: /incomplete
        - name: tmp
          mountPath: /tmp
        - name: media
          mountPath: /media
  volumes:
    - name: config
      persistentVolumeClaim:
        claimName: sabnzbd-config
    - name: incomplete
      emptyDir:
        sizeLimit: 150Gi
    - name: tmp
      emptyDir:
        medium: Memory
        sizeLimit: 128Mi
    - name: media
      persistentVolumeClaim:
        claimName: media

Building

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --build-arg SABNZBD_VERSION=4.5.5 \
  -t ppaslan/sabnzbd:4.5.5 \
  images/sabnzbd/

Tag summary

Content type

Image

Digest

sha256:f5b9b0689

Size

60.4 MB

Last updated

2 days ago

docker pull ppaslan/sabnzbd