Reverse Proxy
Base URLs cannot be configured in Overseerr. With this limitation, only subdomain configurations are supported.
A Nginx subfolder workaround configuration is provided below, but it is not officially supported.

Nginx

SWAG
Nginx Proxy Manager
Subdomain
Subfolder
A sample proxy configuration is included in SWAG (Secure Web Application Gateway).
However, this page is still the only source of truth, so the SWAG sample configuration is not guaranteed to be up-to-date. If you find an inconsistency, please report it to the LinuxServer team or submit a pull request to update it.
To use the bundled configuration file, simply rename overseerr.subdomain.conf.sample in the proxy-confs folder to overseerr.subdomain.conf.
Alternatively, you can create a new file overseerr.subdomain.conf in proxy-confs with the following configuration:
1
server {
2
listen 443 ssl http2;
3
listen [::]:443 ssl http2;
4
5
server_name overseerr.*;
6
7
include /config/nginx/ssl.conf;
8
9
client_max_body_size 0;
10
11
location / {
12
include /config/nginx/proxy.conf;
13
resolver 127.0.0.11 valid=30s;
14
set $upstream_app overseerr;
15
set $upstream_port 5055;
16
set $upstream_proto http;
17
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
18
}
19
20
}
Copied!
Add a new proxy host with the following settings:

Details

    Domain Names: Your desired external Overseerr hostname; e.g., overseerr.example.com
    Scheme: http
    Forward Hostname / IP: Internal Overseerr hostname or IP
    Forward Port: 5055
    Cache Assets: yes
    Block Common Exploits: yes

SSL

    SSL Certificate: Select one of the options; if you are not sure, pick “Request a new SSL Certificate”
    Force SSL: yes
    HTTP/2 Support: yes
Add the following configuration to a new file /etc/nginx/sites-available/overseerr.example.com.conf:
1
server {
2
listen 80;
3
server_name overseerr.example.com;
4
return 301 https://$server_name$request_uri;
5
}
6
7
server {
8
listen 443 ssl http2;
9
server_name overseerr.example.com;
10
11
ssl_certificate /etc/letsencrypt/live/overseerr.example.com/fullchain.pem;
12
ssl_certificate_key /etc/letsencrypt/live/overseerr.example.com/privkey.pem;
13
14
proxy_set_header Referer $http_referer;
15
proxy_set_header Host $host;
16
proxy_set_header X-Real-IP $remote_addr;
17
proxy_set_header X-Real-Port $remote_port;
18
proxy_set_header X-Forwarded-Host $host:$remote_port;
19
proxy_set_header X-Forwarded-Server $host;
20
proxy_set_header X-Forwarded-Port $remote_port;
21
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
22
proxy_set_header X-Forwarded-Proto $scheme;
23
proxy_set_header X-Forwarded-Ssl on;
24
25
location / {
26
proxy_pass http://127.0.0.1:5055;
27
}
28
}
Copied!
Then, create a symlink to /etc/nginx/sites-enabled:
1
sudo ln -s /etc/nginx/sites-available/overseerr.example.com.conf /etc/nginx/sites-enabled/overseerr.example.com.conf
Copied!
This Nginx subfolder reverse proxy is an unsupported workaround, and only provided as an example. The filters may stop working when Overseerr is updated.
If you encounter any issues with Overseerr while using this workaround, we may ask you to try to reproduce the problem without the Nginx proxy.
Add the following location block to your existing nginx.conf file.
1
location ^~ /overseerr {
2
set $app 'overseerr';
3
4
# Remove /overseerr path to pass to the app
5
rewrite ^/overseerr/?(.*)$ /$1 break;
6
proxy_pass http://127.0.0.1:5055; # NO TRAILING SLASH
7
8
# Redirect location headers
9
proxy_redirect ^ /$app;
10
proxy_redirect /setup /$app/setup;
11
proxy_redirect /login /$app/login;
12
13
# Sub filters to replace hardcoded paths
14
proxy_set_header Accept-Encoding "";
15
sub_filter_once off;
16
sub_filter_types *;
17
sub_filter 'href="/"' 'href="/$app"';
18
sub_filter 'href="/login"' 'href="/$app/login"';
19
sub_filter 'href:"/"' 'href:"/$app"';
20
sub_filter '/_next' '/$app/_next';
21
sub_filter '/api/v1' '/$app/api/v1';
22
sub_filter '/login/plex/loading' '/$app/login/plex/loading';
23
sub_filter '/images/' '/$app/images/';
24
sub_filter '/android-' '/$app/android-';
25
sub_filter '/apple-' '/$app/apple-';
26
sub_filter '/favicon' '/$app/favicon';
27
sub_filter '/logo_' '/$app/logo_';
28
sub_filter '/site.webmanifest' '/$app/site.webmanifest';
29
}
Copied!

Traefik (v2)

Add the following labels to the Overseerr service in your docker-compose.yml file:
1
labels:
2
- "traefik.enable=true"
3
## HTTP Routers
4
- "traefik.http.routers.overseerr-rtr.entrypoints=https"
5
- "traefik.http.routers.overseerr-rtr.rule=Host(`overseerr.domain.com`)"
6
- "traefik.http.routers.overseerr-rtr.tls=true"
7
## HTTP Services
8
- "traefik.http.routers.overseerr-rtr.service=overseerr-svc"
9
- "traefik.http.services.overseerr-svc.loadbalancer.server.port=5055"
Copied!
For more information, please refer to the Traefik documentation.
Last modified 10d ago
Copy link