Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,207 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoaV logo

Mother of all VPNs

Multi-protocol Internet censorship circumvention stack, optimized for hostile network environments.

Website Docs Release Pre-release

Protocols moav-client AI agents Telegram X

License: MIT Stars Forks Last commit

🇬🇧 English  ·  🇮🇷 فارسی

Built and maintained by the MoaV community.


Why MoaV exists

No single transport survives every censor. A protocol that works this morning can be fingerprinted by the afternoon, and the person depending on it has no way to know in advance which one will hold.

So MoaV ships many at once, from the same server and the same user bundle. When one path stops working the user switches to another instead of waiting for someone to re-deploy. That is the whole idea; everything else here is in service of it.

Read the Mission, the Threat Model for what MoaV does and does not protect, and the Philosophy for the longer argument.


Table of Contents

Links  ·  Website  ·  Docs  ·  Telegram  ·  moav-client

Get started  ·  Why MoaV exists  ·  Features  ·  Quick Start  ·  Requirements  ·  Running without a domain

Use it  ·  Using MoaV  ·  Client Apps  ·  Documentation

Under the hood  ·  Architecture  ·  Protocols  ·  Project Structure  ·  Security

Help out  ·  Support the project  ·  Community  ·  Related projects

More  ·  License  ·  Changelog  ·  Disclaimer


How it works


Features

  • Multiple protocols — 16+ circumvention transports and fallback paths, plus optional Psiphon, Tor and MahsaNet donation integrations:
    • High-stealth proxy — Reality (VLESS), Trojan, Hysteria2, XHTTP (VLESS+XHTTP+Reality), CDN (VLESS+WS via Cloudflare)
    • Full VPN — WireGuard (direct & wstunnel), AmneziaWG
    • Specialty — TrustTunnel (HTTP/2+QUIC), Telegram MTProxy (fake-TLS), Shadowsocks-2022, GooseRelay (SOCKS5 via Google Apps Script)
    • DNS tunnels — dnstt, Slipstream, MasterDNS, and XDNS — all four run simultaneously on port 53 via dns-router
  • Stealth-first - All traffic looks like normal HTTPS, WebSocket, DNS, or IMAPS
  • Per-user credentials - Create, revoke, and manage users independently
  • Easy deployment - Docker Compose based, single command setup
  • Mobile-friendly - QR codes and links for easy client import
  • Decoy website - Serves innocent content to unauthenticated visitors
  • Home server ready - Run on Raspberry Pi or any ARM64/x64 Linux as a personal VPN
  • Psiphon Conduit - Optional bandwidth donation to help others bypass censorship
  • Tor Snowflake - Optional bandwidth donation to help Tor users bypass censorship
  • MahsaNet - Donate VPN configs to help Mahsa VPN users (2M+ users in Iran)
  • Monitoring - Optional Grafana + Prometheus observability stack

Read the full documentation — setup guides, CLI reference, client apps, monitoring, OPSEC, and more.

Quick Start

One-liner install (recommended):

curl -fsSL moav.sh/install.sh | bash

This will:

  • Install prerequisites (Docker, git, qrencode) if missing
  • Clone MoaV to /opt/moav
  • Prompt for domain, email, and admin password
  • Offer to install moav command globally
  • Launch the interactive setup

Manual install (alternative):

git clone https://github.com/MotherofallVPNs/moav.git
cd moav
cp .env.example .env
nano .env  # Set DOMAIN, ACME_EMAIL, ADMIN_PASSWORD
./moav.sh

MoaV Interactive Menu

After installation, use moav from anywhere:

moav                      # Interactive menu
moav start                # Start services
moav status               # Show service status
moav user add alice       # Add user (generates configs + QR codes)
moav user add --batch 10  # Batch create users
moav donate               # Donate configs to MahsaNet/Psiphon/Snowflake
moav doctor               # Run diagnostics (DNS, ports, services)
moav update               # Update MoaV
moav admin password       # Reset admin/Grafana password
moav help                 # Show all commands

See the Setup Guide for complete instructions, the CLI Reference for all commands, or browse the full documentation.

Deploy Your Own

Deploy on Hetzner Deploy on Linode Deploy on Vultr Deploy on DigitalOcean

