Skip to main content
Version: 0.12.0

Admin Bind

Snakeway provides a built-in Admin API for observability and operational insight. These endpoints are available on the bind_admin address under the /admin/ path.

bind_admin = {
# The network interface for the admin API.
interface = "127.0.0.1"

# The port for the admin API.
port = 8440

# TLS configuration for the admin listener. Required.
tls = {
mode = "manual"
cert = "/path/to/certs/server.pem"
key = "/path/to/certs/server.key"
}

# Authentication. Required.
auth = {
bearer = {
token_file = "/etc/snakeway/admin.tokens"
}
}
}

Fields

FieldTypeDefaultDescription
interfacestring(required)The network interface to bind the admin API to. Loopback or a specific IP; wildcard binds are rejected.
portinteger(required)The port to bind the admin API to.
tls.modestring(required)TLS mode. Must be "manual"; ACME is not supported on bind_admin.
tls.certstring(required)Path to the TLS certificate file.
tls.keystring(required)Path to the TLS private key file.
auth.bearer.token_filestring(required)Path to a file containing one or more bearer tokens, one per line. See the Admin API authentication guide.

Defense in depth

The Admin API provides significant control over the proxy. Snakeway enforces three layers on every admin request:

  1. Reachability. bind_admin rejects wildcard interfaces (0.0.0.0, ::, "all"). Operators must bind to loopback or a specific non-public IP.
  2. Transport. TLS is required. ACME is not permitted on bind_admin because admin certificates should not depend on a public CA.
  3. Authentication. Every request must carry a valid bearer token in the Authorization header. See Authentication for details on the token file format and the rotation workflow.
caution

Authentication is the innermost layer, not a replacement for the other two. Continue to bind the admin listener to a trusted interface and restrict access at the network level.