Domain & DNS — apexstem.org¶
Organization: Apex STEM Education Inc. (proposed)
Primary domain: apexstem.org
Related: Portal & SOP Wiki Plan (Section 6 stack, Phase 0–2 DNS tasks)
Status: Domain on Cloudflare — zone connected (nameservers active)
Last updated: May 2026
Repo hygiene: Do not commit registrar passwords, API tokens, or recovery codes. Store credentials in a board-approved password manager (1Password, Bitwarden org vault, etc.).
1. Registrar (Spaceship)¶
| Field | Value |
|---|---|
| Registrar | Spaceship (www.spaceship.org redirects to product site) |
| Account username | rexnfx79 |
| Account email | See § Internal — restrict access below |
| Domain(s) | apexstem.org (confirm in Spaceship dashboard; add www only if purchased or included) |
Account recovery checklist¶
- [ ] Confirm domain appears under My Domains for account
rexnfx79 - [ ] Verify registrar account email is current and accessible by at least two trusted adults (founder + backup board contact when named)
- [ ] Enable two-factor authentication (2FA) on Spaceship (authenticator app preferred over SMS)
- [ ] Save recovery/backup codes in password manager — not in this repo
- [ ] Document who holds the password manager entry (
adminrole per portal plan) - [ ] When org email exists (
admin@apexstem.orgorit@apexstem.org), add as secondary contact and plan to migrate primary login to org-owned email
Security¶
- 2FA required on Spaceship and on Cloudflare (once added).
- Separate Cloudflare account for Apex (org email as account owner when available); do not reuse personal Cloudflare accounts long-term.
- Least privilege: Only
adminvolunteers get registrar + Cloudflare super-admin; board chair holds break-glass recovery info offline. - Lock domain (registrar lock / transfer lock) after DNS is stable.
- WHOIS privacy: Enable if offered; org contact can still be legal entity address when incorporated.
2. Planned DNS targets (portal stack)¶
Aligns with apexstem_portal_plan.md phased stack.
| Hostname | Purpose | Hosting / auth |
|---|---|---|
apexstem.org |
Public org site (mission, teams, donate, sponsor) | Cloudflare Pages (Astro or MkDocs public section) |
www.apexstem.org |
Optional alias | 301 redirect → https://apexstem.org (recommended) |
docs.apexstem.org |
Internal SOP wiki (MkDocs Material) | Cloudflare Pages + Cloudflare Access (invite-only) |
ridgeracersnj.com |
Team competition site | Existing Netlify deploy (separate; cross-link only) |
DNS record checklist (after Cloudflare zone is active)¶
Use Proxied (orange cloud) for web records unless a provider requires DNS-only.
| Type | Name | Content / target | Notes |
|---|---|---|---|
| CNAME | @ or A |
Cloudflare Pages apex target | Pages provides exact hostname per project |
| CNAME | www |
apexstem.org or Pages www |
Redirect rule preferred over duplicate content |
| CNAME | docs |
Cloudflare Pages project for MkDocs | Access policy on this hostname |
| TXT | @ |
SPF (if sending mail via provider) | Add when email provider chosen |
| TXT | _dmarc |
v=DMARC1; p=none; → tighten later |
After SPF/DKIM stable |
| CAA | @ |
Optional: restrict CAs to Let's Encrypt / Cloudflare | Hardening |
SSL/TLS: With Cloudflare proxy + Pages, certificates are automatic. Set SSL mode to Full (strict) once origin is configured.
3. Recommended path: Cloudflare nameservers¶
Why: Single place for DNS, DDoS protection, Access policies for docs.apexstem.org, and Pages deploys for apex + docs.
Step A — Create Cloudflare zone¶
- Sign up / log in at dash.cloudflare.com with org email when available.
- Add site → enter
apexstem.org. - Select Free plan (sufficient for MVP).
- Cloudflare scans existing records (may be empty).
- Copy the two nameservers assigned (e.g.
ada.ns.cloudflare.com,bob.ns.cloudflare.com).
Step B — Point registrar to Cloudflare¶
- Log in to Spaceship → Domains →
apexstem.org→ DNS or Nameservers. - Choose Custom nameservers (not Spaceship default DNS).
- Paste Cloudflare’s two nameserver hostnames → save.
- Propagation: typically minutes to 48 hours. Cloudflare dashboard shows Active when complete.
Step C — Configure records in Cloudflare¶
- Add Pages projects (
apexstem-public,apexstem-docsor similar naming). - Attach custom domains per project (
apexstem.org,docs.apexstem.org). - Cloudflare UI will suggest required CNAMEs — add any missing records.
- Redirect rule:
www.apexstem.org/*→https://apexstem.org/$1(301). - Enable Always Use HTTPS and Automatic HTTPS Rewrites.
Cloudflare Access for docs {#cloudflare-access}¶
(Step D in cutover sequence.)
- Zero Trust → Access → Applications → add
docs.apexstem.org. - Policy: allow emails in groups
apex-board,apex-mentors, etc. (see portal plan RBAC). - Test with a non-member email (should deny).
4. Alternative: DNS at Spaceship (not recommended long-term)¶
Use only for a short bridge before Cloudflare migration.
- Keep Spaceship default nameservers.
- Add A/CNAME records Spaceship provides for temporary hosting.
- You cannot use Cloudflare Access on the same hostname without proxying through Cloudflare — so internal docs still need Cloudflare (or another auth gateway).
Migration tip: When ready, switch nameservers to Cloudflare; remove duplicate records at Spaceship to avoid conflicts.
5. Email forwarding (pre-Google Workspace)¶
Until Google Workspace or Microsoft 365 for nonprofits is approved:
| Address | Suggested routing | Notes |
|---|---|---|
hello@apexstem.org |
Founder inbox | Public contact on website |
board@apexstem.org |
Google Group (all 3 trustees) | Governance — Option B |
treasurer@apexstem.org |
Treasurer (spouse) inbox | Finance SOPs |
sponsorships@apexstem.org |
Founder inbox | Org sponsors; team may still use ridgeracersnj until site updated |
Providers (low cost): Cloudflare Email Routing (free, if MX pointed to Cloudflare), ImprovMX, Forward Email, or registrar forwarding if Spaceship offers it.
Checklist:
- [ ] Choose provider; add MX + TXT verification records in Cloudflare DNS
- [ ] Create
hello@and test send/receive - [ ] Publish
hello@on public site; keep personal emails off public pages - [ ] Plan migration to
admin@apexstem.orgon Google Workspace post-incorporation/EIN
6. Operational ownership (RACI)¶
| Task | Responsible | Accountable |
|---|---|---|
| Registrar account & 2FA | Technical admin volunteer | Board chair |
| Cloudflare zone & Access | Technical admin volunteer | Board chair |
| Public site DNS cutover | Admin + marketing volunteer | Board |
| Email forwarding / Workspace | Secretary + treasurer | Board |
7. Immediate action list (founder)¶
- [x] Cloudflare: Zone for
apexstem.org— connected - [x] Spaceship: Nameservers pointed to Cloudflare
- [ ] Spaceship: 2FA, auto-renew, registrar lock (recommended now)
- [ ] Cloudflare: 2FA + second super-admin account
- [x] Email Routing:
hello@,board@(→ Google Group),treasurer@,sponsorships@(Option B) - [x] Send mail as:
board@via Gmail (working) - [ ] Pages: Deploy wiki →
docs.apexstem.org— deploy_docs_cloudflare_pages.md - [ ] Pages (optional): Placeholder on
apexstem.org - [ ] Access: Policies on
docs.apexstem.org(rbac-groups.md) - [ ] SSL: Full (strict) once Pages attached
8. Next steps — zone is Active¶
Do these in order in the Cloudflare dashboard.
A. Email Routing (15 min)¶
- Email → Email Routing → enable for
apexstem.org. - Add destinations (your Gmail or workspace inboxes).
- Create routes:
| Address | Forward to |
|---|---|
hello@apexstem.org |
Shared inbox you monitor |
board@apexstem.org |
You + board distribution |
treasurer@apexstem.org |
Treasurer |
sponsorships@apexstem.org |
Sponsorship lead |
- Send test mail to
hello@apexstem.org.
B. Internal wiki — docs.apexstem.org (30–60 min) {#deploy-docs}¶
Full runbook: deploy_docs_cloudflare_pages.md
- Workers & Pages → Create → Pages → Connect to Git →
rexnfx79/STEMRacing. - Build command:
pip install -r docs-requirements.txt && mkdocs build -f apexstem/mkdocs.yml - Output directory:
site/apexstem-docs - Custom domain:
docs.apexstem.org
C. Cloudflare Access (20 min) {#cloudflare-access}¶
- Zero Trust → Access → Applications → add Self-hosted app.
- Domain:
docs.apexstem.org; session duration per policy. - Create policies + groups per rbac-groups.md.
- Test: invite your email; confirm a random Gmail is blocked.
D. Public root (optional)¶
- Second Pages project or redirect
apexstem.org→ “Coming soon” or link to Ridge Racers + mission one-pager. - Redirect rule:
www.apexstem.org→https://apexstem.org(301).
E. GitHub Actions deploy (optional alternative to Git-connected Pages)¶
If you prefer CI deploy: add Cloudflare API token to GitHub secrets and use cloudflare/pages-action — only if Git-connected build is insufficient.
Internal — restrict access {#internal-restrict-access}¶
For board/admin only. Store registrar login email, username (
rexnfx79), and recovery codes in the board password manager only — not in git.
When Apex has org email and a second admin, update Spaceship and Cloudflare contacts to org-owned addresses.
Document control¶
| Field | Value |
|---|---|
| Author | Operations draft (STEMRacing repo) |
| Next review | After Cloudflare zone Active + first Pages deploy |