Skip to content

Latest commit

 

History

History
404 lines (287 loc) · 22.8 KB

File metadata and controls

404 lines (287 loc) · 22.8 KB

volss - Shadowsocks-Rust 一键管理脚本

版本: V1.7.0 · 快捷命令: volss · 支持 Debian / Ubuntu / Alpine

一个适用于 NAT 机/VPS 的 Shadowsocks-Rust 交互式安装与管理脚本,支持多用户管理、流量统计、ACL 黑名单规则集、时间同步等功能。自动识别系统,同一份脚本可在 Debian/Ubuntu(systemd)和 Alpine(OpenRC)上运行。


功能概览

  • 一键安装/卸载/更新最新版 Shadowsocks-Rust
  • 自动识别系统(Debian/Ubuntu/Alpine),自动适配服务管理方式
  • 交互式选择加密方式、端口分配策略、用户数量
  • 顺序端口或随机端口分配,自动跳过已占用端口
  • 多用户管理:添加、暂停、恢复、删除、重新生成、自定义名称、流量配额和到期时间
  • 分别检测公网 IPv4/IPv6,每个用户可选择 IPv4、IPv6 或同端口双入口
  • 集成 VPS 开荒脚本 DDNS,支持 Cloudflare/华为云 A、AAAA 同域名或分域名入口
  • 默认开启 TCP + UDP 双协议出站
  • Clash、Mihomo、sing-box 配置导出,Clash/Mihomo 明确写入 udp: true
  • SS 链接和 Clash 配置二维码(PNG + 终端显示)
  • 配置、ACL、规则集和流量数据一键备份与安全恢复
  • 独立升级 ssserver,保留用户、密码、端口和管理策略
  • 服务、配置、TCP/UDP、IPv4/IPv6、防火墙与日志健康检查
  • nftables inet 或 iptables/ip6tables 双栈流量统计,数据持久化保存
  • ACL 黑名单:手动添加域名 + 规则集一键安装(广告/色情/赌博/BT/恶意软件等)
  • 手动域名与规则集完全分离管理,互不干扰
  • 时间同步:首页显示与标准时间差,一键校准
  • 服务管理:启动、停止、重启、日志
  • 可独立安装或修复快捷命令 volss,随时呼出管理菜单

系统要求

项目 要求
系统 Debian / Ubuntu / Alpine(不支持 OpenWrt / ImmortalWrt
权限 root
架构 x86_64 / aarch64(Alpine 额外支持 armv7)
依赖 自动安装(curl、wget、openssl、python3、iptables、nftables、qrencode、xz 等)

OpenWrt / ImmortalWrt 用户:请直接使用 opkg install shadowsocks-rust-ssserver 安装,配合 procd 管理服务,不要使用本脚本。

Alpine 用户:脚本会自动检测并安装 bash(Alpine 默认不带 bash),无需手动处理。


快速开始

1. 下载并运行脚本

wget -O volss.sh https://raw.githubusercontent.com/chnnic/VOLSS/refs/heads/main/volss.sh && chmod +x volss.sh && bash volss.sh

Alpine 系统如果还没有 bash,可以用 sh 启动(脚本会自动安装 bash 并重新执行):

wget -O volss.sh https://raw.githubusercontent.com/chnnic/VOLSS/refs/heads/main/volss.sh
chmod +x volss.sh
sh volss.sh

首次运行进入主菜单,选择「安装与更新 > 安装/重新安装 Shadowsocks-Rust」开始安装。

2. 单独安装或修复快捷命令(可选)

无需先安装 Shadowsocks-Rust,可直接执行以下命令,也可选择「安装与更新 > 安装/修复 volss 快捷命令」:

bash volss.sh --install-shortcut

3. 使用快捷命令

volss

安装流程说明

第一步:选择加密方式

1) 2022-blake3-aes-128-gcm        (推荐)
2) 2022-blake3-aes-256-gcm        (强加密)
3) 2022-blake3-chacha20-poly1305   (ARM推荐)
4) aes-256-gcm                    (传统)
5) chacha20-ietf-poly1305         (传统)

