Files
archipelago 77d0768a21 fix(nginx): stop pinning HSTS — actively clear it instead
The HTTPS server block sent Strict-Transport-Security:
max-age=31536000; includeSubDomains. Browsers that visited HTTPS once
cached the policy and then silently upgraded the still-open HTTP
dashboard's fetches and frames to https — a scheme change is
cross-origin, so every /rpc/v1 call died 'No Access-Control-Allow-
Origin header' while the node was perfectly healthy (framework-pt
2026-09-01: the 'Failed to fetch' storm, dashboard 'not responding',
every app frame mixed-content-blocked).

Plain HTTP is a supported access mode BY DESIGN on this platform: the
node's certificate is optional and self-signed (Settings → Node
certificate, /ca.crt flow), and setup-node-ca.sh deliberately keeps
port 80 serving for devices that haven't installed the CA. So:

- port 80 sends no HSTS at all (with the rationale inline)
- port 443 sends max-age=0, which ACTIVELY DELETES the policy already
  cached by affected browsers — leaving it absent would have kept every
  stranded browser broken for a year

tests/lifecycle/bats/nginx-hsts.bats pins all three properties at the
gate: no live policy on :80, max-age=0 (never 31536000) on :443, and
no long-lived pin anywhere in the deployed config.
2026-09-01 10:28:57 -04: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

# 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