Cách cài đặt Jellyfin Media Server với Nginx trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Jellyfin là giải pháp phát trực tuyến phương tiện miễn phí và mã nguồn mở cho phép bạn lưu trữ máy chủ phương tiện của riêng mình. Nó có thể được cài đặt trên Linux, Windows và macOS. Bạn có thể quản lý phương tiện của mình như phim, chương trình truyền hình, nhạc và ảnh, và chia sẻ chúng trên nhiều thiết bị bằng Jellyfin. Nó cũng cung cấp các ứng dụng cho Android, Android TV và Amazon Fire TV. Nó cung cấp một số tính năng bao gồm, Hỗ trợ DLNA, Không giới hạn phát lại, Tự động lấy siêu dữ liệu từ TheTVDB, TheMovieDB và Rotten Tomatoes, Ghi tự động, Hỗ trợ tăng tốc phần cứng và nhiều tính năng khác.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách cài đặt và thiết lập máy chủ phương tiện với Jellyfin trên Ubuntu 20.04.

Điều kiện tiên quyết​

  • Một máy chủ chạy Ubuntu 20.04.
  • Một tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Một mật khẩu gốc được cấu hình cho máy chủ.

Bắt đầu​

Trước khi bắt đầu, hãy cập nhật các gói hệ thống của bạn bằng lệnh sau:
Mã:
apt-get update -y
Sau khi tất cả các gói được cập nhật, hãy cài đặt các phụ thuộc bắt buộc khác bằng lệnh sau:
Mã:
apt-get install apt-transport-https ca-certificates gnupg2 -y
Sau khi cài đặt tất cả các phần phụ thuộc, bạn có thể tiến hành bước tiếp theo.

Cài đặt Jellyfin​

Theo mặc định, gói Jellyfin không có trong kho lưu trữ mặc định của Ubuntu 20.04. Vì vậy, bạn sẽ cần thêm kho lưu trữ Jellyfin vào hệ thống của mình. Trước tiên, hãy tải xuống và thêm khóa GPG bằng lệnh sau:
Mã:
wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -
Sau khi khóa GPG được thêm vào, hãy thêm kho lưu trữ Jellyfin vào APT bằng lệnh sau:
Mã:
echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/ubuntu focal main" | tee /etc/apt/sources.list.d/jellyfin.list
Tiếp theo, hãy cập nhật bộ đệm kho lưu trữ và cài đặt Jellyfin bằng lệnh sau:
Mã:
apt-get update -y
apt-get install jellyfin -y
Sau khi cài đặt Jellyfin, bạn có thể xác minh trạng thái của dịch vụ Jellyfin bằng lệnh sau:
Mã:
systemctl status jellyfin
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? jellyfin.service - Jellyfin Media Server Đã tải: đã tải (/lib/systemd/system/jellyfin.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Drop-In: /etc/systemd/system/jellyfin.service.d ??jellyfin.service.conf Đang hoạt động: đang hoạt động (đang chạy) kể từ CN 2020-12-27 06:15:40 UTC; 58 giây trước PID chính: 8454 (jellyfin) Nhiệm vụ: 16 (giới hạn: 4691) Bộ nhớ: 92,3M CGroup: /system.slice/jellyfin.service ??8454 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-f>27 tháng 12 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Đang đăng ký nhà xuất bản cho urn:schemas-upnp-org:device:MediaServer:1 trên 104.245.33.>27/12 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Đã thực hiện tất cả các điểm nhập trước khi khởi động trong 0:00:00.671562127/12 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Khởi động lõi hoàn tất27/12 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Đã thực hiện tất cả các điểm nhập sau khi khởi động trong 0:00:00.388569827/12 06:15:48 ubuntu2004 jellyfin[8454]: [06:15:48] [INF] Khởi động hoàn tất 0:00:08.010986327/12 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] StartupTrigger đã kích hoạt cho tác vụ: Cập nhật Plugin27/12 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] Nhiệm vụ xếp hàng PluginUpdateTask27/12 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] Đang thực hiện Cập nhật Plugin27/12 06:15:50 ubuntu2004 jellyfin[8454]: [06:15:50] [INF] Cập nhật Plugin đã hoàn tất sau 0 phút và 0 giây27/12 06:15:51 ubuntu2004 jellyfin[8454]: [06:15:51] [INF] ExecuteQueuedTasks
Theo mặc định, Jellyfin lắng nghe trên cổng 8096. Bạn có thể xác minh bằng lệnh sau:
Mã:
ss -antpl | grep 8096
Bạn sẽ nhận được kết quả sau:
Mã:
LISTEN 0 512 *:8096 *:* users:(("jellyfin",pid=8454,fd=285))
Lúc này, Jellyfin đã được cài đặt và đang chạy. Bây giờ bạn có thể tiến hành bước tiếp theo.

Cấu hình Nginx làm Proxy ngược​

