jellyfin: Deploy Jellyfin media server

Jellyfin is a multimedia library manager. Clients can browse and stream
music, movies, and TV shows from the server and play them locally
(including in the browser).
This commit is contained in:
2023-09-12 13:38:35 -05:00
parent 226a6bef46
commit a2b3f9b5b9
11 changed files with 216 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
- name: ensure jellyfin group exists
group:
name: jellyfin
gid: 201
system: true
state: present
tags:
- user
- group
- name: ensure jellyfin user exists
user:
name: jellyfin
uid: 201
group: jellyfin
system: true
home: /
createhome: false
state: present
tags:
- user
- name: ensure jellyfin cache directory exists
file:
path: /var/cache/jellyfin
owner: jellyfin
group: jellyfin
mode: u=rwx,go=
state: directory
tags:
- datadir
- name: ensure jellyfin data directory exists
file:
path: /var/lib/jellyfin
owner: jellyfin
group: jellyfin
mode: u=rwx,og=rx
state: directory
tags:
- datadir
- name: ensure jellyfin environment is configured
template:
src: jellyfin.env.j2
dest: /etc/sysconfig/jellyfin
owner: root
group: root
mode: u=rw,go=
tags:
- config
- name: ensure jellyfin.container systemd unit exists
template:
src: jellyfin.container.j2
dest: /etc/containers/systemd/jellyfin.container
owner: root
group: root
mode: u=rw,go=r
notify:
- reload systemd
- restart jellyfin
tags:
- systemd
- container
- name: flush handlers
meta: flush_handlers
- name: ensure jellyfin starts at boot
systemd:
name: jellyfin
enabled: true
tags:
- service
- name: ensure jellyfin is running
systemd:
name: jellyfin
state: started
tags:
- service

View File

@@ -0,0 +1,19 @@
- name: ensure apache is configured to proxy for jellyfin
template:
src: jellyfin.httpd.conf.j2
dest: /etc/httpd/conf.d/jellyfin.conf
owner: root
group: root
mode: u=rw,go=r
notify:
- reload httpd
tags:
- apache
- name: ensure selinux is configured for apache reverse proxy
seboolean:
name: httpd_can_network_connect
state: true
persistent: true
tags:
- selinux

View File

@@ -0,0 +1,12 @@
- name: ensure podman is installed
package:
name:
- container-selinux
- podman
state: present
- name: ensure jellyfin container image is present
podman_image:
name: '{{ jellyfin_container_image }}:{{ jellyfin_version }}'
state: present

View File

@@ -0,0 +1,9 @@
- block:
- import_tasks: install.yml
tags:
- install
- import_tasks: deploy.yml
- import_tasks: httpd-proxy.yml
tags:
- jellyfin