v2rayA Docker 部署手册 — Ubuntu 24 + 1Panel 适配

_

咱在国内服务器上搞开发,拉 Docker 镜像、访问 GitHub、下载依赖,动不动就超时断连,烦不烦?手动配环境变量代理又容易漏,切换也麻烦。

v2rayA 就是来解决这个问题的——它提供了一个 Web GUI 的代理客户端,支持全局透明代理、分流规则,一个面板搞定所有代理需求。Docker 部署,干净利落,不污染宿主机环境。

v2rayA 是什么?

v2rayA 是一个基于 Web GUI 的 V2Ray 客户端,核心特性:

特性

说明

全局透明代理

Linux 上支持 iptables/nftables 透明代理,所有流量自动走代理

Web GUI

浏览器访问 http://IP:2017 即可管理,无需命令行

多协议支持

SS、SSR、Trojan、TUIC、Juicity 等

分流规则

支持自定义路由规则,国内直连、国外代理

Docker 部署

V2Ray/XRay 核心已内置,无需额外安装

同类工具对比

对比项

v2rayA

Clash

V2RayN

Xray-core

部署方式

Docker / 原生

Docker / 原生

Windows 客户端

命令行

Web GUI

✅ 原生

✅ (Yacd/Meta)

透明代理

✅ Linux 全局

✅ TUN 模式

分流规则

✅ 内置

✅ 强大

需手动配置

协议支持

SS/SSR/Trojan/TUIC

SS/VMess/Trojan

VMess/VLESS/Trojan

VLESS/XTLS 等

上手难度

⭐ 简单

⭐⭐ 中等

⭐ 简单

⭐⭐⭐ 较难

适用场景

Linux 服务器/路由器

全平台

Windows 桌面

高级用户/自建

结论:Linux 服务器场景下,v2rayA 上手最简单,Web GUI + 全局透明代理是最大优势。

环境准备

1. 系统要求

项目

要求

系统

Ubuntu 24.04 LTS

Docker

20.10+

内存

≥ 512MB

内核模块

需要加载 tun 模块(透明代理)

2. Ubuntu 24 特殊注意

Ubuntu 24 默认使用 nftables 而非 iptables,这点非常重要!v2rayA 需要正确识别防火墙后端才能正常工作。

# 查看 Ubuntu 24 的防火墙后端
sudo iptables --version
# 如果输出含 nf_tables,说明系统用的是 nft 后端
​
# 确认 nftables 是否可用
sudo nft list ruleset

3. 加载 tun 模块

v2rayA 的透明代理依赖 tun 内核模块:

# 加载 tun 模块
sudo modprobe tun
​
# 设置开机自动加载
echo "tun" | sudo tee /etc/modules-load.d/tun.conf
​
# 验证
lsmod | grep tun

Docker 部署 v2rayA

1. 适配 1Panel 的目录结构

按照 1Panel 的标准目录规范:

/opt/1panel/docker/compose/v2raya/     # Compose 文件
└── docker-compose.yml
/opt/1panel/docker/data/v2raya/        # 持久化数据
└── etc/                               # v2rayA 配置目录
​
# 创建目录
sudo mkdir -p /opt/1panel/docker/compose/v2raya
sudo mkdir -p /opt/1panel/docker/data/v2raya/etc

2. docker-compose.yml(推荐方案)

这是适配 1Panel + Ubuntu 24(nftables)的 Compose 文件:

version: "3.8"

services:
  v2raya:
    image: mzz2017/v2raya:v2.2.7.5
    container_name: v2raya
    restart: always
    privileged: true
    network_mode: host          # 用 host,不需要 ports 和 networks
    environment:
      - V2RAYA_LOG_FILE=/tmp/v2raya.log
      - V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray
      - V2RAYA_NFTABLES_SUPPORT=on
      - IPTABLES_MODE=nftables
    volumes:
      - /lib/modules:/lib/modules:ro
      - /etc/resolv.conf:/etc/resolv.conf
      - /opt/1panel/docker/data/v2raya/etc:/etc/v2raya
      - /dev/net/tun:/dev/net/tun

关键参数说明

  • privileged: true:必须!v2rayA 需要修改 iptables/nftables 规则和操作网络设备

  • network_mode: host:必须!全局透明代理需要与宿主机共享网络命名空间

  • V2RAYA_NFTABLES_SUPPORT=on:Ubuntu 24 必须开启,否则防火墙规则无法生效

  • IPTABLES_MODE=nftables:Ubuntu 24 的 iptables 使用 nft 后端

3. 不需要透明代理的方案

如果你的服务器只需要给 Docker 守护进程或特定应用做代理(不需要全局透明代理),可以用桥接网络模式:

version: "3.8"
​
services:
  v2raya:
    image: mzz2017/v2raya:latest
    container_name: v2raya
    restart: always
    ports:
      - "2017:2017"       # Web 管理面板
      - "20170:20170"     # SOCKS5 代理
      - "20171:20171"     # HTTP 代理
      - "20172:20172"     # 带规则的 HTTP 代理
    environment:
      - V2RAYA_LOG_FILE=/tmp/v2raya.log
      - V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray
    volumes:
      - /opt/1panel/docker/data/v2raya/etc:/etc/v2raya
    networks:
      - 1panel-network
​
networks:
  1panel-network:
    external: true
​

两种方案选择

  • 需要全局透明代理(所有流量自动走代理)→ 用 host 模式

  • 只需要手动指定代理地址给特定应用用 → 用 桥接模式,更安全隔离

4. 启动服务

cd /opt/1panel/docker/compose/v2raya
​
# 启动
docker compose up -d
​
# 查看日志
docker compose logs -f v2raya
​
# 查看状态
docker compose ps
​

初始化配置

1. 访问 Web 面板

浏览器打开:http://你的服务器IP:2017

首次访问需要创建管理员账号和密码。

2. 添加节点

v2rayA 支持多种方式添加节点:

  1. 导入链接:直接粘贴 vmess://vless://ss://trojan:// 等链接

  2. 导入订阅:填写订阅地址,自动拉取节点列表

  3. 手动添加:填写服务器地址、端口、协议等参数

3. 启动代理

  1. 选择一个节点

  2. 点击左上角 "启动" 按钮

  3. 选择代理模式:

模式

说明

推荐场景

透明代理

所有流量自动走代理(需 host 模式)

服务器全局代理

系统代理

设置系统代理环境变量

桌面环境

仅代理

只在本机监听 SOCKS5/HTTP 端口

给特定应用手动指定

推荐服务器场景:选择 透明代理 + 分流规则(大陆白名单模式) ,国内直连、国外走代理。

4. 代理端口说明

端口

协议

说明

2017

HTTP

Web 管理面板

20170

SOCKS5

SOCKS5 代理端口

20171

HTTP

HTTP 代理端口

20172

HTTP

带分流规则的 HTTP 代理

5. 连通性测试

1. 先确认 v2rayA 透明代理是否真的在运行

