3.0 KiB
Importarr
Importarr is an Arr-style service for importing manually categorized SABnzbd downloads after SAB reports final completion. It owns one SAB category, defaults to manual, and refuses to import transient Direct Unpack paths or jobs still in SAB queue/post-processing.
New-machine install
Importarr is intended to feel like a small Arr service: deploy the container or systemd service, edit one env file, point SABnzbd category manual at the same completed-download path, then open the web UI.
Docker Compose, recommended
mkdir -p /opt/importarr/config
cd /opt/importarr
curl -fsSLO https://gitea.delphas.dk/daniels/importarr/raw/branch/main/deploy/docker-compose.example.yml
curl -fsSLo importarr.env https://gitea.delphas.dk/daniels/importarr/raw/branch/main/deploy/importarr.env.example
${EDITOR:-vi} importarr.env
docker compose -f docker-compose.example.yml --env-file importarr.env up -d
Then open http://host:8765/ or put it behind your reverse proxy. For a local build instead of a published image, run:
docker build -t importarr:local .
systemd / pip install
git clone https://gitea.delphas.dk/daniels/importarr.git
cd importarr
sudo sh deploy/systemd-install.sh
sudo install -o importarr -g importarr -d /var/lib/importarr
sudo ${EDITOR:-vi} /etc/importarr/importarr.env
sudo systemctl start importarr.service
The installer creates the importarr system user when needed.
Required setup
- In SABnzbd, create or confirm category
manual. - Set its completed folder to the same path mounted as
IMPORTARR_DOWNLOAD_ROOT. - Set
IMPORTARR_SAB_URLandIMPORTARR_SAB_API_KEY. - Mount/configure
IMPORTARR_MOVIES_ROOTandIMPORTARR_TV_ROOTread/write. - Set
IMPORTARR_AUTH_TOKENunless write endpoints are protected by a reverse proxy. - Check
GET /health, then inspect/api/jobsbefore running imports.
Safety model
- SAB-managed imports must be in
IMPORTARR_SAB_CATEGORYand present in SAB history asCompletedwith finalstorage. - Active queue/post-processing states such as
Queued,Repairing,Extracting, andMovingare never ready. _UNPACK_,__UNPACK__,_FAILED_, and_ADMIN_paths are skipped.- Manual batches are explicit one-time folders under
IMPORTARR_DOWNLOAD_ROOT.
API
GET /healthGET /api/statusGET /api/jobsGET /api/historyGET /api/manual-batchesPOST /api/manual-batcheswith{ "path": "relative/or/absolute/path" }DELETE /api/manual-batches/{id}POST /api/import/run-now
Set IMPORTARR_AUTH_TOKEN to require Authorization: Bearer <token> for write endpoints.
Development
python3.12 -m venv .venv
. .venv/bin/activate
pip install -e '.[test]'
pytest
uvicorn importarr.main:app --reload
Migration notes for dgsserver1
Export the existing script settings into IMPORTARR_* env vars, add historical folders as explicit manual batches, run a dry-run/inspection through /api/jobs, then switch the systemd service or Compose route after the ready set matches expectations.