# Jellyfin in docker
# Descrizione
* [Sito ufficiale](https://jellyfin.org/)
* [Repo (Github)](https://github.com/linuxserver/docker-jellyfin)
* [Demo](https://demo.jellyfin.org/) Login: ```demo``` Password: ```lasciare vuoto```
* [Documentazione](https://docs.linuxserver.io/images/docker-jellyfin)
Jellyfin è un server per la gestione di film, serie tv e musica:
- Interfaccia web personalizzabile tramite CSS
- Possibilità di organizzare i vostri file in collezioni
- Possibilità di modificare e importare i metadati locali, integrati e tramite servizi esterni (IMDb, OMDb, TvDB, etc)
- Multiutente, con possiblità di gestire l'accesso alle librerie (anche singolarmente)
- [Client ufficiali (e non) multi-piattaforma](https://jellyfin.org/docs/general/clients/index.html)
- [Transcodifica hardware](https://jellyfin.org/docs/general/administration/hardware-acceleration.html)
# Struttura file e cartelle
```
/home/
└── ~/
└── docker/
└── jellyfin/
├── config/
├── data/
├── .env
└── docker-compose.yml
```
* `config/` - cartella dove risiedono i dati che servono a jellyfin
* `data/` - cartella dove vanno messi i film/serie tv/musica
* `.env` - file contenenti le variabili environment per il docker compose
* `docker-compose.yml` - file usato per creare il container
Tutti i file e le cartelle devono essere creati a mano.
# docker-compose
`docker-compose.yml`
```yml
version: "3"
services:
jellyfin:
container_name: linuxserver-jellyfin
image: ghcr.io/linuxserver/jellyfin
restart: unless-stopped
ports:
- ${JELLYFIN_WEBUI_PORT:-8096}:8096
- ${JELLYFIN_CLT_DSC_PORT:-7359}/udp:7359/udp # opzionale, servizio discovery per i client
- ${JELLYFIN_SVC_DSC_PORT:-1900}/udp:1900/udp # opzionale, servizio DLNA
env_file: .env
volumes:
- ${JELLYFIN_CONFIG:-/home/docker/jellyfin/config}:/config
- ${JELLYFIN_DATA:-/home/docker/jellyfin/data}:/data
#- /opt/vc/lib:/opt/vc/lib # percorso per librerie OpenMAX, necessario solo per RaspberryPi
devices:
- /dev/dri:/dev/dri # necessario per usare Intel VAAPI video encoding
#- /dev/vcsm:/dev/vcsm # necessario solo per usare Raspberry Pi MMAL video encoding
#- /dev/vchiq:/dev/vchiq # necessario solo per usare Raspberry Pi OpenMax video encoding
#- /dev/video10:/dev/video10 # necessario solo per usare Raspberry Pi V4L2 video encoding
#- /dev/video11:/dev/video11 # necessario solo per usare Raspberry Pi V4L2 video encoding
#- /dev/video12:/dev/video12 # necessario solo per usare Raspberry Pi V4L2 video encoding
```
`.env`
```bash
# Generale
JELLYFIN_WEBUI_PORT=8096
JELLYFIN_CLT_DSC_PORT=7359
JELLYFIN_SVC_DSC_PORT=1900
JELLYFIN_CONFIG=/config
JELLYFIN_DATA=/data
# Jellyfin
TZ=Europe/Amsterdam
# ATTIVARE IN BASE AL PROPRIO HARDWARE E NON ATTIVARE ENTRAMBI, in quanto ne basta uno solo
#DOCKER_MODS=linuxserver/mods:jellyfin-amd # necessario per usare GPU AMD (anche quelle integrate)
#DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel # necessario per usare OpenCL-Intel
```
# Reverse proxy
Ancora non ho previsto l'uso di un reverse proxy. (Vedi [Todo](#Todo))
# Aggiornamenti
[Watchtower](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/watchtower) aggiorna l'immagine automaticamente.
Aggiornamento manuale:
- `docker-compose pull`
- `docker-compose up -d`
- `docker image prune`
# Backup e ripristino
#### Backup
Copiare a mano, tramite crontab o altro la cartella `jellyfin` (Vedi [Todo](#Todo))
#### Ripristino
* spegnere il container `docker-compose down`
* cancellare l'intera cartella `jellyfin`
* dal backup copiare la cartella `jellyfin`
* far partire il container `docker-compose up -d`
# Todo
Implementare:
- reverse proxy: **[caddy](https://caddyserver.com/) o [traefik](https://doc.traefik.io/traefik/).**
- backup: **[borg](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/borg_backup) per fare i backup giornalieri completi.**