Skip to content

Provision + harden the new self-host GPU host's base Docker/compose environment #4326

Description

@JSONbored

Part of #4325.

Context

The new host needs the same base runtime the current deployment already documents — Docker + Compose, the repo checked out at a known ref, .env populated from .env.selfhost.example/.env.example, and the profiles this deployment actually uses activated (postgres, qdrant, visual-review, rees, observability, tailscale — see docker-compose.yml's profile list). This issue is the base environment only; data migration, secrets, and GPU wiring are separate sub-issues.

Requirements

  • Docker + Compose installed, matching the versions the current host runs (or newer within the same major line).
  • Repo cloned at a pinned commit/tag (not a moving main checkout) so the two hosts run identical code during the parallel-run window.
  • .env populated with every NON-secret operational setting matching the current deployment (concurrency knobs, retention windows, feature flags) — secrets themselves are explicitly out of scope here.
  • Firewall: only the ports this deployment's compose file actually needs to expose publicly are open (the app's own HTTP port and, if used, the caddy profile's 80/443) — every in-network-only service (Postgres, Redis, Qdrant, browserless, REES) stays unreachable from outside the host's Docker network, matching the current deployment's posture.
  • Host clock: at least two independent NTP sources configured (see docker-compose.yml's own "HOST CLOCK" comment on why a single source is insufficient — GitHub App JWT auth fails silently once drift exceeds the 60s skew tolerance).

Deliverables

  • Docker/Compose installed and verified (docker compose version)
  • Repo cloned at a pinned ref; profiles enabled match the current deployment's set
  • .env populated with non-secret settings; diffed against the current host's .env (secrets redacted) to confirm parity
  • Firewall rules confirmed: an external scan shows only the intended public port(s) open
  • NTP dual-sourced and verified converged

Expected outcome

A running-but-empty instance of the full stack on the new host, healthy per scripts/selfhost-post-update-check.sh, with no data, no secrets, and no live traffic yet — ready for the sub-issues that populate it.

Effort

M

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions