services:maintenance_engines
Differences
This shows you the differences between two versions of the page.
| services:maintenance_engines [2026/06/17 14:18] – created - external edit 127.0.0.1 | services:maintenance_engines [2026/06/17 14:19] (current) – privacyl0st | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Cleanuparr & ByParr Maintenance Engines ====== | ||
| + | Because this ecosystem utilizes public trackers, automated torrent clients can easily become paralyzed by dead swarms (0 seeders) or " | ||
| + | |||
| + | ===== Part 1: Cleanuparr (Native System Daemon) ===== | ||
| + | Cleanuparr is a Python-based utility that actively monitors qBittorrent and the ARR stack. If a download stalls for too long, or a completed file fails to import properly, Cleanuparr deletes the file and instructs the ARR app to search for a new, healthier release. | ||
| + | |||
| + | ==== 1. Virtual Environment Execution ==== | ||
| + | To prevent Python dependency conflicts with the underlying Ubuntu OS, Cleanuparr must be executed in an isolated virtual environment. | ||
| + | |||
| + | <file bash> | ||
| + | sudo apt install python3-venv -y | ||
| + | mkdir / | ||
| + | python3 -m venv venv | ||
| + | source venv/ | ||
| + | pip install cleanuparr | ||
| + | </ | ||
| + | |||
| + | ==== 2. Systemd Service Orchestration ==== | ||
| + | Create a native background daemon to run the cleanup loop permanently. | ||
| + | |||
| + | < | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | <file bash / | ||
| + | [Unit] | ||
| + | Description=Cleanuparr Torrent Maintenance Daemon | ||
| + | After=network.target qbittorrent-nox.service | ||
| + | |||
| + | [Service] | ||
| + | Type=simple | ||
| + | User=qbituser | ||
| + | Group=qbituser | ||
| + | WorkingDirectory=/ | ||
| + | ExecStart=/ | ||
| + | Restart=always | ||
| + | RestartSec=30 | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </ | ||
| + | |||
| + | Activate the service: | ||
| + | < | ||
| + | sudo systemctl daemon-reload | ||
| + | sudo systemctl enable --now cleanuparr | ||
| + | </ | ||
| + | |||
| + | ===== Part 2: ByParr (Dockerized Synchronization) ===== | ||
| + | ByParr performs deep-state synchronization. It ensures that if you manually delete a movie from Plex, the file is physically removed from the NAS, and Radarr' | ||
| + | |||
| + | Because ByParr does not require native host networking, it is deployed inside an isolated Docker container. | ||
| + | |||
| + | ==== 1. Docker Runtime Deployment ==== | ||
| + | Execute the container deployment via `docker-compose`. | ||
| + | |||
| + | < | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | <file yaml / | ||
| + | version: ' | ||
| + | services: | ||
| + | byparr: | ||
| + | image: byparr/ | ||
| + | container_name: | ||
| + | environment: | ||
| + | - PUID=1000 # Matches your mapped media user UID | ||
| + | - PGID=1000 # Matches your mapped media group GID | ||
| + | - TZ=America/ | ||
| + | volumes: | ||
| + | - / | ||
| + | - / | ||
| + | restart: unless-stopped | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | cd /opt/byparr | ||
| + | sudo docker-compose up -d | ||
| + | </ | ||
| + | |||
| + | **Next Step:** Move to the DMZ (VLAN 20) and deploy the user-facing request interface in [[services: | ||
services/maintenance_engines.txt · Last modified: by privacyl0st
