Radarr Deployment - Role Overview

This page documents the Radarr Docker deployment using Ansible, illustrating the workflow, architecture, and best practices for deploying this containerized application with version control, persistent storage, and integration with an external PostgreSQL database.


1. Overview

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

Additionally, Radarr connects to an external PostgreSQL database, separating storage from the application for improved reliability and scalability.


2. Persistent Configuration and Backups

Persistent storage ensures application data is preserved across container restarts:

Example variables from the role:

radarr_setup_config_dir: "/config"
radarr_setup_backups_dir: "/nfs/backups/radarr"
radarr_setup_backup_filename: "{{ radarr_setup_backup_prefix }}{{ ansible_date_time.date }}.sqlc"

3. Docker Image Version Control

The role pins a specific Docker image version:

radarr_setup_version: "5.27.5.10198"
radarr_setup_docker_image_name: "radarr:{{ radarr_setup_version }}"

4. Deployment Workflow

The sequence for deploying Radarr is:

  1. Stop and remove existing container

    docker stop radarr
    docker rm radarr
    docker network prune -f
    
  2. Ensure persistent directories exist

    mkdir -p 
    mkdir -p 
    chown <user>:<group> 
    
  3. Deploy configuration files and Docker Compose

    • docker-compose.yml
    • config.xml (application-specific configuration)
  4. Prune unused Docker images (optional)

    docker image prune -f
    
  5. Pull the pinned Docker image

    docker-compose -f /docker-compose.yml pull
    
  6. Start the container

    docker-compose -f /docker-compose.yml up -d
    

5. Architecture Diagram

                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚  Host / Docker Environment   β”‚
                 β”‚                              β”‚
                 β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
                 β”‚ β”‚ Radarr Container         β”‚ β”‚
                 β”‚ β”‚ - Pinned Image           β”‚ β”‚
                 β”‚ β”‚ - Config & Backup Volumesβ”‚ β”‚
                 β”‚ β”‚ - Exposed Ports 7878/8787β”‚ β”‚
                 β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
                 β”‚                              β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚ Access
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚ Users / Clients             β”‚
                 β”‚ Web Browser / API           β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚ Database Connection
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚ External PostgreSQL Server  β”‚
                 β”‚ - Database: radarr-main     β”‚
                 β”‚ - User: radarr              β”‚
                 β”‚ - Port: 5432                β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

6. Key Features


7. Summary

The Radarr deployment role demonstrates a robust, production-like container workflow:

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