推荐使用 2022-blake3-aes-128-gcm,性能与安全性均衡。

第二步:填写服务器信息

脚本分别检测公网 IPv4 和 IPv6,并提供以下入口方式:

1) IPv4
2) IPv6
3) IPv4 + IPv6(生成两个入口,共用一个端口)
4) 开荒脚本 DDNS
5) 手动输入域名或 IP

检测到开荒脚本的有效 DDNS 配置时默认选择 DDNS;否则双栈地址都可用时默认选择 IPv4 + IPv6。DDNS 的 A 与 AAAA 可以共用一个域名,也可以使用两个域名;相同域名会自动去重。未配置 DDNS 时仍可手动输入域名或 IP。

第三步:设置 SS 链接名称

默认使用服务器的 hostname。单用户直接使用 hostname,多用户自动生成 hostname-1hostname-2;也可以输入自定义名称前缀。

第四步:端口分配

1) 顺序端口 —— 从指定起始端口开始,自动跳过已占用端口
2) 随机端口 —— 在指定范围内随机挑选可用端口

第五步:配置 ACL 黑名单(可选)

输入需要屏蔽的域名,每行一个,空行结束。安装完成后也可随时通过菜单增删,或安装规则集。


菜单功能

  ██╗   ██╗ ██████╗ ██╗     ███████╗███████╗
  ██║   ██║██╔═══██╗██║     ██╔════╝██╔════╝
  ██║   ██║██║   ██║██║     ███████╗███████╗
  ╚██╗ ██╔╝██║   ██║██║     ╚════██║╚════██║
   ╚████╔╝ ╚██████╔╝███████╗███████║███████║
    ╚═══╝   ╚═════╝ ╚══════╝╚══════╝╚══════╝
  Shadowsocks-Rust 管理脚本
  V1.7.0  |  2026-07-19 12:47:08  |  volss

  状态: ● 运行中
  核心: 1.23.5
  节点: 4 个入站 / 6 条链接
  时钟: 已同步 (±1s)

────────────────────────────────────────────────────────────
  📦 系统管理
     1) 安装与更新
     2) 服务与诊断

  👥 用户与节点
     3) 用户管理
     4) 链接与客户端导出

  📊 流量与规则
     5) 流量统计
     6) ACL 黑名单

  💾 数据维护
     7) 备份与恢复
────────────────────────────────────────────────────────────
     0) 退出

首页采用与 VOLSB 一致的状态摘要和分组列表格式,同时仍只保留 7 个分类入口。所有菜单统一使用大号 VOLSS 标题、Shadowsocks-Rust 管理脚本 副标题、实时日期、选项颜色、独立返回区和范围明确的输入提示;危险操作使用红色,暂停、重置等需谨慎操作使用黄色。

分类 子菜单功能
安装与更新 安装/重装、升级 ssserver、更新脚本、修复快捷命令、开荒脚本 DDNS、卸载
服务与诊断 状态、启动、停止、重启、日志、时间同步、健康检查
用户管理 列表、添加、改名、修改入口、配额/到期、暂停、恢复、删除、重置密码
链接与客户端导出 查看 SS 链接、导出 Clash/Mihomo/sing-box 和二维码
流量统计 查看、重置、切换 nftables/iptables 统计后端
ACL 黑名单 添加、删除、查看手动规则及管理规则集
备份与恢复 备份或恢复配置、ACL、规则集和流量数据

功能详解

用户管理

功能 说明
查看用户列表 显示名称、端口、IPv4/IPv6 入口、配额、到期日和暂停状态
查看 SS 链接 输出所有 ss:// 格式链接,可直接导入客户端
添加新用户 在现有基础上新增用户和端口,沿用相同加密方式,支持自动顺延或手动指定端口
暂停用户 将指定用户从运行配置中移除,不删除数据
恢复用户 重新将暂停的用户加入运行配置
删除用户 永久删除用户配置、流量历史、链接及对应防火墙统计规则,并重新排列链接编号
重新生成所有用户 保留原有端口,仅重新生成所有密码(旧链接失效)
修改用户名称 修改指定用户的 SS 链接名称,不更换密码、端口或重启服务
修改用户连接入口 为现有用户切换 IPv4、IPv6 或同端口双入口,不更换密码和端口
设置用户策略 设置流量配额(GB)与到期日;达到限制后自动暂停

