# Hysteria2 - sing-box
The universal proxy platform.
Author: nekohasekai

Skip to content

# Hysteria2

Changes in sing-box 1.14.0

hop_interval_max
bbr_profile
realm

Changes in sing-box 1.11.0

server_ports
hop_interval

### Structure

    {
      "type": "hysteria2",
      "tag": "hy2-out",

      "server": "127.0.0.1",
      "server_port": 1080,
      "server_ports": [
        "2080:3000"
      ],
      "hop_interval": "",
      "hop_interval_max": "",
      "up_mbps": 100,
      "down_mbps": 100,
      "obfs": {
        "type": "salamander",
        "password": "cry_me_a_r1ver"
      },
      "password": "goofy_ahh_password",
      "network": "tcp",
      "tls": {},

      ... // QUIC Fields

      "bbr_profile": "",
      "brutal_debug": false,
      "realm": {
        "server_url": "https://realm.example.com",
        "token": "",
        "realm_id": "",
        "stun_servers": [],
        "http_client": {}
      },

      ... // Dial Fields
    }

You can ignore the JSON Array [] tag when the content is only one item

Difference from official Hysteria2

The official Hysteria2 supports an authentication method called userpass, which essentially uses a combination of `<username>:<password>` as the actual password, while sing-box does not provide this alias. If you are planning to use sing-box with the official program, please note that you will need to fill the combination as the password.

### Fields

#### server

Required

The server address.

Conflicts with `realm`.

#### server_port

Required

The server port.

Ignored if `server_ports` is set.

Conflicts with `realm`.

#### server_ports

Since sing-box 1.11.0

Server port range list.

Conflicts with `server_port` and `realm`.

#### hop_interval

Since sing-box 1.11.0

Port hopping interval.

`30s` is used by default.

#### hop_interval_max

Since sing-box 1.14.0

Maximum port hopping interval, used for randomization.

If set, the actual hop interval will be randomly chosen between `hop_interval` and `hop_interval_max`.

#### up_mbps, down_mbps

Max bandwidth, in Mbps.

If empty, the BBR congestion control algorithm will be used instead of Hysteria CC.

#### obfs.type

QUIC traffic obfuscator type, only available with `salamander`.

Disabled if empty.

#### obfs.password

QUIC traffic obfuscator password.

#### password

Authentication password.

#### network

Enabled network

One of `tcp` `udp`.

Both is enabled by default.

#### tls

Required

TLS configuration, see TLS.

### QUIC Fields

See QUIC Fields for details.

#### bbr_profile

Since sing-box 1.14.0

BBR congestion control algorithm profile, one of `conservative` `standard` `aggressive`.

`standard` is used by default.

#### brutal_debug

Enable debug information logging for Hysteria Brutal CC.

#### realm

Since sing-box 1.14.0

Connect to a Hysteria2 server through a Hysteria Realm rendezvous service.

The outbound queries the realm for the server's current public addresses, performs UDP hole-punching, and proceeds with the normal QUIC handshake.

Conflicts with `server`, `server_port` and `server_ports`.

The TLS SNI defaults to the host portion of `server_url`. Set `tls.server_name` to match the certificate the Hysteria2 server presents.

See Hysteria Realm for the rendezvous service.

#### realm.server_url

Required

Realm rendezvous service URL.

#### realm.token

Bearer token for the realm. Must match one of `users[].token` configured on the realm.

#### realm.realm_id

Required

The same slot identifier the target Hysteria2 server registered.

#### realm.stun_servers

Required

List of STUN servers (`host` or `host:port`) used to discover this client's public addresses.

Domain names are resolved using `domain_resolver` from Dial Fields.

#### realm.http_client

HTTP client used to talk to the realm.

See HTTP Client for details.

### Dial Fields

See Dial Fields for details.