Private docs access and team secrets
Private Antora / internal docs (online, no VPN)
Antora output is static HTML. Access control is always at the edge or identity proxy, not inside Antora.
Multi-playbook (public site vs private site) is out for FTN: one online docs experience is preferred.
| Option | Tradeoffs | Fit for FTN |
|---|---|---|
Vercel / Cloudflare edge auth (Basic Auth or simple JWT gate on path prefixes) |
Cheap to start; Basic Auth is coarse (shared password or per-user list). Edge middleware on Vercel Hobby has limits; Pro/team is fine for org docs. Pulumi can own the project + env. No rich roles unless you build them. |
Good first step — protect |
OIDC reverse proxy (OAuth2 Proxy, Authentik, Clerk/Auth0/WorkOS in front of static host) |
Most “official” for coworkers: Google Workspace / org IdP login, groups → who sees what. More moving parts (IdP app, callback URLs, session cookies). Best long-term if docs stay sensitive. |
Best end state when Google Workspace for |
VPN / private network only |
No public URL; high friction for coworkers. |
Rejected for FTN. |
- Recommendation
-
Ship edge gate on Vercel (or Cloudflare in front of Pages) for internal components now; plan OIDC when Workspace SSO is painless. Pulumi
infracan own DNS + the auth wiring; Bitwarden/ESC holds the shared Basic Auth secret or OIDC client secret.
Vault hosting (Bitwarden vs Vaultwarden)
FTN currently uses Bitwarden (cloud) as the human-readable source of truth for API keys and custom fields. If we ever self-host:
-
Prefer Bitwarden and Vaultwarden for the decision (cloud vs official server vs Vaultwarden).
-
Org catalog entry: Business resources on the docs hub.
Do not treat GitHub org secrets or Vercel env alone as the filing cabinet — see below.
Linear (FTN)
Inbound email for creating issues (team-private):
foodtrucknerdz-d5625360e1d9@linear.app
Stored as Bitwarden custom field FTN Linear inbound email on the linear.app / ryan@foodtrucknerdz.com item, and as env FTN_LINEAR_INBOUND_EMAIL on Vercel (non-secret operational address).
GitHub Organization secrets?
-
Can Actions use them? Yes — that is what they are for.
-
Can humans read them back after save? No useful “reveal” in the UI; you overwrite, you do not browse. Fine for deploy keys CI needs; bad as a filing cabinet you will reopen later.
-
Should Square/Resend/etc. live only there? No. Keep Bitwarden (+ future ESC) as the readable source of truth; optionally also mirror CI-only values into GitHub Actions secrets.
Customer.io key soup
| Key | Typical use |
|-----|-------------|
| Tracking API Key | Client/server event tracking (identify / track) — often what app SDKs want. |
| App API Key | Server App API (more privileged account/workspace operations). We stored FTN App API Key. |
| Pipelines API Key | Separate Pipelines/CDP-style ingest; different UI. “Complete Setup” curl is optional theater if the key already works. |
Missing Tracking key in Bitwarden is OK until we wire browser/server analytics; App + Pipeline keys are enough to start backend experiments. Test mode is fine.
Follow-ups
-
Paste Square OAuth redirect URIs in Developer Console (Sandbox + Production) — see Square credentials.
-
Google Client ID + Facebook OAuth (reminders emailed to Ryan).
-
Yoti production after business verification; sandbox keys already distributed.
-
Stripe live keys when leaving sandbox.
-
Private docs edge gate in Pulumi when ready.