Running AniBridge
Legal Disclaimer
Read the Legal Disclaimer first. Ensure your usage complies with applicable laws and site policies.
You can run AniBridge directly with Python or via Docker Compose.
Python
bash
python -m app.main
# INFO: Uvicorn on http://0.0.0.0:8000- Health:
GET /health - Docs: see API for curl examples
Docker Compose
Create a minimal docker-compose.yaml:
yaml
services:
anibridge:
image: ghcr.io/zzackllack/anibridge:latest
container_name: anibridge
ports:
- "8000:8000"
environment:
- DOWNLOAD_DIR=/data/downloads
- DATA_DIR=/data
- MAX_CONCURRENCY=3
volumes:
- ./data:/dataBring it up:
bash
docker compose up -d
curl -sS http://localhost:8000/healthFor the containerized development stack in this repository, prefer:
bash
docker compose -f docker/docker-compose.dev.yaml up --watch- Compose watch syncs
app/changes into the AniBridge container for fast iteration. - Build-affecting file changes still trigger a rebuild automatically.
Behind a VPN (Docker + Gluetun)
When using network_mode: service:gluetun, multiple containers share the same network namespace. They cannot bind the same internal port. Configure a unique port per service and expose it via the VPN container’s port mappings.
- Set a unique port using env vars in AniBridge:
ini
ANIBRIDGE_PORT=8083
ANIBRIDGE_HOST=0.0.0.0- Map that port on the Gluetun container to your host, for example:
yaml
services:
gluetun:
image: qmcgaw/gluetun
ports:
- "8083:8083/tcp" # expose AniBridge via VPN
anibridge:
image: ghcr.io/zzackllack/anibridge:latest
network_mode: "service:gluetun" # share network with gluetun
environment:
- ANIBRIDGE_PORT=8083
- ANIBRIDGE_HOST=0.0.0.0
- DOWNLOAD_DIR=/data/downloads
- DATA_DIR=/data
volumes:
- ./data:/data- Avoid
ANIBRIDGE_RELOADin production containers (development-only; reloader spawns extra process).
Logs
- Structured logs to stdout/stderr (loguru)
- Terminal capture to
data/terminal-YYYY-MM-DD.log
See Logging for details.