From 6c5180d2a5bed91e7121b813fa03ed43abbb4839 Mon Sep 17 00:00:00 2001 From: Menno van Leeuwen Date: Thu, 13 Mar 2025 13:33:06 +0100 Subject: [PATCH] feat: add Jellyfin service deployment and configuration --- config/ansible/tasks/servers/server.yml | 2 ++ .../tasks/servers/services/caddy/Caddyfile.j2 | 5 +++ .../services/jellyfin/docker-compose.yml.j2 | 30 +++++++++++++++++ .../servers/services/jellyfin/jellyfin.yml | 33 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 config/ansible/tasks/servers/services/jellyfin/docker-compose.yml.j2 create mode 100644 config/ansible/tasks/servers/services/jellyfin/jellyfin.yml diff --git a/config/ansible/tasks/servers/server.yml b/config/ansible/tasks/servers/server.yml index 1ee7813..929c349 100644 --- a/config/ansible/tasks/servers/server.yml +++ b/config/ansible/tasks/servers/server.yml @@ -37,6 +37,8 @@ enabled: true - name: plex enabled: true + - name: jellyfin + enabled: true when: - datapool_check is defined - datapool_check.rc is defined diff --git a/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 b/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 index 677eb9a..1d1bb61 100644 --- a/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 +++ b/config/ansible/tasks/servers/services/caddy/Caddyfile.j2 @@ -11,4 +11,9 @@ hoarder.mvl.sh { git.vleeuwen.me git.mvl.sh { reverse_proxy gitea:3000 tls {{ caddy_email }} +} + +jellyfin.vleeuwen.me jellyfin.mvl.sh { + reverse_proxy jellyfin:8096 + tls {{ caddy_email }} } \ No newline at end of file diff --git a/config/ansible/tasks/servers/services/jellyfin/docker-compose.yml.j2 b/config/ansible/tasks/servers/services/jellyfin/docker-compose.yml.j2 new file mode 100644 index 0000000..7aaf19e --- /dev/null +++ b/config/ansible/tasks/servers/services/jellyfin/docker-compose.yml.j2 @@ -0,0 +1,30 @@ +services: + jellyfin: + image: lscr.io/linuxserver/jellyfin:latest + container_name: jellyfin + environment: + - PUID=1000 + - PGID=100 + - TZ=Europe/Amsterdam + - JELLYFIN_PublishedServerUrl=https://jellyfin.vleeuwen.me + volumes: + - {{jellyfin_data_dir}}/jellyfin-config:/config + - /mnt/object_storage/movies:/movies + - /mnt/object_storage/tvshows:/tvshows + - /mnt/object_storage/music:/music + ports: + - 8096:8096 + - 8920:8920 + - 7359:7359/udp + - 1901:1900/udp + restart: unless-stopped + group_add: + - "992" + - "44" + networks: + - caddy_network + +networks: + caddy_network: + external: true + name: caddy_default diff --git a/config/ansible/tasks/servers/services/jellyfin/jellyfin.yml b/config/ansible/tasks/servers/services/jellyfin/jellyfin.yml new file mode 100644 index 0000000..4b80df2 --- /dev/null +++ b/config/ansible/tasks/servers/services/jellyfin/jellyfin.yml @@ -0,0 +1,33 @@ +--- +- name: Deploy Jellyfin service + block: + - name: Set Jellyfin directories + ansible.builtin.set_fact: + jellyfin_data_dir: "/mnt/services/jellyfin" + jellyfin_service_dir: "{{ ansible_env.HOME }}/services/jellyfin" + + - name: Create Jellyfin directories + ansible.builtin.file: + path: "{{ jellyfin_dir }}" + state: directory + mode: "0755" + loop: + - "{{ jellyfin_data_dir }}" + - "{{ jellyfin_service_dir }}" + loop_control: + loop_var: jellyfin_dir + + - name: Deploy Jellyfin docker-compose.yml + ansible.builtin.template: + src: docker-compose.yml.j2 + dest: "{{ jellyfin_service_dir }}/docker-compose.yml" + mode: "0644" + register: jellyfin_compose + + - name: Stop Jellyfin service + ansible.builtin.command: docker compose -f "{{ jellyfin_service_dir }}/docker-compose.yml" down --remove-orphans + when: jellyfin_compose.changed + + - name: Start Jellyfin service + ansible.builtin.command: docker compose -f "{{ jellyfin_service_dir }}/docker-compose.yml" up -d + when: jellyfin_compose.changed