Adopt IPvlan + Tailscale Backbone for Reliable Cross-Host CHORUS Mesh & Remote Clusters #16
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context / Problem
host; every Stage S2/S3 test tops out at 3–4 peers.
Libp2p demands a stable, routable L2, not the fragile overlay. Goal: move CHORUS onto a real subnet and use Tailscale to haul that
traffic between sites.
Proposed Solution
Reserve 192.168.1.192/26 in the LAN (router/DHCP).
Create swarm-scoped IPvlan network on each node:
docker network create -d ipvlan --scope swarm --attachable
--subnet 192.168.1.0/24 --gateway 192.168.1.1
--ip-range 192.168.1.192/26
-o parent=enp11s0 -o ipvlan_mode=l2
chorus_ipvlan
Update compose files (docker/docker-compose.yml, stage testing compose files, hmmm-monitor) so all CHORUS services attach to
chorus_ipvlan instead of the overlay.
Install tailscaled, join tailnet with tagged key:
tailscale up --authkey= --hostname=$(hostname)-chorus
--ssh --accept-dns=false
--advertise-tags=tag:chorus-cluster
--advertise-routes=192.168.1.192/26
Approve route + ACLs in Tailscale Admin, enable IP forwarding (e.g. sysctl -w net.ipv4.ip_forward=1).
Sample ACL:
{
"acls": [
{ "src": ["tag:chorus-cluster"],
"dst": ["tag:chorus-cluster:", "192.168.1.192/26:", "192.168.2.192/26:*"] }
],
"tagOwners": { "tag:chorus-cluster": ["group:admins"] },
"ssh": [{ "action": "accept", "src": ["tag:chorus-cluster"], "dst": ["tag:chorus-cluster"] }]
}
join tailnet advertising the new route, approve in admin panel.
S3 >12.
Acceptance Criteria
Notes / Extras
mode to L3.
This plan migrates CHORUS to stable networking and lays the groundwork for hybrid deployments without sacrificing libp2p health.
There's an existing account with tailscale and walnut, rosewood, acacia, and ironwood are already connected to it a system level. http://ironwood.tail04519c.ts.net/ for example.