Seerr media request manager for Plex, Jellyfin and Emby with Docker Compose.
Last updated: Oct 2026
Seerr is a request portal for your media server. Family and friends browse movies and shows, click Request, and Seerr hands the request to Sonarr or Radarr. It is the merged successor of Overseerr and Jellyseerr and supports Plex, Jellyfin and Emby.
Why you'd want it: One friendly place for requests instead of messages and spreadsheets, with per-user quotas and approval rules.
| Item | Value |
|---|---|
| Stack folder | /opt/stacks/seerr |
| Category | Media |
| Main image | ghcr.io/seerr-team/seerr:latest |
| Services | 1 |
| Web UI | http://<SERVER_IP>:5055 |
| Official docs | https://docs.seerr.dev/ |
.env/.secret files from Docker Folders and EnvironmentFolder layout:
/opt/stacks/
├── _shared/
│ ├── .env # shared, non-secret settings
│ └── .secret # passwords, tokens and keys (chmod 600, never commit)
└── seerr/
└── compose.yaml
/opt/appdata/seerr/ # persistent application data
/opt/stacks/seerr/compose.yaml:
---
services:
seerr:
image: ghcr.io/seerr-team/seerr:latest
init: true
container_name: seerr
hostname: seerr
user: "${PUID}:${PGID}"
env_file:
- /opt/stacks/_shared/.env
- /opt/stacks/_shared/.secret
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE:-10} # Max number of log files
max-size: ${DOCKERLOGGING_MAXSIZE:-200k} # Max file size
ports:
- 5055:5055 # Jellyseer Web UI
volumes:
- /opt/appdata/seerr/config:/app/config # Change to your desired config path
network_mode: host
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
restart: unless-stopped
Compose reads these from the shared files with --env-file. Replace every <PLACEHOLDER> with your own value.
/opt/stacks/_shared/.env:
PUID=1000
PGID=1000
TZ=<TZ>
DOCKERLOGGING_MAXFILE=10
DOCKERLOGGING_MAXSIZE=200k
| Variable | File | Purpose | Example |
|---|---|---|---|
PUID |
.env |
User ID the container runs as (see Docker Folders) | 1000 |
PGID |
.env |
Group ID the container runs as | 1000 |
TZ |
.env |
Time zone in tz database format, e.g. America/New_York | <TZ> |
DOCKERLOGGING_MAXFILE |
.env |
Number of rotated container log files to keep | 10 |
DOCKERLOGGING_MAXSIZE |
.env |
Maximum size of each container log file | 200k |
| Host port | Container port | Protocol | Service | Purpose |
|---|---|---|---|---|
| 5055 | 5055 | tcp | seerr |
Jellyseer Web UI |
| host network | - | - | seerr |
5055/tcp (web UI) |
| Host path | Container path | Service | Purpose |
|---|---|---|---|
/opt/appdata/seerr/config |
/app/config |
seerr |
Change to your desired config path |
No limits are set. This app is light, so add deploy.resources.limits only if you need to cap it.
sudo mkdir -p /opt/stacks/seerr /opt/appdata/seerr
sudo chown -R $USER: /opt/stacks/seerr
/opt/stacks/_shared/.env and /opt/stacks/_shared/.secret (chmod 600 .secret)./opt/stacks/seerr/compose.yaml.cd /opt/stacks/seerr
docker compose --env-file ../_shared/.env --env-file ../_shared/.secret config --quiet
docker compose --env-file ../_shared/.env --env-file ../_shared/.secret up -d
docker compose logs -f.http://<SERVER_IP>:5055 and sign in with your media server account.Tip: create a small wrapper such as
alias dc='docker compose --env-file /opt/stacks/_shared/.env --env-file /opt/stacks/_shared/.secret'so every stack uses the same env files.
cd /opt/stacks/seerr
docker compose --env-file ../_shared/.env --env-file ../_shared/.secret pull
docker compose --env-file ../_shared/.env --env-file ../_shared/.secret up -d
docker image prune -f
Back up /opt/appdata/seerr before major upgrades. Watchtower can automate updates for stateless apps.
docker compose ps and docker compose logs --tail=100.PUID:PGID because the container runs as that user (chown -R <PUID>:<PGID> /opt/appdata/seerr)./opt/appdata/seerr/config before the first start.:?err): run the config command above to see which variable is not set in your env files.Educational example. Review every path, port and credential before you deploy, and never publish your .secret file.