Ubuntu 下 Jellyfin 网络设置实操指南
一 基础网络与防火墙
- 确认网卡名称:运行 ip a,常见名称如 ens33、eth0、enp0s3。
- 开放访问端口:Jellyfin 默认 HTTP 端口为 8096/TCP。使用 UFW 放行并启用:
sudo ufw allow 8096/tcp
sudo ufw enable
如需同时开放 HTTPS(例如配合反向代理使用 443/TCP),可再执行:sudo ufw allow 443/tcp。
- 访问测试:在浏览器打开 http://服务器IP:8096,进入初始化向导创建管理员与媒体库。
二 设置静态 IP(推荐)
- 使用 Netplan(Ubuntu 18.04+ 默认):
- 查看并编辑配置文件(文件名可能不同):sudo nano /etc/netplan/01-netcfg.yaml 或 /etc/netplan/00-installer-config.yaml。
- 示例(按需替换接口名与参数):
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
- 应用配置:sudo netplan apply(如有报错可用 sudo netplan --debug apply 排错)。
- 使用 NetworkManager(nmcli):
- 查看连接名:nmcli con show(如“Wired connection 1”)。
- 配置静态 IPv4:
nmcli con mod “Wired connection 1” ipv4.addresses 192.168.1.110/24
nmcli con mod “Wired connection 1” ipv4.gateway 192.168.1.1
nmcli con mod “Wired connection 1” ipv4.dns “8.8.8.8”
nmcli con mod “Wired connection 1” ipv4.method manual
nmcli con up “Wired connection 1”
- 验证:ip a 查看地址是否生效;ip route | grep default 检查默认网关。
三 远程访问与端口转发
- 路由器端口转发(家庭宽带常见):在路由器管理界面将外部端口(如 8096/TCP)转发到 Jellyfin 服务器的 内网IP:8096。
- 云服务器安全组:在云厂商控制台放行 8096/TCP(以及后续反向代理使用的 443/TCP)。
- 访问方式:外网使用 http://公网IP:8096 访问;若做了端口转发,也可使用 http://域名:8096。
四 反向代理与 HTTPS(Nginx 示例)
- 安装与启用模块:
sudo apt install nginx certbot python3-certbot-nginx -y
sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers(如使用 Apache 则启用相应模块)
- 获取证书(Certbot + Nginx):
sudo certbot --nginx -d your_domain
- 基本反向代理配置(/etc/nginx/sites-available/jellyfin):
server {
listen 80;
server_name your_domain;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name your_domain;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
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-Port $server_port;
}
location /socket {
proxy_pass http://127.0.0.1:8096/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_set_header Host $host;
}
}
- 启用站点并重启:
sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
- 访问:使用 https://your_domain 访问,Jellyfin 后台“网络”中的“公共 HTTPS 端口”可设为 443。
五 常见问题与排查
- 端口未放行:执行 sudo ufw status 确认 8096/TCP(及 443/TCP)已允许;云主机同时检查安全组规则。
- 静态 IP 不生效:核对 /etc/netplan/*.yaml 的缩进(仅用空格)、接口名、网关与 DNS;用 sudo netplan --debug apply 排查。
- 外网访问失败:确认路由器端口转发指向正确的 内网IP:8096,且运营商未封锁该端口;必要时改用 443 与反向代理。
- WebSocket 不可用(客户端卡在转圈):反向代理需显式代理 /socket 路径,并使用 HTTP/1.1 与 Upgrade 头(见上文 Nginx 配置)。
- 域名访问证书错误:确保域名解析到服务器,证书路径与权限正确,Nginx 配置包含 X-Forwarded-Proto 等头部。