docs: capture todo - migrate source references to HTTPS domain

This commit is contained in:
archipelago 2026-07-30 18:46:39 -04:00
parent 61e95273e0
commit d677f6f958

View File

@ -0,0 +1,30 @@
---
created: 2026-07-30T22:19:31.770Z
title: Migrate all source references to https://source.archipelago-foundation.org (stop exposing VPS2 IP)
area: security
severity: blocker
files:
- scripts/self-update.sh
- scripts/first-boot-containers.sh
- scripts/create-release.sh
- scripts/create-release-manifest.sh
- scripts/image-versions.sh
- scripts/generate-app-catalog.sh
- scripts/deploy-bitcoin-knots.sh
- scripts/validate-app-manifest.sh
- .gitea/workflows/demo-images.yml
- release-manifest.json
---
## Problem
Dorian (2026-07-30, critical): the Gitea source host is referenced everywhere as raw `http://146.59.87.168:3000` — plain HTTP, VPS2's bare IP exposed in shipped artifacts (release-manifest.json, self-update.sh, first-boot scripts run on every node) and CI workflows. Should be `https://source.archipelago-foundation.org` so the IP isn't baked into anything and transport is TLS.
State verified 2026-07-30: DNS already resolves (A → 146.59.87.168), openresty serves HTTPS with a valid cert, and Gitea works through it (`git ls-remote https://source.archipelago-foundation.org/lfg2025/archy.git` succeeds). The local `gitea-ai` remote was already switched to the HTTPS domain. Remaining work is the reference migration + verification.
## Solution
- Replace `http://146.59.87.168:3000` with `https://source.archipelago-foundation.org` across the files listed (grep for `146.59.87.168` repo-wide; ~10 files incl. release/OTA/self-update/first-boot paths).
- CAREFUL: self-update.sh and release-manifest.json drive OTA on live nodes — a wrong URL bricks updates. Verify each rewritten URL responds (curl) before commit; test self-update flow on a dev node before fleet rollout; keep migration non-destructive per repo invariants.
- Check whether older deployed nodes need the IP kept as a fallback during transition (nodes updating FROM an old release still hit the IP URL — the new manifest must be reachable at the old URL too until the fleet has rolled past it).
- Also audit for the raw IP in docs/ and any node-side configs.