Media management stack based on the *arr suite
| Role | Application |
|---|---|
| Indexer | Prowlarr |
| Movies | Radarr |
| Series | Sonarr |
| Subtitles | Bazarr |
| Downloader | Transmission |
| Streaming | Jellyfin |
| Requests | Jellyseerr |
- Run init.sh:
./init.sh(only required at first setup, initializes some files) - Input personal data into
.env(can usecat /etc/timezoneandidfor timezone and UID information respectively) - Create a transmission password and put it in
./secrets/transmission_password.secret - Make sure that Docker network
traefikexists:docker network ls - Run
docker compose upand check logs
Services are set up to use Authentik for authentication, if that's not preferable simply comment out the middleware lables from each service
Recent versions require that you use authentication. If you don't care for authentication when accessing the services locally you can no longer skip authentication. You can however setup authentication initially and then enter the respective containers with docker exec -it <service> bash and open the config file with vi /config/config.xml. Change the AuthenticationMethod tag to External and restart the container.
- Log into prowlarr (Set up user//pass if first time logging in, use
Forms) - Settings->Indexers, add FlareSolverr
- Tags: flaresolverr
- Host: http://flaresolverr:8191
- Indexers->Add Indexer, select your indexers of choice but make sure to add
flaresolverrtag to them
- Log into Sonarr (Set up user//pass if first time logging in, use
Forms) - Settings->General, copy API Key
- Back to Prowlarr
- Settings->Apps, Add Application->Sonarr
- Prowlarr Server: http://prowlarr:9696
- Sonarr Server: http://sonarr:8989
- API Key: As generated in Sonarr
- Log into Radarr (Set up user//pass if first time logging in, use
Forms) - Settings->General, copy API Key
- Back to Prowlarr
- Settings->Apps, Add Application->Sonarr
- Prowlarr Server: http://prowlarr:9696
- Sonarr Server: http://radarr:7878
- API Key: As generated in Radarr
- Open Readarr
- Settings->General
- Authentication: Basic (Browser Popup)
- Username//Password, set according to personal preference
- API Key, copy
- Back to Prowlarr
- Settings->Apps, Add Application->Readarr
- Prowlarr Server: http://prowlarr:9696
- Sonarr Server: http://readarr:8787
- API Key: As generated in Readarr
- Open Bazarr
- Settings->General
- Authentication: Basic
- Username//Password, set according to personal preference
- Settings->Sonarr
- Enabled: On
- Address: sonarr
- API Key: Get from Sonarr Settings->General
- Click Test, should reply with version
- SAVE
- Settings->Radarr
- Enabled: On
- Address: radarr
- API Key: Get from Radarr Settings->General
- Click Test, should reply with version
- SAVE
- Settings->Languages, follow guide
- Settings->Providers, add choice providers
- Open Transmission (user//pass as set in .env and ./secrets/transmission_password.secret)
- Hamburger menu->Edit preferences->Network, check that Peer listening port shows "Port is Open"
- Back to Prowlarr
- Settings->Download Clients, Add Download Client->Transmission
- Host: transmission
- Username//Password, same as used to log into web UI above
- Open the Authentik Admin Interface
- Go to
Applications->Providersand clickCreate - Select
OAuth2/OpenID Providerand clickNext - Enter the following:
- Name:
Jellyfin Provider - Authorization flow: implicit-consent
- Client type:
Confidential - Redirect URIs/Origins (RegEx):
https://jellyfin.DOMAIN.COM/sso/OID/redirect/authentik - Subject mode:
Based on the User's username
- Name:
- Take note of your
Client IDandClient Secret, you will need these in the SSO plugin setup in Jellyfin - Click
Finish - Go to
Applications->Applicationsand clickCreate - Enter the following:
- Name:
Jellyfin - Slug:
jellyfin - Provider:
Jellyfin Provider
- Name:
- (Optional) If you want to suppress Jellyfin being listed in the Authentik User Interface set
Launch URLtoblank://blank - Click
Create
- Go to your Jellyfin web UI and set up your initial/admin account
- Log in with said account, click on the hamburger menu in the top-left corner and click on
Administration->Dashboard - In the left-side menu click on
Plugins->Catalogand then on the cog icon at the top - Click on the plus icon at the top and enter:
- Repository Name:
SSO AUthentication - Repository URL:
https://raw.githubusercontent.com/9p4/jellyfin-plugin-sso/manifest-release/manifest.json
- Repository Name:
- Click on
Save - Go back to the
Catalogview and under theAuthentiation Providersection you should findSSO Authentication, click on it and install/enable the plugin - Restart you jellyfin container with
docker compose restart jellyfin - Go back to
Plugins->My Pluginsand click onSSO-Auth - Create a provider and enter the following:
- Name:
authentik(CASE IMPORTANT) - OID Endpoint:
https://auth.DOMAIN.COM/application/o/jellyfin/.well-known/openid-configuration - OpenID Client ID: Client ID as per the Authentik Setup
- OID Secret: Client Secret as per the Authentik Setup
- Enabled: ON
- Enable Authorization by Plugin: ON
- Scheme Override:
https
- Name:
- Scroll to the bottom and click
Save - Go to
Generalin the left-side menu and scroll down toBranding - Input the following under
Login disclaimer:<form action="https://jellyfin.DOMAIN.COM/sso/OID/start/authentik"> <button class="raised block emby-button button-submit"> Sign in with SSO </button> </form> - Input the following under
Custom CSS code:a.raised.emby-button { padding:0.9em 1em; color: inherit !important; } .disclaimerContainer{ display: block; } - If you want to be able to use Quick Connect to connect to e.g. TVs etc make sure that
Enable Quick Connect on this serveris enabled - Click
Save
When signing in to Jellyfin there should now be a button at the bottom for Sign in with SSO
Jellyseerr needs to connect to the Jellyfin server with an account that has admin rights, use the Jellyfin admin user you set up earlier.
- Open the Authentik Admin Interface
- Go to
Applications->Providersand clickCreate - Select
OAuth2/OpenID Providerand clickNext - Enter the following:
- Name:
Jellyseerr Provider - Authorization flow: implicit-consent
- Client type:
Confidential - Redirect URIs/Origins (RegEx):
^https://jellyseerr\.DOMAIN\.COM/login\?provider=authentik&callback=true.* - Subject mode:
Based on the User's username
- Name:
- Take note of your
Client IDandClient Secret, you will need these in the SSO plugin setup in Jellyfin - Click
Finish - Go to
Applications->Applicationsand clickCreate - Enter the following:
- Name:
Jellyseerr - Slug:
jellyseerr - Provider:
Jellyseerr Provider
- Name:
- (Optional) If you want to suppress Jellyfin being listed in the Authentik User Interface set
Launch URLtoblank://blank - Click
Create
- When you first load the page you're met with the setup wizard, click
Configure Jellyfin - Enter:
- Jellyfin URL:
http://jellyfin:8096 - Base URL: Leave blank
- Email: Not related to Jellyfin, use whatever
- Username:
admin - Password: The password you set up for the Jellyfin
adminuser previously
- Jellyfin URL:
- Click
Sign inat the bottom - Click
Sync Librariesand toggle them on, clickContinueat the bottom - Radarr Settings:
- Default Server: Check
- Server Name: Radarr
- Hostname: radarr
- Port: 7878
- API Key: Get from Radarr Settings->General
- Click
Testat the bottom - Quality Profile: Any
- Root Folder: /data/movies
- Enable Scan: Check
- Tag Requests: Check
- Click
Add Serverat the bottom - Sonarr Settings:
- Default Server: Check
- Server Name: Sonarr
- Hostname: sonarr
- Port: 8989
- API Key: Get from Sonarr Settings->General
- Click
Testat the bottom - Quality Profile: Any
- Root Folder: /data/tv
- Season Folders: Check
- Tag Requests: Check
- Click
Finish Setupat the bottom - Go to
Settings->Users - Uncheck
Enable Local Sign-Inand checkEnable OpenID Connect Sign-In - In the popup that appears click
Add OpenID Connect Providerand fill out:- Provider Name: Authentik
- Logo:
https://cdn.jsdelivr.net/gh/selfhst/icons/svg/authentik.svg - Issuer URL:
https://auth.DOMAIN.COM/application/o/jellyseerr - Client ID: Get from Authentik Provider
- Client Secret: Get from Authentik Provider
- Provider Slug:
authentik - Scopes:
email openid profile(it saysComma-separatedbut use spaces) - Allow New Users: Check
- Click
Save Changesat the bottom, then close theConfigure OpenID Connectwindow by clickingClose - Finally go to the bottom and click
Save Changes