Quickstart
Get AniBridge running in minutes. Pick one of the methods below.
Video walkthrough
Legal & Ethics
Read the short Legal and Compliance overview before continuing. AniBridge does not host or provide content. You are responsible for compliance with laws and site terms in your jurisdiction.
Option A — Docker (recommended)
The simplest and most reliable way to run AniBridge.
Minimal Compose
services:
anibridge:
image: ghcr.io/zzackllack/anibridge:latest
container_name: anibridge
ports:
- "8000:8000" # host:container
environment:
- QBIT_PUBLIC_SAVE_PATH=/downloads
volumes:
- ./downloads:/data/downloads # host path → container path
- ./data:/data # DB, logsVerify:
docker compose up -d
curl -sS http://localhost:8000/health
# {"status":"ok"}Sonarr/Prowlarr URLs
- Torznab:
http://anibridge:8000/torznab/api - qBittorrent base:
http://anibridge:8000/
With Gluetun (VPN sidecar)
Recommended for privacy and stability. AniBridge shares the VPN network namespace and is exposed via Gluetun’s port mapping.
services:
gluetun:
image: qmcgaw/gluetun:latest
container_name: gluetun
cap_add: ["NET_ADMIN"]
ports:
- "8001:8001/tcp" # expose AniBridge through the VPN container
environment:
# Fill according to the Gluetun docs for your provider
- VPN_SERVICE_PROVIDER=custom # or your provider name
- VPN_TYPE=wireguard # or openvpn
- WIREGUARD_PRIVATE_KEY=... # required for WireGuard
- WIREGUARD_ADDRESSES=10.64.0.2/32
# - SERVER_COUNTRIES=... # example for provider selection
anibridge:
image: ghcr.io/zzackllack/anibridge:latest
container_name: anibridge
network_mode: "service:gluetun" # route all traffic via Gluetun
environment:
# Gluetun's control server already uses port 8000 in this namespace
- ANIBRIDGE_PORT=8001
- QBIT_PUBLIC_SAVE_PATH=/downloads
volumes:
- ./downloads:/data/downloads
- ./data:/data
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "http://localhost:8001/health"]
interval: 30s
timeout: 5s
retries: 3Port collisions inside VPN namespace
Gluetun's HTTP control server listens on port 8000 by default. Containers sharing Gluetun's network namespace cannot also bind that port, so the example configures AniBridge to use 8001. Every app sharing the namespace must listen on a unique internal port.
Option B — Bare metal (prebuilt releases)
Download the binary for your OS/arch from GitHub Releases and run it.
# macOS (Apple Silicon example)
curl -L -o anibridge.tar.gz \
"https://github.com/zzackllack/AniBridge/releases/latest/download/anibridge-macos-arm64.tar.gz"
tar -xzf anibridge.tar.gz && chmod +x anibridge
./anibridgePlace a .env file next to the binary if you need to customize paths. See Environment.
Option C — Python (from source)
cd apps/api
uv sync --frozen
uv run python -m app.mainThe API listens on http://localhost:8000.
Next Steps
- Configure Prowlarr (Torznab):
http://localhost:8000/torznab/api - Configure Sonarr (qBittorrent):
http://localhost:8000/ - Browse Environment for available settings
- See Integrations → Sonarr, Integrations → Radarr and Integrations → Prowlarr for setup guides