[爬坑指南] 虚拟机和docker实现下载服务器

现在需要挂梯子下载一批资源,然而我的梯子装在路由器中,openclash只能配置指定的某个设备不走梯子。所以索性就装个虚拟机专门用来下载东西,挂bt。如果需要走梯子,就单独在这个下载机中配置一个廉价梯子即可。

基本思路是虚拟机中跑docker应用,宿主机是RockyLinux9,虚拟机是ubuntu24.04.2

配置虚拟机

下载链接:Ubuntu 24.04.2 (Noble Numbat)

因为用不到桌面,所以使用server版本,安装过程参考:Ubuntu24.04-server的安装与初始化_ubuntu server-CSDN博客

跟着上面的博客安装,过程中最好换一个国内的源

虚拟机硬盘只要20g就够了,cpu我分配了4核,内存4g

非常需要注意的一点是:它预装的那些软件一个不要,docker也是。因为是通过snap装的,使用可能会有问题,我要用最脏的话骂snap

虚拟机挂载共享目录#

我是通过cockpit事先准备好共享目录export,然后虚拟机中创建目录,按照下面的命令挂载即可

mount -t virtiofs export /export

如果要自动挂载,需要修改/etc/fstab文件

追加内容:

export  /export virtiofs   defaults  0   0

之后执行命令mount -a,验证fstab文件是否合法,如果有问题它会报错。如果这个文件不正确,会导致重启没办法开机。

参考:安装和设置 QEMU/KVM 以在 Ubuntu 24.04 中运行虚拟机

网络访问问题#

因为是下载机,虚拟机的网络应该设置成直连模式,这样虚拟机和宿主机在同一个网段,同网络的其他设备访问起来比较方便。

但是我们会发现,宿主机没办法通过获取到的局域网ip访问到虚拟机。关于这个问题似乎是一个比较复杂的问题,我的建议是给虚拟机再增加一个NAT模式的网卡,宿主机通过这个网卡获取的ip访问虚拟机即可。

但是如果你是想通过虚拟机的方式跳过路由器的梯子,需要注意的是有些流量会走NAT的这个网卡,导致虚拟机依旧走路由器中的梯子流量。所以另一个方法就是在路由器或其他设备上配置端口转发,解决宿主机ssh访问虚拟机的问题。

配置docker

安装#

换源完毕之后安装docker,通过命令sudo apt install docker.io安装即可

普通用户运行#

配置docker允许普通用户运行

  • sudo usermod -aG docker $USER 将当前普通用户加入docker用户组
  • newgrp docker 刷新权限

此时如果可以用普通账户执行docker images那就正常了

需要注意的是,如果容器允许设置uid和gid,那么建议设置为1000,这样保证容器创建的文件普通用户可以访问。因为普通用户就是这个id

换源#

通过下面的命令直接换即可 (参考:教程 | 2025国内可用Docker镜像源配置指南(文末命令一键执行)_docker镜像库国内源 2025-CSDN博客

sudo mkdir -p /etc/docker && sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.imgdb.de",
        "https://docker-0.unsee.tech",
        "https://docker.hlmirror.com"
    ]
}
EOF 

sudo systemctl daemon-reload && sudo systemctl restart docker 

如果有什么故障,重启虚拟机再看看是否正常

执行sudo docker pull hello-world 如果没问题就换源成功了

docker-compose#

每次配置好容器之后,最好使用docker-compose管理,这样如果需要重启会很方面,而且docker-compose.yml中也记录了各种参数,只要调试通过一次之后就不会有什么问题了

下载链接:Releases · docker/compose

找到适用于自己机器的文件,保存到/usr/local/bin/docker-compose,然后chmod +x给予执行权限就行

部署Aria2

这个主要用来对接RPC下载

docker-compose.yml内容:Aria2-Pro-Docker/docker-compose.yml at master · P3TERX/Aria2-Pro-Docker

version: "3.8"