新增用户时,脚本会自动沿用现有的加密方式,端口可选「自动顺延」(从当前最大端口往后找可用端口,跳过占用)或「手动指定」,并可为每个新用户输入链接名称和单独选择 IPv4、IPv6、同端口双入口或开荒脚本 DDNS。名称留空时默认使用 hostname-序号。双入口只创建两条客户端链接,服务端用户、密码和端口仍只有一份。新用户的密码随机生成,IPv4/IPv6 流量统计规则同步建立,原有用户的链接和流量不受影响。

开荒脚本 DDNS(安装与更新 > 5)

VOLSS 复用 SSH-Hardening 开荒脚本已有的 Cloudflare/华为云 DDNS,不复制 DDNS 更新引擎。DDNS 页面可打开 VPS Tools 完整配置、立即执行 /root/ddns.sh、查看最近日志,并将 A/AAAA 域名一键应用到全部现有 VOLSS 用户。应用操作会重建 SS 链接、Clash/Mihomo/sing-box 配置和已有二维码,但不会改变用户名称、端口、密码或服务状态。

  • 读取 /root/.cf_zone 时使用键值解析,不执行或 source 文件内容。
  • 只读取服务商、A/AAAA 域名、启用状态、更新间隔和日志路径等非敏感字段。
  • API Token、华为云 AK/SK 和 Telegram 配置不由 VOLSS 读取、显示或备份。
  • 本机存在 /usr/local/bin/vps-toolsvV 时直接调用;不存在时下载官方脚本及 SHA256,完成校验、bash -n 和项目标识验证后临时运行。
  • 可直接执行 bash volss.sh --ddns-menu 进入该页面,无需先安装 Shadowsocks-Rust。

客户端配置与二维码(链接与客户端导出 > 2)

一次生成 Clash、Mihomo 和 sing-box 配置。Clash/Mihomo 的每个 SS 节点都明确包含 udp: true;sing-box 使用原生 Shadowsocks outbound。双入口用户会展开为名称带 -IPv4-IPv6 的两个节点,但两者共用同一个端口、密码和加密方式。导出同时为每个 SS 链接生成独立 PNG 二维码,并在配置容量允许时生成 Clash 配置二维码。

ss:// 标准本身没有 UDP 能力字段,因此只导入 SS 链接的客户端仍可能显示 UDP unknown。该状态不能通过修改 SS 链接解决;需要使用 Clash/Mihomo 导出配置,或检查服务端 mode: tcp_and_udp 和 UDP 监听。

用户配额与到期时间(用户管理 > 5)

  • 配额按上行与下行累计字节之和计算,输入 0 表示不限。
  • 到期日格式为 YYYY-MM-DD,到期日当天仍可使用,下一天自动暂停。
  • Debian/Ubuntu 每 5 分钟检查一次;Alpine 通过 15 分钟 periodic 任务检查。
  • 重置流量、提高配额、清除或延长到期日后,由策略暂停的用户会自动恢复。
  • 手动暂停状态不会被策略任务自动恢复。

备份与恢复(备份与恢复 > 1/2)

备份包包含用户配置、服务器地址、流量数据、ACL、手动规则、规则集和流量统计后端,不包含开荒脚本的 DDNS 凭据。备份文件权限为 600。恢复前会自动创建当前状态的保护备份;恢复包经过文件白名单、大小、JSON、端口、配额和日期校验,应用失败会回滚原配置。

ssserver 独立升级(安装与更新 > 2)

只下载并替换 Shadowsocks-Rust 的 ssserver 二进制,不重新生成配置。用户、密码、端口、名称、配额和到期时间保持不变。新二进制先完成可执行校验,再原子替换;运行中的服务重启失败时自动回滚旧二进制。

