Skip to content

Quick start ​

This page gets your first node running. Start with VLESS REALITY: it needs no domain and no certificate, and it is currently the least fuss with strong censorship resistance. Xray, sing-box and mihomo all run REALITY, so pick any one of them; if you use Surge, you can create a Snell node instead.

1. Install PSM ​

Log in to the VPS as root and run:

bash
bash <(curl -fsSL https://psm.jinqians.com)

Then run psm to see the main menu:

PSM main menu

2. Install a core ​

The three cores can be installed side by side. If you are unsure, take Xray; how they differ: Xray / sing-box / mihomo.

Xray ​

In the main menu choose 4 (Xray), then 1 (Install). REALITY, Vision and XHTTP come from Xray, and it counts traffic per user.

Xray menu

sing-box ​

In the main menu choose 2 (sing-box), then 1 (Install), and pick a version when asked (the stable one is recommended). sing-box has the most protocols: Hysteria2, TUIC, AnyTLS, Snell and WireGuard are all here.

sing-box menu

mihomo ​

In the main menu choose 3 (mihomo), then 1 (Install). mihomo (formerly Clash.Meta) also runs REALITY, Hysteria2, TUIC, AnyTLS and Snell, and can add ShadowTLS.

mihomo menu

Snell ​

Snell is Surge's protocol, and there are two ways to run it:

  • Recommended: the standalone Snell. In the main menu choose 5 (Snell), then 1 (Install); this runs the official snell-server installer, which asks for the version and port. Afterwards 2 (Show config / Surge URI) gives you the config. On Alpine the standalone Snell runs in Docker.

    Snell menu

  • A Snell node on sing-box or mihomo. With either core installed, the next step creates it in one command (sing-box speaks v5 / v6, mihomo v4 / v5).

3. Create your first node ​

REALITY needs a camouflage target: a real website that speaks TLS 1.3, and not one behind a CDN (why: Choosing a protocol). Choose 4 (Nodes) in the core's menu and follow the prompts, or in one command:

bash
psm node add xray reality --tag my-reality --port 443 \
  --server-name TARGET --dest TARGET:443
bash
psm node add sing-box reality --tag my-reality --port 443 \
  --server-name TARGET --dest TARGET:443
bash
psm node add mihomo reality --tag my-reality --port 443 \
  --server-name TARGET --dest TARGET:443
bash
psm node add sing-box snell --tag my-snell --port 6160 --version 5

PSM first tries a real handshake with the target through the core itself; if it fails, you are told, and no broken node gets created. UUIDs, keys and passwords are generated for you.

bash
psm node export xray reality my-reality

prints a link starting with vless:// (for the other cores, replace xray with sing-box or mihomo):

Share link printed by psm node export

In the core's menu, 12 (View node links and QR codes) also shows the QR code; scan it with a phone client to import:

QR code of the REALITY node

Snell has no standard share link; it uses one line of Surge config. For the standalone Snell, get it from 2 (Show config / Surge URI) in the Snell menu; a sing-box / mihomo Snell node is exported with a command:

bash
psm node export sing-box snell my-snell

Surge config exported for the Snell node

5. Import it into a client ​

PlatformCommon clientsHow
Windowsv2rayN, Clash Verge Revcopy the link, then "import from clipboard"
macOSClash Verge Rev, sing-box, Surgesame; for Snell, paste the line into Surge's [Proxy] section
Androidv2rayNG, NekoBox, sing-boxscan the QR code or import from clipboard
iOSShadowrocket, Stash, sing-box, Surgescan the QR code; Snell goes into Surge the same way

Select the node, turn the proxy on, and open any website to check.

Next ​

Released under the AGPL-3.0 license · For lawful use only; follow the laws where you live