epoxy-server
Performant server implementation of the Wisp protocol in Rust, made for epoxy.
You can view a recent flamegraph of the server under load here.
Building
[!IMPORTANT] Rust nightly is required.
cargo b -r
The executable will be placed at target/release/epoxy-server
.
You can optionally add the environment variable RUSTFLAGS="-C target-cpu=native"
to optimize for the current CPU.
Configuration
epoxy-server
is configured through a configuration file in either TOML, JSON, or YAML. Pass the configuration file's path as an argument to epoxy-server
.
The defaults can be printed with the command line option --default-config
and the configuration file format can be changed from the default of TOML with the command line option --format
.
Arguments
Argument | Description |
---|---|
bind | Name of the created TUN device. |
socket | MTU (Maximum Transmission Unit) of the created TUN device. |
transport | IP address of the created TUN device. |
resolve_ipv6 | Mask of the created TUN device (defaults to /0 ). |
tcp_nodelay | Destination of the created TUN device (defaults to 0.0.0.0 ). |
verbose_stats | Use Cloudflared access. URL must be specified. You must be logged into Cloudflared. |
enable_stats_endpoint | Whether or not to respond to stats requests over HTTP. |
stats_endpoint | Path of the stats HTTP endpoint. |
non_ws_response | String sent in response to a request that is not a WebSocket upgrade request. |
prefix | Prefix of the WISP server. Do not add a trailing slash. |
max_message_size | Maximum WebSocket message size that can be received. |
log_level | Log level for server logging. |
The epoxy server docs were written largely by @r58playz.