Skip to content

Remote Servers

Servers page screenshot

Servers — every server is a card with status / connection / Xray & Nginx state / live speed / traffic / one-click actions

MiaoMiaoWu X uses a Master-Agent architecture. The master talks to the Agent on each remote server over the network to install, configure and manage Xray/Nginx remotely. The “Servers” page is the overview of all Agent servers. The toolbar offers card / list view, hide IP, add server, join shared server, traffic-stat servers and one-click Agent upgrade; the online / offline counts sit on the right.

Server card screenshot

An online embedded-Xray server card (with “Hide IP” on)

Area Meaning
Title row Green dot = online, red = offline; drag handle reorders cards; × deletes the server
Status badges “Online”, lock icon (encrypted master↔Agent channel), steal-self mode (Default / Tunnel / Fallback), Xray mode (Embedded / External)
Three icon buttons Share server (PRO), scan remote services (re-scan Xray / Nginx and sync inbounds), edit server
Address row Public IPv4 / IPv6 (click the counter to switch), “Auto” dropdown for connection mode, WS badge for WebSocket, Xray / Nginx badges (click Nginx to start / restart)
Version badge Agent version; a red dot means an update is available, click to upgrade this Agent
Live speed / traffic System NIC live up/down; used / limit for the current billing period with a colored bar; “Reset” resets the billing period
Last heartbeat Last report time from the Agent, used to detect offline
Xray Config / Agent Opens the Xray management dialog (config / inbounds / outbounds / routing / service control); the Agent menu is described below
  1. Open “Servers” and click “Add Server”
  2. Enter a name and the server address (domain or IP; with a domain, nodes use the domain as their address)
  3. Adjust Agent port, traffic limit, reset day, IPv6, Xray mode, traffic counting rule and data source as needed
  4. Turn on “Steal self” and fill in the domain and site type if you want REALITY steal-self
  5. Click “Generate Token”; the system generates the Server Token and shows the install command and Docker environment variables
  6. Run the command on the remote server to deploy the Agent

Add remote server dialog screenshot

Add remote server dialog

Install command after token generation screenshot

After generating the token: one-click install command (with token / listen_port / xray_mode) and Docker environment variables

Field Description
Server address / DDNS Domain or IP. With a domain, nodes use it; with DDNS on, the master updates the record to the IP reported by the Agent
Agent port Local management API port, default 23889; hidden while a WebSocket connection is active
Agent auth token Credential the master uses for the Agent API; auto-generated when empty
Traffic limit / used / reset day Monthly quota, used amount for calibration, monthly reset day; empty limit = unlimited
Enable IPv6 When off, the v6 address is hidden and cannot be selected when adding nodes
Xray mode External: standalone Xray controlled via gRPC; Embedded (PRO): xray-core inside the Agent with rate limits, device limits, Snell, AnyTLS
Traffic counting rule Up + Down / Up only / Down only / Max(up, down). Only affects this server’s node traffic; user traffic follows package rules
Traffic data source Xray protocol traffic (default) or system NIC traffic, see below
Steal self After the Agent installs, Xray + Nginx are installed and port 443 is taken over in Tunnel / Fallback mode; needs domain and site type

Add server dialog with steal-self on screenshot

Fields revealed by “Steal self”: front end, deploy mode, port 443, domain, site type

Two deployment options: one-click script (bare metal + systemd) or the Docker image (embedded xray + nginx, host network required). Commands and caveats: Install Agent.

Turn on “Monitor only (do not install Xray)” when adding a server and only the Agent is installed, for monitoring: online status, NIC traffic, speed and — once added to the probe page — CPU / memory / disk and latency. Xray is neither installed nor managed.

  • Counts toward the quota: a monitor-only server uses one server slot like any other. When the total exceeds the license quota, servers later in the list lose Xray authorization; drag to reorder the list.
  • What it cannot do: create nodes or be shared with another master.
  • Forward groups are allowed: no restriction as an entry or relay; as the last hop of a chain it can only forward to a specified landing node (it has no Xray, so no landing inbound can be created on it). See Forwarding.
  • Installing Xray later: choose “Convert to full server” in the card’s Agent menu; the Agent switches mode and restarts.

The pencil icon on the card opens the edit dialog. Besides the fields from creation it adds:

Edit remote server dialog screenshot

Edit remote server: lock entry IP, server domain, random port range, IPv6 domain, probe display info

Field Description
Lock node entry IP Ignore domain and DDNS and always use the IP from the server address. For NAT servers with a fixed entry and dynamic exit
Server domain (optional) Nodes use the domain instead of the IP
Random port range Auto-assigned inbound ports must fall inside; leave both empty or 0 for no limit
IPv6 domain Used by default when creating IPv6 nodes; empty = IPv6 address
Agent port Changing it makes the Agent update its config and restart; empty restores 23889
Probe display info Shown on the public probe page: region (auto via IPInfo), renewal price and cycle, provider name and URL, expiry

