Repository navigation
Witness v1.2.0
Witnesses behind Cloudflare or another CDN, and CI kept off the public
network. Nothing changes in the protocol or the stored data; 1.1.x and
1.2.0 witnesses work together. A witness behind a CDN places every peer in
the CDN's network until its proxy passes on client addresses: see
network.client_ip_header below and docs/INSTALL.md.
Added
network.client_ip_header: witnesses behind Cloudflare or another
CDN. Behind a CDN, the address a witness's reverse proxy sees is the
CDN's. The proxy can work out the client's address and pass it on in a
header of its own, e.g. Caddy'sheader_up X-Real-IP {client_ip}; the
node now takes the address from that header. Container:
WITNESS_CLIENT_IP_HEADER.witness net statuswarns when peers seem to connect from Cloudflare.- The installer's
--no-seedsand the container'sWITNESS_SEEDS=0keep a
node off the public network, for separate networks and tests.
Fixed
- Behind a CDN, every peer was placed in the CDN's network. The node
took the address its proxy added to X-Forwarded-For, which behind a CDN
is the CDN's edge. It signed that as every peer's location (AS13335
behind Cloudflare), told each peer it was there, and nothing warned. - CI runs joined the public network. The installer and container tests
started nodes with the default seeds, and each run left a few dead
witnesses in the seed's peer table. - Behind a proxy that adds its own X-Forwarded-For line, such as
HAProxy, the node read the first line, which the client wrote. It now
reads the last. - With the API listening on
[::], which takes IPv4 connections too,
every IPv4 client shared one rate-limit bucket.
Install
On a server, the installer builds from source and sets up the service:
git clone https://github.com/Aelthorim/witness.git && cd witness
sudo sh scripts/install.sh --domain witness.example.org --caddyThe binaries below are static Linux builds of the witness command
(without headless rendering). Check them against SHA256SUMS.