健康检查(服务与诊断 > 7)

检查管理配置 JSON、ssserver --check-config、服务状态、每个启用端口的 TCP/UDP 监听、IPv4/IPv6、服务器地址解析、当前防火墙统计后端及最近 50 行服务日志,并汇总通过、警告和失败数量。健康检查是只读操作。

更新脚本

选择「安装与更新 > 3」会从 GitHub 拉取最新版本,对比版本号后询问确认,更新前自动备份当前版本为 .bak,更新时自动迁移修复旧版配置(ACL 格式、服务文件、UDP 模式等),完成后自动重启进入新版菜单。

流量统计

支持两种统计后端:原生 nftables inet 表同时覆盖 IPv4/IPv6,或 iptables + ip6tables 双栈链。已有安装会继续沿用当前后端;新安装优先使用 nftables,可通过「流量统计 > 3」切换。流量数据持久化保存至 traffic.json,采用「读取增量 → 内核归零」机制确保统计准确,重启不丢失,直到手动重置才清零,并显示最后重置时间。

注意:统计数值为单向流量。 由于代理服务器每个字节都要经过一进一出,VPS 实际消耗的带宽约为统计数值的 2 倍

ACL 黑名单

通过 Shadowsocks-Rust 的 ACL 功能屏蔽指定域名。手动域名存于 manual.list,规则集存于 rulesets/,两者完全分离,互不干扰。||domain.com 格式可匹配该域名及所有子域名。

ACL 拦截依赖客户端把域名传给服务端。 Clash 默认本地解析 DNS(传 IP),会导致 ACL 失效,需在客户端开启 fake-ipredir-host 模式。

规则集管理(ACL 黑名单 > 4)

可按需选择安装以下规则集,每个独立存储管理:

规则集 说明
ads 广告拦截
adult 色情网站
gambling 赌博网站
malware 恶意软件/钓鱼
scam 诈骗欺诈
tracking 追踪统计
crypto 挖矿劫持
dating 交友网站
bt BT/种子下载
finance 金融理财

规则集维护主页使用 1-6 短编号,内置 10 类规则放在独立浏览页。支持单个安装、一键全装、卸载、更新、自定义 URL、查看统计。默认使用官方下载源;如确需第三方镜像,可运行前设置 VOLSS_ALLOW_THIRD_PARTY_MIRRORS=1。规则集更新时自动保留手动域名;自定义 URL 规则集重启脚本后会保留规则文件,但暂不保存源地址,批量更新时会跳过并提示。

时间同步(服务与诊断 > 6)

首页状态行实时显示本地时间与标准时间的差值:

  • 绿色「已同步 (±1s)」:误差 ≤ 2 秒
  • 黄色「本地快/慢 Ns」:误差 ≤ 10 秒
  • 红色「本地快/慢 Ns」:误差 > 10 秒

「服务与诊断 > 6」可一键校准系统时间,Debian/Ubuntu 使用 chrony/systemd-timesyncd,Alpine 使用 chrony/busybox ntpd。


SS 链接格式

ss://base64(method:password)@host:port#name

链接名称支持中文和空格,生成时会自动进行 URI 编码。IPv6 地址会按标准添加方括号,例如 ss://...@[2001:db8::1]:30001#hk-node-1。选择 IP 双入口或两个独立 DDNS 域名时,同一用户会生成 name-IPv4name-IPv6 两条链接,两条链接的端口和认证信息完全相同;A/AAAA 共用一个 DDNS 域名时只生成一条链接。

兼容客户端:

平台 推荐客户端
Windows v2rayN、Clash Verge
macOS Clash Verge、Hiddify
Linux NekoRay、Clash Meta
Android v2rayNG、Hiddify、Sing-box
iOS Shadowrocket、Sing-box

文件说明

