-
-
Notifications
You must be signed in to change notification settings - Fork 2
Common questions and problems
Note
This page covers m-ui-specific checks first. For general Linux, firewall, DNS, and SSH problems, use your distribution's documentation as well.
Check the service and settings:
m-ui status
m-ui settings
m-ui logsConfirm that the firewall allows the configured panel port and that the URL contains the generated URI path. If the panel uses HTTPS, use https:// and verify the certificate paths.
If the panel is listening only on loopback, set Panel Settings → General → Listen IP to the intended interface and restart m-ui.
On the server, run:
m-ui reset-credentialsEnter a new username/password or leave fields blank to generate them. Save the printed credentials.
The old URL stops working after the path is changed. Read the current setting with m-ui settings. The printed path includes the leading and trailing slash.
Check that the certificate covers the hostname and that the certificate/key paths are both configured. For an ACME-managed certificate, use m-ui ssl list. Apply an existing pair with m-ui ssl set, then restart m-ui. If TLS terminates at Nginx or Caddy, configure the proxy certificate there and forward X-Forwarded-Proto.
Use Cloudflare DNS validation instead of HTTP-01:
m-ui ssl cloudflareThe domain must use Cloudflare DNS. Prefer a scoped API Token with Zone:DNS:Edit and Zone:Zone:Read, limited to the target zone.
Click Test Current Config, inspect the raw YAML, and read m-ui logs. Common causes are:
- duplicate inbound names
- a port used by the panel, API, subscription service, or another inbound
- an outbound group referring to a missing proxy
- a WARP rule without a valid WARP WireGuard outbound
- invalid TLS/Reality key material
- a core path that is not executable
Saving writes panel state and regenerates config.yaml; it does not reload a running core. Click Restart Mihomo after saving.
Ensure the YAML contains a name and valid Mihomo type. The editor accepts a single node, a sequence, or proxies/proxy-groups documents. Switching between Form and YAML does not apply incomplete drafts; validation occurs when Apply/Save is clicked.
Sharing-link conversion is local and does not fetch remote subscription URLs. Check that the link scheme is supported by the converter.
WARP registration uses Cloudflare's consumer API. Check DNS, outbound Internet access, and the panel log. If the account exists but the outbound is missing, open WARP and click Add Outbound, then Save and Restart Mihomo.
Check all of the following:
- the URL uses the current Subscription Path
- the Username token has not been regenerated
- the required client conversion is enabled
- the client still exists in at least one enabled inbound
- a dedicated subscription port is reachable
The normal browser page has no client suffix. Add /clash only for Mihomo/Clash YAML.
The port must differ from the panel, API, mixed, and inbound ports. Open it in the firewall and reverse proxy. The subscription listener serves subscriptions only; panel login and Multi-control remain on the panel port.
Verify:
- both panels have local node addresses configured
- the target endpoint contains only scheme, host/IP, and panel port
- the pairing token is 16–32 lowercase alphanumeric characters containing letters and digits
- cloud and host firewalls allow panel-to-panel TCP access
- HTTPS certificates match the peer hostname
- the reverse proxy forwards
/_m-ui/peer/v1 - both server clocks are synchronized
The hidden panel URI path is not part of the peer endpoint. The dedicated subscription port cannot be used for pairing.
Inspect its error and last-seen fields. Offline peers are retried automatically, but m-ui cannot bypass NAT or provider firewalls. The advertised local address must be reachable from the other server, not merely from your browser.
success means the target saved the inbound and generated YAML. Restart Mihomo on the target. Check target-side port conflicts, listen IPs, certificates, outbound names, and firewall rules.
Cross-panel data is cached by design. Run Pull all inbound information again. If a peer is unavailable, its last successful cache is retained. Use Clear remote cache only when you want to remove all non-local cached sources.
Forward these paths to the panel listener, not the subscription listener:
/_m-ui/peer/v1
/_m-ui/peer/inbound/v1
Preserve Host and forwarded headers and do not prepend the hidden panel path.
Inspect data and journal usage:
du -sh /usr/local/m-ui/data
journalctl --disk-usageRemove obsolete backups and use m-ui clear-logs for service logs. Do not delete state.json or config.yaml while the service is running.
The installer uses GitHub Releases and raw GitHub files. Check DNS, IPv4/IPv6 reachability, proxies, and timeouts. You can supply a local binary with MUI_BINARY_PATH; Mihomo still needs a compatible core unless --skip-mihomo is used.
m-ui update-menu refreshes only the shell management script. Use m-ui update to download a new m-ui binary.
Include the m-ui version, Mihomo version, operating system/architecture, sanitized error, and smallest reproducible configuration. Remove passwords, UUIDs, subscription/pairing tokens, certificates, private keys, public IPs, and domains before posting.