开源自托管 VPN

与你关心的人分享安全的互联网

一条命令即可将全新 VPS 部署为难以与普通 HTTPS 区分的加固 VPN 服务器,为你提供内置网页面板,并为每个人生成一键连接页面。

连接页面——每个人收到的内容
每个人收到的页面——试用连接页面 · 试用网页面板

工作原理

两条命令,搭建可用的 VPN

你需要一台 Debian 或 Ubuntu 的 VPS(每月 5 美元的就够用)和电脑上的终端。其余由 Meridian 完成。

用 meridian setup 完成设置的全过程:3.5 分钟,英文讲解并附字幕。下载视频
第 1 步——安装
curl -sSf https://getmeridian.org/install.sh | bash
然后
第 2 步——设置
meridian setup

向导会问几个简单的问题,展示一份摘要供你确认,然后设置你的服务器。若只有一台服务器且不想回答问题,运行 meridian deploy IP 即可,详见 CLI 参考。

终端中的 Meridian 部署输出

幕后发生了什么

  1. 安装控制服务与网页面板,以及运行 Xray 的节点 agent,无需 Docker 或第三方面板

  2. 生成 x25519 密钥对——为 Reality 认证生成唯一的加密密钥

  3. 加固服务器——UFW 只开放你的 SSH 端口、443(TCP 和 UDP)以及用于证书的 80;SSH 仅允许密钥登录,启用 fail2ban 和 BBR 拥塞控制

  4. 配置 VLESS+Reality,监听 TCP 443,探测者看到的是真实网站的证书

  5. 添加 XHTTP 和 Hysteria2——XHTTP 经由 nginx 使用同一端口,Hysteria2 使用 UDP 443 并启用 salamander 混淆

  6. 输出二维码和连接页面,在真实流量通过新订阅之后生成

可放心重复运行。再次运行会保留凭证和密钥,并就地继续或更新部署。

看看效果

你和你的用户会得到什么

每次部署都会为每个人生成专属连接页面,并为你配备内置网页面板。两个演示都在你的浏览器中运行,使用虚构数据:随意点击,一切都不会发送到任何地方。

连接页面

每个人在浏览器中打开自己的订阅链接:选择平台与应用,一键或扫码导入连接,查看流量与到期时间,并阅读四种语言的简明帮助。

试用连接页面

网页面板

运行 meridian panel 打开你的管理面板(管理控制台)。在任何浏览器中添加用户、分享链接和二维码、设置到期时间、流量限额与设备上限、记录私有备注与标签、发布全员通知,以及签发限定权限的 API 令牌。

试用网页面板

命令生成器

生成你的命令

选择选项并复制完整命令。涵盖部署、中继、检查、伪装站点扫描、诊断和卸载。

在一台服务器上部署 Reality、XHTTP 和 Hysteria2。会配置控制服务、网页面板、nginx、防火墙和 TLS。

服务器 IP、已保存的服务器名称,或填 "local" 直接在服务器本机上运行。留空则会提示你输入。
默认:已保存的用户,否则为 root。非 root 用户需要免密码 sudo。
默认:已保存的端口,否则为 22。
可选。将 XHTTP 移到你的域名上并添加 WSS;两者都可以经由 Cloudflare CDN。
Reality 所模仿的网站。保持自动,deploy 会选择一个能在你的服务器上使用的站点;也可以用 SNI 扫描标签页来寻找。
第一个连接者的名称。默认:"default"。
显示在连接页面上的标签。
连接页面使用的表情符号或图片 URL。
连接页面的颜色主题。
命令
meridian deploy

第一次使用?直接运行 meridian setup,向导会询问它需要的一切。

技术

它如何避免被检测

OpenVPN 和 WireGuard 的流量有可识别的特征。VLESS+Reality 连接与访问真实网站的普通 HTTPS 很难区分。

深度包检测(DPI)

DPI 通过分析流量模式来识别 VPN 和代理协议。OpenVPN 和 WireGuard 的握手很容易被识别和封锁。

VLESS+Reality 运行在 443 端口上的标准 TLS 1.3 连接之内,因此 DPI 看到的是指向伪装站点的普通 HTTPS。每台服务器还提供 XHTTP 和 Hysteria2,所以一种方式被封锁时,其他方式仍可使用。

主动探测

审查者会主动连接可疑的服务器并尝试识别其指纹。如果服务器的响应与它声称的网站不一致,就会被封锁。

Reality 借用真实网站的 TLS 身份:默认是托管在你服务器附近的网站,或 www.google.com。没有你的密钥的探测会被转发到该网站,看到的是它真实的证书。只有持有你的密钥的客户端才能进入 VPN 隧道。

TLS 指纹识别

每个 TLS 客户端都会发送独特的“Client Hello”指纹。如果指纹与其声称的应用不符,审查者就会将该连接标记出来。

客户端应用使用 uTLS,发送与 Chrome 相同的 Client Hello。Meridian 还会为每个 Reality 和 XHTTP 条目发布一份 Firefox 指纹的副本,因此一种指纹被标记时,另一种仍可使用。

连接

扫码即连

部署完成后,每个人都会得到一个带二维码和一键导入按钮的连接页面。把链接发给需要的人,点一下即可连接。

连接页面会优先列出这些应用,并为每个平台提供其他应用的链接。查看演示。

请在每台设备上开启自动设置日期和时间。设备时钟不准时,连接可能会失败。

架构

内部结构

Meridian 架构:nginx 按 SNI 将 TCP 443 路由到 Xray Reality、XHTTP 和连接页面;Hysteria2 监听 UDP 443Internetnginx stream — SNI routerTCP 443Xray Hysteria2UDP 443 (salamander)Xray Realitynginx http :8443SNI = camouflageno SNI / server IPConnection pagesControl serviceXray XHTTPXray WSSdomain modenginx ACMETCP 80
独立模式(无域名)

nginx 占用 TCP 443 端口,并通过其 stream 模块按 TLS SNI 路由连接。Reality 连接交给 Xray。其余连接进入 nginx 的 http 模块,由它通过 HTTPS 提供连接页面、订阅和 XHTTP,使用的是为服务器 IP 签发的短期 Let's Encrypt 证书(由 acme.sh 签发)。Hysteria2 监听 UDP 443,并启用 salamander 混淆。

Meridian 的控制服务位于 nginx 后的一条秘密路径上:它保存你的用户、提供订阅,并通过 HTTPS 直接提供网页面板,无需 SSH 隧道。每台服务器上的小型 agent 主动连接它,因此节点不会开放额外端口。

域名模式(CDN 备用)

使用 --domain 时,nginx 会为你的域名获取 Let's Encrypt 证书,并将该 SNI 路由到域名对应的路径。XHTTP 移到域名上,并新增 VLESS+WSS。如果由 Cloudflare 代理该域名,两者都经由 CDN 传输,即使服务器 IP 被封锁也能继续使用。控制服务和连接页面仍使用 IP 证书。

中继模式(境内入口)

境内服务器上的 Realm TCP 转发器会把连接转交给你位于境外的出口服务器。中继只承载 Reality;XHTTP、WSS 和 Hysteria2 仍直接连接出口服务器。加密在应用与出口服务器之间端到端进行,因此中继看不到明文。

用 meridian relay add RELAY_IP --exit EXIT 添加中继。订阅和连接页面会自动包含中继条目。

准备好开始了吗?

安装 Meridian,部署你的 VPN 服务器,并与需要的人分享访问权限。一次部署通常需要 3 到 10 分钟。