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 |
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, compartmentsaileverocid1.compartment.oc1..aaaaaaaa5dpximtnfl3gdxwvepac7nikuzy4c4cfjrfrgweyufqx2c4ro3za, usertofuocid1.user.oc1..aaaaaaaaqxzhrghrrlm2dbijipkaiqwwa7tzvar335mnjs4kjbx2nkzvusna, Object Storage namespaceaxrihavopcof, regioneu-amsterdam-1. - Backup
agepublic 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, groupsailever-app): Customer Secret Keysailever-app-s3and SMTP credentialssailever-app-smtpin the password manager. - Cloudflare Zero Trust team
sailever; accountfa04a3489ba274e2a25671bf3c0f7886, zonesailever.comb145f04bff367af96cbaa7e9dd92869d.
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. |