Files
theta-suite/docs/jump-host/mesh.md
T
wmantly ace7b441c2 docs(site): publish multi-site + gateway mesh to the actual docs website
Everything shipped this pass (live replication, master/spoke join,
gateway-to-gateway WireGuard mesh) had real spec docs in the repo
(docs/MULTI_SITE_SPEC.md, sso-manager-node's docs/site-join.md) but
nothing on the actual published docs site (theta42.github.io/theta-suite/)
-- a reader landing there would find no mention of it at all beyond a
vague, unlinked "multi-site replication" bullet on the homepage.

- New docs/sso/multi-site.md: the operator-facing master/spoke join guide
  (why, how, promoting a spoke, what replicates, current limits), with an
  explicit section distinguishing it from the pre-existing N-way LDAP MMR
  replication page (replication.html) -- two different mechanisms that
  were at real risk of being conflated with nothing to tell them apart.
- New docs/jump-host/mesh.md: the gateway-to-gateway WireGuard mesh guide,
  linked from a "WireGuard mesh routing" bullet that already existed on
  the jump-host homepage but pointed nowhere.
- docs/sso/index.md, docs/jump-host/index.md: link the new pages from
  each component's Features list.
- docs/index.md: replaced the oversold, unlinked "multi-site replication
  running in seconds" homepage copy with an accurate, linked claim.
2026-08-10 19:54:25 -04:00

61 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
layout: default
title: Gateway Mesh
---
# Gateway Mesh
Theta Gateway can mesh with other Theta Gateway instances over real
site-to-site WireGuard tunnels — separate from its [SSH jump
host](connecting.html) role, and separate from the roaming-client/exit-node
WireGuard feature (individual peer configs for laptops/phones). This is
gateway-to-gateway: two sites' networks reaching each other directly.
## Why and when to use this
- **Direct site-to-site networking**, not just SSH. Once two gateways are
meshed, hosts behind each can reach each other over the tunnel using the
mesh addressing scheme below — not limited to jumping through SSH.
- **No manual WireGuard config.** Meshing is a join-token exchange; both
sides come out with a live, working peer entry for each other
automatically.
- **Works without a kernel WireGuard module.** Prefers in-kernel WireGuard,
falls back to the userspace `wireguard-go` implementation automatically —
useful for older kernels, some container/cloud images, or hosts where the
kernel module isn't available.
## How it works
1. On the gateway you want others to join, mint a join token: **Mesh** page
**Mint a Join Token**. It's single-use and expires in 15 minutes.
2. On the new gateway, use **Join a Remote Gateway's Mesh**: paste the other
gateway's URL and the token.
3. Both sides now have a live WireGuard peer for each other. The **Meshed
Gateways** table shows every peer, its assigned mesh subnet, and when it
was last seen.
Each gateway is assigned a **mesh index** (an integer 1254) the first time
it either mints a token or is registered by another gateway. That index
determines its subnet: `172.24.<index>.0/24` for the mesh tunnel itself, plus
`10.<index>.0.0/16` reserved for that site's own local network — 254 sites is
the hard ceiling this addressing scheme supports.
## Requirements
- Both gateways need a reachable endpoint (host:port) for the WireGuard
handshake — typically the same public host the SSH/web ports are already
on, with UDP 51820 reachable.
- `NET_ADMIN` capability (or equivalent) on the container/host running the
gateway, to create the WireGuard interface.
## Not yet connected to directory sync
This mesh is a networking layer on its own. [Theta Directory's multi-site
join](../sso/multi-site.html) (catalog + LDAP replication between a master
and its spokes) does not currently route its traffic over this mesh — the
two features work independently today. Routing directory sync over the mesh,
and using the mesh to reach a spoke site with no inbound access of its own,
are both designed but not yet automated — see the [architecture
spec](https://github.com/theta42/theta-suite/blob/master/docs/MULTI_SITE_SPEC.md)
for current status.