Architecture

                                                              ┌───────────────┐  ┌───────────────┐
       ┌───────────────┐                                      │ Psiphon Users │  │   Tor Users   │
       │  Your Clients │                                      │  (worldwide)  │  │  (worldwide)  │
       │   (private)   │                                      └───────┬───────┘  └───────┬───────┘
       └───────┬───────┘                                              │                  │
               │                                                      │                  │
               ├─────────────────┐                                    │                  │
               │                 │ (when IP blocked)                  │                  │
               │          ┌──────┴───────┐                            │                  │
               │          │ Cloudflare   │                            │                  │
               │          │  CDN (VLESS) │                            │                  │
               │          └──────┬───────┘                            │                  │
               │                 │                                    │                  │
┌──────────────╪─────────────────╪────────────────────────────────────╪──────────────────╪─────────┐
│              │                 │          Restricted Internet       │                  │         │
└──────────────╪─────────────────╪────────────────────────────────────╪──────────────────╪─────────┘
               │                 │                                    │                  │
╔══════════════╪═════════════════╪════════════════════════════════════╪══════════════════╪═════════╗
║              │                 │                                    │                  │         ║
║     ┌────────┼─────────────────┼───────┼──────┐                     │                  │         ║
║     │        │         │       │       │      │                     │                  │         ║
║     ▼        ▼         ▼       ▼       ▼      ▼                     ▼                  ▼         ║
║ ┌─────────┐┌─────────┐┌───────┐┌─────────┐┌────────┐          ┌───────────┐      ┌───────────┐   ║
║ │ Reality ││WireGuard││ Trust ││  DNS    ││Telegram│          │           │      │           │   ║
║ │ 443/tcp ││51820/udp││Tunnel ││ 53/udp  ││MTProxy │          │  Conduit  │      │ Snowflake │   ║
║ │ Trojan  ││AmneziaWG││4443/  │├─────────┤│993/tcp │          │  (donate  │      │  (donate  │   ║
║ │8443/tcp ││51821/udp││tcp+udp││  dnstt  │└───┬────┘          │ bandwidth)│      │ bandwidth)│   ║
║ │Hysteria2││wstunnel ││       ││Slipstrm │    │               └─────┬─────┘      └─────┬─────┘   ║
║ │ 443/udp ││8080/tcp ││       │└────┬────┘    │                     │                  │         ║
║ │ CDN WS  │└────┬────┘└───┬───┘     │         │                     │                  │         ║
║ │2082/tcp │     │         │         │         │  ┌────────────────┐ │                  │     M   ║
║ ├─────────┤     │         │         │         │  │ Grafana  :9444 │ │                  │     O   ║
║ │ sing-box│     │         │         │         │  │ Prometheus     │ │                  │     A   ║
║ └────┬────┘     │         │         │         │  └────────────────┘ │                  │     V   ║
║      │          │         │         │         │                     │                  │         ║
╚══════╪══════════╪═════════╪═════════╪═════════╪═════════════════════╪══════════════════╪═════════╝
       │          │         │         │         │                     │                  │
       ▼          ▼         ▼         ▼         ▼                     ▼                  ▼
┌─────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                        Open Internet                                            │
└─────────────────────────────────────────────────────────────────────────────────────────────────┘

Protocols

Protocol Port Stealth Speed Default Use Case
Reality (VLESS) 443/tcp ★★★★★ ★★★★☆ Primary; a strong first choice where it works
Hysteria2 443/udp ★★★★☆ ★★★★★ Fast, works when TCP throttled
Trojan 8443/tcp ★★★★☆ ★★★★☆ Backup, uses your domain
AnyTLS 8445/tcp ★★★★★ ★★★★☆ Defeats TLS-in-TLS fingerprinting, uses your domain
Shadowsocks-2022 8388/tcp+udp ★★★★☆ ★★★★☆ AEAD-2022 anti-probing; Outline-app compatible
CDN (VLESS+WS) 443 via Cloudflare ★★★★★ ★★★☆☆ When server IP is blocked; needs Cloudflare fronting first
TrustTunnel 4443/tcp+udp ★★★★★ ★★★★☆ HTTP/2 & QUIC, looks like HTTPS
WireGuard (Direct) 51820/udp ★★★☆☆ ★★★★★ Full VPN, simple setup
AmneziaWG 51821/udp ★★★★★ ★★★★☆ Obfuscated WireGuard, resists common DPI signatures
WireGuard (wstunnel) 8080/tcp ★★★★☆ ★★★★☆ VPN when UDP is blocked
DNS Tunnel (dnstt) 53/udp ★★★☆☆ ★☆☆☆☆ Last resort, hard to block
Slipstream 53/udp ★★★☆☆ ★★☆☆☆ QUIC-over-DNS, 1.5-5x faster than dnstt
MasterDNS 53/udp ★★★☆☆ ★★★☆☆ Advanced DNS tunnel (ARQ + resolver LB), MahsaNG v16
XDNS (VLESS+mKCP+DNS) 53/udp ★★★☆☆ ★☆☆☆☆ DNS tunnel via Xray FinalMask; all 4 DNS tunnels share port 53
GooseRelay 8444/tcp ★★★★★ ★★☆☆☆ SOCKS5 via Google Apps Script, fronted as google.com, MahsaNG v16
Telegram MTProxy 993/tcp ★★★★☆ ★★★☆☆ Fake-TLS V2, direct Telegram access
XHTTP (VLESS+XHTTP+Reality) 2096/tcp ★★★★★ ★★★★☆ Xray-core, no domain needed
Psiphon Conduit Donate bandwidth to Psiphon (2M+ users)
Tor Snowflake Donate bandwidth to Tor network
MahsaNet Donate VPN configs to Mahsa VPN (2M+ users)

