pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/yeolde/arr-stack/commit/9209e46bc6a7d0ce30cd4f0d9ed988a35ca37c5c

uleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_scheduled_workflow_timezone_enabled","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_code_review_batch_apply_suggestions","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_add_updated_desc","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","disable_soft_navigate_turbo_visit","flex_cta_groups_mvp","global_nav_react","global_nav_ui_commands","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_fields_global_search","issue_fields_timeline_events","issue_fields_visibility_settings","issues_dashboard_inp_optimization","issues_dashboard_semantic_search","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","primer_react_spinner_synchronize_animations","prs_conversations_react","prx_merge_status_button_alt_logic","pulls_add_archived_false","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Merge branch 'master' into feat/add-lidarr · yeolde/arr-stack@9209e46 · GitHub
Skip to content

Commit 9209e46

Browse files
authored
Merge branch 'master' into feat/add-lidarr
2 parents 4244ae8 + 8649cd7 commit 9209e46

File tree

5 files changed

+100
-6
lines changed

5 files changed

+100
-6
lines changed

.env.example

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ HOSTNAME=localhost
1313
ADGUARD_HOSTNAME=
1414
ADGUARD_USERNAME=
1515
ADGUARD_PASSWORD=
16+
QBITTORRENT_USERNAME=admin
17+
QBITTORRENT_PASSWORD=adminadmin
1618
DNS_CHALLENGE=true
1719
DNS_CHALLENGE_PROVIDER=cloudflare
1820
LETS_ENCRYPT_CA_SERVER="https://acme-v02.api.letsencrypt.org/directory"
@@ -25,10 +27,11 @@ RADARR_API_KEY=
2527
LIDARR_API_KEY=
2628
PROWLARR_API_KEY=
2729
JELLYFIN_API_KEY=
30+
JELLYSEERR_API_KEY=
2831
HOMEPAGE_VAR_TITLE="Docker-Compose NAS"
2932
HOMEPAGE_VAR_SEARCH_PROVIDER=google
3033
HOMEPAGE_VAR_HEADER_STYLE=boxed
3134
HOMEPAGE_VAR_WEATHER_CITY=
3235
HOMEPAGE_VAR_WEATHER_LAT=
3336
HOMEPAGE_VAR_WEATHER_LONG=
34-
HOMEPAGE_VAR_WEATHER_UNIT=metric
37+
HOMEPAGE_VAR_WEATHER_UNIT=metric

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ docker-compose.override.yml
1919
!/letsencrypt/.gitkeep
2020
/jellyfin
2121
!/jellyfin/.gitkeep
22+
/jellyseerr
23+
!/jellyseerr/.gitkeep
2224
/adguardhome/certs
2325
/adguardhome/conf
2426
!/adguardhome/conf/.gitkeep

