Loading... ### 一键部署脚本 (Host 模式 + 8443端口) 请将以下内容保存为 `deploy_qb.sh`。 ```bash #!/bin/bash # ================= 配置区域 ================= # 目标用户名 (容器将以该用户身份运行) TARGET_USER="bosaidon" # 部署根目录 BASE_DIR="/home/$TARGET_USER/qb_data" # WebUI 端口 WEB_PORT=8443 # 时区 TIMEZONE="Asia/Shanghai" # =========================================== # 1. 检查 Root 权限 if [ "$EUID" -ne 0 ]; then echo "❌ 错误: 请以 root 身份运行此脚本。" exit 1 fi # 2. 检查目标用户是否存在 if ! id "$TARGET_USER" &>/dev/null; then echo "❌ 错误: 用户 $TARGET_USER 不存在!请先创建用户。" exit 1 fi # 获取用户的 UID 和 GID,确保文件权限完美匹配 PUID=$(id -u "$TARGET_USER") PGID=$(id -g "$TARGET_USER") echo "==========================================" echo "准备部署 qBittorrent (Host模式)" echo "用户: $TARGET_USER (UID=$PUID, GID=$PGID)" echo "端口: $WEB_PORT" echo "目录: $BASE_DIR" echo "==========================================" # 3. 创建目录结构 echo "📂 正在创建目录..." mkdir -p "$BASE_DIR/config" mkdir -p "$BASE_DIR/downloads" # 4. 生成 docker-compose.yml # 直接写入最完美的配置,无需后续修改 echo "📝 正在生成 docker-compose.yml..." cat > "$BASE_DIR/docker-compose.yml" <<EOF services: qbittorrent: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent # 核心配置:使用 Host 模式,直接共享宿主机网络栈 network_mode: "host" environment: - PUID=$PUID - PGID=$PGID - TZ=$TIMEZONE # 核心配置:直接指定 WebUI 监听端口 - WEBUI_PORT=$WEB_PORT volumes: - $BASE_DIR/config:/config - $BASE_DIR/downloads:/downloads restart: unless-stopped EOF # 5. 修复权限 # 将整个目录的所有权交给目标用户 echo "cw 正在修正目录权限..." chown -R "$TARGET_USER":"$TARGET_USER" "$BASE_DIR" # 6. 配置防火墙 (UFW) # Host 模式下,Docker 不会自动配置 iptables,必须手动放行 if command -v ufw &> /dev/null; then echo "🛡️ 正在配置防火墙 (UFW)..." ufw allow $WEB_PORT/tcp comment 'qBittorrent WebUI' # 预先放行一个常用的 BT 端口 (建议稍后在软件内固定为这个端口,例如 52000) ufw allow 52000/tcp comment 'qBittorrent TCP' ufw allow 52000/udp comment 'qBittorrent UDP' echo "✅ 防火墙端口已放行: $WEB_PORT, 52000" else echo "⚠️ 未检测到 ufw,请手动确保防火墙放行了端口 $WEB_PORT 和你的 BT 监听端口。" fi # 7. 启动容器 echo "🚀 正在启动容器..." cd "$BASE_DIR" # 兼容 docker-compose 和 docker compose 命令 if command -v docker-compose &> /dev/null; then docker-compose up -d else docker compose up -d fi if [ $? -eq 0 ]; then echo "==========================================" echo "🎉 部署成功!" echo "访问地址: http://你的服务器IP:$WEB_PORT" echo "==========================================" echo "⚠️ 注意:第一次启动时,默认密码可能不是 adminadmin。" echo "请运行以下命令查看临时密码:" echo "docker logs qbittorrent | grep 'password'" else echo "❌ 启动失败,请检查 Docker 是否安装正确。" fi ``` ### 使用方法 1. **创建脚本**: ```bash vim deploy_qb.sh ``` 2. **运行**: ```bash chmod +x deploy_qb.sh ./deploy_qb.sh ``` ### 部署后的关键步骤 由于是全新安装,请按照以下步骤初始化: 1. **获取初始密码**: 现在的 `linuxserver/qbittorrent` 镜像不再默认使用 `adminadmin` 作为密码。脚本运行结束后,请执行: **Bash** ``` docker logs qbittorrent | grep 'password' ``` 你会看到类似 `The temporary password is: XXXXXXX` 的提示。 2. **登录并设置**: 使用上面的临时密码登录 `http://你的IP:8443`。 3. **最后的必做设置**(针对你的多 IP 环境): * 进入 **设置 -> 高级**。 * **网络接口**:选择 `eno1`(或者是你新服务器对应的物理网卡名)。 * **绑定 IP 地址**:选择你购买的那个**新 IP**。 * 进入 **设置 -> 连接**。 * **监听端口**:建议改为 **52000**(因为脚本里我已经帮你把 52000 端口放行了,这样你就不用再折腾防火墙了)。 最后修改:2025 年 12 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