Default = enabled in .env.example. Services still only run under their profile, so moav start conduit is what actually starts Conduit. MahsaNet is an action (moav donate), not a service.

Using MoaV

moav                          # interactive menu over everything below
moav status                   # what's running, which profiles, health at a glance
moav doctor                   # diagnose DNS, ports, certificates, resources
moav logs sing-box            # tail a service

moav user add alice --package # create a user and build their .zip bundle
moav user add --batch 10      # ten at once
moav user list                # who exists
moav user revoke alice        # revoke immediately
moav test alice               # prove alice's configs actually pass traffic

moav start proxy admin        # start specific profiles
moav restart sing-box         # apply an .env change to one service
moav donate                   # donate configs/bandwidth (MahsaNet, Psiphon, Snowflake)

Each user gets outputs/bundles/<username>/ with config files, QR codes and a README.html guide, plus a base64 V2Ray subscription in subscription.txt that imports every proxy protocol at once into MahsaNG, v2rayNG or Hiddify. See the MahsaNG import guide.

To verify a bundle from a client's point of view, moav-client ingests the subscription, probes every endpoint through its own tunnel and routes through whichever is live and fastest.

Dashboards — password for both is set during install (ADMIN_PASSWORD in .env), reset with moav admin password:

URL Login
Admin dashboard https://your-server:9443 any username — only the password is checked
Grafana https://your-server:9444 user admin

Profiles: proxy, wireguard, amneziawg, dnstunnel, trusttunnel, telegram, xhttp, admin, conduit, snowflake, gooserelay, monitoring, all

Moving to a new server: moav export, then on the new host moav import moav-backup-*.tar.gz and moav migrate-ip <new-ip>. Walkthrough in the Setup Guide.

Psiphon Conduit: once conduit is running it already serves Psiphon users through the public pool — nothing to share. moav conduit link prints a private claim link/QR for specific people; it embeds the private key, so share it only via Personal Pairing inside Ryve. See Psiphon Conduit.

Every command, flag and environment variable: CLI Reference.

Client Apps

Platform Recommended Apps
iOS Happ, Streisand, Hiddify, WireGuard, Shadowrocket
Android Happ, v2rayNG, Hiddify, WireGuard, NekoBox
macOS Happ, Hiddify, Streisand, WireGuard
Windows Happ, v2rayN, Hiddify, WireGuard
Linux Hiddify, sing-box, WireGuard

See the Client Setup guide for the complete list and setup instructions, or moav-client (docs) for a desktop/CLI client with automatic failover.

Documentation

Full docs: moav.sh/docs

DeployQuick Start · Setup Guide · VPS Deployment · DNS Configuration

UnderstandSupported Protocols · Architecture · Threat Model · Mission · Philosophy

Connect usersClient Apps · MahsaNG Import · MoaV Client

OperateCLI Reference · Monitoring · Troubleshooting · OPSEC Guide

ContributeDevelopment & Testing · Translating the Docs · Support MoaV

For AI agentsAGENTS.md for working in this repo, llms.txt as a compact index, llms-full.txt for the whole corpus.

Requirements

Server:

  • Debian 12, Ubuntu 22.04/24.04
  • 1 vCPU, 1 GB RAM minimum (2 vCPU, 2 GB RAM if using monitoring)
  • Public IPv4
  • Domain name (optional - see Domain-less Mode below)

Ports (open as needed):

