feat: Migrate Jellyseerr to a subdomain (#146)

This commit is contained in:
Adrien Poupa
2025-05-06 00:18:30 -04:00
committed by GitHub
parent 1903c0d6e4
commit 62d8f719d2
3 changed files with 127 additions and 156 deletions

View File

@ -13,9 +13,10 @@ PIA_USER=
PIA_PASS= PIA_PASS=
PIA_LOCAL_NETWORK="192.168.0.0/16" PIA_LOCAL_NETWORK="192.168.0.0/16"
HOSTNAME=localhost HOSTNAME=localhost
HOMEASSISTANT_HOSTNAME= BASE_HOSTNAME=localhost
HOMEASSISTANT_HOSTNAME="homeassistant.${BASE_HOSTNAME}"
IMMICH_HOSTNAME= IMMICH_HOSTNAME=
ADGUARD_HOSTNAME= ADGUARD_HOSTNAME="dns.${BASE_HOSTNAME}"
ADGUARD_USERNAME= ADGUARD_USERNAME=
ADGUARD_PASSWORD= ADGUARD_PASSWORD=
QBITTORRENT_USERNAME=admin QBITTORRENT_USERNAME=admin
@ -54,3 +55,4 @@ DECLUTTARR_REMOVE_FAILED_IMPORTS=True
DECLUTTARR_REMOVE_METADATA_MISSING=True DECLUTTARR_REMOVE_METADATA_MISSING=True
DECLUTTARR_REMOVE_MISSING_FILES=True DECLUTTARR_REMOVE_MISSING_FILES=True
DECLUTTARR_REMOVE_ORPHANS=True DECLUTTARR_REMOVE_ORPHANS=True
JELLYSEERR_HOSTNAME="jellyseerr.${BASE_HOSTNAME}"

113
README.md
View File

@ -13,53 +13,54 @@ I am running it in Ubuntu Server 22.04; I also tested this setup on a [Synology
## Table of Contents ## Table of Contents
<!-- TOC --> <!-- TOC -->
* [Docker Compose NAS](#docker-compose-nas)
* [Table of Contents](#table-of-contents) - [Docker Compose NAS](#docker-compose-nas)
* [Applications](#applications) - [Table of Contents](#table-of-contents)
* [Quick Start](#quick-start) - [Applications](#applications)
* [Environment Variables](#environment-variables) - [Quick Start](#quick-start)
* [PIA WireGuard VPN](#pia-wireguard-vpn) - [Environment Variables](#environment-variables)
* [Sonarr, Radarr & Lidarr](#sonarr-radarr--lidarr) - [PIA WireGuard VPN](#pia-wireguard-vpn)
* [File Structure](#file-structure) - [Sonarr, Radarr & Lidarr](#sonarr-radarr--lidarr)
* [Download Client](#download-client) - [File Structure](#file-structure)
* [Prowlarr](#prowlarr) - [Download Client](#download-client)
* [qBittorrent](#qbittorrent) - [Prowlarr](#prowlarr)
* [Jellyfin](#jellyfin) - [qBittorrent](#qbittorrent)
* [Homepage](#homepage) - [Jellyfin](#jellyfin)
* [Jellyseerr](#jellyseerr) - [Homepage](#homepage)
* [Traefik and SSL Certificates](#traefik-and-ssl-certificates) - [Jellyseerr](#jellyseerr)
* [Accessing from the outside with Tailscale](#accessing-from-the-outside-with-tailscale) - [Traefik and SSL Certificates](#traefik-and-ssl-certificates)
* [Optional Services](#optional-services) - [Accessing from the outside with Tailscale](#accessing-from-the-outside-with-tailscale)
* [FlareSolverr](#flaresolverr) - [Optional Services](#optional-services)
* [SABnzbd](#sabnzbd) - [FlareSolverr](#flaresolverr)
* [AdGuard Home](#adguard-home) - [SABnzbd](#sabnzbd)
* [Encryption](#encryption) - [AdGuard Home](#adguard-home)
* [DHCP](#dhcp) - [Encryption](#encryption)
* [Expose DNS Server with Tailscale](#expose-dns-server-with-tailscale) - [DHCP](#dhcp)
* [Calibre-Web](#calibre-web) - [Expose DNS Server with Tailscale](#expose-dns-server-with-tailscale)
* [Decluttarr](#decluttarr) - [Calibre-Web](#calibre-web)
* [Tandoor](#tandoor) - [Decluttarr](#decluttarr)
* [Joplin](#joplin) - [Tandoor](#tandoor)
* [Home Assistant](#home-assistant) - [Joplin](#joplin)
* [Immich](#immich) - [Home Assistant](#home-assistant)
* [Customization](#customization) - [Immich](#immich)
* [Optional: Using the VPN for *arr apps](#optional-using-the-vpn-for-arr-apps) - [Customization](#customization)
* [Synology Quirks](#synology-quirks) - [Optional: Using the VPN for \*arr apps](#optional-using-the-vpn-for-arr-apps)
* [Free Ports 80 and 443](#free-ports-80-and-443) - [Synology Quirks](#synology-quirks)
* [Install Synology WireGuard](#install-synology-wireguard) - [Free Ports 80 and 443](#free-ports-80-and-443)
* [Free Port 1900](#free-port-1900) - [Install Synology WireGuard](#install-synology-wireguard)
* [User Permissions](#user-permissions) - [Free Port 1900](#free-port-1900)
* [Synology DHCP Server and Adguard Home Port Conflict](#synology-dhcp-server-and-adguard-home-port-conflict) - [User Permissions](#user-permissions)
* [Use Separate Paths for Torrents and Storage](#use-separate-paths-for-torrents-and-storage) - [Synology DHCP Server and Adguard Home Port Conflict](#synology-dhcp-server-and-adguard-home-port-conflict)
* [NFS Share](#nfs-share) - [Use Separate Paths for Torrents and Storage](#use-separate-paths-for-torrents-and-storage)
* [Static IP](#static-ip) - [NFS Share](#nfs-share)
* [Laptop Specific Configuration](#laptop-specific-configuration) - [Static IP](#static-ip)
- [Laptop Specific Configuration](#laptop-specific-configuration)
<!-- TOC --> <!-- TOC -->
## Applications ## Applications
| **Application** | **Description** | **Image** | **URL** | | **Application** | **Description** | **Image** | **URL** |
|--------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|--------------| | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------- |
| [Sonarr](https://sonarr.tv) | PVR for newsgroup and bittorrent users | [linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr) | /sonarr | | [Sonarr](https://sonarr.tv) | PVR for newsgroup and bittorrent users | [linuxserver/sonarr](https://hub.docker.com/r/linuxserver/sonarr) | /sonarr |
| [Radarr](https://radarr.video) | Movie collection manager for Usenet and BitTorrent users | [linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr) | /radarr | | [Radarr](https://radarr.video) | Movie collection manager for Usenet and BitTorrent users | [linuxserver/radarr](https://hub.docker.com/r/linuxserver/radarr) | /radarr |
| [Bazarr](https://www.bazarr.media/) | Companion application to Sonarr and Radarr that manages and downloads subtitles | [linuxserver/bazarr](https://hub.docker.com/r/linuxserver/bazarr) | /bazarr | | [Bazarr](https://www.bazarr.media/) | Companion application to Sonarr and Radarr that manages and downloads subtitles | [linuxserver/bazarr](https://hub.docker.com/r/linuxserver/bazarr) | /bazarr |
@ -68,7 +69,7 @@ I am running it in Ubuntu Server 22.04; I also tested this setup on a [Synology
| [qBittorrent](https://www.qbittorrent.org) | Bittorrent client with a complete web UI<br/>Uses VPN network<br/>Using Libtorrent 1.x | [linuxserver/qbittorrent:libtorrentv1](https://hub.docker.com/r/linuxserver/qbittorrent) | /qbittorrent | | [qBittorrent](https://www.qbittorrent.org) | Bittorrent client with a complete web UI<br/>Uses VPN network<br/>Using Libtorrent 1.x | [linuxserver/qbittorrent:libtorrentv1](https://hub.docker.com/r/linuxserver/qbittorrent) | /qbittorrent |
| [Unpackerr](https://unpackerr.zip) | Automated Archive Extractions | [golift/unpackerr](https://hub.docker.com/r/golift/unpackerr) | | | [Unpackerr](https://unpackerr.zip) | Automated Archive Extractions | [golift/unpackerr](https://hub.docker.com/r/golift/unpackerr) | |
| [Jellyfin](https://jellyfin.org) | Media server designed to organize, manage, and share digital media files to networked devices | [linuxserver/jellyfin](https://hub.docker.com/r/linuxserver/jellyfin) | /jellyfin | | [Jellyfin](https://jellyfin.org) | Media server designed to organize, manage, and share digital media files to networked devices | [linuxserver/jellyfin](https://hub.docker.com/r/linuxserver/jellyfin) | /jellyfin |
| [Jellyseer](https://jellyfin.org) | Manages requests for your media library | [fallenbagel/jellyseerr](https://hub.docker.com/r/fallenbagel/jellyseerr) | /jellyseer | | [Jellyseer](https://jellyfin.org) | Manages requests for your media library | [fallenbagel/jellyseerr](https://hub.docker.com/r/fallenbagel/jellyseerr) | `$JELLYSEERR_HOSTNAME` |
| [Homepage](https://gethomepage.dev) | Application dashboard | [gethomepage/homepage](https://github.com/gethomepage/homepage/pkgs/container/homepage) | / | | [Homepage](https://gethomepage.dev) | Application dashboard | [gethomepage/homepage](https://github.com/gethomepage/homepage/pkgs/container/homepage) | / |
| [Traefik](https://traefik.io) | Reverse proxy | [traefik](https://hub.docker.com/_/traefik) | | | [Traefik](https://traefik.io) | Reverse proxy | [traefik](https://hub.docker.com/_/traefik) | |
| [Watchtower](https://containrrr.dev/watchtower/) | Automated Docker images update | [containrrr/watchtower](https://hub.docker.com/r/containrrr/watchtower) | | | [Watchtower](https://containrrr.dev/watchtower/) | Automated Docker images update | [containrrr/watchtower](https://hub.docker.com/r/containrrr/watchtower) | |
@ -98,7 +99,7 @@ If you want to show Jellyfin information in the homepage, create it in Jellyfin
## Environment Variables ## Environment Variables
| Variable | Description | Default | | Variable | Description | Default |
|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------| | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ |
| `COMPOSE_FILE` | Docker compose files to load | | | `COMPOSE_FILE` | Docker compose files to load | |
| `COMPOSE_PROFILES` | Docker compose profiles to load (`flaresolverr`, `adguardhome`, `sabnzbd`) | | | `COMPOSE_PROFILES` | Docker compose profiles to load (`flaresolverr`, `adguardhome`, `sabnzbd`) | |
| `USER_ID` | ID of the user to use in Docker containers | `1000` | | `USER_ID` | ID of the user to use in Docker containers | `1000` |
@ -112,6 +113,7 @@ If you want to show Jellyfin information in the homepage, create it in Jellyfin
| `PIA_PASS` | PIA password | | | `PIA_PASS` | PIA password | |
| `PIA_LOCAL_NETWORK` | PIA local network | `192.168.0.0/16` | | `PIA_LOCAL_NETWORK` | PIA local network | `192.168.0.0/16` |
| `HOSTNAME` | Hostname of the NAS, could be a local IP or a domain name | `localhost` | | `HOSTNAME` | Hostname of the NAS, could be a local IP or a domain name | `localhost` |
| `BASE_HOSTNAME` | Base hostname of the NAS, useful if hostname is a subdomain | `localhost` |
| `ADGUARD_HOSTNAME` | Optional - AdGuard Home hostname used, if enabled | | | `ADGUARD_HOSTNAME` | Optional - AdGuard Home hostname used, if enabled | |
| `ADGUARD_USERNAME` | Optional - AdGuard Home username to show details in the homepage, if enabled | | | `ADGUARD_USERNAME` | Optional - AdGuard Home username to show details in the homepage, if enabled | |
| `ADGUARD_PASSWORD` | Optional - AdGuard Home password to show details in the homepage, if enabled | | | `ADGUARD_PASSWORD` | Optional - AdGuard Home password to show details in the homepage, if enabled | |
@ -141,6 +143,7 @@ If you want to show Jellyfin information in the homepage, create it in Jellyfin
| `HOMEPAGE_VAR_WEATHER_UNIT` | Homepage weather unit, either `metric` or `imperial` | `metric` | | `HOMEPAGE_VAR_WEATHER_UNIT` | Homepage weather unit, either `metric` or `imperial` | `metric` |
| `CALIBRE_USERNAME` | Optional - Calibre-Web username to show details in the homepage, if enabled | `admin` | | `CALIBRE_USERNAME` | Optional - Calibre-Web username to show details in the homepage, if enabled | `admin` |
| `CALIBRE_PASSWORD` | Optional - Calibre-Web password to show details in the homepage, if enabled | `admin123` | | `CALIBRE_PASSWORD` | Optional - Calibre-Web password to show details in the homepage, if enabled | `admin123` |
| `JELLYSEERR_HOSTNAME` | Jellyseerr hostname used | |
## PIA WireGuard VPN ## PIA WireGuard VPN
@ -164,7 +167,7 @@ otherwise the VPN container will exit and qBittorrent will not start.
### File Structure ### File Structure
Sonarr, Radarr, and Lidarr must be configured to support hardlinks, to allow instant moves and prevent using twice the storage Sonarr, Radarr, and Lidarr must be configured to support hardlinks, to allow instant moves and prevent using twice the storage
(Bittorrent downloads and final file). The trick is to use a single volume shared by the Bittorrent client and the *arrs. (Bittorrent downloads and final file). The trick is to use a single volume shared by the Bittorrent client and the \*arrs.
Subfolders are used to separate the TV shows from the movies. Subfolders are used to separate the TV shows from the movies.
The configuration is well explained by [this guide](https://trash-guides.info/Hardlinks/How-to-setup-for/Docker/). The configuration is well explained by [this guide](https://trash-guides.info/Hardlinks/How-to-setup-for/Docker/).
@ -205,6 +208,7 @@ Their API keys can be found in Settings > Security > API Key.
Running `update-config.sh` will set qBittorrent's password to `adminadmin`. If you wish to update the password manually, Running `update-config.sh` will set qBittorrent's password to `adminadmin`. If you wish to update the password manually,
since qBittorrent v4.6.2, a temporary password is generated on startup. Get it with `docker compose logs qbittorrent`: since qBittorrent v4.6.2, a temporary password is generated on startup. Get it with `docker compose logs qbittorrent`:
``` ```
The WebUI administrator username is: admin The WebUI administrator username is: admin
The WebUI administrator password was not set. A temporary password is provided for this session: <some_password> The WebUI administrator password was not set. A temporary password is provided for this session: <some_password>
@ -252,7 +256,12 @@ The files in `/homepage/tpl/*.yaml` only serve as a base to set up the homepage
Jellyseer gives you content recommendations, allows others to make requests to you, and allows logging in with Jellyfin credentials. Jellyseer gives you content recommendations, allows others to make requests to you, and allows logging in with Jellyfin credentials.
To set up, go to https://hostname/jellyseerr/setup, and set the URLs as follows: Set the `JELLYSEERR_HOSTNAME`, since it does not support
[running in a subfolder](https://github.com/Fallenbagel/jellyseerr/issues/97).
Add the necessary DNS records in your domain.
To set up, go to the Jellyseerr hostname, and set the URLs as follows:
- Jellyfin: http://jellyfin:8096/jellyfin - Jellyfin: http://jellyfin:8096/jellyfin
- Radarr: - Radarr:
- Hostname: radarr - Hostname: radarr
@ -274,6 +283,7 @@ Traefik makes this trivial by using Let's Encrypt and one of its
Let's assume we are using `nas.domain.com` as custom subdomain. Let's assume we are using `nas.domain.com` as custom subdomain.
The idea is to create an A record pointing to the private IP of the NAS, `192.168.0.10` for example: The idea is to create an A record pointing to the private IP of the NAS, `192.168.0.10` for example:
``` ```
nas.domain.com. 1 IN A 192.168.0.10 nas.domain.com. 1 IN A 192.168.0.10
``` ```
@ -288,6 +298,7 @@ Then, fill the CloudFlare `.env` entries.
If you want to test your configuration first, use the Let's Encrypt staging server by updating `LETS_ENCRYPT_CA_SERVER`'s If you want to test your configuration first, use the Let's Encrypt staging server by updating `LETS_ENCRYPT_CA_SERVER`'s
value in `.env`: value in `.env`:
``` ```
LETS_ENCRYPT_CA_SERVER=https://acme-staging-v02.api.letsencrypt.org/directory LETS_ENCRYPT_CA_SERVER=https://acme-staging-v02.api.letsencrypt.org/directory
``` ```
@ -308,6 +319,7 @@ If we want to make it reachable from outside the network without opening ports o
you are connecting from, and they will see each other. you are connecting from, and they will see each other.
In this case, the A record should point to the IP Tailscale assigned to the NAS, eg `100.xxx.xxx.xxx`: In this case, the A record should point to the IP Tailscale assigned to the NAS, eg `100.xxx.xxx.xxx`:
``` ```
nas.domain.com. 1 IN A 100.xxx.xxx.xxx nas.domain.com. 1 IN A 100.xxx.xxx.xxx
``` ```
@ -370,6 +382,7 @@ In `adguardhome/docker-compose.yml`, set the network interface `dhcp-relay` shou
`enp2s0`, but you may need to change it to your host's network interface, verify it with `ip a`. `enp2s0`, but you may need to change it to your host's network interface, verify it with `ip a`.
In the configuration (`adguardhome/conf/AdGuardHome.yaml`), set the DHCP options 6th key to your NAS internal IP address: In the configuration (`adguardhome/conf/AdGuardHome.yaml`), set the DHCP options 6th key to your NAS internal IP address:
```yml ```yml
dhcp: dhcp:
dhcpv4: dhcpv4:
@ -397,6 +410,7 @@ Unrar is included by default and needs to be set in the Calibre-Web admin page (
with a path of `/usr/bin/unrar`. with a path of `/usr/bin/unrar`.
### Decluttarr ### Decluttarr
Decluttarr keeps the queue free of stalled and redundant downloads. For configuration options and examples, Decluttarr keeps the queue free of stalled and redundant downloads. For configuration options and examples,
please see https://github.com/ManiMatter/decluttarr/blob/dev/README.md. please see https://github.com/ManiMatter/decluttarr/blob/dev/README.md.
@ -442,9 +456,10 @@ services:
- NETWORK=192.168.1.0/24 # So it can be accessed within the local network - NETWORK=192.168.1.0/24 # So it can be accessed within the local network
``` ```
### Optional: Using the VPN for *arr apps ### Optional: Using the VPN for \*arr apps
If you want to use the VPN for Prowlarr and other \*arr applications, add the following block to all the desired containers:
If you want to use the VPN for Prowlarr and other *arr applications, add the following block to all the desired containers:
```yml ```yml
network_mode: "service:vpn" network_mode: "service:vpn"
depends_on: depends_on:
@ -466,6 +481,7 @@ Docker compose NAS can run on DSM 7.1, with a few extra steps.
By default, ports 80 and 443 are used by Nginx but not actually used for anything useful. Free them by creating a new task By default, ports 80 and 443 are used by Nginx but not actually used for anything useful. Free them by creating a new task
in the Task Scheduler > Create > Triggered Task > User-defined script. Leave the Event as `Boot-up` and the `root` user, in the Task Scheduler > Create > Triggered Task > User-defined script. Leave the Event as `Boot-up` and the `root` user,
go to Task Settings and paste the following in User-defined script: go to Task Settings and paste the following in User-defined script:
``` ```
sed -i -e 's/80/81/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache sed -i -e 's/80/81/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache
@ -580,6 +596,7 @@ If the server is installed on a laptop, you may want to disable the suspension w
`sudo nano /etc/systemd/logind.conf` `sudo nano /etc/systemd/logind.conf`
Replace: Replace:
- `#HandleLidSwitch=suspend` by `HandleLidSwitch=ignore` - `#HandleLidSwitch=suspend` by `HandleLidSwitch=ignore`
- `#LidSwitchIgnoreInhibited=yes` by `LidSwitchIgnoreInhibited=no` - `#LidSwitchIgnoreInhibited=yes` by `LidSwitchIgnoreInhibited=no`

View File

@ -183,62 +183,14 @@ services:
retries: 10 retries: 10
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.http.routers.jellyseerr.rule=(Host(`${HOSTNAME}`) && PathPrefix(`/jellyseerr`)) - traefik.http.routers.jellyseerr.rule=(Host(`${JELLYSEERR_HOSTNAME}`))
- traefik.http.routers.jellyseerr.tls=true - traefik.http.routers.jellyseerr.tls=true
- traefik.http.routers.jellyseerr.tls.certresolver=myresolver - traefik.http.routers.jellyseerr.tls.certresolver=myresolver
- traefik.http.services.jellyseerr.loadbalancer.server.port=5055 - traefik.http.services.jellyseerr.loadbalancer.server.port=5055
- traefik.http.routers.jellyseerr.middlewares=jellyseerr-stripprefix,jellyseerr-rewrite,jellyseerr-rewriteHeaders
- traefik.http.middlewares.jellyseerr-stripprefix.stripPrefix.prefixes=/jellyseerr
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[0].header=location
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[0].regex=^/(.+)$
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[0].replacement=/jellyseerr/$1
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[1].header=location
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[1].regex=^/$
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[1].replacement=/jellyseerr
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[0]=text/html
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[1]=application/javascript
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[2]=*/*
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[3]=application/json
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[1].regex=/_next
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[1].replacement=/jellyseerr/_next
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[2].regex=/_next/data/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[2].replacement=/jellyseerr/_next/data/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[3].regex=\/_next\\/static\\//
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[3].replacement=\/jellyseerr\/_next\/static\//
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[4].regex=/api/v1
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[4].replacement=/jellyseerr/api/v1
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[5].regex=/login/plex/loading
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[5].replacement=/jellyseerr/login/plex/loading
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[6].regex=/images/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[6].replacement=/jellyseerr/images/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[7].regex=/favicon
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[7].replacement=/jellyseerr/favicon
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[8].regex=/logo_
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[8].replacement=/jellyseerr/logo_
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[9].regex=/site.webmanifest
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[9].replacement=/jellyseerr/site.webmanifest
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[10].regex=/sw.js
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[10].replacement=/jellyseerr/sw.js
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[11].regex=/offline.html
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[11].replacement=/jellyseerr/offline.html
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[12].regex=src="/os_logo_square.png"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[12].replacement=src="/jellyseerr/os_logo_square.png"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[13].regex=href([=:])"/([/a-zA-Z?=]*)"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[13].replacement=href$1"/jellyseerr/$2"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[14].regex=linkUrl:"/([/a-zA-Z?=]*)"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[14].replacement=linkUrl:"/jellyseerr/$1"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[15].regex="/([a-z]+)/".concat
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[15].replacement="/jellyseerr/$1/".concat
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[16].regex=url:"/([/a-zA-Z?=]*)"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[16].replacement=url:"/jellyseerr/$1"
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[17].regex=/imageproxy/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[17].replacement=/jellyseerr/imageproxy/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[18].regex=/avatarproxy/
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[18].replacement=/jellyseerr/avatarproxy/
- homepage.group=Media - homepage.group=Media
- homepage.name=JellySeerr - homepage.name=JellySeerr
- homepage.icon=jellyseerr.png - homepage.icon=jellyseerr.png
- homepage.href=/jellyseerr - homepage.href=https://${JELLYSEERR_HOSTNAME}
- homepage.description=Content Recommendations and Request Management - homepage.description=Content Recommendations and Request Management
- homepage.weight=3 - homepage.weight=3
- homepage.widget.type=jellyseerr - homepage.widget.type=jellyseerr