路径 说明
ssserver 主程序(Debian: /usr/local/bin,Alpine: /usr/bin)
/usr/local/bin/volss 快捷命令入口
/usr/local/bin/volss.sh 脚本主体(固定安装路径)
/etc/shadowsocks-rust/config.json 完整管理配置(名称、配额、到期日和暂停状态)
/etc/shadowsocks-rust/runtime.json 运行时配置(仅含启用用户)
/etc/shadowsocks-rust/ss_links.txt 所有用户 SS 链接
/etc/shadowsocks-rust/traffic.json 流量历史持久化数据
/etc/shadowsocks-rust/traffic_backend 当前 nftables 或 iptables 统计后端
/etc/shadowsocks-rust/volss.nft nftables 双栈统计规则(使用 nftables 时)
/etc/shadowsocks-rust/exports/ Clash、Mihomo 和 sing-box 导出配置
/etc/shadowsocks-rust/qrcodes/ SS 链接和 Clash 配置二维码
/etc/shadowsocks-rust/blocklist.acl ACL 黑名单主文件(自动生成)
/etc/shadowsocks-rust/manual.list 手动添加的屏蔽域名
/etc/shadowsocks-rust/rulesets/ 规则集存储目录
服务文件 Debian: systemd .service,Alpine: OpenRC init.d

常见问题

Q: 支持哪些系统?

Debian、Ubuntu、Alpine。脚本启动时自动识别系统并适配服务管理方式(systemd / OpenRC)、包管理(apt / apk)、二进制版本(gnu / musl)。不支持 OpenWrt/ImmortalWrt。

Q: Alpine 提示没有 bash?

脚本会自动检测并通过 apk 安装 bash,然后用 bash 重新执行,无需手动处理。用 sh volss.sh 启动即可。

Q: ACL 添加了但无法拦截?

ACL 拦截依赖客户端把域名(而非解析后的 IP)传给服务端。Clash 默认本地解析 DNS,需在客户端开启 fake-ipredir-host 模式。可通过「服务与诊断 > 5」查看日志,出现 blocked by ACL rules 即表示拦截生效。

Q: 安装规则集会影响代理速度吗?

ACL 匹配只在新连接建立时执行,不影响已建立连接的传输速度。大规则集每次新连接会增加数毫秒匹配延迟,对普通使用影响可忽略。如对延迟敏感,建议只安装最必要的规则集。

Q: 支持 UDP 吗?

支持。从 V1.4.2 起默认开启 TCP + UDP 双协议(mode: tcp_and_udp)。旧版安装的用户运行一次 volss 即会自动补全 UDP 配置。可用 ss -ulnp | grep 端口 验证 UDP 是否监听。

Q: 客户端为什么显示 UDP unknown?

标准 ss:// 链接没有声明 UDP 能力的字段,因此部分客户端只能显示 unknown,不能靠修改 SS 链接修复。「链接与客户端导出 > 2」生成的 Clash/Mihomo 配置会为每个节点明确写入 udp: true。服务端状态应以 mode: tcp_and_udp、UDP 监听或「服务与诊断 > 7」健康检查为准。

Q: 菜单显示"未运行"但连接正常?

部分 LXC 容器宿主机会定期发送 SIGTERM 信号。脚本使用多重检测(pgrep + 服务状态),显示更准确。

Q: 重启服务器后流量数据会丢失吗?

不会。流量数据持久化保存,重启后累计显示,只有手动重置才会清零。

Q: 重新生成用户会换端口吗?

不会。重新生成只更换密码,保留原有端口、名称、配额、到期时间和暂停状态。


版本历史

版本 说明
V1.7.0 集成开荒脚本 Cloudflare/华为云 DDNS;新增完整配置、立即更新、日志及一键应用全部用户;安装/新增/修改入口支持 DDNS 默认选择;本地脚本缺失时校验官方脚本后临时运行
V1.6.6 首页改用 VOLSB 风格的状态摘要、长分隔线和功能分组;显示 ssserver 版本、入站数及链接数,同时保留 0-7 短编号导航
V1.6.5 首页和全部子菜单改用大号 VOLSS 字符标题,下方统一显示 Shadowsocks-Rust 管理脚本、当前时间和快捷命令
V1.6.4 统一美化全部菜单和选择器;增加 VOLSS 标题栏、规范化颜色/边框/提示;规则集维护菜单由 1-15 拆分为短编号分层导航
V1.6.3 首页重构为 7 个分类入口,各子菜单使用独立连续编号,保留全部管理功能并简化导航
V1.6.2 分别检测公网 IPv4/IPv6;安装、新增用户和现有用户均可选择 IPv4、IPv6 或同端口双入口;SS 链接、Clash/Mihomo/sing-box 与二维码按入口展开
V1.6.1 新增主菜单和 --install-shortcut 独立安装/修复 volss 快捷命令,无需先安装 Shadowsocks-Rust,并保护已被其他程序占用的同名命令
V1.6.0 新增 Clash/Mihomo/sing-box 导出与二维码、配置/ACL/流量备份恢复、独立 ssserver 升级、健康检查、用户流量配额与到期自动暂停,以及原生 nftables inet/iptables+ip6tables 双栈统计后端切换
V1.5.8 SS 链接名称默认使用 hostname;支持安装时自定义名称前缀、新增用户逐个命名和菜单修改名称;旧配置自动补全名称,中文及空格自动 URI 编码
V1.5.7 修复 ACL 后期开启不立即生效、删除用户丢失/继承流量及链接编号错位、随机端口误判与 65535 边界;新增 IPv6 链接和 ip6tables 流量统计;安装失败正确中止并补充回归测试
V1.5.6 删除旧版 demo;安装包增加 SHA256 校验;服务默认使用专用低权限用户运行;流量统计改为读取并清零同一步执行;状态写入增加互斥锁;自更新增加语法校验
V1.5.5 修复规则集批量安装/更新结果提示,失败时保留旧规则;统一安装/更新下载的 wget/curl 回退;手动域名改为字面量匹配并补全校验;修正规则统计
V1.5.4 流量统计迁移到专用 iptables 链,升级时保留已有计数增量并兼容现有用户和 SS 链接;修复 ACL 规则集上游失效、wget/curl 下载回退与 hosts/AdGuard 格式转换
V1.5.3 兼容性硬化:敏感文件权限收敛、关键配置原子写入、移除固定临时文件、增强编号和域名校验
V1.5.2 通过 ShellCheck 检查;修复服务控制、变量引用、读取输入和规则集统计细节
V1.5.1 修复 Debian/Ubuntu 卸载递归;加强下载源默认安全、临时文件和输入校验
V1.5.0 新增「添加新用户」功能,支持增量添加端口和 SS 链接
V1.4.6 端口统计精确匹配修复;规则集对齐改用字节差值(Alpine 兼容);更新下载多镜像;apt 静默安装
V1.4.5 Alpine 兼容性修复:bash 自举、date 解析、iptables 持久化、下载镜像
V1.4.4 脚本健壮性优化:base64 兼容、重新生成保留端口、IP 获取多源、自检逻辑
V1.4.3 启动自检自动开启 UDP 模式
V1.4.2 默认开启 TCP+UDP 双协议出站
V1.4.1 更新时强制同步 runtime.json 的 ACL 字段
V1.4.0 整合 Alpine 支持,自动识别系统;新增时间同步功能
V1.3.6 流量统计逻辑重写(置顶规则 + 增量归零),修复统计虚高
V1.3.5 删除错误的自检迁移逻辑,规则集不再混入手动域名
V1.3.4 查看黑名单时规则集只显示统计不展开
V1.3.3 修复重置流量顺序问题
V1.3.2 规则集下载支持多镜像自动切换
V1.3.1 手动域名改用独立 manual.list 文件,彻底分离
V1.3.0 批量删除兼容性修复(数组替代 nl,grep 替代 sed)
V1.2.x 规则集管理、菜单整理、ACL 格式修复
V1.1.x 流量持久化、快捷命令修复、ACL 顶层配置、格式升级
V1.0.x 初始版本到基础功能完善

License

MIT