rename jellyfin -> media stack

add transmission service to media stack
open jellyfin web UI to the internet
This commit is contained in:
Pim Kunis 2024-02-13 00:11:26 +01:00
parent 895e1365d9
commit ef994e472b
5 changed files with 99 additions and 58 deletions

View file

@ -16,4 +16,4 @@
- {role: syncthing, tags: syncthing} - {role: syncthing, tags: syncthing}
- {role: kitchenowl, tags: kitchenowl} - {role: kitchenowl, tags: kitchenowl}
- {role: paperless-ngx, tags: paperless-ngx} - {role: paperless-ngx, tags: paperless-ngx}
- {role: jellyfin, tags: jellyfin} - {role: media, tags: media}

View file

@ -1,56 +0,0 @@
# vi: ft=yaml
version: '3.5'
networks:
traefik:
external: true
volumes:
media:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/media"
config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/jellyfin/config"
cache:
services:
jellyfin:
image: jellyfin/jellyfin
# user: uid:gid
network_mode: 'host'
volumes:
- cache:/cache
- type: volume
source: config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
# - /path/to/media2:/media2:ro
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://media.kun.is:444
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
# extra_hosts:
# - "host.docker.internal:host-gateway"
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.jellyfin.entrypoints=localsecure
- traefik.http.routers.jellyfin.rule=Host(`media.kun.is`)
- traefik.http.routers.jellyfin.tls=true
- traefik.http.routers.jellyfin.tls.certresolver=letsencrypt
- traefik.http.routers.jellyfin.service=jellyfin
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
- traefik.docker.network=traefik

View file

@ -0,0 +1,92 @@
# vi: ft=yaml
version: '3.5'
networks:
traefik:
external: true
volumes:
media:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/media"
jellyfin_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/jellyfin/config"
transmission_config:
driver_opts:
type: "nfs"
o: "addr=lewis.dmz,nolock,soft,rw"
device: ":/mnt/data/nfs/transmission/config"
jellyfin_cache:
services:
jellyfin:
image: jellyfin/jellyfin:10.8.13-1
network_mode: 'host'
volumes:
- jellyfin_cache:/cache
- type: volume
source: jellyfin_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
# Alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://media.kun.is:444
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
# extra_hosts:
# - "host.docker.internal:host-gateway"
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.jellyfin.entrypoints=websecure
- traefik.http.routers.jellyfin.rule=Host(`media.kun.is`)
- traefik.http.routers.jellyfin.tls=true
- traefik.http.routers.jellyfin.tls.certresolver=letsencrypt
- traefik.http.routers.jellyfin.service=jellyfin
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
- traefik.docker.network=traefik
# TODO: port forward torrent ports:
# - 51413:51413
# - 51413:51413/udp
transmission:
image: lscr.io/linuxserver/transmission:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
volumes:
- type: volume
source: transmission_config
target: /config
volume:
nocopy: true
- type: volume
source: media
target: /media
volume:
nocopy: true
networks:
- traefik
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.transmission.entrypoints=localsecure
- traefik.http.routers.transmission.rule=Host(`transmission.kun.is`)
- traefik.http.routers.transmission.tls=true
- traefik.http.routers.transmission.tls.certresolver=letsencrypt
- traefik.http.routers.transmission.service=transmission
- traefik.http.services.transmission.loadbalancer.server.port=9091
- traefik.docker.network=traefik

View file

@ -1,5 +1,5 @@
- name: Deploy Docker stack - name: Deploy Docker stack
docker_stack: docker_stack:
name: jellyfin name: media
compose: compose:
- "{{ lookup('template', '{{ role_path }}/docker-stack.yml.j2') | from_yaml }}" - "{{ lookup('template', '{{ role_path }}/docker-stack.yml.j2') | from_yaml }}"

View file

@ -17,7 +17,12 @@ let
"/paperless-ngx/data" "/paperless-ngx/data"
"/paperless-ngx/redisdata" "/paperless-ngx/redisdata"
"/media" "/media"
"/media/books"
"/media/movies"
"/media/music"
"/media/shows"
"/jellyfin/config" "/jellyfin/config"
"/transmission/config"
]; ];
nfsExports = lib.strings.concatLines ( nfsExports = lib.strings.concatLines (