Skip to content

Witness v1.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:45
· 164 commits to main since this release
fa354c9

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's header_up X-Real-IP {client_ip}; the
    node now takes the address from that header. Container:
    WITNESS_CLIENT_IP_HEADER.
  • witness net status warns when peers seem to connect from Cloudflare.
  • The installer's --no-seeds and the container's WITNESS_SEEDS=0 keep 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 --caddy

The binaries below are static Linux builds of the witness command
(without headless rendering). Check them against SHA256SUMS.