Skip to content

Beta: beta.sailever.com and api.sailever.com

Live since 2026-10-17. The new server runs on Oracle Cloud: website at beta.sailever.com, watch API at api.sailever.com, closed beta (only existing accounts get a magic link, everyone else applies at /beta). Background, reasons and the security model: monorepo_plan.md. This file keeps the identifiers and what is still open until launch; delete it after launch (7.3). The finished go-live checklist (sections 0–6, 2026-10-14 to 2026-10-18) is in the git history of this file.

Owner: You = needs your accounts, approvals or money. Claude = can be done in a session.

What runs (2026-10-25)

Part Where Since
App VM sailever-beta (Puma, kamal-proxy, beta + api) OCI Amsterdam, public subnet, 80/443 only 2026-10-17
Database VM sailever-db (Postgres 16 with PostGIS, 10.0.2.10) private subnet, 5432 only from the app subnet 2026-10-17, PostGIS 2026-10-19
Worker VM sailever-worker (all background jobs by priority, depth and base-map builds) private subnet, no inbound port (ADR 011) 2026-10-20
SSH only through Cloudflare Tunnels with Access login (ssh.sailever.com, ssh-db.sailever.com, ssh-worker.sailever.com) 2026-10-17
Deploys by hand: Actions → Server (app VM) and Worker (worker VM), main only 2026-10-17
Mail OCI Email Delivery, no-reply@sailever.com, SPF and DKIM active 2026-10-18
Files, backups buckets sailever-files, sailever-backups (nightly pg_dump → age; restore tested 2026-10-18) 2026-10-17
Map tiles, depth, email assets Cloudflare R2 and Worker tiles.sailever.com, assets.sailever.com 2026-10-18
Pairing link sailever.com/pair → www → 302 to beta.sailever.com/pair (checked 2026-10-25) 2026-10-17
Old site www.sailever.com still on Hetzner (trahfo/sailever-rails, f218b42) until launch —

Infrastructure as code: infra/oci/ (tofu runs locally, never in CI). Every secret and its password-manager entry: docs/credentials.md.

Identifiers (not secrets)

  • OCI tenancy ocid1.tenancy.oc1..aaaaaaaayqzoqccykrpnljmmrhultuygu6wwoasxjka6p6tm3fikvw4ogaga, compartment sailever ocid1.compartment.oc1..aaaaaaaa5dpximtnfl3gdxwvepac7nikuzy4c4cfjrfrgweyufqx2c4ro3za, user tofu ocid1.user.oc1..aaaaaaaaqxzhrghrrlm2dbijipkaiqwwa7tzvar335mnjs4kjbx2nkzvusna, Object Storage namespace axrihavopcof, region eu-amsterdam-1.
  • Backup age public key (recipient; rotated 2026-10-18 after the old private key leaked; private key in the password manager + offline): age19s74dnhmjpltmsshssf8y3lyqwneqv9genqf5uwzcq6ss66jkskq8ekry2.
  • App user sailever-app (identity domain Default, group sailever-app): Customer Secret Key sailever-app-s3 and SMTP credentials sailever-app-smtp in the password manager.
  • Cloudflare Zero Trust team sailever; account fa04a3489ba274e2a25671bf3c0f7886, zone sailever.com b145f04bff367af96cbaa7e9dd92869d.

Open

# Owner Step
5.6 You + Claude Watch builds to the testers. Garmin: 1.1.1 is tagged (garmin-watchapp/v1.1.1, 2026-10-19); store beta status to be noted here. Wear OS: first build to Play internal testing (6.5); tag wear/v1.x.y-beta.1 (you create it, matching the app's version).
6.3 You + Claude End to end on Garmin and Wear OS: sign in at beta.sailever.com, pair at sailever.com/pair, record with mise tracksim play, the track arrives in the logbook. Not yet recorded as done.
6.5 You Android internal testing build against api.sailever.com, then Play review (wear_os_release.md).
7.1 Claude Delete the backup of the old root history in the Claude scratchpad (from the 2026-10-14 migration session), if it still exists.
7.4 You, before 7.3 Buy the commercial data services the free beta tiers don't allow for a paid product: Open-Meteo API plan (model wind per track, tides), a tide source, pro depth maps. List and what to price in: pricing model §5.3.
7.3 Later Launch (plan §7.6): www moves to the new server (SAILEVER_WEB_HOSTS gets www), SAILEVER_BETA=false (open sign-up, no badge), beta → www 301 keeping the path, the old app's /privacy → beta 302 (580b085) goes with the old app, both /pair redirects → www, api.sailever.com unchanged (no watch build needed), trahfo/sailever-rails archived. Then the beta applications go: table beta_applicants, the /beta form and its "Join the beta" links, the beta sign-up and invitation emails, the admin page "Beta applicants" and the beta branch of the sign-in gate (specs: auth.md, public-site.md, admin.md, emails.md).
3.8 Claude, later .github/workflows/infra.yml with tofu fmt -check / validate only (no credentials).
3.11 Later Load balancer + second app server. Blocked: the worker VM took the last Always Free compute (1 + 1 + 2 OCPU) and block storage (ADR 008). Design notes in the infra/oci README.