Skip to main content

Hosts

A host is the entry point the client sees. The user imports a subscription link, the app receives a list of hosts, and it connects to the address specified in them. A host links an inbound of a config profile, nodes, and connection parameters.

Why hosts are needed​

The same inbound can be served by different hosts: for example, "Finland" and "Germany" point to different sets of nodes. The client sees hosts as separate connections and switches between them.

  • a host without nodes, or with disabled nodes, is useless to the user;
  • a host is served only to those users whose internal squad contains the inbound of that host;
  • a disabled (isDisabled) host does not make it into the subscription.

Binding to inbounds​

In the host form, first select an inbound — one inbound per host:

{
"inbound": {
"configProfileUuid": "00000000-0000-0000-0000-000000000000",
"configProfileInboundUuid": "11111111-1111-1111-1111-111111111111"
},
"nodes": ["22222222-2222-2222-2222-222222222222"]
}

The default port is inherited from the inbound, but you can override it. If the inbound is removed from the profile, the host stops being served — this is visible in the host list.

Address, port, and SNI​

FieldPurpose
addressIP or domain the client connects to. A domain is preferable: when the IP changes, it is enough to update DNS
portconnection port; by default it matches the inbound port
sniserver name for TLS/REALITY. Empty — the value from the inbound is used
hostthe value of the Host header or serverName where it is needed
pathpath for WebSocket, gRPC, XHTTP
securityLayerDEFAULT (as in the inbound), TLS, or NONE
alpnh3, h2, http/1.1, or combinations of them
fingerprintTLS client fingerprint: chrome, firefox, safari, randomized, and others
overrideSniFromAddresssubstitute SNI from address
keepSniBlankkeep SNI empty
pinnedPeerCertSha256, verifyPeerCertByNameserver certificate verification

The fields xhttpExtraParams, muxParams, sockoptParams, and finalMask are fine-grained transport settings; fill them in only if you know what you are doing.

Use in subscriptions​

FieldEffect on the subscription
remarkthe connection name the user sees
isDisabledthe host is excluded from the output
isHiddenthe host is not shown in the browser view of the subscription but stays in the client configuration
shuffleHostrandom host order
excludeFromSubscriptionTypesexclude the host from specific formats, for example only from MIHOMO
xrayJsonTemplateUuida custom Xray JSON template for this host
serverDescriptionserver label for "extended" clients
mihomoX25519, mihomoIpVersionMihomo parameters
internalSquads.moderestricting the host by squads: EXCLUDE or ALLOW_ONLY
mappermapping values from the inbound into the client config
tip

ALLOW_ONLY requires selecting at least one internal squad — otherwise the form will not save. See Squads for how this works.

warning

When you change address or sni, verify the result in the client: some apps cache the subscription and do not refresh it immediately.

What's next​

  • Squads — who can access which hosts.
  • Templates — the form in which hosts reach the client.
  • Nodes — the servers behind the hosts.
  • Clients — supported apps.