services:

  Aria2-Pro:
    container_name: aria2-pro
    image: p3terx/aria2-pro
    environment:
      - PUID=65534
      - PGID=65534
      - UMASK_SET=022
      - RPC_SECRET=P3TERX
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - DISK_CACHE=64M
      - IPV6_MODE=false
      - UPDATE_TRACKERS=true
      - CUSTOM_TRACKER_URL=
      - TZ=Asia/Shanghai
    volumes:
      - ${PWD}/aria2-config:/config
      - ${PWD}/aria2-downloads:/downloads
# If you use host network mode, then no port mapping is required.
# This is the easiest way to use IPv6 networks.
    network_mode: host
#    network_mode: bridge
#    ports:
#      - 6800:6800
#      - 6888:6888
#      - 6888:6888/udp
    restart: unless-stopped
# Since Aria2 will continue to generate logs, limit the log size to 1M to prevent your hard disk from running out of space.
    logging:
      driver: json-file
      options:
        max-size: 1m

# AriaNg is just a static web page, usually you only need to deploy on a single host.
  AriaNg:
    container_name: ariang
    image: p3terx/ariang
    command: --port 6880 --ipv6
    network_mode: host
#    network_mode: bridge
#    ports:
#      - 6880:6880
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: 1m

关于这个镜像的说明,可以看:Aria2 Pro - 更好用的 Aria2 Docker 容器镜像 - P3TERX ZONE

这个docker-compose.yml包含两个容器,一个是Aria2 Pro另一个是Ariang,成功运行之后,应该可以通过6880端口访问到Ariang界面,然后在设置中配置rpc密钥为RPC_SECRET对应的字段即可

此外,6800是rpc端口,密码看RPC_SECRET环境变量

这个下载种子没速度,不知道是为什么。。。

v2raya

# docker-compose.yaml
services:
  v2raya:
    image: mzz2017/v2raya
    restart: always
    container_name: v2raya
    ports:
      - "2017:2017"
      - "7890:7890"
    volumes:
      - "./v2raya:/etc/v2raya"

V2RayA-使用docker快速搭建一个自动订阅代理与可视化面板,全面替代clash | Laoyutang

用来运行廉价梯子,完事儿之后需要进设置修改监听端口,并且开启端口分享

image

你可以通过 curl -x http://127.0.0.1:7890 https://www.google.com来验证梯子是否可用

qbittorrent

Aria2下载种子不是很顺利,最终决定还是使用qbittorrent来下载种子,推荐的容器是: johngong/qbittorrent - Docker Image

version: "3"
services:
  qbittorrent:
    image: johngong/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=65534
      - PGID=65534
      - TZ=Etc/UTC
      - QB_WEBUI_PORT=8989
      - QB_EE_BIN=false
      - TORRENTING_PORT=6881
      - UMASK=022
    userns_mode: keep-id
    volumes:
      - ./config:/config
      - ./downloads:/Downloads
    ports:
      - 8989:8989
      - 6881:6881
      - 6881:6881/udp
    restart: unless-stopped

端口是8989,账号是admin,初始密码是在容器的输出中的一个随机密码

容器开机自启

最后配置容器开机自启,就基本上稳妥了,下面以qbittorrent为例子

创建:/etc/systemd/system/docker-compose-qbit.service

[Unit]
Description=qbit
Requires=docker.service
After=docker.service

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/export/down_docker/qbit
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target
  • sudo systemctl start docker-compose-qbit启动即可(需要先手动执行docker-compose down关闭容器,然后再用这个控制)

  • sudo systemctl stop docker-compose-qbit 关闭容器

  • sudo systemctl enable docker-compose-qbit启动开机自启

如果需要其他容器自启,替换文件名以及DescriptionWorkingDirectory配置的值即可

最终的最终,重启一下虚拟机,看看以上所有东西都正常跑起来了,就没问题了

作者:cjdty

出处:https://www.cnblogs.com/cjdty/p/18739245

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Startu  阅读(277)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示