untested: addid ansible

This commit is contained in:
Kyattsukuro 2026-09-28 21:40:49 +02:00
parent ab5006ca8f
commit 594ef7a65d
7 changed files with 101 additions and 34 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# jellyfin

View File

@ -1,34 +0,0 @@
version: '3.5'
services:
jellyfin:
image: jellyfin/jellyfin:10.11.6
user: 0:0
networks:
- proxy
volumes:
- config:/config
- cache:/cache
- media:/media
restart: 'unless-stopped'
environment:
- JELLYFIN_PublishedServerUrl=https://jellyfin.urmel.de
labels:
traefik.enable: true
traefik.http.routers.jellyfin.rule: "Host(`jellyfin.urmel.de`)"
traefik.http.routers.jellyfin.tls: true
traefik.http.routers.jellyfin.tls.certResolver: hetzner
traefik.http.services.jellyfin-https.loadbalancer.server.port: 8096
volumes:
config:
cache:
media:
driver_opts:
type: nfs4
o: addr=217.100.0.2,rw,noatime,tcp
device: ":/mnt/Main/jellyfinData"
networks:
proxy:
name: traefik_exposed
external: true

11
defaults/main.yml Normal file
View File

@ -0,0 +1,11 @@
path: /srv/{{ role_name }}
jellyfin_override: {}
jellyfin_defaults:
version: "10.11.6"
url: ""
data_path: ""
networkmount:
host: ""
host_path: ""
args: ""

9
handlers/main.yml Normal file
View File

@ -0,0 +1,9 @@
- name: restart container
community.docker.docker_compose_v2:
project_src: "{{ path }}"
project_name: "{{ role_name }}"
recreate: "always"
services: ["jellyfin"]
state: "restarted"
when: not _jellyfin_already_restarted

20
meta/main.yml Normal file
View File

@ -0,0 +1,20 @@
---
galaxy_info:
author: "Niklas Freese <niklas@urmel.de>"
description: jellyfin
company: "Urmel Services"
license: AGPL-3.0-or-later
min_ansible_version: 2.1
# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.
# dependencies:
# - role: base

35
tasks/main.yml Normal file
View File

@ -0,0 +1,35 @@
---
- name: "set local variables from overrides and defaults"
set_fact:
jellyfin: "{{ (jellyfin_defaults | combine(jellyfin_override, recursive=True)) if jellyfin_override else jellyfin_defaults }}"
- name: ensure that path exists
file:
path: "{{ path }}/config/jellyfin"
state: directory
- name: template compose
template:
src: compose.yml.j2
dest: "{{ path }}/compose.yml"
- import_role:
name: storage_mount
vars:
storagebox_override:
host: "{{ jellyfin.networkmount.host }}"
host_path: "{{ jellyfin.networkmount.host_path }}"
args: "{{ jellyfin.networkmount.args }}"
dest_path: "{{ jellyfin.data_path }}"
when: jellyfin.networkmount.host | length > 1
- name: ensure containers are running
community.docker.docker_compose_v2:
project_src: "{{ path }}"
project_name: "{{ role_name }}"
state: "present"
pull: "always"
wait: true
services: [ 'jellyfin' ]
register: _compose_result

25
templates/compose.yml.j2 Normal file
View File

@ -0,0 +1,25 @@
services:
jellyfin:
image: jellyfin/jellyfin:{{ jellyfin.version }}
user: 0:0
networks:
- proxy
volumes:
- ./config/jellyfin:/config
- ./cache:/cache
- {{ jellyfin.data_path }}:/media
restart: 'unless-stopped'
environment:
- JELLYFIN_PublishedServerUrl=https://{{ jellyfin.urmel }}
labels:
traefik.enable: true
traefik.http.routers.jellyfin.rule: "Host(`{{ jellyfin.urmel }}`)"
traefik.http.routers.jellyfin.tls: true
traefik.http.routers.jellyfin.tls.certResolver: hetzner
traefik.http.services.jellyfin-https.loadbalancer.server.port: 8096
networks:
proxy:
name: traefik_exposed
external: true