在 CentOS 上实现 Jellyfin 的远程访问
一 环境准备与基础检查
sudo systemctl start firewalld && sudo systemctl enable firewalld。如需查看状态:firewall-cmd --state。开放端口后需执行 firewall-cmd --reload 使规则生效。以上为后续所有方式(直接端口、Nginx 反代、Docker)共同的前置步骤。二 方式一 直接端口访问(最简)
sudo dnf install -y jellyfin 或 sudo yum install -y jellyfin。启动并设置开机自启:sudo systemctl start jellyfin && sudo systemctl enable jellyfin。sudo firewall-cmd --permanent --add-port=8096/tcp && sudo firewall-cmd --reload。http://服务器公网IP:8096。若访问受限,检查云安全组/本机防火墙/路由器转发是否配置正确。三 方式二 反向代理与 HTTPS(推荐)
sudo dnf install -y nginx;启动并自启:sudo systemctl start nginx && sudo systemctl enable nginx。sudo dnf install -y certbot python3-certbot-nginx;为域名申请并自动配置 Nginx:sudo certbot --nginx -d your.domain。证书会自动续期(默认 90 天检查)。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)访问。四 方式三 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
说明:
--device=/dev/dri 用于 Intel Quick Sync 等硬件转码(宿主机需具备相应驱动与权限)。五 安全与排错要点
sudo setenforce 0 验证是否为 SELinux 限制;确认后应为 Jellyfin 配置合适的 SELinux 策略或保持测试阶段的宽松策略,切勿长期关闭 SELinux。ss -tulpen | grep -E '8096|8920|80|443',firewall-cmd --list-ports,curl -I http://127.0.0.1:8096。sudo systemctl status jellyfin nginx firewalld。sudo journalctl -u jellyfin -f,Web 管理日志位于 /var/log/jellyfin/。