SPB Git forge
28commits 1branches 0releases
7.7 MBsize
maindefault branch
10 days agolast push
Python 66.3% TypeScript 22.7% JavaScript 8.6% HTML 1.4% CSS 0.7%

deploy: production moved to OVH BHS128b (native PM2/Postgres), release procedure; Mac copy kept cold

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed 10 days ago (Sep 14, 2026) parent 6a69a41

2 changed files +19 −4

modified CLAUDE.md +6 −3
@@ -52,6 +52,9 @@ cp .env.example .env && .venv/bin/catlas migrate && .venv/bin/catlas seed
52 52 pnpm install && pnpm dev:web # http://localhost:8370
53 53 ```
54 54
55 −## Deploy (MacLustr, via mld — see docs/DEPLOY.md)
56 −Node **M2U64** (pin), dir `~/apps/company-atlas`, data `~/company-atlas-data`, PM2 `company-atlas-api` / `company-atlas-scheduler` /
57 −`company-atlas-web`. `deploy/render-manifest.sh --push` → `mld stage . company-atlas` → `mld deploy company-atlas --node M2U64`.
55 +## Deploy (see docs/DEPLOY.md)
56 +**Since 2026-09-14: OVH server BHS128b** (`ssh BHS128b`, Ubuntu 24.04), outside `mld` — dir `~/apps/company-atlas` (uv Python 3.12 venv),
57 +data `~/company-atlas-data`, Postgres 17 native (`companyatlas`), PM2 under systemd (`~/apps/pm2.company-atlas.config.cjs`, generated from
58 +the mld manifest kept in `~/apps/.manifests/`): `company-atlas-api` / `company-atlas-scheduler` / `company-atlas-web`. Route
59 +`https://www.company-atlas.co → wg1 10.67.0.62:8360`. Release = rsync + `uv pip install -e .` + `catlas migrate` + web build + `pm2 restart`
60 +(exact command in docs/DEPLOY.md). Former home: M2U64 via `mld` (`deploy/render-manifest.sh --push` → `mld stage` → `mld deploy`), cold copy kept.
modified docs/DEPLOY.md +13 −1
@@ -1,6 +1,18 @@
1 1 # Deploying Company Atlas on MacLustr
2 2
3 −Production runs on **M2U64** (Mac Studio M2 Ultra, 24 c / 64 GB) behind the MacLustr Tunnel (BHS64 Caddy → WireGuard wg1 10.67.0.12).
3 +> **Since 2026-09-14 production runs on the OVH server BHS128b** (`ssh BHS128b`, ubuntu@51.161.112.85, Ubuntu 24.04, 16 threads / 128 GB),
4 +> outside `mld`: code in `~/apps/company-atlas` (venv `.venv` = uv Python 3.12, `uv pip install -e .`), Postgres 17 native (db/role
5 +> `companyatlas`/`companyatlas`, pg_trgm + uuid-ossp, en_US.UTF-8), objects in `~/company-atlas-data`, PM2 under systemd (`pm2-ubuntu`) with
6 +> `~/apps/pm2.company-atlas.config.cjs` generated from the mld manifest by `~/apps/.manifests/gen-pm2.py` (secrets, 0600). Tunnel route:
7 +> `mlt add www.company-atlas.co BHS128b:8360` (BHS64 Caddy → wg1 10.67.0.62); firewall `ufw allow in on wg1 from 10.67.0.1 to any port 8360 proto tcp`.
8 +> **Release on BHS128b**: `rsync -az --exclude .venv --exclude node_modules --exclude .git --exclude 'apps/web/.next' --exclude data . BHS128b:apps/company-atlas/`
9 +> then `ssh BHS128b 'cd apps/company-atlas && ~/.local/bin/uv pip install --python .venv/bin/python -e . && DATABASE_URL=postgresql+asyncpg://companyatlas:companyatlas@127.0.0.1:5432/companyatlas CA_DATA_DIR=$HOME/company-atlas-data .venv/bin/catlas migrate && pnpm install --frozen-lockfile && (cd apps/web && API_URL=http://127.0.0.1:8361 NEXT_PUBLIC_SITE_URL=https://www.company-atlas.co pnpm build) && pm2 restart company-atlas-api company-atlas-scheduler company-atlas-web && pm2 save'`.
10 +> Known: `company-atlas-scheduler` segfaults now and then inside `lexbor` (selectolax native parser) during enrichment — PM2 restarts it
11 +> (`PYTHONFAULTHANDLER=1` set in the PM2 env to capture the Python stack); `/api/v1/index` and `/api/v1/pulse` return 500
12 +> (`TypeError: float() argument … 'dict'` in `api/aggregates.py` `by_country`) — pre-existing on M2U64 too.
13 +> The M2U64 copy (code, Postgres `companyatlas`, `~/company-atlas-data`) is kept as a cold copy, retired from `mld` (`--keep-dir`).
14 +
15 +Production formerly ran on **M2U64** (Mac Studio M2 Ultra, 24 c / 64 GB) behind the MacLustr Tunnel (BHS64 Caddy → WireGuard wg1 10.67.0.12).
4 16 Everything goes through the gateway M1M32 and `mld` (`~/Desktop/cluster-skill/mld`).
5 17
6 18 ## Topology
7 19