feat: 发布 0.6.23,内置社区主站改为 VPS(rosdpi.vviip.dpdns.org:8443,有公网 IPv4)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Su YijunandClaude Opus 5.5 committed 2026-10-25 19:00:05 +08:00
1 parent d91c78b0ff
commit 0019cfe3b6
10 files changed
+23 -14

No files matched your search

+1 -1
View File
@@ -80,7 +80,7 @@ LAN_CIDRS=192.168.88.0/24
# ---------- 社区共享库 ----------
# 把本网络实测的「远端 IP / 域名 → 应用」匿名投票汇总到项目自带的社区主站,并拉取社区库;不含本机终端、
# 访问记录、自定义应用,私网地址剔除。开关在网页 系统设置 → 外部数据源(默认打开)。
# SHARE_HUB_URL=https://rosdpi.suyijun.top:8443 # 社区主站(内置,一般不用改);自建私有社区时改成自己的主站
# SHARE_HUB_URL=https://rosdpi.vviip.dpdns.org:8443 # 社区主站(内置,一般不用改);自建私有社区时改成自己的主站
# SHARE_HUB=false # 只有主站自己设为 true
# SHARE_VERIFY_TLS=true # 私有主站用自签证书时才设 false
# SHARE_TRUSTED_PROXIES= # 主站:可信反向代理(留空 = 内网和回环地址)
+8
View File
@@ -1,5 +1,13 @@
# Changelog
## [0.6.23] - 2026-10-25
内置社区主站改为 VPS(有公网 IPv4)
- 内置的社区主站地址改为 `https://rosdpi.vviip.dpdns.org:8443`(VPS,有公网 IPv4)。以前的家宽主站只有 IPv6,Docker 实例默认连不上;现在 Docker 和 Linux 一键安装都直接可用,不用再开 IPv6。
- 升级后,没有在网页里改过“社区主站地址”的实例会自动连到新主站并重新注册;网页里填过地址的照旧用你填的。
- “网络不可达”时的提示、compose 文件里的 IPv6 说明按新情况改写(只在自建主站只有 IPv6 时才需要)。
## [0.6.22] - 2026-10-25
社区主站地址可在网页填写 + VPS 主站部署模板(debug23);接入向导、文档补上 IPv6 嗅探与 FastTrack
+2 -1
View File
@@ -36,6 +36,7 @@ services:
## What's new
- **0.6.23**: 内置社区主站改为有公网 IPv4 的 VPS(`https://rosdpi.vviip.dpdns.org:8443`),Docker 实例不用再开 IPv6。Built-in community hub moved to an IPv4-reachable VPS.
- **0.6.22**: 全站审计修复(落库容错、采集端口防护 `COLLECTOR_ALLOWED`、管控脚本防注入、一键更新校验 SHA256、arm64 二进制等);社区主站地址可在网页填写,新增 VPS 主站部署模板(`deploy/hub/`,Docker + Caddy 自动 HTTPS);接入向导与文档补上 IPv6 嗅探(`/ipv6 firewall mangle` 4 条)和 FastTrack(IPv4 / IPv6)命令;自检检查 IPv6 的 FastTrack。Setup guide and docs now include IPv6 sniff rules and FastTrack commands for both families; the self-check also flags IPv6 FastTrack without a connection-bytes limit.
- **0.6.21**: 社区共享库重做——项目自带社区主站,不再需要 WebDAV / 第三方存储:令牌注册、按来源网络计票(≥2 个不同网络一致才发布,防伪造实例刷票)、ETag 增量拉取、本地缓存;修复 0.6.20 部署量接口 500、共享任务从未运行、开关保存不上。接入自检新增 IPv6 嗅探规则检查,FastTrack 已限定 connection-bytes 时不再误报,并直接给出修改命令。Community library rebuilt around a built-in hub (no WebDAV/third-party storage): per-instance tokens, votes counted per source network, ETag pulls, local cache; fixes the 0.6.20 deployments 500 and the never-running share job. Self-check now flags missing IPv6 sniff rules.
- **0.6.12 / 0.6.11 / 0.6.10 / 0.6.9 / 0.6.8**: 自学习与共享系列。**本地自学习库**:本网络实测的「IP → 应用」(IPv6 按 /64 前缀聚合)与「域名 → 应用」长期记忆,每小时重建,DNS 缓存过期、DoH、裸 IP 流量都能按记忆归类;**社区共享库**:各部署实例把实测结论匿名共享(中转聚合、至少 2 个实例见过才发布),本地实测优先、社区只补空白;**全球部署量**:实例心跳上报,中转公开已部署 / 在线 / 离线数量;共享总开关默认打开;**一键自更新**:Linux 二进制部署在网页上检测并一键升级(自动下载、替换、重启服务);**Linux 单文件二进制部署**:`install.sh` 一键安装 systemd 服务(SQLite 零配置起步);修复落库卡死(代理长域名撑爆 access_log.remote 列导致每分钟落库失败、在线终端归零);组播 / 广播流量不再计入统计;17 个 DPI 大类配色互异。
@@ -121,7 +122,7 @@ Open `http://<host>:8080`. The setup wizard has two steps. 打开网页后按两
| `ADMIN_PASSWORD` | empty | initial password for `admin` |
| `ROS_URL` / `ROS_USER` / `ROS_PASSWORD` | empty | RouterOS REST + read-only user |
| `SINGBOX_URL` / `MOSDNS_URL` / `ADGUARD_URL` | empty | external sources (Clash API, MosDNS audit, AdGuard Home query log) |
| `SHARE_HUB_URL` | `https://rosdpi.suyijun.top:8443` | community hub (built in); point it at your own hub for a private community |
| `SHARE_HUB_URL` | `https://rosdpi.vviip.dpdns.org:8443` | community hub (built in); point it at your own hub for a private community |
| `SHARE_HUB` | `false` | run this instance as the community hub (only the hub sets `true`) |
| `SHARE_VERIFY_TLS` | `true` | verify the hub certificate; set `false` only for a private hub with a self-signed cert |
| `COLLECTOR_ALLOWED` | empty | accept IPFIX / TZSP only from these IPs / CIDRs (usually the router); empty = any |
+2 -2
View File
@@ -196,7 +196,7 @@ EOF
1. **公开库**(自动更新):内置手工库 + v2fly(每天自检更新)+ blackmatrix7(每周,上游新目录自动登记:先下载、再由现有识别库投票定归属)+ Hagezi / UT1 分类列表 + ASN(iptoasn)+ 国内域名列表 / 官方 IP 段 / 国内 IP 段兜底。
2. **本地自学习库**:本网络实测的「IP → 应用」(IPv6 按 /64 前缀聚合)与「域名 → 应用」长期记忆,每小时从数据库重建;DNS 缓存过期、DoH、裸 IP 流量都能按记忆归类。每次历史重算自动纠正它。
3. **社区共享库**:项目自带社区主站,不依赖任何第三方存储。各实例每 30 分钟向主站心跳、每 6 小时上报一次匿名投票——只含远端 IP / 域名、应用 ID 和字节票数,不含本机终端、访问记录与自定义应用,私网地址剔除;主站按**来源网络**计票(IPv4 /24、IPv6 /56,只存加盐哈希),**至少 2 个不同网络的实例投给同一应用且票数领先**才发布,一个人伪造多个实例也只算一票;每个实例有主站发的令牌,别人无法冒充。社区库缓存在本地,主站暂时不可达时继续可用。各实例**不需要公网 IP**(都是主动连主站),但要能访问主站:主站目前只有 IPv6 地址,Linux 一键安装直接用主机网络即可;Docker 默认网桥没有 IPv6 出口,需按 `docker-compose.yml` 末尾的说明开启(Docker 27+)。系统设置 → 外部数据源 可看连接状态、社区库规模与全球已部署 / 在线 / 离线数量;开关默认打开,关闭后不再上报也不再使用社区库。自建主站(推荐放在有公网 IPv4 的 VPS 上,[`deploy/hub/`](deploy/hub/) 有 Docker + Caddy 自动 HTTPS 模板)见 [docs/社区主站部署.md](docs/社区主站部署.md);各实例在 系统设置 → 外部数据源 → 社区主站地址 填写即可(网页填写的优先于 `SHARE_HUB_URL`)。
3. **社区共享库**:项目自带社区主站,不依赖任何第三方存储。各实例每 30 分钟向主站心跳、每 6 小时上报一次匿名投票——只含远端 IP / 域名、应用 ID 和字节票数,不含本机终端、访问记录与自定义应用,私网地址剔除;主站按**来源网络**计票(IPv4 /24、IPv6 /56,只存加盐哈希),**至少 2 个不同网络的实例投给同一应用且票数领先**才发布,一个人伪造多个实例也只算一票;每个实例有主站发的令牌,别人无法冒充。社区库缓存在本地,主站暂时不可达时继续可用。各实例**不需要公网 IP**(都是主动连主站),只要能访问外网:内置主站放在有公网 IPv4 的 VPS 上,Docker 和 Linux 一键安装都直接可用。系统设置 → 外部数据源 可看连接状态、社区库规模与全球已部署 / 在线 / 离线数量;开关默认打开,关闭后不再上报也不再使用社区库。自建主站(推荐放在有公网 IPv4 的 VPS 上,[`deploy/hub/`](deploy/hub/) 有 Docker + Caddy 自动 HTTPS 模板)见 [docs/社区主站部署.md](docs/社区主站部署.md);各实例在 系统设置 → 外部数据源 → 社区主站地址 填写即可(网页填写的优先于 `SHARE_HUB_URL`)。
4. 以上都没有时,才归到 HTTPS / 国内网络这类笼统分类。
识别库有变化或过了零点,自动把今天以前的历史流量按新规则重算(只升级不降级);识别规则页也可手动执行。世界地图使用 [Natural Earth](https://www.naturalearthdata.com/)(公有领域)简化数据。
@@ -214,7 +214,7 @@ EOF
| `SINGBOX_URL` / `SINGBOX_SECRET` / `PROXY_IPS` | 空 | 旁路代理 sing-box 的 Clash API(也可在网页填写,网页优先) |
| `MOSDNS_URL` | 空 | MosDNS 审计 API 地址 |
| `ADGUARD_URL` / `ADGUARD_USERNAME` / `ADGUARD_PASSWORD` | 空 | 自有 DNS 服务器 AdGuard Home 的查询日志(双层 NAT 场景) |
| `SHARE_HUB_URL` | `https://rosdpi.suyijun.top:8443` | 社区主站地址(内置,一般不用改);自建私有社区时改成自己的主站 |
| `SHARE_HUB_URL` | `https://rosdpi.vviip.dpdns.org:8443` | 社区主站地址(内置,一般不用改);自建私有社区时改成自己的主站 |
| `SHARE_HUB` | `false` | 本实例作为社区主站(只有主站部署设为 `true`) |
| `SHARE_VERIFY_TLS` | `true` | 校验主站证书;私有社区用自签证书时才设 `false` |
| `SHARE_TRUSTED_PROXIES` | 空 | 主站:可信反向代理地址 / 网段(逗号分隔),只信它们传来的 `X-Forwarded-For`;留空 = 内网和回环地址 |
+1 -1
View File
@@ -1 +1 @@
__version__ = "0.6.22"
__version__ = "0.6.23"
+1 -1
View File
@@ -45,7 +45,7 @@ class Settings(BaseSettings):
adguard_password: str = ""
share_enabled: bool = True # 共享识别库总开关(debug16 第 3 条,默认打开):关掉后不心跳、不上报、不拉取
# 社区共享库(debug16→debug22 重做):项目自带的社区主站,不依赖第三方存储
share_hub_url: str = "https://rosdpi.suyijun.top:8443" # 社区主站地址;自建私有社区时改成自己的主站
share_hub_url: str = "https://rosdpi.vviip.dpdns.org:8443" # 社区主站地址;自建私有社区时改成自己的主站
share_hub: bool = False # 本实例就是社区主站(只有主站部署设为 true):接收上报、发布社区库与全球部署量
share_verify_tls: bool = True # 校验主站证书;私有社区用自签证书时才设 false
share_trusted_proxies: str = "" # 主站:可信反向代理地址 / 网段(逗号分隔),只信它们传来的 X-Forwarded-For;留空 = 内网和回环地址
+3 -3
View File
@@ -513,9 +513,9 @@ def _err(e: Exception) -> str:
msg = str(e).lower()
if isinstance(e, httpx.ConnectError) and ("errno 101" in msg or "unreachable" in msg
or "cannot assign requested address" in msg):
# 实例不需要公网 IP(都是主动连主站),但主站目前只有 IPv6 地址:本机 / 容器要有 IPv6 出口
return ("连不上社区主站:本机没有 IPv6 出口(主站只有 IPv6 地址)。三选一:Docker 按 docker-compose.yml 末尾的说明开启 IPv6;"
"或改用 Linux 一键安装;或在内网有 IPv6 的反向代理(Lucky / Nginx)上转发主站,再把 SHARE_HUB_URL 指向这个内网地址")
# 实例不需要公网 IP(都是主动连主站);网络不可达多半是自建主站只有 IPv6、而本机 / 容器没有 IPv6 出口
return ("连不上社区主站:网络不可达。主站只有 IPv6 地址时,Docker 默认没有 IPv6 出口——"
"按 docker-compose.yml 末尾的说明开启 IPv6,或改用 Linux 一键安装,或把主站放到有公网 IPv4 的服务器上")
return f"{type(e).__name__}: {str(e)[:120]}"
+2 -2
View File
@@ -55,8 +55,8 @@ services:
timeout: 5s
retries: 20
# 社区共享库:社区主站目前只有 IPv6 地址,而 Docker 默认网桥没有 IPv6 出口,容器会连不上主站
# (设置页显示“连接失败:本机没有 IPv6 出口”)。Docker 27 及以上取消下面 3 行注释即可(自动分配地址并做 NAT);
# 社区共享库:内置主站有公网 IPv4,默认就能连。只有当你改用的自建主站只有 IPv6 地址时,Docker 默认网桥
# 没有 IPv6 出口,容器会连不上(设置页显示“网络不可达”)。Docker 27 及以上取消下面 3 行注释即可(自动分配地址并做 NAT);
# 更老的 Docker(群晖 / 部分 NAS 自带的版本)请改用 Linux 一键安装,或在 daemon.json 里开启 ipv6 + ip6tables。
# networks:
# default:
+2 -2
View File
@@ -28,8 +28,8 @@ services:
volumes:
- ./data:/app/data # 保存数据库连接配置,务必保留这个卷
# 社区共享库:社区主站目前只有 IPv6 地址,而 Docker 默认网桥没有 IPv6 出口,容器会连不上主站
# (设置页显示“连接失败:本机没有 IPv6 出口”)。Docker 27 及以上取消下面 3 行注释即可(自动分配地址并做 NAT);
# 社区共享库:内置主站有公网 IPv4,默认就能连。只有当你改用的自建主站只有 IPv6 地址时,Docker 默认网桥
# 没有 IPv6 出口,容器会连不上(设置页显示“网络不可达”)。Docker 27 及以上取消下面 3 行注释即可(自动分配地址并做 NAT);
# 更老的 Docker(群晖 / 部分 NAS 自带的版本)请改用 Linux 一键安装,或在 daemon.json 里开启 ipv6 + ip6tables。
# networks:
# default:
+1 -1
View File
@@ -71,7 +71,7 @@
## 实例连不上主站时
设置页会显示原因。常见的是“本机没有 IPv6 出口”(主站只有 IPv6),三选一:
设置页会显示原因。“网络不可达”多半是主站只有 IPv6 地址、而实例所在的 Docker 没有 IPv6 出口,三选一:
1. 主站改到有 IPv4 的 VPS(见上);
2. Docker 实例开启 IPv6:Docker 27+ 取消 `docker-compose.yml` 末尾 3 行注释;或改用 Linux 一键安装(主机网络);