first commit
This commit is contained in:
commit
2895b62c09
175
jellyfin.yml
Normal file
175
jellyfin.yml
Normal file
@ -0,0 +1,175 @@
|
||||
---
|
||||
- name: jellyfin
|
||||
hosts: defiant.dedyn.io
|
||||
tasks:
|
||||
|
||||
- name: Create /home/docker/jellyfin.{{inventory_hostname}} dir
|
||||
ansible.builtin.file:
|
||||
path: /home/docker/jellyfin.{{inventory_hostname}}
|
||||
owner: root
|
||||
group: docker
|
||||
state: directory
|
||||
mode: '0550'
|
||||
|
||||
# - name: /home/docker/jellyfin.{{inventory_hostname}}/genpw.sh (generate Random PW for Semaphore and DB)
|
||||
# blockinfile:
|
||||
# path: /home/docker/jellyfin.{{inventory_hostname}}/genpw.sh
|
||||
# create: yes
|
||||
# mode: 0550
|
||||
# owner: root
|
||||
# group: docker
|
||||
# marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
# block: |
|
||||
# cd /home/docker/jellyfin.{{inventory_hostname}}
|
||||
#
|
||||
# mysqluser=$(pwgen -s 32 1)
|
||||
# mysqlpassword=$(pwgen -s 32 1)
|
||||
# wpadminpassword=$(pwgen -s 32 1)
|
||||
#
|
||||
# [ -f env ] || echo "WORDPRESS_DB_USER=!MYSQLUSER!
|
||||
# WORDPRESS_DB_PASSWORD=!MYSQLPASSWORD!
|
||||
# WORDPRESS_ADMIN_PASSWORD=!WPADMINPASSWD!
|
||||
# " >env
|
||||
#
|
||||
# [ -f env.db ] || echo "MARIADB_USER=!MYSQLUSER!
|
||||
# MARIADB_PASSWORD=!MYSQLPASSWORD!
|
||||
# " >env.db
|
||||
#
|
||||
# [ -f env.phpmyadmin ] || echo "PMA_USER=!MYSQLUSER!
|
||||
# PMA_PASSWORD=!MYSQLPASSWORD!
|
||||
# " >env.phpmyadmin
|
||||
#
|
||||
# chmod 440 env env.db env.phpmyadmin
|
||||
# chown root:docker env env.db env.phpmyadmin
|
||||
# sed -i "s/\!MYSQLUSER\!/$mysqluser/g" env env.db env.phpmyadmin
|
||||
# sed -i "s/\!MYSQLPASSWORD\!/$mysqlpassword/g" env env.db env.phpmyadmin
|
||||
# sed -i "s/\!WPADMINPASSWD\!/$wpadminpassword/g" env
|
||||
# backup: yes
|
||||
# validate: /bin/bash -n %s
|
||||
# notify: run genpw.sh
|
||||
#
|
||||
# - name: /home/docker/jellyfin.{{inventory_hostname}}/genpw.sh shebang
|
||||
# lineinfile:
|
||||
# path: /home/docker/jellyfin.{{inventory_hostname}}/genpw.sh
|
||||
# insertbefore: BOF
|
||||
# line: "#!/bin/bash -e"
|
||||
#
|
||||
# - name: Gen initial passwords if not exists
|
||||
# ansible.builtin.shell: ./genpw.sh
|
||||
# args:
|
||||
# chdir: /home/docker/jellyfin.{{inventory_hostname}}
|
||||
# creates: /home/docker/jellyfin.{{inventory_hostname}}/env
|
||||
|
||||
- name: /home/docker/jellyfin.{{inventory_hostname}}/docker-compose.yml Container Configuration
|
||||
blockinfile:
|
||||
path: /home/docker/jellyfin.{{inventory_hostname}}/docker-compose.yml
|
||||
create: yes
|
||||
mode: 0440
|
||||
owner: root
|
||||
group: docker
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
block: |
|
||||
version: '3.6'
|
||||
|
||||
services:
|
||||
|
||||
jellyfin.{{inventory_hostname}}:
|
||||
image: jellyfin/jellyfin:latest
|
||||
restart: unless-stopped
|
||||
#env_file: env
|
||||
user: 0:0
|
||||
#environment:
|
||||
volumes:
|
||||
- ./data/config:/config
|
||||
- ./data/cache:/cache
|
||||
- /data-crypt/share/Musik/Uploaddatum:/Musik:ro
|
||||
- /data-crypt/share/Videos/Spielfilme:/Filme:ro
|
||||
- /data-crypt/share/Videos/Serien:/Serien:ro
|
||||
- /data-crypt/share/Videos/Musikvideos:/Musikvideos:ro
|
||||
- /data-crypt/share/Hörbücher/Uploaddatum:/Hörbücher:ro
|
||||
- /data-crypt/share/Fotos/Konzerte:/Fotos-Konzerte:ro
|
||||
- /etc/localtime:/etc/localtime
|
||||
networks:
|
||||
- traefik
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
# HTTPS
|
||||
- traefik.http.routers.jellyfin-{{ ansible_facts['hostname'] }}.rule=Host(`jellyfin.{{ ansible_facts['nodename'] }}`)
|
||||
- traefik.http.routers.jellyfin-{{ ansible_facts['hostname'] }}.entrypoints=https
|
||||
- traefik.http.routers.jellyfin-{{ ansible_facts['hostname'] }}.tls=true
|
||||
- traefik.http.routers.jellyfin-{{ ansible_facts['hostname'] }}.middlewares=secHeaders@file
|
||||
# Proxy to service-port
|
||||
- traefik.http.services.jellyfin-{{ ansible_facts['hostname'] }}.loadbalancer.server.port=8096
|
||||
- traefik.http.routers.jellyfin-{{ ansible_facts['hostname'] }}.service=jellyfin-{{ ansible_facts['hostname'] }}
|
||||
# cert via letsencrypt
|
||||
- traefik.http.routers.jellyfin-{{ ansible_facts['hostname'] }}.tls.certresolver=letsencrypt
|
||||
# Traefik network
|
||||
- traefik.docker.network=traefik
|
||||
|
||||
networks:
|
||||
traefik:
|
||||
external: true
|
||||
|
||||
backup: yes
|
||||
notify: Restart jellyfin
|
||||
|
||||
- name: Start jellyfin
|
||||
ansible.builtin.shell: docker-compose up -d
|
||||
args:
|
||||
chdir: /home/docker/jellyfin.{{inventory_hostname}}
|
||||
# creates: /home/docker/jellyfin.{{inventory_hostname}}/db-data/sys/db.opt
|
||||
|
||||
# - name: Wait until jellyfin install is finished
|
||||
# wait_for:
|
||||
# path: /home/docker/jellyfin.{{inventory_hostname}}/wp-data/index.php
|
||||
#
|
||||
# - name: /home/docker/jellyfin.{{inventory_hostname}}/jellyfin.init.sh
|
||||
# blockinfile:
|
||||
# path: /home/docker/jellyfin.{{inventory_hostname}}/jellyfin.init.sh
|
||||
# mode: "0500"
|
||||
# owner: root
|
||||
# group: root
|
||||
# create: yes
|
||||
# marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
# block: |
|
||||
# # install jellyfin Login URL: https://jellyfin.{{inventory_hostname}}/wp-login.php
|
||||
# cd /home/docker/jellyfin.{{inventory_hostname}}
|
||||
# if ! docker-compose run jellyfin.{{inventory_hostname}}--cli wp core is-installed
|
||||
# then
|
||||
# until wget -t1 --timeout=15 https://jellyfin.{{inventory_hostname}} >/dev/null 2>&1
|
||||
# do
|
||||
# sleep 5
|
||||
# done
|
||||
# cat env | egrep "^WORDPRESS_ADMIN_PASSWORD=" >env.tmp
|
||||
# . env.tmp
|
||||
# rm -f env.tmp
|
||||
# docker-compose run jellyfin.{{inventory_hostname}}--cli wp core install --url="https://jellyfin.{{inventory_hostname}}" --title="jellyfin.{{inventory_hostname}}" --admin_name=wpadmin --admin_password=${WORDPRESS_ADMIN_PASSWORD} --admin_email='admin@{{inventory_hostname}}'
|
||||
# fi
|
||||
# backup: yes
|
||||
# validate: /bin/bash -n %s
|
||||
# notify: run jellyfin.init
|
||||
#
|
||||
# - name: Run jellyfin.init after install
|
||||
# ansible.builtin.shell: bash /home/docker/jellyfin.{{inventory_hostname}}/jellyfin.init.sh
|
||||
# args:
|
||||
# chdir: /home/docker/jellyfin.{{inventory_hostname}}
|
||||
# creates: /home/docker/jellyfin.{{inventory_hostname}}/jellyfin.init.log
|
||||
|
||||
|
||||
|
||||
handlers:
|
||||
|
||||
# - name: run genpw.sh
|
||||
# ansible.builtin.shell: ./genpw.sh
|
||||
# args:
|
||||
# chdir: /home/docker/jellyfin.{{inventory_hostname}}
|
||||
# notify: Restart jellyfin
|
||||
|
||||
# - name: run jellyfin.init
|
||||
# ansible.builtin.shell: bash /home/docker/jellyfin.{{inventory_hostname}}/jellyfin.init.sh
|
||||
|
||||
- name: Restart jellyfin
|
||||
ansible.builtin.shell: docker-compose up -d
|
||||
args:
|
||||
chdir: /home/docker/jellyfin.{{inventory_hostname}}
|
||||
|
Loading…
Reference in New Issue
Block a user