在 v2rayA Web 面板(http://IP:2017)里确认:

  • 节点是否已选中?

  • 是否点了 "启动"

  • 代理模式是否选了 "透明代理"(不是系统代理/仅代理)?

2. 用 curl 测试 TCP 连通性

# 不走代理直接测试(大概率超时)
curl -I --connect-timeout 5 https://registry-1.docker.io/v2/
​
# 通过 HTTP 代理端口测试
curl -I --connect-timeout 10 -x http://127.0.0.1:20171 https://registry-1.docker.io/v2/

如果第二条返回 HTTP/1.1 200401,说明代理是通的!

3. 测试 Docker 拉镜像

# 先来个小镜像测试
docker pull hello-world

Docker 守护进程代理配置

v2rayA 启动后,如果想给 Docker 拉镜像走代理,还需要单独配置 Docker daemon:

1. 创建 Docker 代理配置

sudo mkdir -p /etc/systemd/system/docker.service.d
​
sudo tee /etc/systemd/system/docker.service.d/proxy.conf << 'EOF'
[Service]
Environment="HTTP_PROXY=http://127.0.0.1:20171"
Environment="HTTPS_PROXY=http://127.0.0.1:20171"
Environment="NO_PROXY=localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,*.aliyuncs.com,*.cn"
EOF

NO_PROXY 说明:内网地址和国内域名不走代理,避免拉国内镜像也绕一圈。

2. 重载配置

sudo systemctl daemon-reload
sudo systemctl restart docker

3. 验证代理生效

# 查看 Docker 代理配置
sudo docker info | grep -i proxy
​
# 测试拉取镜像
docker pull hello-world

注意:Docker 重启后 v2rayA 容器也会被重启(因为 restart: always),代理服务会自动恢复。


其他应用代理配置

Shell 环境变量代理

# 写入 ~/.bashrc(当前用户)
cat >> ~/.bashrc << 'EOF'
​
# v2rayA 代理
export http_proxy="http://127.0.0.1:20171"
export https_proxy="http://127.0.0.1:20171"
export no_proxy="localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
EOF
​
source ~/.bashrc

Git 代理

# 设置 Git 代理
git config --global http.proxy http://127.0.0.1:20171
git config --global https.proxy http://127.0.0.1:20171
​
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

apt 代理

sudo tee /etc/apt/apt.conf.d/proxy.conf << 'EOF'
Acquire::http::Proxy "http://127.0.0.1:20171";
Acquire::https::Proxy "http://127.0.0.1:20171";
EOF
​
# 取消代理
# sudo rm /etc/apt/apt.conf.d/proxy.conf

容器内部代理

如果需要让其他 Docker 容器也走 v2rayA 代理,在 docker-compose.yml 中添加环境变量:

services:
  your-app:
    image: your-image
    environment:
      - http_proxy=http://宿主机IP:20171
      - https_proxy=http://宿主机IP:20171
      - no_proxy=localhost,127.0.0.1
    # 或者使用 1panel-network 网络时,用容器名访问
    # - http_proxy=http://v2raya:20171  # 仅在桥接模式下有效

host 模式下:容器与宿主机共享网络,直接用 127.0.0.1:20171 即可。 桥接模式下:需要用宿主机 IP 或通过 1panel-network 网络用容器名访问。


1Panel 防火墙放行

如果服务器装了 1Panel,需要放行以下端口:

# 通过 1Panel 面板:安全 → 防火墙 → 添加规则
# 或命令行操作:
sudo ufw allow 2017/tcp   # Web 面板
sudo ufw allow 20170/tcp  # SOCKS5
sudo ufw allow 20171/tcp  # HTTP 代理
sudo ufw allow 20172/tcp  # 规则代理

安全提示

  • 2017 端口(Web 面板)不要直接暴露公网,建议通过 1Panel Nginx 反代 + HTTPS + IP 白名单

  • 代理端口仅限内网使用,不要对外暴露


Nginx 反代 Web 面板(可选)

通过 1Panel Nginx 给 v2rayA Web 面板加 HTTPS 和访问控制:

1. 1Panel 创建网站

  1. 1Panel → 网站 → 创建网站 → 反向代理

  2. 域名:v2raya.yourdomain.com

  3. 代理地址:http://127.0.0.1:2017

  4. 开启 HTTPS,申请 SSL 证书

2. Nginx 配置补充

在 1Panel 的网站配置中,添加 WebSocket 支持(v2rayA 部分功能需要):

location / {
    proxy_pass http://127.0.0.1:2017;
    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;
    
    # WebSocket 支持
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    
    # 超时设置
    proxy_read_timeout 86400;
    proxy_send_timeout 86400;
}

常见问题

Q1:启动报错 Failed to load module nf_tables

原因:Ubuntu 24 未加载 nftables 模块。

# 加载模块
sudo modprobe nf_tables
sudo modprobe nf_nat
sudo modprobe nf_conntrack
​
# 设置开机自动加载
cat << 'EOF' | sudo tee /etc/modules-load.d/nftables.conf
nf_tables
nf_nat
nf_conntrack
EOF

Q2:透明代理启动失败,报 tun 相关错误

原因:未加载 tun 内核模块。

sudo modprobe tun
echo "tun" | sudo tee /etc/modules-load.d/tun.conf

Q3:Docker 拉镜像还是超时

排查步骤

# 1. 确认 v2rayA 代理是否正常
curl -I -x http://127.0.0.1:20171 https://www.google.com
​
# 2. 确认 Docker 代理配置是否生效
sudo docker info | grep -i proxy
​
# 3. 如果代理配置显示但拉取仍失败,检查 v2rayA 是否选择了节点并启动

Q4:代理影响了国内服务访问

解决方案:在 v2rayA 中设置分流规则,选择 "大陆白名单模式",国内流量直连、国外走代理。

Q5:重启服务器后代理失效

排查

# 检查 v2rayA 容器状态
docker ps | grep v2raya
​
# 如果容器未运行,手动启动
cd /opt/1panel/docker/compose/v2raya
docker compose up -d
​
# 检查 v2rayA 内部代理是否启动(Web 面板中确认)

Q6:桥接模式下其他容器无法连接 v2rayA

解决方案

# 确认 v2raya 容器已加入 1panel-network
docker network inspect 1panel-network | grep v2raya
​
# 如果没有,手动加入
docker network connect 1panel-network v2raya

Q7:v2ray 核心选 v2ray 还是 xray?

内核

优势

推荐场景

v2ray

更成熟稳定,社区资源多

通用场景

xray

性能更好,支持 VLESS/XTLS

需要新协议特性

默认是 xray,如需切换设置环境变量 V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray 即可。


运维操作

1. 查看日志

# 容器日志
docker compose -f /opt/1panel/docker/compose/v2raya/docker-compose.yml logs -f --tail 100
​
# v2rayA 内部日志
docker exec v2raya cat /tmp/v2raya.log

2. 升级版本

cd /opt/1panel/docker/compose/v2raya
​
# 拉取最新镜像
docker compose pull
​
# 重建容器
docker compose up -d

3. 备份配置

# v2rayA 配置备份
sudo tar czf v2raya-config-backup-$(date +%Y%m%d).tar.gz \
  -C /opt/1panel/docker/data/v2raya/etc .

4. 完全卸载

cd /opt/1panel/docker/compose/v2raya
​
# 停止并删除容器
docker compose down
​
# 删除数据(谨慎!)
sudo rm -rf /opt/1panel/docker/data/v2raya
sudo rm -rf /opt/1panel/docker/compose/v2raya
​
# 清除 Docker 代理配置
sudo rm /etc/systemd/system/docker.service.d/proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker

安全加固

措施

操作

重要程度

Web 面板不暴露公网

使用 Nginx 反代 + IP 白名单

⭐⭐⭐

代理端口不对外开放

防火墙只允许内网访问

⭐⭐⭐

强密码

管理员密码用强密码

⭐⭐⭐

定期升级

及时更新 v2rayA 版本

⭐⭐

审计日志

定期查看 v2rayA 日志

⭐⭐


总结

咱在 Ubuntu 24 上用 Docker 部署 v2rayA,核心要点就三个:

  1. Ubuntu 24 必须开启 nftables 支持V2RAYA_NFTABLES_SUPPORT=on + IPTABLES_MODE=nftables

  2. 全局透明代理用 host 网络模式network_mode: host + privileged: true

  3. Docker 代理需单独配置:Docker daemon 不吃环境变量,要走 systemd drop-in 文件

适配 1Panel 的目录规范,Compose 文件放 /opt/1panel/docker/compose/v2raya/,数据放 /opt/1panel/docker/data/v2raya/,和其他服务统一管理,清清爽爽。

3. 创建第一个 Freestyle 项目 2026-05-27
Harbor 私有镜像仓库部署手册 2026-05-31

评论区