Merge pull request #2 from AdrienPoupa/feat/add-jellyfin

feat: add Jellyfin
This commit is contained in:
Adrien Poupa 2023-02-13 00:57:38 -05:00 committed by GitHub
commit 863b8135b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 65 additions and 11 deletions

4
.gitignore vendored
View File

@ -15,4 +15,6 @@
/pia-shared /pia-shared
!/pia-shared/.gitkeep !/pia-shared/.gitkeep
/letsencrypt /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 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 ## Heimdall
Applications can be added in Items > Add. The URLs should be the static IP, ie: `http://192.168.0.10/` for Sonarr 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 ## Requirements
Any Docker-capable recent Linux box. Any Docker-capable recent Linux box.
I am using a fresh Ubuntu Server 20.04 on a repurposed laptop so this guide reflects it, 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. 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 ## Pre-Docker Steps
@ -14,7 +15,7 @@ If not done during installation, install OpenSSH server for remote connection: `
### Static IP ### 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` `sudo nano /etc//netplan/00-installer-config.yaml`
@ -32,7 +33,7 @@ network:
version: 2 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` `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` 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`. Then, to update the Sonarr/Radarr/Prowlarr/Jellyfin base paths, 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. 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: Install the NFS kernel server:
`sudo apt-get install 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 - [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 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. [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 - [Heimdall](https://heimdall.site/): Application dashboard
- [Traefik](https://traefik.io/): Reverse proxy - [Traefik](https://traefik.io/): Reverse proxy
- [Watchtower](https://containrrr.dev/watchtower/): Automated Docker images update - [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 | | 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) | | | | 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 | | 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) | / | | | Heimdall | [linuxserver/heimdall](https://hub.docker.com/r/linuxserver/heimdall) | / | |
| Traefik | [traefik](https://hub.docker.com/_/traefik) | | | | Traefik | [traefik](https://hub.docker.com/_/traefik) | | |
| Watchtower | [watchtower](https://hub.docker.com/r/containrrr/watchtower) | | | | 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 - [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr): Proxy server to bypass Cloudflare protection, useful
for some indexers in Prowlarr for some indexers in Prowlarr
- [Jackett](https://github.com/Jackett/Jackett): API Support for your favorite torrent trackers, as a Prowlarr replacement - [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 - [Pi-hole](https://pi-hole.net/): DNS that blocks ads
- Expose services with CloudFlare Tunnel if Tailscale is not enough - Expose services with CloudFlare Tunnel if Tailscale is not enough
- you tell me! - you tell me!

View File

@ -135,6 +135,31 @@ services:
labels: labels:
# network mode is not supported: https://github.com/containrrr/watchtower/issues/1286#issuecomment-1214291660 # network mode is not supported: https://github.com/containrrr/watchtower/issues/1286#issuecomment-1214291660
- com.centurylinklabs.watchtower.enable=false - 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: heimdall:
image: lscr.io/linuxserver/heimdall image: lscr.io/linuxserver/heimdall
container_name: heimdall container_name: heimdall

0
jellyfin/.gitkeep Normal file
View File

View File

@ -23,5 +23,12 @@ do
done done
sed -i.bak "s/<UrlBase><\/UrlBase>/<UrlBase>\/prowlarr<\/UrlBase>/" ./prowlarr/config.xml && rm ./prowlarr/config.xml.bak 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..." echo "Restarting containers..."
docker compose restart radarr sonarr prowlarr docker compose restart radarr sonarr prowlarr jellyfin