Tiếp theo, bạn nên cấu hình Nginx làm proxy ngược cho Jellyfin. Để thực hiện, trước tiên, hãy cài đặt máy chủ web Nginx bằng lệnh sau:
Mã:
apt-get install nginx -y
Sau khi Nginx được cài đặt, hãy tạo tệp cấu hình máy chủ ảo Nginx mới:
Mã:
nano /etc/nginx/conf.d/jellyfin.conf
Thêm các dòng sau:
Mã:
server { listen 80; server_name jellyfin.yourdomain.com; access_log /var/log/nginx/jellyfin.access; error_log /var/log/nginx/jellyfin.error; set $jellyfin 127.0.0.1; location / { 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; # Vô hiệu hóa bộ đệm khi proxy nginx chiếm quá nhiều tài nguyên khi phát trực tuyến proxy_buffering tắt; } # khối vị trí cho /web - Điều này hoàn toàn vì mục đích thẩm mỹ nên /web/#!/ hoạt động thay vì phải đi tới /web/index.html/#!/ location ~ ^/web/$ { # Proxy chính 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://$127.0.0.1:8096; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Kết nối "nâng cấp"; proxy_set_header Máy chủ $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; } # Tiêu đề giảm thiểu bảo mật / XSS add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff";}
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, hãy xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Nếu mọi thứ đều ổn, bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: thử nghiệm tệp cấu hình /etc/nginx/nginx.conf thành công
Tiếp theo, hãy khởi động lại dịch vụ Nginx để áp dụng các thay đổi cấu hình:
Mã:
systemctl restart nginx
Bạn cũng có thể xác minh trạng thái của Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ thấy kết quả sau:
Mã:
? nginx.service - Máy chủ web hiệu suất cao và máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) từ CN 2020-12-27 06:18:13 UTC; 6 giây trước Tài liệu: man:nginx(8) Tiến trình: 9865 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Tiến trình: 9879 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 9883 (nginx) Nhiệm vụ: 3 (giới hạn: 4691) Bộ nhớ: 3,6M CGroup: /system.slice/nginx.service ??9883 nginx: tiến trình chính /usr/sbin/nginx -g daemon bật; master_process bật; ??9884 nginx: tiến trình công nhân ??9885 nginx: tiến trình công nhân27 tháng 12 06:18:13 ubuntu2004 systemd[1]: Đang khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...27 tháng 12 06:18:13 ubuntu2004 systemd[1]: Đã khởi động Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Tại thời điểm này, Nginx đã được cài đặt và cấu hình để phục vụ Jellyfin. Bây giờ bạn có thể tiến hành bước tiếp theo.

Truy cập Jellyfin Web UI​

Bây giờ, hãy mở trình duyệt web của bạn và truy cập Jellyfin web UI bằng URL . Bạn sẽ được chuyển hướng đến màn hình sau:





Chọn ngôn ngữ của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy màn hình sau:



Cung cấp tên người dùng, mật khẩu quản trị viên của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy màn hình sau:



Nhấp vào nút Tiếp theo. Bạn sẽ thấy màn hình sau:



Chọn ngôn ngữ siêu dữ liệu và quốc gia của bạn, sau đó nhấp vào nút Tiếp theo. Bạn sẽ thấy màn hình sau:



Chọn tùy chọn mong muốn của bạn và nhấp vào nút Tiếp theo. Bạn sẽ thấy màn hình sau:



Nhấp vào nút Hoàn tất. Bạn sẽ thấy trang đăng nhập Jellyfin:



Cung cấp tên người dùng, mật khẩu và nhấp vào nút Đăng nhập. Bạn sẽ thấy bảng điều khiển Jellyfin trong màn hình sau:



Bây giờ bạn có thể thêm phương tiện của mình vào thư viện và truy cập qua internet.

Bảo mật Jellyfin bằng Let's Encrypt​

Tiếp theo, bạn sẽ cần cài đặt gói máy khách Certbot để cài đặt và quản lý Let's Encrypt SSL. Trước tiên, hãy cài đặt Certbot bằng lệnh sau:
Mã:
apt-get install python3-certbot-nginx -y
Sau khi cài đặt hoàn tất, hãy chạy lệnh sau để cài đặt Let's Encrypt SSL trên trang web của bạn:
Mã:
certbot --nginx -d jellyfin.yourdomain.com
Bạn sẽ được yêu cầu cung cấp địa chỉ email hợp lệ và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho jellyfin.yourdomain.comĐang chờ xác minh...Dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/sites-enabled/jellyfin.conf
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Mã:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin chắc rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tác thay đổi nàybằng cách chỉnh sửa cấu hình máy chủ web của bạn.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] sau đó [enter] (nhấn 'c' để hủy): 2
Nhập 2 và nhấn Enter để hoàn tất cài đặt. Bạn sẽ thấy đầu ra sau:
Mã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/sites-enabled/jellyfin.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://jellyfin.yourdomain.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=jellyfin.yourdomain.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/jellyfin.yourdomain.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/jellyfin.yourdomain.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 30-10-2020. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Thông tin đăng nhập tài khoản của bạn đã được lưu trong thư mục cấu hình Certbot tại /etc/letsencrypt. Bây giờ bạn nên sao lưu an toàn thư mục này. Thư mục cấu hình này cũng sẽ chứa các chứng chỉ và khóa riêng do Certbot thu thập, do đó, việc sao lưu thường xuyên thư mục này là lý tưởng. - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le - Chúng tôi không thể đăng ký cho bạn vào danh sách gửi thư EFF vì địa chỉ email của bạn có vẻ không hợp lệ. Bạn có thể thử lại sau bằng cách truy cập https://act.eff.org.
Bây giờ, trang web của bạn đã được bảo mật bằng Let's Encrypt SSL. Bạn có thể truy cập trang web một cách an toàn bằng URL

Kết luận​

Xin chúc mừng! bạn đã cài đặt và cấu hình thành công Jellyfin với Nginx và Let's Encrypt SSL trên máy chủ Ubuntu 20.04. Bây giờ bạn có thể phát trực tuyến phương tiện của mình và truy cập từ trình duyệt web hoặc sử dụng ứng dụng Jellyfin. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên