-
-
Notifications
You must be signed in to change notification settings - Fork 2
Subscriptions
m-ui assigns a random 16-character lowercase alphanumeric token to each effective Username. Clients that share the same Username across multiple inbounds are collected into the same subscription.
The normal browser URL is:
https://example.com:port/<subscription-path>/<username-token>
Opening this URL in a browser displays a subscription page with usage, quota, expiry, last-online information, individual node links, and enabled client formats. A non-browser client requesting the bare URL receives a Base64 list.
Open Panel Settings → Subscription.
Leave this blank to serve subscriptions on the panel port. Set a dedicated port to move public subscription routes to a separate listener. Generated subscription URLs use that port.
The dedicated listener serves subscriptions only. It does not expose the panel, API, Multi-control, or inbound-sync endpoints. Open the new port in the firewall and reverse proxy if required.
On first startup, m-ui generates /sub followed by 16 lowercase letters/digits. You can enter a valid value or use the button beside the field to generate a new one. Changing this path immediately invalidates previously distributed normal subscription URLs after the panel is restarted/applied.
The default suffix is:
/clash
Appending it returns native Mihomo/Clash YAML:
https://example.com:port/<subscription-path>/<username-token>/clash
This must be /isub followed by exactly 16 lowercase letters/digits, for example:
/isub4ad5kaf479afnbj2
The bare cross-panel URL opens the subscription page; /clash returns the aggregated Mihomo YAML. See Multi-control.
Use Manage Tokens to view or regenerate the token for a Username. Regeneration invalidates the old URLs for that Username. Tokens are removed when their Username no longer exists in any inbound.
The Client Subscription Conversion section controls which suffixes are available. Disabled suffixes return 404 and disappear from the browser subscription page.
Available conversions include:
| Client/format | Suffix | Output |
|---|---|---|
| Mihomo / Clash | /clash |
YAML |
| Sing-box | /sing-box |
JSON |
| V2Box | /v2box |
Base64 links |
| V2RayNG | /v2rayng |
Base64 links |
| V2RayTun | /v2raytun |
Base64 links |
| Npv Tunnel | /npvtunnel |
Base64 links |
| HApp | /happ |
Base64 links |
| Shadowrocket | /shadowrocket |
Base64 links |
| Streisand | /streisand |
Base64 links |
| Surge | /surge |
Surge configuration |
| Surge Mac | /surgemac |
Surge Mac configuration |
| Surfboard | /surfboard |
Surfboard configuration |
| Loon | /loon |
Loon configuration |
| Quantumult X | /qx |
Quantumult X configuration |
| Stash | /stash |
Stash configuration |
| Egern | /egern |
Egern configuration |
Common formats are enabled by default; less common conversions may require manual activation. Protocol support depends on what each target client can represent. Unsupported inbound/client combinations are omitted rather than emitted as knowingly invalid profiles.
m-ui sends standard metadata headers including:
Subscription-Userinfo
Profile-Title
Profile-Update-Interval
Traffic and expiry are aggregated for all matching clients. If any matching client is unlimited, the combined total is reported as unlimited; if any has no expiry, the combined subscription has no expiry.
Open Inbounds → General Actions → Export All Subscriptions to list each Username's bare browser subscription URL. Use the Copy or Download button to distribute the list. Client-specific suffixes are intentionally not appended in this export.
m-ui uses X-Forwarded-Host and X-Forwarded-Proto when composing public links. Forward these headers from Nginx/Caddy. Also set Listen Domain when you want generated links to use a stable public hostname.
When a dedicated subscription port is used, that port becomes part of generated links even if the panel itself uses another port. If a reverse proxy maps the service to a different public port, verify generated URLs and proxy headers carefully.
A subscription token grants access to that Username's connection details. Treat it as a password:
- Send it only over HTTPS.
- Do not paste it into public issue reports or screenshots.
- Regenerate it after accidental disclosure.
- Restrict the subscription port with a reverse proxy or firewall when appropriate.