4.5 KiB
4.5 KiB
created, title, area, severity, files
| created | title | area | severity | files | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-07-30T22:19:31.770Z | Migrate all VPS2 references to https://source.archipelago-foundation.org (stop exposing IP; TLS everywhere) | security | blocker |
|
Problem
Dorian (2026-07-30, CRITICAL): every VPS2 service is referenced by raw IP 146.59.87.168 — plain HTTP for most — exposing the IP in shipped artifacts and requiring insecure-registry config on every node. Everything must move to https://source.archipelago-foundation.org "perfectly so all the stuff we use it for works".
Verified inventory (2026-07-30): ~196 references.
:3000(Gitea — git/raw/releases AND the OCI container registry): 194 refs — every app manifest'simage:field, both catalogs (app-catalog/catalog.json + neode-ui/public/catalog.json, 23 each), compiled Rust core (self-update, registry allow-list, image policy/versions, quadlet gen, package RPCs, podman client), OTA manifests (release-manifest.json, releases/manifest.json), lifecycle tests, release/first-boot/self-update scripts, CI workflows, docs, UI marketplace data.:2100(companion APK package server): 1 ref (CompanionIntroOverlay.vue).:8444(FIPS trust anchor, raw TLS —ARCHY_ANCHOR_ADDRinfips/anchors.rs): 1 ref.
Domain coverage verified live (2026-07-30):
- git clone/ls-remote over HTTPS: ✓ (works;
gitea-airemote already switched) - Gitea raw + releases: ✓ (HTTP 200)
- Container registry
/v2/through the domain: ✓ (proper 401 auth-challenge; TLS pulls will work and the insecure-registry hack becomes removable) :2100APK server: ✗ NOT behind the domain — needs an openresty route/subdomain on VPS2 (Dorian/VPS2-side):8444FIPS anchor: ✗ raw TLS service, can't share 443 — at minimum switch the constant to a DNS name (e.g. anchor host + :8444); check whether anchors pin certs before touching (security-sensitive)
Solution
Execute as a dedicated quick task IMMEDIATELY AFTER phase 2's 02-08 (don't disturb the dev-pair perf measurements; requires core Rust rebuild + node verification per CLAUDE.md discipline):
- Mechanical rewrite of all
:3000refs →https://source.archipelago-foundation.org(registry image refs becomesource.archipelago-foundation.org/lfg2025/<img>:<tag>— no port, implies 443/TLS). - Image-ref transition safety: running containers/quadlets store the OLD image name; migration must not orphan or re-pull-break existing apps (migrations never destroy data). Plan the transition: catalog+manifests flip, orchestrator treats old/new registry names as equivalent during adoption, or staged re-tag.
- Rebuild core, run the lifecycle gate on a dev node (NOT the fleet), verify: self-update fetch, catalog fetch, image pull via domain, app install end-to-end.
- Keep the IP endpoints alive on VPS2 during transition — nodes updating FROM old releases still hit IP URLs (fallback window until fleet rolls past).
:2100+:8444: Dorian is setting these up (2026-07-30) as:companion.archipelago-foundation.org→ replaceshttp://146.59.87.168:2100(companion APK downloads; updateCompanionIntroOverlay.vue+ any packaging docs). HTTPS assumed — verify before flipping.fips.archipelago-foundation.org→ replaces the raw IP inARCHY_ANCHOR_ADDR(fips/anchors.rs), becomingfips.archipelago-foundation.org:8444(or whatever port Dorian lands on). SECURITY-SENSITIVE: check whether the FIPS anchor validation pins certificates/identity to the address before changing; verify anchor handshake against the new name from a dev node before fleet rollout.- As of 2026-07-30 22:50 UTC neither subdomain resolved yet — re-verify DNS + TLS at execution time; do not flip these two refs until both probes pass.
- Remove insecure-registry config from node provisioning once pulls verify over TLS.