Click the “Auto” dropdown on the card:

Connection mode menu screenshot

Connection mode: Auto / WebSocket / HTTP / Pull

The Agent connects to the master and keeps a long-lived connection. Real-time bidirectional communication with scan-result push; the Agent’s local port is closed while connected (port hiding).

The master calls the Agent HTTP API directly. The Agent port (default 23889) must be reachable from the master.

The Agent periodically pulls commands from the master. For NAT or restricted firewalls.

Tries WebSocket → HTTP → Pull in order and picks the best available.

The “Agent” button at the bottom of the card collects Agent operations:

Agent menu screenshot

Agent menu: sync nodes, sync node addresses, config history, push default config, websites, upgrade Agent, uninstall Agent

Item Purpose
Sync nodes Re-scan the server’s Xray inbounds and sync them to the node table (new inbounds become nodes)
Sync node addresses Rewrite every node’s address on this server to the current domain / IP, handy after changing domains
Config history Every Xray config snapshot saved by the master; preview any version or push it back to the Agent (xray test runs first)
Push default config Overwrite the Agent config with the master’s default Xray config, to repair a broken config
Websites Manage Nginx sites deployed on this server, see Nginx Websites
Upgrade Agent Upgrade this Agent to the latest version
Uninstall Agent Remove the Agent from the server

Config history dialog screenshot

Config history: every master change and Agent report leaves a snapshot with hash and source; preview / push

“Xray Config” opens the Xray management dialog with four tabs for the config file, inbounds, outbounds and routing, plus start / stop / restart and the running state:

Xray management dialog screenshot

Xray management → Config: service control, metrics / stats / gRPC status, editable full config

The tabs are described in Xray Service, Xray Inbounds, Xray Outbounds and Xray Routing.

Each server has two tokens:

  • Server Token: used by the Agent to connect to the master
  • Agent Token: used by the master to call the Agent API

Both can be reset in the edit dialog. After a reset the Agent receives the new token over WebSocket automatically.

Status Meaning
connected Agent connected, manageable
disconnected Agent disconnected
pending Waiting for the first connection

With many servers switch to list view, one row per server; “Hide IP” masks every IP on the cards for screenshots or demos (the screenshots on this page have it on).

Servers list view screenshot

List view

“Traffic-stat servers” chooses which servers feed the admin home page totals:

Traffic-stat servers dialog screenshot

Traffic-stat servers: total / used / remaining / live speed / daily trend on the home page only aggregate the ticked servers; per-server details are unaffected

The “used traffic” and quota on the Servers page support two data sources, chosen with “Traffic data source” in the add / edit dialog. The default is “Xray protocol traffic”; switch to “System NIC traffic” to match the VPS provider’s bill:

Read by the Agent from /proc/net/dev (physical NIC RX / TX totals), including Xray forwarding, SSH, system updates, monitoring reports and tunnel overhead. Usually closest to the provider’s meter, though sampling may still differ. Excludes virtual NICs such as WARP / Tailscale / Docker / WireGuard.

Aggregates the server’s Xray inbound + outbound counters from node_traffic, counting only traffic through Xray. The node view additionally attributes users, splits routed child nodes and deducts parents, so the two pages need not match.

The “traffic counting rule” (up / down / both / max) applies to both sources.

The card’s live upload/download speed always comes from the system NIC regardless of source or rule.

Node view, user view and package threshold enforcement always use the Xray dimension (NIC traffic cannot be split by tag or user).

Servers cards, home totals, traffic info and the public probe do not share the same time range. Formulas and per-page differences: Traffic Accounting.

When a new version is released the version badge shows a red dot. Click it to upgrade that server; “Upgrade Agents” at the top upgrades every server with a newer version at once, no SSH needed. The Agent restarts during the upgrade.

Upgrade single Agent confirmation screenshot

Upgrade one Agent: current vs latest version

Upgrade all Agents confirmation screenshot

One-click upgrade: shows how many servers can be upgraded

You can share one of your servers with someone else’s master so they can manage it from their panel (create inbounds, nodes) without handing over the Agent token.

Click the share icon on the card, “Generate share token” and hand the “owner address + share token” to the other side. By default the receiver can only manage inbounds they created and cannot see other inbounds or the full Xray config.

Share server dialog screenshot

Share server: generate a token, optionally allow the receiver to view / edit the full Xray config

Click “Join shared server” at the top and enter the owner address and share token. The server appears as a federated server in your list, its status refreshed from the owner; inbounds / nodes / Tunnel management all work.

Join shared server dialog screenshot

Join shared server: owner address, share token, server name, inbound prefix

Full details: Server Sharing. Master↔Agent and master↔master federation traffic use an encrypted channel (key exchange + session cache); token rotation does not interrupt management.