Skip to content

Add Docker sidecar deployment for FIPS#7

Merged
jmcorgan merged 1 commit intomasterfrom
docker-sidecar
Feb 27, 2026
Merged

Add Docker sidecar deployment for FIPS#7
jmcorgan merged 1 commit intomasterfrom
docker-sidecar

Conversation

@jmcorgan
Copy link
Owner

Tailscale-style sidecar pattern: a FIPS container provides mesh networking, and a companion app container shares its network namespace via network_mode: service:fips.

Security model:

  • iptables enforces strict isolation — the app container can only communicate over the FIPS mesh (fd::/8 via fips0)
  • No IPv4 access: eth0 restricted to FIPS UDP transport (port 2121)
  • No IPv6 on eth0: ip6tables blocks all eth0 IPv6 traffic
  • Only fips0 and loopback are reachable from the app container

The sidecar accepts peer configuration via environment variables (FIPS_NSEC, FIPS_PEER_NPUB, FIPS_PEER_ADDR), so it can be pointed at any FIPS node without config file generation.

Files:

  • testing/sidecar/: Dockerfile, Dockerfile.app, docker-compose.yml, entrypoint.sh, .env, resolv.conf, scripts/build.sh
  • testing/sidecar/README.md: security model, quick-start, architecture, DNS resolution, troubleshooting, production considerations
  • testing/sidecar/scripts/test-sidecar.sh: 3-node chain integration test verifying link establishment, multi-hop connectivity, and network isolation on each app container
  • .github/workflows/ci.yml: sidecar integration test matrix entry

Tailscale-style sidecar pattern: a FIPS container provides mesh
networking, and a companion app container shares its network namespace
via network_mode: service:fips.

Security model:
- iptables enforces strict isolation — the app container can only
  communicate over the FIPS mesh (fd::/8 via fips0)
- No IPv4 access: eth0 restricted to FIPS UDP transport (port 2121)
- No IPv6 on eth0: ip6tables blocks all eth0 IPv6 traffic
- Only fips0 and loopback are reachable from the app container

The sidecar accepts peer configuration via environment variables
(FIPS_NSEC, FIPS_PEER_NPUB, FIPS_PEER_ADDR), so it can be pointed
at any FIPS node without config file generation.

Files:
- testing/sidecar/: Dockerfile, Dockerfile.app, docker-compose.yml,
  entrypoint.sh, .env, resolv.conf, scripts/build.sh
- testing/sidecar/README.md: security model, quick-start, architecture,
  DNS resolution, troubleshooting, production considerations
- testing/sidecar/scripts/test-sidecar.sh: 3-node chain integration
  test verifying link establishment, multi-hop connectivity, and
  network isolation on each app container
- .github/workflows/ci.yml: sidecar integration test matrix entry
@jmcorgan jmcorgan merged commit 9668807 into master Feb 27, 2026
35 checks passed
@jmcorgan jmcorgan deleted the docker-sidecar branch February 27, 2026 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant