From fd4d761861c1b1b5d65a4331745f68e82a5c985d Mon Sep 17 00:00:00 2001 From: Aidan Hembree <8049680+ahembree@users.noreply.github.com> Date: Sun, 17 Nov 2024 20:44:55 -0500 Subject: [PATCH] add jellyseerr contianer --- .github/extra-vars.yml | 11 +++++ README.md | 1 + docs/Container Map.md | 1 + hms-docker.yml | 2 +- .../hmsdocker/defaults/main/container_map.yml | 13 +++-- .../templates/containers/jellyseerr.yml.j2 | 48 +++++++++++++++++++ roles/hmsdocker/vars/main.yml | 7 +++ 7 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 roles/hmsdocker/templates/containers/jellyseerr.yml.j2 diff --git a/.github/extra-vars.yml b/.github/extra-vars.yml index 37328e5..534b9d7 100644 --- a/.github/extra-vars.yml +++ b/.github/extra-vars.yml @@ -334,5 +334,16 @@ "authentik_provider_type": "proxy", "expose_to_public": false, }, + "jellyseerr": { + "enabled": true, + "proxy_host_rule": jellyseerr, + "directory": true, + "traefik": true, + "authentik": false, + "authentik_provider_type": proxy, + "expose_to_public": false, + "homepage": true, + "homepage_stats": false, + } } } diff --git a/README.md b/README.md index e58ea00..f921538 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Ansible Playbook to setup an automated Home Media Server stack running on Docker - [Prowlarr](https://github.com/Prowlarr/Prowlarr): tracker management - [Readarr](https://github.com/Readarr/Readarr): ebook management - [Overseerr](https://github.com/sct/overseerr): request platform +- [Jellyseerr](https://github.com/Fallenbagel/jellyseerr): request platform with Jellyfin and Emby support - [Requestrr](https://github.com/thomst08/requestrr): chat client for requests - [Calibre](https://github.com/linuxserver/docker-calibre): ebook management - [Tdarr](https://github.com/HaveAGitGat/Tdarr): media transcoding diff --git a/docs/Container Map.md b/docs/Container Map.md index 480b316..037f77e 100644 --- a/docs/Container Map.md +++ b/docs/Container Map.md @@ -52,5 +52,6 @@ If you choose to expose the container ports on the host (by setting `container_e | tinyMediaManager | ☐ | `tmm` | `5900`, `4000` | `5900`, `4000` | ☑ | | PASTA | ☐ | `pasta` | `8085` | `80` | ☑ | | Wizarr | ☐ | `wizarr` | `5690` | `5690` | ☑ | +| Jellyseerr | ☑ | `jellyseerr` | `5056` | `5055` | ☑ | If both Jellyfin and Emby are enabled, then Emby will be available on ports `8097` and `8921` (if ports are being exposed for both) diff --git a/hms-docker.yml b/hms-docker.yml index b7d6636..0d373f5 100644 --- a/hms-docker.yml +++ b/hms-docker.yml @@ -3,7 +3,7 @@ become: yes gather_facts: yes vars: - hmsd_current_version: 1.5 + hmsd_current_version: 1.5.1 hmsd_version_file: "{{ hms_docker_data_path }}/.hmsd-version" regex: '[^A-Za-z0-9._-]' replace: '_' diff --git a/roles/hmsdocker/defaults/main/container_map.yml b/roles/hmsdocker/defaults/main/container_map.yml index dfb2349..d614e9d 100644 --- a/roles/hmsdocker/defaults/main/container_map.yml +++ b/roles/hmsdocker/defaults/main/container_map.yml @@ -78,6 +78,16 @@ hms_docker_container_map: expose_to_public: no homepage: yes homepage_stats: no + jellyseerr: + enabled: no + proxy_host_rule: jellyseerr + directory: yes + traefik: yes + authentik: no + authentik_provider_type: proxy + expose_to_public: no + homepage: yes + homepage_stats: no prowlarr: enabled: yes proxy_host_rule: prowlarr @@ -311,6 +321,3 @@ hms_docker_container_map: authentik: no authentik_provider_type: proxy expose_to_public: no - - - diff --git a/roles/hmsdocker/templates/containers/jellyseerr.yml.j2 b/roles/hmsdocker/templates/containers/jellyseerr.yml.j2 new file mode 100644 index 0000000..f8c3d09 --- /dev/null +++ b/roles/hmsdocker/templates/containers/jellyseerr.yml.j2 @@ -0,0 +1,48 @@ +services: + jellyseerr: + image: fallenbagel/jellyseerr:latest + container_name: jellyseerr + restart: ${RESTART_POLICY} + logging: + options: + max-size: "12m" + max-file: "5" + driver: json-file + networks: + - proxy_net + environment: + - LOG_LEVEL=info + - PUID=${PUID} + - PGID=${PGID} + - TZ=${TIMEZONE} + {% if hmsdocker_traefik_enabled_jellyseerr or hmsdocker_homepage_enabled_jellyseerr %} + labels: + {% if hmsdocker_traefik_enabled_jellyseerr %} + - traefik.enable=true + - traefik.http.services.jellyseerr-${COMPOSE_PROJECT}.loadbalancer.server.port=5055 + - traefik.http.routers.jellyseerr-${COMPOSE_PROJECT}.rule=Host(`{{ hms_docker_container_map['jellyseerr']['proxy_host_rule'] | default('jellyseerr') }}.${HMSD_DOMAIN}`) + - traefik.http.routers.jellyseerr-${COMPOSE_PROJECT}.middlewares=external-ipallowlist@file + {% if hmsdocker_authentik_enabled_jellyseerr %} + - traefik.http.routers.jellyseerr-${COMPOSE_PROJECT}.middlewares=authentik-proxy-${COMPOSE_PROJECT}-jellyseerr-midware@docker + {% endif %} + {% endif %} + {% if hmsdocker_homepage_enabled_jellyseerr %} + - homepage.group=Managers + - homepage.name=Jellyseerr + - homepage.icon=jellyseerr.png + - homepage.href=http://{{ hms_docker_container_map['jellyseerr']['proxy_host_rule'] | default('jellyseerr') }}.${HMSD_DOMAIN} + - homepage.description=Request Manager + - homepage.widget.type=jellyseerr + - homepage.widget.url=http://jellyseerr:5055 + - homepage.widget.key=${JELLYSEERR_KEY:-apikeyapikeyapikey} + {% if hmsdocker_homepage_stats_enabled_jellyseerr %} + - homepage.showStats=true + {% endif %} + {% endif %} + {% endif %} + volumes: + - ${HMSD_APPS_PATH}/jellyseerr/config:/app/config + {% if hmsdocker_expose_ports_enabled_jellyseerr %} + ports: + - 5056:5055 + {% endif %} diff --git a/roles/hmsdocker/vars/main.yml b/roles/hmsdocker/vars/main.yml index 3f3fa13..c400a5f 100644 --- a/roles/hmsdocker/vars/main.yml +++ b/roles/hmsdocker/vars/main.yml @@ -43,6 +43,7 @@ hmsdocker_container_enabled_tinymediamanager: "{{ hms_docker_container_map['tiny hmsdocker_container_enabled_pasta: "{{ hms_docker_container_map['pasta']['enabled'] | default(False) }}" hmsdocker_container_enabled_netdata: "{{ hms_docker_container_map['netdata']['enabled'] | default(False) }}" hmsdocker_container_enabled_wizarr: "{{ hms_docker_container_map['wizarr']['enabled'] | default(False) }}" +hmsdocker_container_enabled_jellyseerr: "{{ hms_docker_container_map['jellyseerr']['enabled'] | default(False) }}" # Traefik computed variables @@ -78,6 +79,7 @@ hmsdocker_traefik_enabled_speedtest: "{{ hms_docker_container_map['speedtest-tra hmsdocker_traefik_enabled_tinymediamanager: "{{ hms_docker_container_map['tinymediamanager']['traefik'] | default(False) and hmsdocker_container_enabled_traefik }}" hmsdocker_traefik_enabled_pasta: "{{ hms_docker_container_map['pasta']['traefik'] | default(False) and hmsdocker_container_enabled_traefik }}" hmsdocker_traefik_enabled_wizarr: "{{ hms_docker_container_map['wizarr']['traefik'] | default(False) and hmsdocker_container_enabled_traefik }}" +hmsdocker_traefik_enabled_jellyseerr: "{{ hms_docker_container_map['jellyseerr']['traefik'] | default(False) and hmsdocker_container_enabled_traefik }}" # Public container exposure computed variables @@ -112,6 +114,7 @@ hmsdocker_expose_public_enabled_speedtest: "{{ hms_docker_container_map['speedte hmsdocker_expose_public_enabled_tinymediamanager: "{{ hms_docker_container_map['tinymediamanager']['expose_to_public'] | default(False) }}" hmsdocker_expose_public_enabled_pasta: "{{ hms_docker_container_map['pasta']['expose_to_public'] | default(False) }}" hmsdocker_expose_public_enabled_wizarr: "{{ hms_docker_container_map['wizarr']['expose_to_public'] | default(False) }}" +hmsdocker_expose_public_enabled_jellyseerr: "{{ hms_docker_container_map['jellyseerr']['expose_to_public'] | default(False) }}" # Container host port mapping computed variables @@ -147,6 +150,7 @@ hmsdocker_expose_ports_enabled_speedtest: "{{ True if (container_expose_ports or hmsdocker_expose_ports_enabled_tinymediamanager: "{{ True if (container_expose_ports or not hmsdocker_container_enabled_traefik or not hmsdocker_traefik_enabled_tinymediamanager) else False }}" hmsdocker_expose_ports_enabled_pasta: "{{ True if (container_expose_ports or not hmsdocker_container_enabled_traefik or not hmsdocker_traefik_enabled_pasta) else False }}" hmsdocker_expose_ports_enabled_wizarr: "{{ True if (container_expose_ports or not hmsdocker_container_enabled_traefik or not hmsdocker_traefik_enabled_wizarr) else False }}" +hmsdocker_expose_ports_enabled_jellyseerr: "{{ True if (container_expose_ports or not hmsdocker_container_enabled_traefik or not hmsdocker_traefik_enabled_jellyseerr) else False }}" # Authentik computed variables # Controls global authentik variables @@ -185,6 +189,7 @@ hmsdocker_authentik_enabled_speedtest: "{{ hms_docker_container_map['speedtest-t hmsdocker_authentik_enabled_tinymediamanager: "{{ hms_docker_container_map['tinymediamanager']['authentik'] | default(False) and hmsdocker_authentik_enabled_globally and hms_docker_container_map['tinymediamanager']['authentik_provider_type'] == 'proxy' | default(False) }}" hmsdocker_authentik_enabled_pasta: "{{ hms_docker_container_map['pasta']['authentik'] | default(False) and hmsdocker_authentik_enabled_globally and hms_docker_container_map['pasta']['authentik_provider_type'] == 'proxy' | default(False) }}" hmsdocker_authentik_enabled_wizarr: "{{ hms_docker_container_map['wizarr']['authentik'] | default(False) and hmsdocker_authentik_enabled_globally and hms_docker_container_map['wizarr']['authentik_provider_type'] == 'proxy' | default(False) }}" +hmsdocker_authentik_enabled_jellyseerr: "{{ hms_docker_container_map['jellyseerr']['authentik'] | default(False) and hmsdocker_authentik_enabled_globally and hms_docker_container_map['jellyseerr']['authentik_provider_type'] == 'proxy' | default(False) }}" # Homepage @@ -208,6 +213,7 @@ hmsdocker_homepage_enabled_jellyfin: "{{ hmsdocker_container_enabled_homepage an hmsdocker_homepage_enabled_emby: "{{ hmsdocker_container_enabled_homepage and hms_docker_container_map['emby']['homepage'] | default(False) }}" hmsdocker_homepage_enabled_lidarr: "{{ hmsdocker_container_enabled_homepage and hms_docker_container_map['lidarr']['homepage'] | default(False) }}" hmsdocker_homepage_enabled_autobrr: "{{ hmsdocker_container_enabled_homepage and hms_docker_container_map['autobrr']['homepage'] | default(False) }}" +hmsdocker_homepage_enabled_jellyseerr: "{{ hmsdocker_container_enabled_homepage and hms_docker_container_map['jellyseerr']['homepage'] | default(False) }}" # Controls if the container should show stats (CPU, RAM, RX, TX) on Homepage hmsdocker_homepage_stats_enabled_traefik: "{{ hmsdocker_homepage_enabled_traefik and hms_docker_container_map['traefik']['homepage_stats'] | default(False) }}" @@ -229,6 +235,7 @@ hmsdocker_homepage_stats_enabled_jellyfin: "{{ hmsdocker_homepage_enabled_jellyf hmsdocker_homepage_stats_enabled_emby: "{{ hmsdocker_homepage_enabled_emby and hms_docker_container_map['emby']['homepage_stats'] | default(False) }}" hmsdocker_homepage_stats_enabled_lidarr: "{{ hmsdocker_homepage_enabled_lidarr and hms_docker_container_map['lidarr']['homepage_stats'] | default(False) }}" hmsdocker_homepage_stats_enabled_autobrr: "{{ hmsdocker_homepage_enabled_autobrr and hms_docker_container_map['autobrr']['homepage_stats'] | default(False) }}" +hmsdocker_homepage_stats_enabled_jellyseerr: "{{ hmsdocker_homepage_enabled_jellyseerr and hms_docker_container_map['jellyseerr']['homepage_stats'] | default(False) }}" #######################################################################