Port Protocol Service Requires Domain
443/tcp TCP Reality (VLESS) No — borrows a public SNI via REALITY_TARGET
443/udp UDP Hysteria2 Yes
8443/tcp TCP Trojan Yes
8445/tcp TCP AnyTLS Yes
8388/tcp+udp TCP+UDP Shadowsocks-2022 No
4443/tcp+udp TCP+UDP TrustTunnel Yes
2082/tcp TCP CDN WebSocket Cloudflare: yes · CloudFront: no
51820/udp UDP WireGuard No
51821/udp UDP AmneziaWG No
8080/tcp TCP wstunnel No
993/tcp TCP Telegram MTProxy No
2096/tcp TCP XHTTP (VLESS+XHTTP+Reality) No
8444/tcp TCP GooseRelay exit (when ENABLE_GOOSERELAY=true) No
9443/tcp TCP Admin dashboard No
9444/tcp TCP Grafana (monitoring) No
53/udp UDP DNS tunnels (dnstt / Slipstream / MasterDNS / XDNS — all share this port) Yes
80/tcp TCP Let's Encrypt Yes (during setup)

Running without a domain

Don't have a domain? MoaV can run in domainless mode with:

  • Reality (VLESS+Reality, primary protocol)
  • XHTTP (VLESS+XHTTP+Reality via Xray-core)
  • WireGuard (direct UDP + WebSocket tunnel)
  • AmneziaWG (obfuscated WireGuard, resists common DPI signatures)
  • Telegram MTProxy (fake-TLS, direct Telegram access)
  • GooseRelay (SOCKS5 over Google Apps Script — no domain needed)
  • Admin dashboard (uses self-signed certificate)
  • Conduit (Psiphon bandwidth donation)
  • Snowflake (Tor bandwidth donation)

Run moav and select "No domain" when prompted, or use moav domainless to configure.

Project Structure

MoaV/
├── moav.sh              # the CLI: argument parsing, then straight into a cmd_* function
├── lib/                 # 15 host-side modules — service, users, bootstrap, doctor,
│                        #   cert, migrate, donate, nettune, dns, peers, menu, …
├── scripts/             # container entrypoints + provisioning
│   ├── *-entrypoint.sh  #   one per service
│   └── lib/             #   shared libraries, mounted into containers as /app/lib
├── configs/             # *.template files (tracked) rendered into *.json/*.conf (gitignored)
├── dockerfiles/         # image builds, one per service
├── exporters/           # Prometheus exporters (sing-box, xray, wireguard, amneziawg, …)
├── dns-router/          # Go daemon fanning port 53 out to the four DNS tunnels
├── admin/               # FastAPI dashboard
├── web/                 # decoy website
├── data/                # protocols.json — the protocol roster, source of truth
├── tests/               # the regression suite, named after the bug class each pins
├── docs/devdocs/        # contributor docs (the user docs live in moav-site)
├── docker-compose.yml
└── .env.example         # annotated config reference; commonly-changed vars up top

moav.sh is a dispatcher — the logic lives in lib/. outputs/ (user bundles) and state/ (keys) are generated and gitignored.

Security

  • All protocols require authentication
  • Decoy website for unauthenticated traffic
  • Per-user credentials with instant revocation
  • Minimal logging (no URLs, no content)
  • TLS 1.3 everywhere

Container privileges. Docker API access is confined to a filtered socket proxy on a management-only network, and the monitoring exporters read published state files instead of the socket. The one accepted exception is cAdvisor (optional monitoring profile): per-container CPU/memory/disk stats require privileged mode with read-only host mounts, which is its upstream deployment mode. If that trade-off is not acceptable, run without the monitoring profile.

See the OPSEC guide for security guidelines.

Support the project

Run a server. The highest-leverage thing you can do. Every MoaV server is capacity that did not exist before — for your family, your colleagues, or people you will never meet. Nobody runs infrastructure on your behalf; the network is the people running servers. A $5/month VPS or a Raspberry Pi is enough.

Donate capacity you already have. Relay for other circumvention networks without having users of your own — moav start conduit (Psiphon) and moav start snowflake (Tor), both opt-in and capped. Or donate configs to MahsaNet with moav donate, which hands them to users in Iran who cannot set up a server.

Contribute or translate. Bugs, protocols, packaging, docs — see Development & Testing. Translation is the most useful non-code contribution: the docs are scaffolded for Farsi and Russian and one page is a complete contribution (how to translate). Bug reports count too — a reproducible report with moav doctor output is often more work than the fix.

Never paste bundles, .env contents or share links into an issue — they contain live keys.

Fund the infrastructure. Test servers for the end-to-end suite, domains, build capacity. Not salaries.

