rename jellyfin -> media stack
add transmission service to media stack open jellyfin web UI to the internet
This commit is contained in:
parent
895e1365d9
commit
ef994e472b
5 changed files with 99 additions and 58 deletions
|
@ -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}
|
||||||
|
|
|
@ -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
|
|
92
docker_swarm/roles/media/docker-stack.yml.j2
Normal file
92
docker_swarm/roles/media/docker-stack.yml.j2
Normal 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
|
|
@ -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 }}"
|
|
@ -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 (
|
||||||
|
|
Loading…
Reference in a new issue