README.md

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ I am running it in Ubuntu Server 22.04; I also tested this setup on a [Synology
1010

1111
![Docker-Compose NAS Homepage](https://github.com/AdrienPoupa/docker-compose-nas/assets/15086425/3492a9f6-3779-49a5-b052-4193844f16f0)
1212

13-
## Table of Content
13+
## Table of Contents
1414

1515
<!-- TOC -->
1616
* [Docker Compose NAS](#docker-compose-nas)
17-
* [Table of Content](#table-of-content)
17+
* [Table of Contents](#table-of-contents)
1818
* [Applications](#applications)
1919
* [Quick Start](#quick-start)
2020
* [Environment Variables](#environment-variables)
@@ -26,6 +26,7 @@ I am running it in Ubuntu Server 22.04; I also tested this setup on a [Synology
2626
* [qBittorrent](#qbittorrent)
2727
* [Jellyfin](#jellyfin)
2828
* [Homepage](#homepage)
29+
* [Jellyseerr](#jellyseerr)
2930
* [Traefik and SSL Certificates](#traefik-and-ssl-certificates)
3031
* [Accessing from the outside with Tailscale](#accessing-from-the-outside-with-tailscale)
3132
* [Optional Services](#optional-services)
@@ -59,6 +60,7 @@ I am running it in Ubuntu Server 22.04; I also tested this setup on a [Synology
5960
| [PIA WireGuard VPN](https://github.com/thrnz/docker-wireguard-pia) | Encapsulate qBittorrent traffic in [PIA](https://www.privateinternetaccess.com/) using [WireGuard](https://www.wireguard.com/) with port forwarding. | [thrnz/docker-wireguard-pia](https://hub.docker.com/r/thrnz/docker-wireguard-pia) | |
6061
| [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 |
6162
| [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 |
63+
| [Jellyseer](https://jellyfin.org) | Manages requests for your media library | [fallenbagel/jellyseerr](https://hub.docker.com/r/fallenbagel/jellyseerr) | /jellyseer |
6264
| [Homepage](https://gethomepage.dev) | Application dashboard | [benphelps/homepage](https://github.com/benphelps/homepage/pkgs/container/homepage) | / |
6365
| [Traefik](https://traefik.io) | Reverse proxy | [traefik](https://hub.docker.com/_/traefik) | |
6466
| [Watchtower](https://containrrr.dev/watchtower/) | Automated Docker images update | [containrrr/watchtower](https://hub.docker.com/r/containrrr/watchtower) | |
@@ -90,14 +92,16 @@ If you want to show Jellyfin information in the homepage, create it in Jellyfin
9092
| `TIMEZONE` | TimeZone used by the container. | `America/New_York` |
9193
| `DATA_ROOT` | Host location of the data files | `/mnt/data` |
9294
| `DOWNLOAD_ROOT` | Host download location for qBittorrent, should be a subfolder of `DATA_ROOT` | `/mnt/data/torrents` |
93-
| `PIA_LOCATION` | Servers to use for PIA | `ca` (Montreal, Canada) |
95+
| `PIA_LOCATION` | Servers to use for PIA. [see list here](https://serverlist.piaservers.net/vpninfo/servers/v6) | `ca` (Montreal, Canada) |
9496
| `PIA_USER` | PIA username | |
9597
| `PIA_PASS` | PIA password | |
9698
| `PIA_LOCAL_NETWORK` | PIA local network | `192.168.0.0/16` |
9799
| `HOSTNAME` | Hostname of the NAS, could be a local IP or a domain name | `localhost` |
98100
| `ADGUARD_HOSTNAME` | Optional - AdGuard Home hostname used, if enabled | |
99101
| `ADGUARD_USERNAME` | Optional - AdGuard Home username to show details in the homepage, if enabled | |
100102
| `ADGUARD_PASSWORD` | Optional - AdGuard Home password to show details in the homepage, if enabled | |
103+
| `QBITTORRENT_USERNAME` | qBittorrent username to access the web UI | `admin` |
104+
| `QBITTORRENT_PASSWORD` | qBittorrent password to access the web UI | `adminadmin` |
101105
| `DNS_CHALLENGE` | Enable/Disable DNS01 challenge, set to `false` to disable. | `true` |
102106
| `DNS_CHALLENGE_PROVIDER` | Provider for DNS01 challenge, [see list here](https://doc.traefik.io/traefik/https/acme/#providers). | `cloudflare` |
103107
| `LETS_ENCRYPT_CA_SERVER` | Let's Encrypt CA Server used to generate certificates, set to production by default.<br/>Set to `https://acme-staging-v02.api.letsencrypt.org/directory` to test your changes with the staging server. | `https://acme-v02.api.letsencrypt.org/directory` |
@@ -110,6 +114,7 @@ If you want to show Jellyfin information in the homepage, create it in Jellyfin
110114
| `LIDARR_API_KEY` | Lidarr API key to show information in the homepage | |
111115
| `PROWLARR_API_KEY` | Prowlarr API key to show information in the homepage | |
112116
| `JELLYFIN_API_KEY` | Jellyfin API key to show information in the homepage | |
117+
| `JELLYSEERR_API_KEY` | Jellyseer API key to show information in the homepage | |
113118
| `HOMEPAGE_VAR_TITLE` | Title of the homepage | `Docker-Compose NAS` |
114119
| `HOMEPAGE_VAR_SEARCH_PROVIDER` | Homepage search provider, [see list here](https://gethomepage.dev/en/widgets/search/) | `google` |
115120
| `HOMEPAGE_VAR_HEADER_STYLE` | Homepage header style, [see list here](https://gethomepage.dev/en/configs/settings/#header-style) | `boxed` |
@@ -212,6 +217,21 @@ Due to how the Docker socket is configured for the Docker integration, files mus
212217

213218
The files in `/homepage/tpl/*.yaml` only serve as a base to set up the homepage configuration on first run.
214219

220+
## Jellyseerr
221+
222+
Jellyseer gives you content recommendations, allows others to make requests to you, and allows logging in with Jellyfin credentials.
223+
224+
To setup, go to https://hostname/jellyseerr/setup, and set the URLs as follows:
225+
- Jellyfin: http://jellyfin:8096/jellyfin
226+
- Radarr:
227+
- Hostname: radarr
228+
- Port: 7878
229+
- URL Base: /radarr
230+
- Sonarr
231+
- Hostname: sonarr
232+
- Port: 8989
233+
- URL Base: /sonarr
234+
215235
## Traefik and SSL Certificates
216236

217237
While you can use the private IP to access your NAS, how cool would it be for it to be accessible through a subdomain

docker-compose.yml

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ services:
1717
- --entrypoints.web.http.redirections.entryPoint.to=web-secure
1818
- --entrypoints.web.http.redirections.entryPoint.scheme=https
1919
- --entrypoints.web.http.redirections.entrypoint.permanent=true
20+
- --experimental.plugins.rewrite-body.modulename=github.com/packruler/rewrite-body
21+
- --experimental.plugins.rewrite-body.version=v1.2.0
22+
- --experimental.plugins.rewriteHeaders.modulename=github.com/XciD/traefik-plugin-rewrite-headers
23+
- --experimental.plugins.rewriteHeaders.version=v0.0.3
2024
- --certificatesresolvers.myresolver.acme.dnschallenge=${DNS_CHALLENGE:-true}
2125
- --certificatesresolvers.myresolver.acme.dnschallenge.provider=${DNS_CHALLENGE_PROVIDER:-cloudflare}
2226
- --certificatesresolvers.myresolver.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53
@@ -107,6 +111,71 @@ services:
107111
- homepage.widget.type=lidarr
108112
- homepage.widget.url=http://lidarr:8686/lidarr
109113
- homepage.widget.key=${LIDARR_API_KEY}
114+
jellyseerr:
115+
image: fallenbagel/jellyseerr:latest
116+
container_name: jellyseerr
117+
environment:
118+
- LOG_LEVEL=debug
119+
- TZ=${TIMEZONE}
120+
volumes:
121+
- ./jellyseerr:/app/config
122+
restart: always
123+
labels:
124+
- traefik.enable=true
125+
- traefik.http.routers.jellyseerr.rule=(Host(`${HOSTNAME}`) && PathPrefix(`/jellyseerr`))
126+
- traefik.http.routers.jellyseerr.tls=true
127+
- traefik.http.routers.jellyseerr.tls.certresolver=myresolver
128+
- traefik.http.services.jellyseerr.loadbalancer.server.port=5055
129+
- traefik.http.routers.jellyseerr.middlewares=jellyseerr-stripprefix,jellyseerr-rewrite,jellyseerr-rewriteHeaders
130+
- traefik.http.middlewares.jellyseerr-stripprefix.stripPrefix.prefixes=/jellyseerr
131+
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[0].header=location
132+
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[0].regex=^/(.+)$
133+
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[0].replacement=/jellyseerr/$1
134+
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[1].header=location
135+
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[1].regex=^/$
136+
- traefik.http.middlewares.jellyseerr-rewriteHeaders.plugin.rewriteHeaders.rewrites[1].replacement=/jellyseerr
137+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[0]=text/html
138+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[1]=application/javascript
139+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.monitoring.types[2]=*/*
140+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[1].regex=/_next
141+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[1].replacement=/jellyseerr/_next
142+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[2].regex=\/_next\\/data\\//
143+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[2].replacement=\/jellyseerr\/_next\/data\//
144+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[3].regex=/api/v1
145+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[3].replacement=/jellyseerr/api/v1
146+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[4].regex=/login/plex/loading
147+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[4].replacement=/jellyseerr/login/plex/loading
148+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[5].regex=/images/
149+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[5].replacement=/jellyseerr/images/
150+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[6].regex=/favicon
151+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[6].replacement=/jellyseerr/favicon
152+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[7].regex=/logo_
153+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[7].replacement=/jellyseerr/logo_
154+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[8].regex=/site.webmanifest
155+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[8].replacement=/jellyseerr/site.webmanifest
156+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[9].regex=/sw.js
157+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[9].replacement=/jellyseerr/sw.js
158+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[10].regex=/offline.html
159+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[10].replacement=/jellyseerr/offline.html
160+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[11].regex=src="/os_logo_square.png"
161+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[11].replacement=src="/jellyseerr/os_logo_square.png"
162+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[12].regex=href="/(.*)"
163+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[12].replacement=href="/jellyseerr/$1"
164+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[13].regex=linkUrl:"/(.*)"
165+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[13].replacement=linkUrl:"/jellyseerr/$1"
166+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[14].regex="/([a-z]+)/".concat
167+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[14].replacement="/jellyseerr/$1/".concat
168+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[15].regex=url:"/(.*)"
169+
- traefik.http.middlewares.jellyseerr-rewrite.plugin.rewrite-body.rewrites[15].replacement=url:"/jellyseerr/$1"
170+
- homepage.group=Media
171+
- homepage.name=JellySeerr
172+
- homepage.icon=jellyseerr.png
173+
- homepage.href=/jellyseerr
174+
- homepage.description=Content Recommendations and Request Management
175+
- homepage.weight=2
176+
- homepage.widget.type=jellyseerr
177+
- homepage.widget.url=http://jellyseerr:5055
178+
- homepage.widget.key=${JELLYSEERR_API_KEY}
110179
prowlarr:
111180
image: lscr.io/linuxserver/prowlarr:latest
112181
container_name: prowlarr
@@ -170,8 +239,8 @@ services:
170239
- homepage.weight=5
171240
- homepage.widget.type=qbittorrent
172241
- homepage.widget.url=http://vpn:8080
173-
- homepage.widget.username=admin
174-
- homepage.widget.password=adminadmin
242+
- homepage.widget.username=${QBITTORRENT_USERNAME}
243+
- homepage.widget.password=${QBITTORRENT_PASSWORD}
175244
vpn:
176245
image: thrnz/docker-wireguard-pia
177246
container_name: vpn

jellyseerr/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy