温馨提示×

如何在Centos上实现Jellyfin的远程访问

小樊
39
2026-01-02 03:45:27
栏目: 智能运维

在 CentOS 上实现 Jellyfin 的远程访问

一 环境准备与基础检查

  • 确认系统版本与防火墙工具:CentOS 7/8/9 默认使用 firewalld。启动并设为开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld。如需查看状态:firewall-cmd --state。开放端口后需执行 firewall-cmd --reload 使规则生效。以上为后续所有方式(直接端口、Nginx 反代、Docker)共同的前置步骤。
  • 云服务器注意:除系统防火墙外,还需在云平台安全组放行对应端口(如 8096/TCP、或 80/443/TCP,以及 Docker 场景下的 8920/TCP、1900/UDP、7359/UDP)。
  • 路由器端口转发(家庭宽带场景):若没有公网 IP 或不便做域名/证书管理,可在路由器将外网端口转发到内网服务器的 8096/TCP(或反代后的 80/443/TCP)。

二 方式一 直接端口访问(最简)

  • 安装 Jellyfin(以 DNF/YUM 为例):sudo dnf install -y jellyfinsudo yum install -y jellyfin。启动并设置开机自启:sudo systemctl start jellyfin && sudo systemctl enable jellyfin
  • 放行访问端口:Jellyfin 默认 Web 端口为 8096/TCP。开放端口:sudo firewall-cmd --permanent --add-port=8096/tcp && sudo firewall-cmd --reload
  • 远程访问:在浏览器输入 http://服务器公网IP:8096。若访问受限,检查云安全组/本机防火墙/路由器转发是否配置正确。

三 方式二 反向代理与 HTTPS(推荐)

  • 安装 Nginx:sudo dnf install -y nginx;启动并自启:sudo systemctl start nginx && sudo systemctl enable nginx
  • 申请免费证书(Let’s Encrypt/Certbot):sudo dnf install -y certbot python3-certbot-nginx;为域名申请并自动配置 Nginx:sudo certbot --nginx -d your.domain。证书会自动续期(默认 90 天检查)。
  • 配置 Nginx 反代到 Jellyfin(HTTP 或已配置 TLS 的 443 均可):
    server {
        listen 80;
        server_name your.domain;
        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;
        }
    }
    
    重载 Nginx:sudo systemctl reload nginx。此后可通过 http://your.domain(HTTP)或 https://your.domain(HTTPS)访问。
  • 防火墙建议:仅放行 80/TCP、443/TCP;如需直接 8096 访问,再额外放行 8096/TCP

四 方式三 Docker 部署与端口规划

  • 准备目录与权限:
    sudo mkdir -p /srv/jellyfin/{config,cache}
    sudo chown -R 1000:100 /srv/jellyfin  # 若宿主机以非 root 运行 Jellyfin,请匹配容器内 UID/GID
    
  • 运行容器(示例映射常用端口与目录,含硬件加速直通示例):
    sudo docker run -d --name=jellyfin \
      -p 8096:8096 -p 8920:8920 \
      -p 7359:7359/udp -p 1900:1900/udp \
      -v /srv/jellyfin/config:/config \
      -v /srv/jellyfin/cache:/cache \
      -v /media:/media \
      -e TZ=Asia/Shanghai \
      --device=/dev/dri:/dev/dri \
      --restart unless-stopped \
      jellyfin/jellyfin:latest
    
    说明:
    • 8096/TCP:HTTP 访问;8920/TCP:HTTPS 访问(需在 Jellyfin 控制台或反代中启用 TLS)。
    • 1900/UDP、7359/UDP:局域网发现/DLNA,按需开放。
    • --device=/dev/dri 用于 Intel Quick Sync 等硬件转码(宿主机需具备相应驱动与权限)。
  • 防火墙:放行 8096/TCP、8920/TCP、1900/UDP、7359/UDP;若使用 Nginx 反代,则优先放行 80/443/TCP 并仅在内网开放 8096/8920。

五 安全与排错要点

  • 安全加固
    • 优先使用 HTTPS(Certbot+Nginx),避免明文传输凭据与媒体数据。
    • 遵循最小权限:仅开放必要端口;云安全组与 firewalld 双重校验。
    • 强密码策略、定期更新 Jellyfin/Nginx/系统组件;禁用不必要的远程管理端口。
  • SELinux 与连通性排查
    • 若访问异常且 SELinux 为 enforcing,可临时 sudo setenforce 0 验证是否为 SELinux 限制;确认后应为 Jellyfin 配置合适的 SELinux 策略或保持测试阶段的宽松策略,切勿长期关闭 SELinux。
    • 常用排错命令:
      • 端口与连通性:ss -tulpen | grep -E '8096|8920|80|443'firewall-cmd --list-portscurl -I http://127.0.0.1:8096
      • 服务状态:sudo systemctl status jellyfin nginx firewalld
      • 日志定位:sudo journalctl -u jellyfin -f,Web 管理日志位于 /var/log/jellyfin/
    • 无公网 IP 或受限网络:可使用 SD-WAN/内网穿透(如“花生壳”)将内网 8096 或反代端口映射到公网域名/地址,实现远程访问。

0