feat: add Jellyfin

This commit is contained in:
Adrien Poupa 2023-02-13 00:42:29 -05:00
parent 3e1e94817a
commit 8a28c4952f
7 changed files with 65 additions and 11 deletions

4
.gitignore vendored
View File

@ -15,4 +15,6 @@
/pia-shared
!/pia-shared/.gitkeep
/letsencrypt
!/letsencrypt/.gitkeep
!/letsencrypt/.gitkeep
/jellyfin
!/jellyfin/.gitkeep

View File

@ -94,6 +94,20 @@ The web UI login page can be disabled on for the local network in Settings > Web
172.17.0.0/16
```
## Jellyfin
To enable [hardware transcoding](https://jellyfin.org/docs/general/administration/hardware-acceleration/),
depending on your system, you may need to update the following block:
```
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
```
Generally, running Docker on Linux you will want to use VA-API, but the exact mount paths may differ depending on your
hardware.
## Heimdall
Applications can be added in Items > Add. The URLs should be the static IP, ie: `http://192.168.0.10/` for Sonarr

View File

@ -3,8 +3,9 @@
## Requirements
Any Docker-capable recent Linux box.
I am using a fresh Ubuntu Server 20.04 on a repurposed laptop so this guide reflects it,
but it would probably work with other distributions and different versions with a few tweaks.
I am using a fresh Ubuntu Server 22.04 on a repurposed laptop so this guide reflects it,
but it would probably work with other distributions and different versions with a few tweaks.
I also tested this setup on a Synology DS220+ with DSM 7.0.
## Pre-Docker Steps
@ -14,7 +15,7 @@ If not done during installation, install OpenSSH server for remote connection: `
### Static IP
Set a static IP:
Set a static IP, assuming `192.168.0.10` and using Google DNS servers:
`sudo nano /etc//netplan/00-installer-config.yaml`
@ -32,7 +33,7 @@ network:
version: 2
```
Here, `192.168.0.10` is going to be the static IP, and we will use Google's DNS servers. Apply the plan:
Apply the plan:
`sudo netplan apply`
@ -61,12 +62,16 @@ copy `/usr/libexec/docker/cli-plugins` rather than `$HOME/.docker/cli-plugins/do
You may then run the applications with `sudo docker compose up -d`
Then, to update the Sonarr/Radarr/Prowlarr base path, please run `./update-config.sh`.
This is only needed for the first time, and will update their `config.xml` file to set the correct path.
Then, to update the Sonarr/Radarr/Prowlarr/Jellyfin base paths, please run `./update-config.sh`.
This is only needed for the first time as it will update the application's configuration files to use the proper URL.
## NFS Share
## NFS Share (Optional)
It is now time to share the folders to other local devices using NFS, as it is easy to set up and fast.
This can be useful to share the media folder to a local player like Kodi or computers in the local network,
but may not be necessary if Jellyfin is going to be used to access the media.
It is now time to share the folders to other local devices using NFS, as it is easy to set up and fast.
Install the NFS kernel server:
`sudo apt-get install nfs-kernel-server`

View File

@ -15,6 +15,7 @@ The following applications are available:
- [qBittorrent](https://www.qbittorrent.org/): Bittorrent client with a complete web UI
- [PIA Wireguard VPN](https://github.com/thrnz/docker-wireguard-pia): Encapsulate qBittorrent traffic in
[PIA](https://www.privateinternetaccess.com/) using [Wireguard](https://www.wireguard.com/) with port forwarding.
- [Jellyfin](https://jellyfin.org/): Media server designed to organize, manage, and share digital media files to networked devices
- [Heimdall](https://heimdall.site/): Application dashboard
- [Traefik](https://traefik.io/): Reverse proxy
- [Watchtower](https://containrrr.dev/watchtower/): Automated Docker images update
@ -38,6 +39,7 @@ See [configuration](./CONFIGURATION.md).
| Prowlarr | [linuxserver/prowlarr:develop](https://hub.docker.com/r/linuxserver/prowlarr) | /prowlarr | `develop` tag as it is not stable yet |
| PIA Wireguard VPN | [thrnz/docker-wireguard-pia](https://hub.docker.com/r/thrnz/docker-wireguard-pia) | | |
| qBittorrent | [linuxserver/qbittorrent:4.5.0-libtorrentv1](https://hub.docker.com/r/linuxserver/qbittorrent) | /qbittorrent | Uses VPN network<br>Using Libtorrent 1.x |
| Jellyfin | [linuxserver/jellyfin](https://hub.docker.com/r/linuxserver/jellyfin) | /jellyfin | |
| Heimdall | [linuxserver/heimdall](https://hub.docker.com/r/linuxserver/heimdall) | / | |
| Traefik | [traefik](https://hub.docker.com/_/traefik) | | |
| Watchtower | [watchtower](https://hub.docker.com/r/containrrr/watchtower) | | |
@ -53,7 +55,6 @@ benefit from:
- [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr): Proxy server to bypass Cloudflare protection, useful
for some indexers in Prowlarr
- [Jackett](https://github.com/Jackett/Jackett): API Support for your favorite torrent trackers, as a Prowlarr replacement
- [Plex](https://www.plex.tv/): Plex Media Server
- [Pi-hole](https://pi-hole.net/): DNS that blocks ads
- Expose services with CloudFlare Tunnel if Tailscale is not enough
- you tell me!

View File

@ -135,6 +135,31 @@ services:
labels:
# network mode is not supported: https://github.com/containrrr/watchtower/issues/1286#issuecomment-1214291660
- com.centurylinklabs.watchtower.enable=false
jellyfin:
image: lscr.io/linuxserver/jellyfin
container_name: jellyfin
environment:
- PUID=${USER_ID}
- PGID=${GROUP_ID}
- TZ=${TIMEZONE}
- JELLYFIN_PublishedServerUrl=${HOSTNAME}/jellyfin
volumes:
- ./jellyfin:/config
- ${DATA_ROOT}:/data
ports:
- "7359:7359/udp"
- "1900:1900/udp"
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
- /dev/dri/card0:/dev/dri/card0
restart: always
labels:
- traefik.enable=true
- traefik.http.routers.jellyfin.rule=(Host(`${HOSTNAME}`) && PathPrefix(`/jellyfin`) || PathPrefix(`/jellyfin`))
- traefik.http.routers.jellyfin.tls=true
- traefik.http.routers.jellyfin.tls.certresolver=myresolver
- traefik.http.services.jellyfin.loadbalancer.server.port=8096
- traefik.http.services.jellyfin.loadbalancer.passhostheader=true
heimdall:
image: lscr.io/linuxserver/heimdall
container_name: heimdall

0
jellyfin/.gitkeep Normal file
View File

View File

@ -23,5 +23,12 @@ do
done
sed -i.bak "s/<UrlBase><\/UrlBase>/<UrlBase>\/prowlarr<\/UrlBase>/" ./prowlarr/config.xml && rm ./prowlarr/config.xml.bak
echo "Updating Jellyfin configuration..."
until [ -f ./jellyfin/network.xml ]
do
sleep 5
done
sed -i.bak "s/<BaseUrl \/>/<BaseUrl>\/jellyfin<\/BaseUrl>/" ./jellyfin/network.xml && rm ./jellyfin/network.xml.bak
echo "Restarting containers..."
docker compose restart radarr sonarr prowlarr
docker compose restart radarr sonarr prowlarr jellyfin