Files
archy/image-recipe
archipelagoandClaude Opus 5 b28cc3eeaa fix(13-02): retire the Python model-proxy sidecar and the OpenRouter open relay
Closes the live production exposure this plan targets: /aiui/api/claude/
and /aiui/api/ollama/ proxied straight through with "no session gate
needed", and /aiui/api/openrouter/ was a plain unauthenticated relay to a
paid third-party API the node holds no key for (T-13-08/T-13-09/T-13-10).

image-recipe/configs/nginx-archipelago.conf (BOTH server blocks, ~line 49
and ~line 961 — a fix applied to only one leaves the exposure live on
whichever block serves the request, T-13-15):
- /aiui/api/claude/ and /aiui/api/ollama/ proxy_pass re-pointed from
  127.0.0.1:3142 / 127.0.0.1:11434 to the Rust daemon at 127.0.0.1:5678
  (no trailing path component, so the daemon's own prefix match sees the
  full request URI)
- Forward the session Cookie header to the daemon so it can re-derive auth
- location /aiui/api/openrouter/ deleted outright in both blocks
- Old comment "API key managed by proxy, no session gate needed" (the
  reasoning error that produced the exposure) replaced with rationale

scripts/deploy-to-target.sh: deleted the embedded claude-api-proxy.py
heredoc, its systemd unit creation/enable/restart, the ANTHROPIC_API_KEY
extraction, and the 3141->3142 sed fixups. Added an unconditional step that
stops/disables/removes any pre-existing claude-api-proxy unit and deletes
/opt/archipelago/claude-api-proxy.py and
<data_dir>/secrets/claude-api-proxy.env on every deploy — so
already-provisioned nodes actually lose the old unauthenticated listener,
not just newly-deployed ones.

scripts/setup-aiui-server.sh: dropped the hard ANTHROPIC_API_KEY
requirement and the patch-nginx-claude.py step; the script's remaining job
is the AIUI dist rsync. (Also drops the FileBrowser-fix step that lived
here — that logic already exists, and is kept, in deploy-to-target.sh; this
script narrows to exactly what its rewritten header now says it does.)

core/archipelago/src/api/rpc/system/handlers.rs: `claude_api_key` setting
branch no longer writes a second key copy to secrets/claude-api-proxy.env
or restarts claude-api-proxy. secrets/claude-api-key (0600) remains the
single ledger, with a comment naming it as such.

`cargo build --package archipelago` succeeds. Verified via grep against
every acceptance criterion in 13-02-PLAN.md's Task 2 (openrouter count 0,
3142 gone from nginx, both location blocks present, PORT=3142 gone,
claude-api-proxy gone from handlers.rs, secrets/claude-api-key present).
Task 3 (real-node curl/systemd verification, S-15) is NOT done in this
commit — see 13-02-SUMMARY.md.

Continues WIP checkpoint 13b576da (reset --soft, recommitted atomically
per task per plan protocol).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-03 14:44:25 -04:00
..
2026-01-24 22:01:51 +00:00
2026-01-24 22:01:51 +00:00
2026-05-05 11:29:18 -04:00
2026-01-24 22:01:51 +00:00

Archipelago OS Image Recipes

Build scripts for creating bootable Debian Linux OS images for Archipelago Bitcoin Node OS.

Quick Start

Build the ISO

# 1. Sync latest configs from live dev server
./sync-from-live.sh

# 2. Build components
./scripts/build-backend.sh
./scripts/build-frontend.sh

# 3. Build the ISO
./build-debian-iso.sh

This creates a bootable Debian Live ISO with Archipelago pre-installed.

Write to USB

# Using dd (recommended)
./write-usb-dd.sh /dev/diskN

# Or use Balena Etcher to flash the ISO

See the ISO-BUILD-CHECKLIST.md for a comprehensive build workflow.

See the Architecture documentation for detailed system information.

What's Included

  • Debian Linux Base: Debian 13 (Trixie) with security updates applied during ISO/install creation
  • Podman: Container runtime for apps (rootless by default)
  • Archipelago Backend: Rust-based API server
  • Archipelago Frontend: Vue.js web interface
  • Systemd Services: Automatic service management
  • Network Configuration: NetworkManager for easy setup

Build Output

  • results/archipelago-installer-x86_64.iso - Bootable hybrid ISO image

Supported Platforms

  • x86_64: Dell OptiPlex, HP ProDesk 400 G4 DM, Start9 Server Pure, and other x86_64 machines
  • Build Systems: macOS (requires Docker) and Linux (native or Docker)

Installation Methods

1. Live USB Boot

Boot from USB, run in live mode to test, or install to disk.

2. Full Disk Installation

From the live environment, run:

sudo /archipelago/install-to-disk.sh

This installs Archipelago to a target disk using debootstrap.

Directory Structure

image-recipe/
├── build-debian-iso.sh          # Main ISO builder
├── write-usb-dd.sh              # Write ISO to USB with dd
├── create-fat32-usb.sh          # Alternative USB creation
├── archipelago-scripts/         # Scripts included in ISO
│   ├── install-to-disk.sh       # Disk installer
│   └── setup-bitcoin.sh         # Bitcoin Core setup
├── scripts/                     # Build helper scripts
│   ├── build-backend.sh         # Compile Rust backend
│   ├── build-frontend.sh        # Build Vue.js frontend
│   └── check-dependencies.sh    # Verify build requirements
└── results/                     # Built ISO output

Requirements

  • Docker (for macOS builds)
  • xorriso (for ISO creation): brew install xorriso
  • 7zip (for ISO extraction): brew install p7zip