Configuration Reference
server.toml
# ── Network ──────────────────────────────────────────────
[server]
api_addr = "0.0.0.0:8080"
tunnel_addr = "0.0.0.0:8443"
quic_addr = "0.0.0.0:8444"
# ── Auth ─────────────────────────────────────────────────
[auth]
token = "CHANGE_ME_USE_A_LONG_RANDOM_STRING"
# ── TLS ──────────────────────────────────────────────────
[tls]
cert_file = "/etc/hashrelay/tls.crt"
key_file = "/etc/hashrelay/tls.key"
# ── Database ─────────────────────────────────────────────
[database]
driver = "sqlite"
path = "/var/lib/hashrelay/hashrelay.db"
# ── Logging ──────────────────────────────────────────────
[log]
level = "info"
format = "json"client.toml
[client]
server_addr = "relay.example.com:8443"
token = "CHANGE_ME_USE_A_LONG_RANDOM_STRING"
transport = "tcp_tls" # tcp_tls | tcp_encrypt | quic
label = "farm-a"
[reconnect]
max_retries = 0 # 0 = unlimited
retry_delay = "5s"
[log]
level = "info"Environment Variable Overrides
All config values can be overridden with HASHRELAY_ prefix and __ as separator:
export HASHRELAY_AUTH__TOKEN="my-secret"
export HASHRELAY_CLIENT__SERVER_ADDR="relay.example.com:8443"TLS Certificate Setup (Let's Encrypt)
certbot certonly --standalone -d relay.yourdomain.comHashRelay automatically reloads certificates on
SIGHUP — no restart needed for cert renewals.