silentmode.st + hephaestus.x static content — HTML/CSS/JS served via nginx (VPS) and Sia bucket (backup)
Find a file
Local Dev b0569c92d8 Ariadne 0.1.8: pinned-origin reverse proxy for ip+tls names
Before 0.1.8, a BNS name with an on-chain `ip` record made the daemon return
the origin's public IP directly. Browsers then hit the origin's own HTTPS
server -- and if that origin's cert was not browser-trusted (which is the
whole point of the on-chain `tls` fingerprint pin next to the `ip` record),
every browser except Theseus rejected the site with ERR_CERT_AUTHORITY_INVALID
or SEC_ERROR_UNKNOWN_ISSUER. game.x and hephaestus.x both hit this. Theseus
was fine because its in-process resolver validates against the on-chain pin.

0.1.8 answers DNS with 127.0.0.1 whenever the name has BOTH `ip` and `tls`,
terminates the browser's TLS locally with our trusted leaf, and reverse-proxies
to the origin over HTTPS while validating the origin's SHA-256 fingerprint
against the on-chain pin. Same algorithm Theseus uses (main.js:pinnedHttpsGet,
cert.fingerprint256 lower-cased, colons stripped) so a site's `tls` record
means the same thing in-Theseus and system-wide.

Names with just `ip` (no pin) keep direct routing -- unchanged. Only opts in
when the owner has published a fingerprint pin, so nothing regresses for sites
that deliberately wanted direct IP routing.

Two subtle bugs found + fixed while landing this:

1. `agent: false` on the outbound https.request. With Node's default global
   agent (keepAlive on), the second request onwards reuses the TLS socket
   and `res.socket.getPeerCertificate(false)` comes back stripped of
   fingerprint256 -- pin validation then reads "empty" and rejects with 526.
   Fresh socket per request costs a handshake but is cheap next to the
   pin-verify miss.

2. Removed `content-encoding` from the hop-by-hop strip list. Origin sends
   gzip'd bytes; my proxy streams them unchanged. If we strip
   content-encoding while forwarding compressed bytes, the browser treats the
   gzip magic as text and renders garbage. content-encoding is end-to-end
   per RFC 7230 -- keep it.

Verified on this box: game.x, hephaestus.x, theseus.x, sirius.x,
coinspectrum.x, hello.bch all load HTTPS 200 in strict IWR and Chromium; DNS
answers 127.0.0.1 for game.x + hephaestus.x (was their origin IP before),
still their origin IP for names without a tls pin.

Deployed
- dl.silentmode.st/AriadneResolver-Setup-0.1.8.exe
- s3://bns/silentmode/dl/AriadneResolver-Setup-0.1.8.exe
- silentmode.st manifest advertises 0.1.8
- sha256 47450ad4555beb04fe3b90ae5f658dc2932061d011ada9a2fb507471e2f0a0cb
2026-09-28 22:29:44 +02:00
apps site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
brand brand: PNG social/icon set + generator; Angie vhost tracked with slash-less rules 2026-09-22 23:08:46 +02:00
choose site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
deviant site: fix homepage product count, drop stray brand-page copy, add GOTCHAS 2026-09-07 21:06:25 +02:00
helios site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
hephaestus site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
hephaestus.x sites: Ubuntu everywhere; opaque bottom rail on mobile 2026-09-22 19:47:52 +02:00
hermes site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
js feat(portal): the name's settings show what its subdomains serve, and let you change it 2026-09-28 01:21:47 +02:00
nav site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
prometheus site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
releases Ariadne 0.1.8: pinned-origin reverse proxy for ip+tls names 2026-09-28 22:29:44 +02:00
sirius site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
store site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
theseus site: Theseus 0.3.59 — manifest, releases page, theseus pages 2026-09-28 20:57:27 +02:00
tlds site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
tools site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
vendor Initial commit — Silent Mode baseline (2026-07-29) 2026-07-29 13:54:34 +02:00
vpn site/vpn: exits listed with the tiers they actually serve 2026-09-27 19:28:45 +02:00
favicon.svg brand: Silent Mode + navigate.st kits (logo, wordmark, avatar, banner, favicon) 2026-08-31 05:22:45 +02:00
GOTCHAS.md brand: PNG social/icon set + generator; Angie vhost tracked with slash-less rules 2026-09-22 23:08:46 +02:00
home-cards.json Ship Theseus 0.3.0 bb9d8dec (home cards decoupled from browser release) 2026-08-31 18:38:09 +02:00
index.html site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
register.html site: slash-less page URLs; /theseus is the Theseus page, /tools the overview 2026-09-20 17:21:30 +02:00
releases-manifest.json Ariadne 0.1.8: pinned-origin reverse proxy for ip+tls names 2026-09-28 22:29:44 +02:00
shared.css site: real logo, hero screenshot, OG tags, contrast fixes 2026-09-07 23:01:57 +02:00