Censorship-resistant VLESS+Reality proxy server management
Project description
Meridian
Deploy a censorship-resistant proxy server in one command.
Invisible to DPI, active probing, and TLS fingerprinting.
Install
curl -sSf https://meridian.msu.rocks/install.sh | bash
Or install directly from PyPI:
uv tool install meridian-vpn # recommended
pipx install meridian-vpn # alternative
Quick start
meridian setup # interactive wizard
meridian setup 1.2.3.4 # deploy to server
meridian setup 1.2.3.4 --domain d.io # with CDN fallback
After setup, your server is a fully functional proxy. Share access:
meridian client add alice # generate keys for a friend
meridian client list # see all clients
meridian client remove alice # revoke access
Each client gets an HTML page with QR codes and one-tap deep links. In domain mode, the page is also hosted on the server with live usage stats.
How it works
Meridian deploys VLESS+Reality — a protocol that makes your server indistinguishable from a legitimate website:
| Censorship method | How Meridian beats it |
|---|---|
| Deep Packet Inspection | Traffic is byte-for-byte identical to normal HTTPS. No proxy signatures. |
| Active probing | Censors connecting to your server get a real TLS certificate from microsoft.com. Only clients with your private key reach the proxy. |
| TLS fingerprinting | uTLS impersonates Chrome's exact Client Hello, matching billions of real devices. |
| IP blocking | Domain mode routes through Cloudflare CDN as a fallback — no direct IP exposure. |
What you need
- A VPS (Debian/Ubuntu) with root SSH key access — $3–5/month from any provider
- Recommended: Finland, Netherlands, Sweden, Germany (low latency, not flagged)
- Optional: a domain pointed to the server (for CDN fallback via Cloudflare)
Commands
| Command | Description |
|---|---|
meridian setup [IP] |
Deploy proxy server (interactive wizard if no IP) |
meridian setup IP --xhttp |
Deploy with XHTTP transport (enhanced stealth) |
meridian client add NAME |
Add a named client key |
meridian client list |
List all clients |
meridian client remove NAME |
Remove a client key |
meridian server list |
List managed servers |
meridian check [IP] |
Pre-flight validation (ports, SNI, ASN, DNS) |
meridian scan [IP] |
Find optimal SNI targets on server's network |
meridian ping [IP] |
Test proxy reachability from this device |
meridian diagnostics [IP] |
Collect info for bug reports |
meridian uninstall [IP] |
Remove proxy from server |
meridian self-update |
Update CLI |
Architecture
Standalone mode — Xray on port 443. No domain needed.
Domain mode — HAProxy routes by SNI: Reality traffic goes to Xray, everything else to Caddy (auto-TLS). Adds VLESS+WSS through Cloudflare CDN as a fallback.
Client apps
After setup, connect with any of these apps:
| Platform | App |
|---|---|
| iOS | v2RayTun |
| Android | v2rayNG |
| Windows | v2rayN |
| All platforms | Hiddify |
Docs
Full documentation, interactive command builder, and setup guides:
meridian.msu.rocks · Connection page demo
Feedback
Not connecting? Run meridian ping to check if the server is reachable, or use the web-based ping tool.
Something else not working? Get instant AI-powered help:
meridian diagnostics --ai # copies an AI-ready prompt to clipboard
Paste the prompt into ChatGPT, Claude, or any AI assistant for personalized troubleshooting.
Or open an issue with meridian diagnostics output.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meridian_vpn-3.0.1.tar.gz.
File metadata
- Download URL: meridian_vpn-3.0.1.tar.gz
- Upload date:
- Size: 189.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e543a18a758ae2c111070f882468b85cf33bba8a9938ca1698c9537747694a70
|
|
| MD5 |
0d6ff1c19ce3c5dc86b110ccf942632f
|
|
| BLAKE2b-256 |
342fa76cf721a4b58e1cfebe609fa91a36bec30e97069275c33d2f203c82b03e
|
Provenance
The following attestation bundles were made for meridian_vpn-3.0.1.tar.gz:
Publisher:
release.yml on uburuntu/meridian
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_vpn-3.0.1.tar.gz -
Subject digest:
e543a18a758ae2c111070f882468b85cf33bba8a9938ca1698c9537747694a70 - Sigstore transparency entry: 1154471028
- Sigstore integration time:
-
Permalink:
uburuntu/meridian@9f39ad34d6b0f220c350ccad2894136e1cd32d84 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/uburuntu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9f39ad34d6b0f220c350ccad2894136e1cd32d84 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file meridian_vpn-3.0.1-py3-none-any.whl.
File metadata
- Download URL: meridian_vpn-3.0.1-py3-none-any.whl
- Upload date:
- Size: 104.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f16b98abc119d578db54f743ffab53ce8dd6032e09df83d6cd0a6e1f9a65941f
|
|
| MD5 |
c9f6e954b8697907cd611fcb8857ee23
|
|
| BLAKE2b-256 |
08ccaee3be3425e64f7bd29c0fe1296566619300dd8a2215882c6b73cb5c57d7
|
Provenance
The following attestation bundles were made for meridian_vpn-3.0.1-py3-none-any.whl:
Publisher:
release.yml on uburuntu/meridian
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_vpn-3.0.1-py3-none-any.whl -
Subject digest:
f16b98abc119d578db54f743ffab53ce8dd6032e09df83d6cd0a6e1f9a65941f - Sigstore transparency entry: 1154471029
- Sigstore integration time:
-
Permalink:
uburuntu/meridian@9f39ad34d6b0f220c350ccad2894136e1cd32d84 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/uburuntu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9f39ad34d6b0f220c350ccad2894136e1cd32d84 -
Trigger Event:
workflow_run
-
Statement type: