Skip to content

Subscriptions

RomanovCaesar edited this page Sep 11, 2026 · 2 revisions

English | 简体中文

How subscriptions work

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.

Subscription settings

Open Panel Settings → Subscription.

Subscription Service Port

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.

Subscription Path

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.

Clash / Mihomo Path

The default suffix is:

/clash

Appending it returns native Mihomo/Clash YAML:

https://example.com:port/<subscription-path>/<username-token>/clash

Cross Panel Subscription Path

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.

Subscription Tokens

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.

Client conversion suffixes

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.

Subscription headers

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.

Exporting all URLs

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.

Reverse proxy notes

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.

Security

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.

Clone this wiki locally