SABnzbd Deployment - Role Overview

This page documents the SABnzbd Docker deployment using Ansible, illustrating the workflow, architecture, and best practices for deploying this containerized application with version control, persistent storage, and templated configuration.


1. Overview

SABnzbd is deployed in a Docker container using Ansible. Key steps include:

Unlike some other media applications, SABnzbd does not require an external database, simplifying deployment while still providing persistent storage for configuration and download management.


2. Persistent Configuration and Backups

Persistent storage ensures application data is preserved across container restarts:

Example variables from the role:

sabnzbd_setup_config_dir: "/config"
sabnzbd_setup_backups_dir: "{{ sabnzbd_setup_config_dir }}/sabnzbd"
sabnzbd_setup_backup_filename: "{{ sabnzbd_setup_backup_prefix }}{{ ansible_date_time.date }}.sqlc"

3. Docker Image Version Control

The role pins a specific Docker image version:

sabnzbd_setup_version: 4.5.3
sabnzbd_setup_docker_image_name: "sabnzbd:{{ sabnzbd_setup_version }}"

4. Deployment Workflow

The sequence for deploying SABnzbd is:

  1. Stop and remove existing container
docker stop sabnzbd
docker rm sabnzbd
docker network prune -f
  1. Ensure persistent directories exist
mkdir -p {{ sabnzbd_setup_config_dir }}
mkdir -p {{ sabnzbd_setup_backups_dir }}
chown <user>:<group> {{ sabnzbd_setup_config_dir }}
  1. Deploy configuration files and Docker Compose
  1. Prune unused Docker images (optional)
docker image prune -f
  1. Pull the pinned Docker image
docker-compose -f {{ sabnzbd_setup_config_dir }}/docker-compose.yml pull
  1. Start the container
docker-compose -f {{ sabnzbd_setup_config_dir }}/docker-compose.yml up -d

5. Architecture Diagram

                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚  Host / Docker Environment   β”‚
                 β”‚                              β”‚
                 β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
                 β”‚ β”‚ SABnzbd Container        β”‚ β”‚
                 β”‚ β”‚ - Pinned Image           β”‚ β”‚
                 β”‚ β”‚ - Config & Backup Volumesβ”‚ β”‚
                 β”‚ β”‚ - Exposed Port 8080      β”‚ β”‚
                 β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
                 β”‚                              β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚ Access
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚ Users / Clients             β”‚
                 β”‚ Web Browser / API           β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

6. Key Features


7. Summary

The SABnzbd deployment role demonstrates a straightforward, containerized workflow:

This workflow can be adapted for other containerized applications in the home lab, ensuring maintainability, reliability, and consistent infrastructure-as-code practices.