Other Deployment Options
This page covers ways to run Weebarr outside the basic Docker Desktop guides.
If you are new to Docker, use one of these first:
Image Registries
Weebarr is intended to be available from both:
ghcr.io/deepdaddyttv/weebarrdeepdaddyttv/weebarr
Use whichever registry fits your environment better.
Native Docker Compose on Linux
If you use Docker Engine directly, Weebarr runs normally with Docker Compose.
Example compose file:
services:
weebarr:
image: ghcr.io/deepdaddyttv/weebarr:latest
container_name: weebarr
environment:
TZ: UTC
WEEBARR_PUBLIC_URL: https://weebarr.example.com
SEERR_BASE_URL: http://seerr:5055
SEERR_API_KEY: change-me
SEERR_REQUEST_SEASONS: all
ports:
- "18080:8888"
volumes:
- /opt/weebarr/config:/config
restart: unless-stopped
If you want Docker Hub instead, change the image to:
image: deepdaddyttv/weebarr:latest
Before starting, change:
TZWEEBARR_PUBLIC_URLSEERR_BASE_URLSEERR_API_KEY
Start it with:
docker compose up -d
Portainer Stack
Weebarr can be deployed as a normal Portainer stack.
Recommended approach:
- use the published Weebarr image
- mount
/configso settings persist - store secrets as environment variables or Portainer secrets
- set
WEEBARR_PUBLIC_URLif using a public hostname
The important part is still the config mount:
volumes:
- /opt/weebarr/config:/config
Without that, your settings may not survive container recreation.
Reverse Proxy
Weebarr can sit behind a reverse proxy.
Common options include:
- Nginx Proxy Manager
- Caddy
- Traefik
Recommended setup:
- use HTTPS
- point the proxy to Weebarr’s internal port
- set
WEEBARR_PUBLIC_URLto the public URL users will actually visit - keep rate limiting or extra access protection enabled if possible
Example public URL:
https://weebarr.example.com
If Plex login behaves strangely, double-check that WEEBARR_PUBLIC_URL matches the public address exactly.
Cloudflare Tunnel
Weebarr works behind Cloudflare Tunnel.
If you use a tunnel:
- set
WEEBARR_PUBLIC_URLto the real public URL - keep Cloudflare TLS enabled
- keep Cloudflare rate limiting and abuse protections enabled
- forward traffic to the Weebarr container port
Example:
https://weebarr.example.com
The public URL matters because login flows and callbacks need to know the outside address.
Bare Python Runtime
Running Weebarr directly with Python is mainly for development.
Most users should use Docker instead.
Example development pattern:
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
WEEBARR_PUBLIC_URL=http://localhost:18080 \
SEERR_BASE_URL=http://localhost:5055 \
SEERR_API_KEY=change-me \
WEEBARR_PORT=18080 \
python -m src.main
Use this only if you are working on the app or testing code changes.
Custom Images or Forked Builds
If you build your own image:
- keep private URLs and keys out of the image
- pass runtime values through environment variables
- still mount
/config - avoid hardcoding anything that changes between users or servers
A container image should be reusable. Your private setup belongs in environment variables and mounted config, not baked into the image.
Upgrade Strategy
No matter how you deploy Weebarr, the safe upgrade flow is:
- Back up the config volume.
- Pull the new image.
- Recreate the container.
- Check the health endpoint.
- Open the UI and confirm the intended request backend still connects.
Health check:
/api/health
If the app starts but requests fail, check the Connections tab, confirm the intended backend is selected, and run the backend connection test.