Container
Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Containerafbeeldingen
Officiële containerafbeelding: jellyfin/jellyfin .
Deze afbeelding is ook beschikbaar op de GitHub Container Registry: ghcr.io/jellyfin/jellyfin.
LinuxServer.io-afbeelding: linuxserver/jellyfin .
hotio-afbeelding: ghcr.io/hotio/jellyfin.
Jellyfin verspreidt officiële containerafbeeldingen op Docker Hub en de GitHub Container Registry voor meerdere architecturen. Deze afbeeldingen zijn gebaseerd op Debian en rechtstreeks gebouwd vanuit de Jellyfin-broncode.
Er zijn verschillende tags beschikbaar die verschillende builds en versieniveaus volgen.
-
latestvolgt altijd de nieuwste stabiele release, inclusief grote en kleine versie-updates -
X(bijvoorbeeld10) volgt de hoofversie, bijvoorbeeld de nieuwste 10.Y.Z -
X.Y(bijvoorbeeld10.11) volgt de subversie, bijvoorbeeld de nieuwste 10.11.Z -
X.Y.Z(bijvoorbeeld10.11.0) volgt een specifieke release -
X.Y.Z.YYYYMMDD-HHMMSS(bijvoorbeeld10.11.0.20251020-004604) volgt een specifieke verpakkingsbuild
Daarnaast zijn er verschillende derde partijen die niet-officiële containerafbeeldingen aanbieden, waaronder het LinuxServer.io (Dockerfile)-project en hotio (Dockerfile), die afbeeldingen aanbieden gebaseerd op Ubuntu en de officiële Jellyfin Ubuntu-binaire pakketten.
Installatie-instructies
Vervang uid:gid als je jellyfin wilt uitvoeren als specifieke gebruiker/groep. Laat het user-argument helemaal weg als je de standaardgebruiker wilt gebruiken.
- Docker
- Docker Compose
- Podman
Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Docker maakt het mogelijk om containers te draaien op Linux, Windows en macOS.
Als je Windows of macOS wilt gebruiken, installeer Jellyfin dan liever rechtstreeks op het systeem. Windows macOS.
Hoewel het mogelijk is om Jellyfin in Docker op Windows- of macOS-hosts te draaien, wordt dit NIET ondersteund. Bepaalde functionaliteiten werken niet correct bij gebruik van Docker op andere platformen dan Linux, met name:
- Hardwareversnelde transcodering
- Scannen op macOS in Docker
Je krijgt GEEN ondersteuning voor het draaien van Jellyfin in Docker op andere platformen dan Linux.
De basisstappen om een Jellyfin-container te maken en uit te voeren met Docker zijn als volgt.
-
Download de nieuwste containerimage.
docker pull jellyfin/jellyfin -
Maak permanente opslag voor configuratie- en cachedata.
Maak ofwel twee mappen op de host en gebruik bind mounts:
mkdir /path/to/config
mkdir /path/to/cacheOf maak twee permanente volumes:
docker volume create jellyfin-config
docker volume create jellyfin-cache -
Maak en draai een container op een van de volgende manieren.
De standaard netwerkmodus voor Docker is bridge-modus. Bridge-modus wordt gebruikt als host-modus wordt weggelaten.
Host-netwerken (--net=host) zijn optioneel maar vereist om DLNA te kunnen gebruiken.
Via Docker commandoregelinterface:
docker run -d \
--name jellyfin \
--user uid:gid \
-p 8096:8096/tcp \
-p 7359:7359/udp \
--volume /path/to/config:/config \ # Alternatively --volume jellyfin-config:/config
--volume /path/to/cache:/cache \ # Alternatively --volume jellyfin-cache:/cache
--mount type=bind,source=/path/to/media,target=/media \
--restart=unless-stopped \
jellyfin/jellyfin
Bind Mounts zijn nodig om mappen van het host-OS naar het container-OS door te geven, terwijl volumes door Docker worden beheerd en makkelijker te back-uppen en beheren zijn door externe programma's. Voor een eenvoudige opstelling wordt Bind Mounts als praktischer beschouwd dan volumes. Meerdere mediabibliotheken kunnen indien nodig gebind mount worden:
--mount type=bind,source=/path/to/media1,target=/media1
--mount type=bind,source=/path/to/media2,target=/media2,readonly
...etc
Een aangepaste map voor server-side systeemfonts kan optioneel gebind mount worden om deze fonts te gebruiken tijdens transcodering met ondertitelbranding:
--mount type=bind,source=/path/to/fonts,target=/usr/local/share/fonts/custom,readonly
Ook een map met fallback-fonts kan gemount worden. In dat geval moet je de fontmap instellen op /fallback_fonts in het Jellyfin-serverinstellingenpaneel:
--mount type=bind,source=/path/to/fallback/fonts,target=/fallback_fonts,readonly
Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Als je Windows of macOS wilt gebruiken, installeer Jellyfin dan liever rechtstreeks op het systeem. Windows macOS.
Hoewel het mogelijk is om Jellyfin in Docker op Windows- of macOS-hosts te draaien, wordt dit NIET ondersteund. Bepaalde functionaliteiten werken niet correct bij gebruik van Docker op andere platformen dan Linux, met name:
- Hardwareversnelde transcodering
- Scannen op macOS in Docker
Je krijgt GEEN ondersteuning voor het draaien van Jellyfin in Docker op andere platformen dan Linux.
Maak een docker-compose.yml bestand aan zoals hieronder.
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
# Optional - specify the uid and gid you would like Jellyfin to use instead of root
user: uid:gid
ports:
- 8096:8096/tcp
- 7359:7359/udp
volumes:
- /path/to/config:/config
- /path/to/cache:/cache
- type: bind
source: /path/to/media
target: /media
- type: bind
source: /path/to/media2
target: /media2
read_only: true
# Optional - extra fonts to be used during transcoding with subtitle burn-in
- type: bind
source: /path/to/fonts
target: /usr/local/share/fonts/custom
read_only: true
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://example.com
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- 'host.docker.internal:host-gateway'
Voer vervolgens uit terwijl je je in dezelfde map bevindt als het docker-compose.yml bestand:
docker compose up
Voeg -d toe aan bovenstaande opdracht om de container op de achtergrond te draaien.
Meer informatie over het gebruik van Docker vind je door de officiële Docker-documentatie te raadplegen.
Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →
Podman stelt je in staat om containers zonder root-rechten te draaien. De stappen om Jellyfin met Podman uit te voeren zijn vergelijkbaar met die voor Docker.
-
Installeer Podman:
sudo dnf install -y podman -
Maak een Jellyfin-container aan en voer deze uit:
podman run \
--detach \
--label "io.containers.autoupdate=registry" \
--name myjellyfin \
--publish 8096:8096/tcp \
--publish 7359:7359/udp \
--rm \
--user $(id -u):$(id -g) \
--userns keep-id \
--volume jellyfin-cache:/cache:Z \
--volume jellyfin-config:/config:Z \
--mount type=bind,source=/path/to/media,destination=/media,ro=true,relabel=private \
docker.io/jellyfin/jellyfin:latest -
Open de benodigde poorten in je firewall als je toegang tot de Jellyfin-server vanaf buiten de host wilt toestaan. Dit gebeurt niet automatisch bij gebruik van rootless Podman. Als je distributie
firewalldgebruikt, voer je de volgende commando's uit om een nieuwe firewallregel toe te voegen die HTTP-poort8096voor TCP-verbindingen opent. Daarnaast moet UDP-poort 7359 worden geopend voor automatische detectie.sudo firewall-cmd --add-port=8096/tcp --permanent
sudo firewall-cmd --add-port=7359/udp --permanent
sudo firewall-cmd --reload
Podman vereist geen root-toegang om containers te draaien, hoewel er enkele aandachtspunten zijn; zie de relevante documentatie.
Voor beveiliging moet de Jellyfin-container worden uitgevoerd met rootless Podman.
Bovendien is het veiliger om als niet-rootgebruiker binnen de container te werken.
De optie --user draait met de opgegeven gebruikers-ID en groep-ID binnen de container.
De vlag --userns keep-id zorgt ervoor dat de huidige gebruikers-ID wordt gekoppeld aan de niet-rootgebruikers-ID binnen de container.
Hierdoor worden de rechten voor mappen die via bind-mounts in de container zijn gekoppeld correct gemapt tussen de gebruiker die Podman uitvoert en de gebruiker die Jellyfin binnen de container draait.
Houd er rekening mee dat de --label "io.containers.autoupdate=image"-vlag ervoor zorgt dat de container automatisch wordt bijgewerkt via podman auto-update, en dat een back-up nodig zal zijn om een vorige versie te herstellen.
De volume-opties z (gedeeld volume) of Z (privévolume) en de mount-opties relabel=shared of relabel=private geven Podman aan bestanden in de volumes opnieuw te labelen voor systemen met SELinux.
Vervang jellyfin-config en jellyfin-cache door /path/to/config en /path/to/cache als je bind-mounts wilt gebruiken.
In dit voorbeeld wordt je mediabibliotheek alleen-lezen gemount via ro=true; wijzig dit naar ro=false als je Jellyfin schrijftoegang tot je media wilt geven.
Managing via systemd
To run as a systemd service see podman-systemd.unit.
As always it is recommended to run the container rootless. Therefore we want to manage the container with the systemd --user flag.
-
Create a new user that the rootless container will run under.
useradd jellyfinThis allows users who are not logged in to run long-running services.
loginctl enable-linger jellyfinOpen an interactive shell session.
machinectl shell jellyfin@ -
Install
.config/containers/systemd/jellyfin.containerContents of
~/.config/containers/systemd/jellyfin.container[Container]
Image=docker.io/jellyfin/jellyfin:latest
AutoUpdate=registry
PublishPort=8096:8096/tcp
UserNS=keep-id
Volume=jellyfin-config:/config:Z
Volume=jellyfin-cache:/cache:Z
Volume=jellyfin-media:/media:Z
[Service]
# Inform systemd of additional exit status
SuccessExitStatus=0 143
[Install]
# Start by default on boot
WantedBy=default.target -
Reload daemon and start the service.
systemctl --user daemon-reloadsystemctl --user start jellyfin -
To enable Podman auto-updates, enable the necessary systemd timer.
systemctl --user enable --now podman-auto-update.timer -
Optionally check logs for errors
journalctl --user -u jellyfin -
exitthe current session.
Using hardware acceleration
To use hardware acceleration, you need to allow the container to access the render device. If you are using container-selinux-2.226 or later, you have to set the container_use_dri_devices flag in selinux or the container will not be able to use it:
sudo setsebool -P container_use_dri_devices 1
On older versions of container-selinux, you have to disable the selinux confinement for the container by adding --security-opt label=disable to the podman command.
Then, you need to mount the render device inside the container:
--device /dev/dri/:/dev/dri/
Finally, you need to set the --device flag for the container to use the render device:
--device /dev/dri/
Podman run example:
podman run \
--detach \
--label "io.containers.autoupdate=registry" \
--name myjellyfin \
--publish 8096:8096/tcp \
--device /dev/dri/:/dev/dri/ \
# --security-opt label=disable # Only needed for older versions of container-selinux < 2.226
--rm \
--user $(id -u):$(id -g) \
--userns keep-id \
--volume jellyfin-cache:/cache:Z \
--volume jellyfin-config:/config:Z \
--mount type=bind,source=/path/to/media,destination=/media,ro=true,relabel=private \
docker.io/jellyfin/jellyfin:latest
systemd example:
[Unit]
Description=jellyfin
[Container]
Image=docker.io/jellyfin/jellyfin:latest
AutoUpdate=registry
PublishPort=8096:8096/tcp
UserNS=keep-id
#SecurityLabelDisable=true # Only needed for older versions of container-selinux < 2.226
AddDevice=/dev/dri/:/dev/dri/
Volume=jellyfin-config:/config:Z
Volume=jellyfin-cache:/cache:Z
Volume=jellyfin-media:/media:Z
[Service]
# Inform systemd of additional exit status
SuccessExitStatus=0 143
[Install]
# Start by default on boot
WantedBy=default.target
Vendor-specific configuration
Additional configuration steps may be required depending on your GPU vendor. Check the Hardware Acceleration section.