Platform Link
GitHub Sponsors github.com/sponsors/shayanb
Buy Me a Coffee buymeacoffee.com/pangana
Coin Address
Bitcoin (BTC) bc1p6rpwzkgrlvpkre0n94fqayafpw47kl2j5lmvhvl0rfrtzm94wvvsmd3w5s
Ethereum (ETH) ¹ 0xB4D06BDb0C2f1D81E0b0b805Ed813F4ffe960aE2
Monero (XMR) 8BmduJgZLok9xiaX8FboSWBBbzYAugqLxUts7eZNsF2x9QDhk3Ua7iwQufBBNB8VFzcMEMAE1Uo6PjQvAYNYHmXsBRbqQqG
Zcash (ZEC) u1pclheucppc87qlffh9m8wjfw87w2nka40w9nxjuqnyppj0kx9xp7z9rg6wx556662y5f8dtfyeynmm2lnz5aqvaqzmnpajlq0mnmkntdqzqqegk8lwv09cnudf3ttzm3878p3030j3lwupj257rmmv9p3ea32hgwsuf3jdh8ycv7q587
Lightning lno1zrxq8pjw7qjlm68mtp7e3yvxee4y5xrgjhhyf2fxhlphpckrvevh50u0q0zdgjjahpdv7tnd9vstumyrw43snsmfmlzv0pgkqrjkgy48tsne6qsr0k64d8rz4k394pmre2rgnmstdxqsfj0w4dsmq2ec73ssek5wzqtqqv7argu9ptk09h9vfvvvham5xnwe306zjw6lptxx0d2yfk5rlvznjwefmsrmmpu8qnkqmghe0v96c8qy3m3nqgm977ay8f5p6k2d2ll2j3knnc8c4s6haufe203jx4ufy8z25tsscqqseg8jzh2qykejnc9sp2v4qm3z2q
Lightning Address shayan@bitrefill.me
Tron ² TBSCbnTZCELrMnioobZMkah5r9qS6B1tC6

¹ Ethereum (ETH) — same address on every EVM chain (Arbitrum, Optimism, Base, Gnosis…) and any ERC20 (USDC, USDT, DAI…)

² Tron — TRX and TRC-20 only — not interchangeable with the EVM address

Addresses are generated from .github/FUNDING.yml, the single source of truth, so what you see here is whatever that file says. Take them from this page or the repository over HTTPS and check the first and last characters after pasting. We will never DM you an address.

Community

Related projects

MoaV is a deployment layer. The protocol work belongs to these projects:

Companion clientmoav-client: desktop/CLI client that ingests a MoaV subscription, probes every endpoint through its own tunnel and routes through whichever is live and fastest (docs).

Protocol engines

Project What MoaV uses it for
sing-box Reality, Trojan, AnyTLS, Hysteria2, Shadowsocks-2022, CDN VLESS+WS
Xray-core XHTTP and XDNS
REALITY the TLS camouflage Reality and XHTTP are built on
AmneziaWG · tools DPI-resistant WireGuard
WireGuard the direct UDP VPN
wstunnel WireGuard over wss:// when UDP is blocked
TrustTunnel · client HTTP/2 + QUIC transport
telemt Telegram MTProxy (fake-TLS)
dnstt the original DNS tunnel
Slipstream QUIC-over-DNS
MasterDNS ARQ + resolver load-balancing DNS tunnel
GooseRelay SOCKS5 over Google Apps Script

Networks you can donate capacity to

Project
Psiphon Conduit relay for Psiphon users
Tor Snowflake relay for Tor users
MahsaNet · MahsaNG config donation and the client most Iranian users have

MonitoringPrometheus, Grafana, node_exporter, cAdvisor.

Pinned versions for all of these live in .env.example.

License

MIT

Changelog

See CHANGELOG.md for release notes and version history.

Stars over time

MoaV star history

Every star helps someone else find a way through. Thank you.


Disclaimer

This project provides general-purpose open-source networking software only.

It is not a service, not a platform, and not an operated network.

The authors and contributors:

  • Do not operate infrastructure
  • Do not provide access
  • Do not distribute credentials
  • Do not manage users
  • Do not coordinate deployments

All usage, deployment, and operation are the sole responsibility of third parties.

This software is provided “AS IS”, without warranty of any kind.
The authors and contributors accept no liability for any use or misuse of this software.

Users are responsible for complying with all applicable laws and regulations.

Releases

Sponsor this project

Contributors

Languages