From 6512f3059eb1730cfc33316e62c9221e53489989 Mon Sep 17 00:00:00 2001 From: chatton Date: Thu, 20 Nov 2025 11:11:35 +0000 Subject: [PATCH] chore: add lidarr --- roles/portainer_arr/defaults/main.yml | 10 +++ roles/portainer_arr/tasks/main.yml | 21 ++++++ roles/portainer_dashy/files/dashy-config.yml | 3 + roles/portainer_photoprism/defaults/main.yml | 55 +++++++++++++++ roles/portainer_photoprism/tasks/main.yml | 71 ++++++++++++++++++++ roles/portainer_plex/tasks/main.yml | 1 + roles/portainer_uptime_kuma/tasks/main.yml | 3 + 7 files changed, 164 insertions(+) create mode 100644 roles/portainer_photoprism/defaults/main.yml create mode 100644 roles/portainer_photoprism/tasks/main.yml diff --git a/roles/portainer_arr/defaults/main.yml b/roles/portainer_arr/defaults/main.yml index 7996c17..f0f73a8 100644 --- a/roles/portainer_arr/defaults/main.yml +++ b/roles/portainer_arr/defaults/main.yml @@ -34,6 +34,16 @@ sonarr_container_name: sonarr sonarr_puid: 1000 sonarr_pgid: 1000 +# Lidarr +# https://docs.linuxserver.io/images/docker-lidarr/ +#lidarr_image: lscr.io/linuxserver/lidarr +lidarr_image: blampe/lidarr +lidarr_tag: latest +lidarr_exposed_port: 8686 +lidarr_container_name: lidarr +lidarr_puid: 1000 +lidarr_pgid: 1000 + # Jackett # https://github.com/Jackett/Jackett/releases jackett_image: lscr.io/linuxserver/jackett diff --git a/roles/portainer_arr/tasks/main.yml b/roles/portainer_arr/tasks/main.yml index 9fc0ff8..bf342ef 100644 --- a/roles/portainer_arr/tasks/main.yml +++ b/roles/portainer_arr/tasks/main.yml @@ -8,6 +8,7 @@ - name: "{{ arr_portainer_stack_name }}_qbittorrent_config" - name: "{{ arr_portainer_stack_name }}_radarr_config" - name: "{{ arr_portainer_stack_name }}_sonarr_config" + - name: "{{ arr_portainer_stack_name }}_lidarr_config" - name: "{{ arr_portainer_stack_name }}_jackett_config" - name: "{{ arr_portainer_stack_name }}_gluetun" - name: "{{ arr_portainer_stack_name }}_nzbget_config" @@ -46,6 +47,8 @@ - "{{ radarr_exposed_port }}:7878" # sonarr - "{{ sonarr_exposed_port }}:8989" + # lidarr + - "{{ lidarr_exposed_port }}:8686" # jackett - "{{ jackett_exposed_port }}:9117" - "8191:8191" @@ -117,6 +120,23 @@ - "{{ directories.downloads_dir }}:/downloads" restart: unless-stopped + lidarr: + depends_on: + - protonwire + image: "{{ lidarr_image }}:{{ lidarr_tag }}" + labels: "{{ backup_labels}}" + container_name: "{{ lidarr_container_name }}" + network_mode: "service:protonwire" + environment: + - "PUID={{ lidarr_puid }}" + - "PGID={{ lidarr_pgid }}" + - TZ=Europe/London + volumes: + - lidarr_config:/config + - "{{ directories.music_dir }}:/music" + - "{{ directories.downloads_dir }}:/downloads" + restart: unless-stopped + jackett: labels: "{{ backup_labels}}" depends_on: @@ -150,6 +170,7 @@ qbittorrent_config: {} radarr_config: {} sonarr_config: {} + lidarr_config: {} jackett_config: {} gluetun: {} nzbget_config: {} diff --git a/roles/portainer_dashy/files/dashy-config.yml b/roles/portainer_dashy/files/dashy-config.yml index d1dfbdb..f0bb05c 100644 --- a/roles/portainer_dashy/files/dashy-config.yml +++ b/roles/portainer_dashy/files/dashy-config.yml @@ -84,6 +84,9 @@ sections: - title: Radarr icon: hl-radarr url: http://10.4.5.200:7878 + - title: Lidarr + icon: hl-lidarr + url: http://10.4.5.200:8686 - title: Overseerr icon: hl-overseerr url: https://overseerr.cianhatton.ie diff --git a/roles/portainer_photoprism/defaults/main.yml b/roles/portainer_photoprism/defaults/main.yml new file mode 100644 index 0000000..23d08a6 --- /dev/null +++ b/roles/portainer_photoprism/defaults/main.yml @@ -0,0 +1,55 @@ +--- +# photoprism configuration +photoprism_image: photoprism/photoprism +photoprism_tag: 230615 +photoprism_container_name: photoprism +photoprism_restart_policy: unless-stopped + +# ports +photoprism_http_port: 2342 + +# environment variables +photoprism_admin_password: "{{ vault_photoprism_admin_password | default('changeme') }}" +photoprism_auth_mode: "password" +photoprism_site_url: "http://{{ ansible_default_ipv4.address }}:{{ photoprism_http_port }}" +photoprism_originals_limit: 5000 +photoprism_http_compression: "gzip" +photoprism_log_level: "info" +photoprism_readonly: "false" +photoprism_experimental: "false" +photoprism_disable_chown: "false" +photoprism_disable_webdav: "false" +photoprism_disable_settings: "false" +photoprism_disable_tensorflow: "false" +photoprism_disable_faces: "false" +photoprism_disable_classification: "false" +photoprism_disable_raw: "false" +photoprism_raw_presets: "false" +photoprism_jpeg_quality: 85 +photoprism_detect_nsfw: "false" +photoprism_upload_nsfw: "true" +photoprism_site_caption: "AI-Powered Photos App" +photoprism_site_description: "" +photoprism_site_author: "" + +# database configuration +photoprism_database_driver: "mysql" +photoprism_database_server: "10.4.5.201:3306" +photoprism_database_name: "photoprism" +photoprism_database_user: "photoprism" +photoprism_database_password: "{{ vault_photoprism_database_password | default('changeme') }}" + +# directories +photoprism_base_dir: /mnt/mergerfs/photoprism +photoprism_originals_dir: "{{ photoprism_base_dir }}/originals" +photoprism_import_dir: "{{ photoprism_base_dir }}/import" +photoprism_storage_dir: "{{ photoprism_base_dir }}/storage" + +# network configuration +photoprism_network: mariadb_net + +# hardware acceleration +photoprism_enable_hw_acceleration: true + +# portainer configuration +photoprism_stack_name: photoprism \ No newline at end of file diff --git a/roles/portainer_photoprism/tasks/main.yml b/roles/portainer_photoprism/tasks/main.yml new file mode 100644 index 0000000..6cb4fa4 --- /dev/null +++ b/roles/portainer_photoprism/tasks/main.yml @@ -0,0 +1,71 @@ +--- +- name: "PhotoPrism | Restore any missing volumes from S3" + ansible.builtin.include_role: + name: chatton.docker_backup.docker_s3_volume_restore + vars: + docker_backup_s3_volume: "{{ item }}" + with_items: + - name: "{{ photoprism_stack_name }}_photoprism_storage" + +- name: "PhotoPrism | Update Portainer." + chatton.portainer.portainer_stack: + username: '{{ portainer_user }}' + password: '{{ portainer.password }}' + base_url: '{{ portainer_base_url }}' + stack_name: '{{ photoprism_stack_name }}' + endpoint_id: '{{ portainer_endpoint }}' + state: present + definition: + version: '3.5' + services: + photoprism: + labels: "{{ backup_labels }}" + image: "{{ photoprism_image }}:{{ photoprism_tag }}" + container_name: "{{ photoprism_container_name }}" + restart: "{{ photoprism_restart_policy }}" + security_opt: + - seccomp:unconfined + - apparmor:unconfined + ports: + - "{{ photoprism_http_port }}:2342" + environment: + PHOTOPRISM_ADMIN_PASSWORD: "{{ photoprism_admin_password }}" + PHOTOPRISM_AUTH_MODE: "{{ photoprism_auth_mode }}" + PHOTOPRISM_SITE_URL: "{{ photoprism_site_url }}" + PHOTOPRISM_ORIGINALS_LIMIT: "{{ photoprism_originals_limit }}" + PHOTOPRISM_HTTP_COMPRESSION: "{{ photoprism_http_compression }}" + PHOTOPRISM_LOG_LEVEL: "{{ photoprism_log_level }}" + PHOTOPRISM_READONLY: "{{ photoprism_readonly }}" + PHOTOPRISM_EXPERIMENTAL: "{{ photoprism_experimental }}" + PHOTOPRISM_DISABLE_CHOWN: "{{ photoprism_disable_chown }}" + PHOTOPRISM_DISABLE_WEBDAV: "{{ photoprism_disable_webdav }}" + PHOTOPRISM_DISABLE_SETTINGS: "{{ photoprism_disable_settings }}" + PHOTOPRISM_DISABLE_TENSORFLOW: "{{ photoprism_disable_tensorflow }}" + PHOTOPRISM_DISABLE_FACES: "{{ photoprism_disable_faces }}" + PHOTOPRISM_DISABLE_CLASSIFICATION: "{{ photoprism_disable_classification }}" + PHOTOPRISM_DISABLE_RAW: "{{ photoprism_disable_raw }}" + PHOTOPRISM_RAW_PRESETS: "{{ photoprism_raw_presets }}" + PHOTOPRISM_JPEG_QUALITY: "{{ photoprism_jpeg_quality }}" + PHOTOPRISM_DETECT_NSFW: "{{ photoprism_detect_nsfw }}" + PHOTOPRISM_UPLOAD_NSFW: "{{ photoprism_upload_nsfw }}" + PHOTOPRISM_DATABASE_DRIVER: "{{ photoprism_database_driver }}" + PHOTOPRISM_DATABASE_SERVER: "{{ photoprism_database_server }}" + PHOTOPRISM_DATABASE_NAME: "{{ photoprism_database_name }}" + PHOTOPRISM_DATABASE_USER: "{{ photoprism_database_user }}" + PHOTOPRISM_DATABASE_PASSWORD: "{{ photoprism_database_password }}" + PHOTOPRISM_SITE_CAPTION: "{{ photoprism_site_caption }}" + PHOTOPRISM_SITE_DESCRIPTION: "{{ photoprism_site_description }}" + PHOTOPRISM_SITE_AUTHOR: "{{ photoprism_site_author }}" + devices: + - "/dev/dri:/dev/dri" + working_dir: "/photoprism" + volumes: + - "{{ photoprism_originals_dir }}:/photoprism/originals" + - "{{ photoprism_import_dir }}:/photoprism/import" + - photoprism_storage:/photoprism/storage + volumes: + photoprism_storage: {} + networks: + default: + name: "{{ photoprism_network }}" + external: true \ No newline at end of file diff --git a/roles/portainer_plex/tasks/main.yml b/roles/portainer_plex/tasks/main.yml index 9ab92dc..44af6f3 100644 --- a/roles/portainer_plex/tasks/main.yml +++ b/roles/portainer_plex/tasks/main.yml @@ -38,6 +38,7 @@ volumes: - config:/config - "{{ directories.tv_dir }}:/tv" + - "{{ directories.music_dir }}:/music" - "{{ directories.exercise_dir }}:/exercise" - "{{ directories.movies_dir }}:/movies" - "{{ directories.transcoding_dir }}:/transcoding" diff --git a/roles/portainer_uptime_kuma/tasks/main.yml b/roles/portainer_uptime_kuma/tasks/main.yml index 459ff5c..1b6abb5 100644 --- a/roles/portainer_uptime_kuma/tasks/main.yml +++ b/roles/portainer_uptime_kuma/tasks/main.yml @@ -18,6 +18,9 @@ version: '3.3' services: uptime-kuma: + extra_hosts: + - "qnap:10.4.5.200" + - "dell:10.4.5.201" labels: "{{ backup_labels }}" image: "{{ uptime_kuma_image }}:{{ uptime_kuma_tag }}" container_name: "{{ uptime_kuma_container_name }}"