Si të instaloni serverin Jellyfin Media në Rocky Linux 9
Jellyfin është një server mediash pa pagesë dhe me burim të hapur që ju lejon të transmetoni përmbajtje që mund të aksesohet nga kudo. Ai mbështet filma, shfaqje televizive, muzikë dhe TV/DVR live. Serveri Jellyfin mund të konfigurohet në Windows, Linux ose macOS dhe përmbajtja e tij aksesohet menjëherë nga pajisje të ndryshme duke përdorur shfletues dhe aplikacione celulare duke përdorur një URL publike. Madje bën të mundur transmetimin e këtyre skedarëve në PC, televizorë ose telefona të tjerë për sa kohë që këto pajisje media janë të lidhura me internetin ose të njëjtin rrjet. Ai ofron disa veçori duke përfshirë, Mbështet DLNA, Pa kufi riprodhimi, Marrja automatike e meta të dhënave nga TheTVDB, TheMovieDB dhe Rotten Tomatoes, Regjistrimet automatike, Mbështet përshpejtimin e harduerit dhe shumë të tjera.
Jellyfin është një fork i serverit Emby Media pasi Emby kaloi në një model licence të pronarit.
Në këtë tutorial, do të mësoni se si të instaloni Jellyfin Media Server duke përdorur Docker në një server Rocky Linux 9.
Parakushtet
-
A server running Rocky Linux 9 with a minimum of 2 CPU cores and 4GB of memory. You will need to upgrade the server as per requirements.
-
A non-root user with sudo privileges.
-
A fully qualified domain name (FQDN) pointing to your server. For our purposes, we will use
jellyfin.example.com
as the domain name. -
Make sure everything is updated.
$ sudo dnf update
-
Install basic utility packages. Some of them may already be installed.
$ sudo dnf install wget curl nano unzip yum-utils -y
Hapi 1 - Konfiguro Firewall
Hapi i parë është konfigurimi i murit të zjarrit. Rocky Linux përdor Firewalld Firewall. Kontrolloni statusin e mureve të zjarrit.
$ sudo firewall-cmd --state
running
Firewall punon me zona të ndryshme dhe zona publike është ajo e paracaktuar që do të përdorim. Listoni të gjitha shërbimet dhe portet aktive në murin e zjarrit.
$ sudo firewall-cmd --permanent --list-services
Duhet të tregojë daljen e mëposhtme.
cockpit dhcpv6-client ssh
Jellyfin ka nevojë për porte HTTP dhe HTTPS për të funksionuar. Hapini ato.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Shto maskaradë, pasi aplikacioni do të kontaktojë me raste të tjera.
$ sudo firewall-cmd --permanent --add-masquerade
Ringarko murin e zjarrit për të zbatuar ndryshimet.
$ sudo firewall-cmd --reload
Hapi 2 - Instaloni Docker dhe Docker Compose
Rocky Linux dërgohet me një version më të vjetër të Docker. Për të instaluar versionin më të fundit, së pari, instaloni depon zyrtare të Docker.
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
Instaloni versionin më të fundit të Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Ju mund të merrni gabimin e mëposhtëm gjatë përpjekjes për të instaluar Docker.
ror:
Problem: problem with installed package buildah-1:1.26.2-1.el9_0.x86_64
- package buildah-1:1.26.2-1.el9_0.x86_64 requires runc >= 1.0.0-26, but none of the providers can be installed
- package containerd.io-1.6.9-3.1.el9.x86_64 conflicts with runc provided by runc-4:1.1.3-2.el9_0.x86_64
- package containerd.io-1.6.9-3.1.el9.x86_64 obsoletes runc provided by runc-4:1.1.3-2.el9_0.x86_64
- cannot install the best candidate for the job
Përdorni komandën e mëposhtme nëse merrni gabimin e mësipërm.
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin --allowerasing
Aktivizo dhe ekzekuto demonin Docker.
$ sudo systemctl enable docker --now
Verifiko që po funksionon.
? docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-11-12 00:19:44 UTC; 6s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 99263 (dockerd)
Tasks: 8
Memory: 28.1M
CPU: 210ms
CGroup: /system.slice/docker.service
??99263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Si parazgjedhje, Docker kërkon privilegje rrënjësore. Nëse dëshironi të shmangni përdorimin e sudo
sa herë që ekzekutoni komandën docker
, shtoni emrin tuaj të përdoruesit në docker
grup.
$ sudo usermod -aG docker $(whoami)
Ju do të duhet të dilni nga serveri dhe të hyni përsëri si i njëjti përdorues për të aktivizuar këtë ndryshim ose të përdorni komandën e mëposhtme.
$ su - ${USER}
Konfirmoni që përdoruesi juaj është shtuar në grupin Docker.
$ groups
navjot wheel docker
Hapi 3 - Krijo konfigurimin e Docker Compose
Krijoni drejtorinë për konfigurimin e Jellyfin Docker.
$ mkdir ~/jellyfin
Kaloni në drejtori.
$ cd ~/jellyfin
Krijoni dhe hapni skedarin e kompozimit të Docker për redaktim.
$ nano docker-compose.yml
Vendos kodin e mëposhtëm në të.
version: '3.8'
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: 1000:1000
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media
- ./media2:/media2:ro
restart: 'unless-stopped'
ports:
- 8096:8096
# Optional - alternative address used for autodiscovery
environment:
- JELLYFIN_PublishedServerUrl=http://jellyfin.example.com
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Skedari i mësipërm docker tërheq versionin më të fundit të serverit Jellyfin nga regjistri Docker Hub. ID-ja e përdoruesit dhe e grupit për imazhin janë caktuar në 1000. Ju mund ta ndryshoni atë sipas ID-së së përdoruesit të sistemit tuaj për lejet e sakta. Ne kemi montuar direktori për skedarët e memories, konfigurimin dhe median. Politika e rinisjes së kontejnerëve është caktuar në nëse nuk ndalet
që do të thotë se do të vazhdojë të funksionojë nëse nuk ndalet manualisht. Jellyfin funksionon në portin 8096 si parazgjedhje, që është ajo që ne i kemi ekspozuar hostit që Nginx ta përdorë më vonë. Ne kemi vendosur gjithashtu një variabël mjedisi që specifikon URL-në publike Jellyfins.
Krijoni direktori për cache dhe drejtoritë e konfigurimit. Dhe pastaj montoni ato si vëllime të vazhdueshme në skedarin e kompozimit. Ne gjithashtu kemi montuar dy skedarë media në skedarin tonë. Mund të paraqisni sa më shumë drejtori mediash që dëshironi. Drejtoria media2
është montuar si vetëm për lexim.
Hapi 4 - Filloni Jellyfin
Vërtetoni konfigurimin e kompozimit të Docker duke përdorur komandën e mëposhtme.
$ docker compose config
Do të merrni një dalje të ngjashme që konfirmon vlefshmërinë.
name: jellyfin
services:
jellyfin:
container_name: jellyfin
environment:
JELLYFIN_PublishedServerUrl: http://jellyfin.nspeaks.xyz
image: jellyfin/jellyfin
network_mode: host
restart: unless-stopped
user: 1000:1000
volumes:
- type: bind
source: /home/navjot/jellyfin/config
target: /config
bind:
create_host_path: true
- type: bind
source: /home/navjot/jellyfin/cache
target: /cache
bind:
create_host_path: true
- type: bind
source: /home/navjot/jellyfin/media
target: /media
bind:
create_host_path: true
- type: bind
source: /home/navjot/jellyfin/media2
target: /media2
read_only: true
bind:
create_host_path: true
Nisni enën Jellyfin.
$ docker compose up -d
Hapi 5 - Instaloni Nginx
Rocky Linux dërgohet me një version më të vjetër të Nginx. Duhet të shkarkoni depon zyrtare të Nginx për të instaluar versionin më të fundit.
Krijoni dhe hapni skedarin /etc/yum.repos.d/nginx.repo
për krijimin e depove zyrtare Nginx.
$ sudo nano /etc/yum.repos.d/nginx.repo
Vendos kodin e mëposhtëm në të.
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Instaloni serverin Nginx.
$ sudo dnf install nginx
Verifikoni instalimin.
$ nginx -v
nginx version: nginx/1.22.1
Aktivizo dhe nis serverin Nginx.
$ sudo systemctl enable nginx --now
Kontrolloni statusin e serverit.
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2022-11-13 13:49:55 UTC; 1s ago
Docs: http://nginx.org/en/docs/
Process: 230797 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 230798 (nginx)
Tasks: 3 (limit: 12355)
Memory: 2.8M
CPU: 13ms
CGroup: /system.slice/nginx.service
??230798 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??230799 "nginx: worker process"
??230800 "nginx: worker process"
Hapi 6 - Instaloni SSL
Mjeti Certbot gjeneron certifikata SSL duke përdorur Lets Encrypt API. Kërkon që depoja EPEL të funksionojë.
$ sudo dnf install epel-release
Ne do të përdorim Snapd për të instaluar Certbot. Instaloni Snapd.
$ sudo dnf install snapd
Aktivizo dhe nis shërbimin Snap.
$ sudo systemctl enable snapd --now
Instaloni paketën bazë Snap.
$ sudo snap install core
$ sudo snap refresh core
Krijoni lidhjet e nevojshme që Snapd të funksionojë.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Lëshoni komandën e mëposhtme për të instaluar Certbot.
$ sudo snap install --classic certbot
Aktivizo Certbot duke krijuar simlidhjen me ekzekutuesin e tij.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Gjeneroni certifikatën SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d jellyfin.example.com
Komanda e mësipërme do të shkarkojë një certifikatë në drejtorinë /etc/letsencrypt/live/jellyfin.example.com
në serverin tuaj.
Krijo një certifikatë grupi Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Për të kontrolluar nëse rinovimi SSL po funksionon mirë, bëni një ekzekutim të thatë të procesit.
$ sudo certbot renew --dry-run
Nëse nuk shihni asnjë gabim, jeni gati. Certifikata juaj do të rinovohet automatikisht.
Hapi 7 - Konfiguro Nginx
Hapni skedarin /etc/nginx/nginx.conf
për modifikim.
$ sudo nano /etc/nginx/nginx.conf
Shtoni rreshtin e mëposhtëm përpara rreshtit include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Krijoni dhe hapni skedarin /etc/nginx/conf.d/jellyfin.conf
për modifikim.
$ sudo nano /etc/nginx/conf.d/jellyfin.conf
Vendos kodin e mëposhtëm në të.
## Censor sensitive information in logs
log_format stripsecrets '$remote_addr $host - $remote_user [$time_local] '
'"$secretfilter" $status $body_bytes_sent '
'$request_length $request_time $upstream_response_time '
'"$http_referer" "$http_user_agent"';
map $request $secretfilter {
~*^(?<prefix1>.*[\?&]api_key=)([^&]*)(?<suffix1>.*)$ "${prefix1}***$suffix1";
default $request;
}
# Cache video streams
# Set in-memory cache-metadata size in keys_zone, size of video caching and how many days a cached object should persist
proxy_cache_path /var/cache/nginx/jellyfin-videos levels=1:2 keys_zone=jellyfin-videos:100m inactive=90d max_size=35000m;
map $request_uri $h264Level { ~(h264-level=)(.+?)& $2; }
map $request_uri $h264Profile { ~(h264-profile=)(.+?)& $2; }
# Cache images
proxy_cache_path /var/cache/nginx/jellyfin levels=1:2 keys_zone=jellyfin:100m max_size=15g inactive=30d use_temp_path=off;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
listen 80;
listen [::]:80;
server_name jellyfin.example.com;
location / { return 301 https://$host$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name jellyfin.example.com;
## The default `client_max_body_size` is 1M, this might not be enough for some posters, etc.
client_max_body_size 20M;
# use a variable to store the upstream proxy
# in this example we are using a hostname which is resolved via DNS
# (if you aren't using DNS remove the resolver line and change the variable to point to an IP address e.g `set $jellyfin 127.0.0.1`)
set $jellyfin jellyfin;
resolver 127.0.0.1 valid=30;
access_log /var/log/nginx/jellyfin.access.log stripsecrets;
error_log /var/log/nginx/jellyfin.error.log;
http2_push_preload on; # Enable HTTP/2 Server Push
ssl_certificate /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jellyfin.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/jellyfin.example.com/chain.pem;
ssl_session_timeout 1d;
# Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
ssl_protocols TLSv1.2 TLSv1.3;
# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
keepalive_timeout 70;
sendfile on;
client_max_body_size 80m;
# OCSP Stapling ---
# fetch OCSP records from URL in ssl_certificate and cache them
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# Content Security Policy
# See: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP
# Enforces https content and restricts JS/CSS to origin
# External Javascript (such as cast_sender.js for Chromecast) must be whitelisted.
# NOTE: The default CSP headers may cause issues with the webOS app
add_header Content-Security-Policy "default-src https: data: blob: http://image.tmdb.org; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://www.gstatic.com/cv/js/sender/v1/cast_sender.js https://www.gstatic.com/eureka/clank/95/cast_sender.js https://www.gstatic.com/eureka/clank/96/cast_sender.js https://www.gstatic.com/eureka/clank/97/cast_sender.js https://www.youtube.com blob:; worker-src 'self' blob:; connect-src 'self'; object-src 'none'; frame-ancestors 'self'";
# Security / XSS Mitigation Headers
# NOTE: X-Frame-Options may cause issues with the webOS app
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header X-Early-Data $tls1_3_early_data;
location = / {
return 302 http://$host/web/;
return 302 https://$host/web/;
}
location / {
# Proxy main Jellyfin traffic
proxy_pass http://$jellyfin:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_buffering off;
}
# location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
location = /web/ {
# Proxy main Jellyfin traffic
proxy_pass http://$jellyfin:8096/web/index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location /socket {
# Proxy Jellyfin Websockets traffic
proxy_pass http://$jellyfin:8096;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
# Cache video streams
location ~* ^/Videos/(.*)/(?!live)
{
# Set size of a slice (this amount will be always requested from the backend by nginx)
# Higher value means more latency, lower more overhead
# This size is independent of the size clients/browsers can request
slice 2m;
proxy_cache jellyfin-videos;
proxy_cache_valid 200 206 301 302 30d;
proxy_ignore_headers Expires Cache-Control Set-Cookie X-Accel-Expires;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_connect_timeout 15s;
proxy_http_version 1.1;
proxy_set_header Connection "";
# Transmit slice range to the backend
proxy_set_header Range $slice_range;
# This saves bandwidth between the proxy and jellyfin, as a file is only downloaded one time instead of multiple times when multiple clients want to at the same time
# The first client will trigger the download, the other clients will have to wait until the slice is cached
# Esp. practical during SyncPlay
proxy_cache_lock on;
proxy_cache_lock_age 60s;
proxy_pass http://$jellyfin:8096;
proxy_cache_key "jellyvideo$uri?MediaSourceId=$arg_MediaSourceId&VideoCodec=$arg_VideoCodec&AudioCodec=$arg_AudioCodec&AudioStreamIndex=$arg_AudioStreamIndex&VideoBitrate=$arg_VideoBitrate&AudioBitrate=$arg_AudioBitrate&SubtitleMethod=$arg_SubtitleMethod&TranscodingMaxAudioChannels=$arg_TranscodingMaxAudioChannels&RequireAvc=$arg_RequireAvc&SegmentContainer=$arg_SegmentContainer&MinSegments=$arg_MinSegments&BreakOnNonKeyFrames=$arg_BreakOnNonKeyFrames&h264-profile=$h264Profile&h264-level=$h264Level&slicerange=$slice_range";
# add_header X-Cache-Status $upstream_cache_status; # This is only for debugging cache
}
# Cache images
location ~ /Items/(.*)/Images {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_cache jellyfin;
proxy_cache_revalidate on;
proxy_cache_lock on;
# add_header X-Cache-Status $upstream_cache_status; # This is only to check if cache is working
}
# Downloads limit (inside server block)
location ~ /Items/(.*)/Download$ {
proxy_pass http://127.0.0.1:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
limit_rate 1700k; # Speed limit (here is on kb/s)
limit_conn addr 3; # Number of simultaneous downloads per IP
limit_conn_status 460; # Custom error handling
# proxy_buffering on; # Be sure buffering is on (it is by default on nginx), otherwise limits won't work
}
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
"~." $ssl_early_data;
default "";
}
Pasi të keni përfunduar, ruani skedarin duke shtypur Ctrl + X dhe duke futur Y kur ju kërkohet.
Verifikoni sintaksën e skedarit të konfigurimit Nginx.
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Konfiguro SELinux për të lejuar lidhjet e rrjetit.
$ sudo setsebool -P httpd_can_network_connect 1
Rinisni serverin Nginx.
$ sudo systemctl restart nginx
Nëse merrni gabimin e mëposhtëm, atëherë me shumë mundësi është për shkak të kufizimeve të SELinux.
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
Për të rregulluar gabimin, ekzekutoni komandat e mëposhtme.
$ sudo ausearch -c 'nginx' --raw | audit2allow -M my-nginx
$ sudo semodule -X 300 -i my-nginx.pp
Filloni përsëri shërbimin Nginx.
$ sudo systemctl start nginx
Hapi 8 - Hyni dhe konfiguroni Jellyfin
Vizitoni URL-në https://jellyfin.example.com
dhe do të merrni ekranin e mëposhtëm.
Zgjidhni gjuhën e shfaqjes dhe klikoni butonin Tjetër për të vazhduar.
Futni të dhënat tuaja të përdoruesit dhe kliko butonin Tjetër për të vazhduar. Klikoni Shto bibliotekën e mediave për të shtuar bibliotekat e mediave. Po shtojmë një për filmat.
Plotësoni të gjitha opsionet dhe klikoni shenjën plus kundër opsionit Dosje për të zgjedhur dosjen për bibliotekën tuaj. Lëvizni poshtë dhe plotësoni opsionet e kërkuara. Klikoni butonin Ok për të përfunduar shtimin e bibliotekës. Do të ktheheni në faqen e konfigurimit të bibliotekës.
Klikoni butonin Tjetër për të vazhduar.
Zgjidhni gjuhën dhe shtetin për meta të dhënat tuaja të medias dhe klikoni butonin Tjetër për të vazhduar.
Sigurohuni që të jetë zgjedhur opsioni Lejo lidhjet në distancë. Nëse dëshironi të përdorni hartën e portit, aktivizojeni gjithashtu. Klikoni butonin Tjetër kur të mbaroni.
Konfigurimi ka përfunduar. Klikoni butonin Finish për të vazhduar te faqja e hyrjes në Jellyfin.
Futni të dhënat tuaja të përdoruesit të krijuara më parë dhe kliko butonin Identifikohu për të vazhduar te paneli i kontrollit.
Mund të filloni të përdorni Jellyfin për të luajtur përmbajtjen tuaj.
Hapi 9 - Përmirësoni Jellyfin
Përmirësimi i Jellyfin është i lehtë dhe kërkon disa hapa. Së pari, kaloni në drejtori.
$ cd ~/jellyfin
Ndaloni kontejnerin Jellyfin.
$ docker compose down --remove-orphans
Tërhiq imazhin më të fundit të kontejnerit për Jellyfin.
$ docker compose pull
Bëni çdo ndryshim në docker-compose.yml
nëse dëshironi.
Nisni enën Jellyfin.
$ docker compose up -d
konkluzioni
Kjo përfundon tutorialin tonë për instalimin e serverit Jellyfin Media duke përdorur Docker në një server Rocky Linux 9. Nëse keni ndonjë pyetje, postojini ato në komentet më poshtë.