Skip to content

公告!

近期接到群友反馈,发现有其它网站复制抄袭本站文案内容,请大家注意甄别,避免上当受骗。

使用 LXC 容器安装 qBittorrent

什么是 LXC?

LXC(Linux Containers)是一种 Linux 端操作系统级的虚拟化技术,可以实现轻量级容器,每个容器看起来像一个独立的操作系统,它们共享同一台物理服务器,但是互相隔离。LXC 容器比传统虚拟机更加轻便、高效,且启动速度快。LXC 中创建的为非特权容器,相较于特权容器,其有更高的安全性,更小的攻击面,同时便于管理和升级。

本篇教程虽然步骤较多,但是没什么坑,原理也简单。

首先介绍我的环境:

  • fnOS:192.168.2.2,共享目录:downloads
  • LXC:192.168.2.4,挂载目录:/mnt/downloads

需要将 fnOS 的 NFS 共享 downloads 目录挂载到 LXC 中的 /mnt/downloads 下面,然后在 1Panel 中通过 docker compose 安装 qBittorrent。

为什么要使用 LXC?

经常使用 qBittorrent 的朋友都知道,如果 qBittorrent 安装在 NAS 中,而 NAS 又通过具有代理功能的主路由上网,很容易导致 qBittorrent 的流量走代理,不仅可能会把代理的流量跑光,而且可能会被 PT 站识别为盒子,严重的还会违反网站规则被封号。

常见的办法是通过 macvlan 给 qBittorrent 设置一个独立的 IP,这样就可以在主路由中通过 IP 来设置规则,避免 qBittorrent 流量走代理。但 macvlan 的网络结构还是略显复杂,误操作容易导致 NAS 系统出问题。而且在 fnOS 中,需要开启 OVS(虚拟交换机)才能创建 macvlan,目前开启 OVS 可能在重启后会导致 fnOS 系统失联

所以如果有 PVE 这个环境,完全可以利用 PVE 的 LXC 来安装 qBittorrent,这样 qBittorrent 也能得到一个单独的 IP,方便在主路由的代理中设置规则,达到和 macvlan 类似的效果。

创建 LXC

在 PVE 的 CT 模板 中下载 debian-12 模板:

在 PVE 的右上角点击 创建 CT 创建 LXC 容器,设置主机名和密码,取消勾选 无特权的容器

磁盘保持默认,CPU 可以选择 2 核,内存(MB)和 Swap 设置为 1024,接下来设置网络,这里给 LXC 设置一个 静态 IP(192.168.2.4),DNS 保持默认:

在创建好的 LXC 容器的 选项 中,打开 LXC 功能,勾选 NFS嵌套

之后 启动 LXC。

更换 Linux 源

首先进入 LXC 的控制台,输入用户名(默认为 root),密码登录。

更新系统,安装 curl

sh
apt update
apt install curl

执行换源脚本:

sh
bash <(curl -sSL https://linuxmirrors.cn/main.sh)

遇到选项提示,推荐使用下面的设置:

  • 软件源选择:中国科学技术大学
  • 软件源是否使用 HTTP 协议:
  • 是否跳过更新软件包:
  • 是否自动清理下载缓存:

安装 Docker

一键安装 docker 引擎:

sh
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

遇到选项提示,推荐使用下面的设置:

  • Docker CE 源选择:中国科学技术大学
  • Docker Registry 源选择:Docker Proxy(推荐)
  • 软件源是否使用 HTTP 协议:
  • 是否安装最新版本的 Docker Engine

安装 1Panel 面板

为了更方便的管理 LXC,你可以安装 1Panel,这是一款开源的服务器管理面板,非常易用,可以通过网页操作管理服务器。

适用于 Debian 系统的一键安装命令如下:

sh
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

安装完成之后,你可以看到一个管理地址以及默认生成的用户名和密码。你可以通过 1Panel 来安装管理 docker 应用。

挂载 NFS

这一步将 fnOS 的 NFS 共享目录(downloads)挂载到 LXC 中,便于 docker 应用直接访问。在飞牛中开启 NFS 服务之后,可以看到 nfs 的访问路径如下:

在 LXC 中安装 NFS 客户端:

sh
apt install nfs-common

创建挂载点:

sh
mkdir -p /mnt/downloads

先临时挂载测试是否 OK:

sh
mount -t nfs4 192.168.2.2:/fs/1000/nfs/downloads /mnt/downloads

如果挂载成功,在 1Panel 的文件管理中可以看到 /mnt/downloads 路径下面有 fnOS 的文件。

设置开机自动挂载

如果上面的临时挂载测试没问题,使用 1Panel 的文件管理器打开 /etc/fstab 文件,加入下面这行:

sh
192.168.2.2:/fs/1000/nfs/downloads /mnt/downloads nfs defaults 0 0

之后点击 确认,可以重启 LXC 确认自动挂载是否生效。

使用 1Panel 通过 compose 安装 qBittorrent

在 1Panel 的 容器 -> 编排 -> 创建编排 中,填写文件夹名称 qbittorrent,compose 使用下面的配置:

yml
name: qbittorrent
services:
  qbittorrent:
    image: linuxserver/qbittorrent:4.6.7
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - WEBUI_PORT=8080
      - TORRENTING_PORT=50000
    volumes:
      - ./config:/config
      - /mnt/downloads:/downloads #optional
    ports:
      - 8080:8080
      - 50000:50000
      - 50000:50000/udp
    restart: always

之后点击 确认,就会自动安装 qBittorrent。安装完成之后,qBittorrent 的默认用户名为 admin,默认密码在容器日志中可以看到。

设置访问控制规则

以 SSRP 为例,可以在 访问控制 中,将 LXC 的 IP:192.168.2.4 添加到 不走代理的局域网 LAN IP 中:

之后 保存并应用,这样就不用担心 BT/PT 流量走代理或者被识别为盒子了。

延迟启动

由于 LXC 启动非常快,而 NAS 系统启动需要一定的时间,所以如果不设置启动顺序,很可能 LXC 已经启动完成了,但是 NAS 系统还没有启动完成,会导致 NAS 中的 NFS 服务没有启动,LXC 开机挂载 NFS 失败。解决办法就是可以在虚拟机和 LXC 的选项中设置启动顺序,并且设置启动延时时间。

需要注意的是,这里说的启动延时指的是该虚拟机启动完成后,启动下一台虚拟机的延迟时间。比如,我想让 LXC 在 fnOS 启动 150s 之后再启动,就在 fnOS 中设置延时 150,并把 fnOS 启动顺序设置为 1,把 LXC 启动顺序设置为 2。