Files
Kevin CodexandOpenClaude f23e35e188 feat(infra): Fly config for node3 on the public OSS build
Deploys node3.gitlawb.com (Fly app gitlawb-node-3, nrt) from this repo's
Dockerfile instead of its old private source. Canary for migrating the
bootstrap nodes; node + node2 follow.

- region nrt, reuses volume gitlawb_data (identity + repos) and the
  attached Postgres (DATABASE_URL secret)
- corrects PUBLIC_URL to https://node3.gitlawb.com, bootstrap peers to
  node + node2 (not self), drops vestigial GITLAWB_DB (v0.3.9 is
  Postgres-only)
- 1024MB (was 256MB — too small for v0.3.9)

Migration note: the existing volume was created by the old root-based
image, so /data was root-owned; the public image runs as uid 1000 and
needed a one-time 'chown -R 1000:1000 /data'. node + node2 will need the
same until the image entrypoint self-heals ownership.

Co-Authored-By: OpenClaude <[email protected]>
2026-06-19 00:54:18 +08:00
..
2026-06-18 22:05:50 +08:00
2026-06-05 22:38:53 +08:00

infra/

Deployment configuration, organized by target — one subdirectory per platform.

infra/
├── fly/
│   └── fly.toml    # Fly.io app config (gitlawb-node-test)
└── aws/            # Terraform: single EC2 + Docker (see aws/README.md)

Deploying to Fly.io

Run from the repo root so the Docker build context includes crates/, Cargo.toml, and bootstrap-peers.json:

fly deploy -c infra/fly/fly.toml

The dockerfile path inside fly.toml is resolved relative to the config file, so it points to ../../Dockerfile.

Deploying to AWS

See aws/README.md — Terraform for a single EC2 instance running the published ghcr.io/gitlawb/node image with Docker compose.

What intentionally stays at the repo root

  • Dockerfile / Dockerfile.bins — shared by the release CI workflow (.github/workflows/release.yml), scripts/build-bins.sh, and Fly builds.
  • docker-compose.yml — local dev stack; bundled into the macOS app by scripts/build-macos-app.sh and used for repo detection by the app.

Future targets should follow the same per-platform layout.