PVE 虚拟机安装 1Panel 后,Jellyfin / qBittorrent 映射与挂载


当前环境

PVE 里的 Ubuntu VM 安装了 1Panel

1、分别部署了:

  • Jellyfin
  • qBittorrent

2、当前端口映射规则:

  • 57001 -> 192.168.100.186:8096 # Jellyfin
  • 57002 -> 192.168.100.186:8181 # qBittorrent

一、映射后打不开的排查方法

1、先确认应用在 VM 内是否真的监听

在 Ubuntu VM 里执行:

ss -lntp | grep 8096
ss -lntp | grep 8181
  • 正常应该看到类似:
LISTEN 0 4096 0.0.0.0:8096 ...
LISTEN 0 4096 0.0.0.0:8181 ...
  • 如果看到的是:
127.0.0.1:8096
127.0.0.1:8181

那就说明应用只监听本机回环地址,外部自然打不开。

2、1Panel 里修正监听地址

进入 1Panel 后台:

  • 找到目标应用 - 点击编辑 - 把监听地址从
127.0.0.1
  • 改成:
0.0.0.0

保存

3、qBittorrent 当前状态说明

如果你访问 57002 时,浏览器已经返回页面,但提示:

Unauthorized

这说明的是 qBittorrent WebUI 配置问题

二、修复 qBittorrent WebUI 无法正常访问

1、写入 qBittorrent 配置文件

  • 在 Ubuntu VM 里执行:
mkdir -p /pve/1panel/apps/qbittorrent/qbittorrent/config
cat > /pve/1panel/apps/qbittorrent/qbittorrent/config/qBittorrent.conf <<'EOF'
[Preferences]
WebUI\Address=*
WebUI\CSRFProtection=false
WebUI\HostHeaderValidation=false
WebUI\ServerDomains=*
EOF

2、直接重建 qBittorrent容器

cd /pve/1panel/apps/qbittorrent/qbittorrent
docker compose down
docker compose up -d

3、确认 qBittorrent 容器状态

docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -i qb

三、让 qBittorrent 下载到挂载的硬盘 /yesok

1、编辑 qBittorrent 的 compose 文件

nano /pve/1panel/apps/qbittorrent/qbittorrent/docker-compose.yml
  • 找到 volumes:,改成类似下面这样:
volumes:
  - /pve/1panel/apps/qbittorrent/qbittorrent/config:/config
  - /pve/1panel/apps/qbittorrent/qbittorrent/data:/downloads
  - /yesok:/yesok
  • 这里的意思是:VM 的 /yesok挂到容器里的 /yesok

2、保存并重建容器

cd /pve/1panel/apps/qbittorrent/qbittorrent
docker compose down
docker compose up -d

3、查出真实容器名

  • 不要写死容器名,先查:
docker ps --format "table {{.Names}}\t{{.Image}}" | grep -i qb
  • 假设查到容器名是:
1Panel-qbittorrent-zg7r
  • 再执行:
docker exec -it 1Panel-qbittorrent-zg7r ls /yesok

如果能看到文件,说明挂载成功。

4、权限修正

chown -R 1000:1000 /yesok
chmod -R 775 /yesok

5、qBittorrent 里下载目录怎么填

进 qBittorrent WebUI 后,把下载路径设置为:/yesok/yesok/Downloads


Jellyfin 读取 /yesok 里的媒体文件

目标:VM 宿主目录:/yesok映射到 Jellyfin 容器里的 /media

1、编辑 Jellyfin 的 compose 文件

nano /pve/1panel/apps/jellyfin/jellyfin/docker-compose.yml
  • 找到 volumes:,改成类似:
volumes:
  - /pve/1panel/apps/jellyfin/jellyfin/config:/config
  - /pve/1panel/apps/jellyfin/jellyfin/cache:/cache
  - /yesok:/media
  • 意思是:VM 的 /yesok 映射到容器里的 /media

2、重建 Jellyfin 容器

cd /pve/1panel/apps/jellyfin/jellyfin
docker compose down
docker compose up -d

3、查 Jellyfin 容器真实名称

docker ps --format "table {{.Names}}\t{{.Image}}" | grep -i jellyfin
  • 假设查到容器名是:
1Panel-jellyfin-abcd
  • 再执行:
docker exec -it 1Panel-jellyfin-abcd ls /media

如果能看到 /yesok 里的内容,说明挂载成功。

Jellyfin 后台添加媒体库路径

进入 Jellyfin 后台,添加媒体库时,路径填:/media