TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/MercuryWorkshop/epoxy-tls/llms.txt
Use this file to discover all available pages before exploring further.
[stream] section of the epoxy-server configuration file governs what each individual Wisp stream is allowed to connect to. It provides independent controls for TCP and UDP, regex-based host allow/block lists, port range filtering, IP address category restrictions (loopback, multicast, globally-routable, etc.), and DNS resolver configuration. Together these settings let you lock down an epoxy-server deployment to only the traffic you intend to permit.
[stream] fields
Enables
TCP_NODELAY on upstream TCP connections opened for client streams. Disabling Nagle’s algorithm reduces latency for interactive traffic. Recommended to leave true.Size in bytes of the read buffer allocated for each upstream TCP socket, specifically the amount of data read from the upstream TCP stream in a single call. The default is 131072 (128 KiB). Tune this value if you observe high memory usage under many concurrent streams or if throughput is lower than expected.
Allow Wisp clients to open UDP streams. When
false, all Wisp UDP stream requests are rejected regardless of the extensions setting in [wisp].Allow UDP connections over the legacy wsproxy protocol. This is a nonstandard extension to wsproxy and is disabled by default. Only enable this if you have wsproxy clients that require UDP.
Allow clients to open TWisp streams. TWisp is an experimental stream type that is disabled by default.
This field is only present when epoxy-server is compiled with the
twisp feature flag. It has no effect in standard release builds that omit this feature.List of DNS server IP addresses used to resolve hostnames for upstream connections. When empty (the default), the system resolver configuration is used (typically Provide explicit DNS servers if you want deterministic resolution behavior independent of the host system’s network configuration.
/etc/resolv.conf on Linux).Allow clients to open streams to bare IP addresses (e.g.
192.0.2.1) rather than hostnames. When false, streams whose target was specified as a raw IP address are rejected. This does not affect connections to hostnames that resolve to IP addresses.Allow connections to loopback addresses (IPv4
127.0.0.0/8, IPv6 ::1). The default is true, which matches the default “open” configuration, but should be set to false in production to prevent clients from reaching services on the server itself.Allow connections to multicast addresses (IPv4
224.0.0.0/4, IPv6 ff00::/8).Allow connections to globally-routable IP addresses (public internet addresses). Set to
false to restrict clients to internal/private networks only.Allow connections to non-globally-routable IP addresses, such as RFC 1918 private ranges (
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Set to false to prevent clients from reaching hosts on your internal LAN.Host filtering
epoxy-server supports regex-based host filtering at three levels of granularity: protocol-specific TCP lists, protocol-specific UDP lists, and a catch-all list that applies to all protocols. All regex patterns follow the Rustregex crate syntax.
Precedence rules
For each stream request the server evaluates rules in the following order:- If the protocol-specific allow list is non-empty and the host does not match any pattern in it → reject.
- If the host matches any pattern in the protocol-specific block list → reject.
- If the global allow list (
allow_hosts) is non-empty and the host does not match any pattern in it → reject. - If the host matches any pattern in the global block list (
block_hosts) → reject. - Otherwise → allow.
Regex whitelist of hostnames for TCP streams. When non-empty, TCP connections are only permitted to hosts whose name matches at least one pattern.
Regex blacklist of hostnames for TCP streams. TCP connections to matching hosts are always rejected.
Regex whitelist of hostnames for UDP streams. When non-empty, UDP connections are only permitted to matching hosts.
Regex blacklist of hostnames for UDP streams. UDP connections to matching hosts are rejected.
Regex whitelist applied to all stream types (TCP and UDP). When non-empty, any stream to a non-matching host is rejected regardless of protocol-specific lists.
Regex blacklist applied to all stream types (TCP and UDP). Streams to matching hosts are always rejected.
Block social media example
Port filtering
Port lists use inclusive[lower, upper] ranges. Multiple ranges may be specified.
Whitelist of port ranges. When non-empty, streams to ports outside all listed ranges are rejected.
Blacklist of port ranges. Streams to ports within any listed range are rejected.
Only allow HTTP and HTTPS example
IP address filtering
| Field | Default | Controls |
|---|---|---|
allow_direct_ip | true | Bare IP addresses as the connection target |
allow_loopback | true | 127.0.0.0/8, ::1 |
allow_multicast | true | 224.0.0.0/4, ff00::/8 |
allow_global | true | Public internet addresses |
allow_non_global | true | RFC 1918 private ranges and link-local |
false.