2026-03-11 18:18:06 +00:00
# Archipelago
2026-01-28 11:12:19 +00:00
2026-03-11 18:18:06 +00:00
> Self-Sovereign Bitcoin Node OS
2026-01-28 11:12:19 +00:00
2026-03-22 03:30:21 +00:00
**Archipelago** is a bootable personal server OS. Flash it to a USB drive, install on any x86_64 or ARM64 machine, and manage Bitcoin infrastructure, self-hosted apps, and decentralized identity through a glassmorphism web UI.
2026-01-28 11:12:19 +00:00
2026-04-09 21:32:08 +02:00
[](https://www.debian.org/)
2026-01-28 11:12:19 +00:00
[](LICENSE)
[](https://www.rust-lang.org/)
2026-03-11 18:18:06 +00:00
[](https://vuejs.org/)
2026-03-25 15:52:26 +00:00
[]()
2026-02-01 18:46:35 +00:00
2026-03-11 18:18:06 +00:00
## Features
2026-02-01 18:46:35 +00:00
2026-03-11 18:18:06 +00:00
### Bitcoin Infrastructure
- **Bitcoin Knots** full node with pruning support
- **LND** Lightning Network daemon with channel management
2026-03-22 03:30:21 +00:00
- **ElectrumX** Electrum server for wallet connectivity
2026-03-11 18:18:06 +00:00
- **BTCPay Server** for accepting Bitcoin payments
- **Mempool** block explorer and fee estimator
- **Fedimint** federation guardian and gateway
2026-02-01 18:46:35 +00:00
2026-03-22 03:30:21 +00:00
### Self-Hosted Apps (30)
Bitcoin (ThunderHub), Storage (FileBrowser, Immich, Nextcloud), Productivity (Penpot, OnlyOffice, Vaultwarden), Media (Jellyfin, PhotoPrism), Search (SearXNG), AI (Ollama), Network (Tailscale, Nginx Proxy Manager), Home (Home Assistant), Nostr (nostr-rs-relay, Nostrudel), Dev (Grafana, Portainer), and more.
2026-02-01 18:46:35 +00:00
2026-03-22 03:30:21 +00:00
### Decentralized Identity
- Ed25519 node identity with DID Documents (did:key)
- Multi-identity management (Personal/Business/Anonymous)
- W3C Verifiable Credentials issuance and verification
- Decentralized Web Node (DWN) with bidirectional sync over Tor
- Nostr relay integration and NIP-07 signing for iframe apps
### Multi-Node Federation
- Invite-based node joining over Tor hidden services
- Trust levels (Trusted/Verified/Untrusted) with DID-based auth
- Bidirectional DWN state sync between federated nodes
- File sharing with access controls (free/peers-only/paid)
### Mesh Networking
- LoRa radio communication via Meshcore protocol
- Device discovery and mesh routing
- Off-grid Bitcoin balance checks (planned)
2026-01-24 22:59:20 +00:00
2026-03-25 15:52:26 +00:00
### System Updates
- OTA updates from self-hosted Gitea (git.tx1138.com) with SHA256 verification
- Three update modes: Manual, Daily Check, Auto Apply (3 AM window)
- Rollback support with automatic backup before applying
- Full UI for update management in Settings
2026-03-11 18:18:06 +00:00
### Security
2026-03-25 15:52:26 +00:00
- ChaCha20-Poly1305 encrypted secrets at rest, Argon2id password hashing
2026-03-22 03:30:21 +00:00
- Rootless Podman: read-only root, cap-drop ALL, non-root user, no-new-privileges
2026-03-11 18:18:06 +00:00
- TOTP two-factor authentication
2026-03-22 03:30:21 +00:00
- Per-endpoint rate limiting, CSRF protection, input validation
2026-03-11 18:18:06 +00:00
- AppArmor profiles for container confinement
2026-03-22 03:30:21 +00:00
- Tor hidden services for all inter-node communication
2026-03-25 15:52:26 +00:00
- All crypto and container dependencies pinned to exact versions
2026-03-22 03:30:21 +00:00
- Full penetration test completed (33 findings, all remediated)
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
## Quick Start
2026-01-27 17:18:21 +00:00
2026-03-11 18:18:06 +00:00
### Install from ISO
2026-01-27 17:18:21 +00:00
2026-03-11 18:18:06 +00:00
1. Download the ISO for your architecture (x86_64 or ARM64)
2. Flash to USB drive with Balena Etcher or `dd`
3. Boot from USB on target hardware
4. Follow the automated installer
5. Access the web UI at `http://<device-ip>`
6. Set your password and start the onboarding wizard
2026-01-27 22:55:20 +00:00
2026-03-11 18:18:06 +00:00
### Supported Hardware
2026-01-27 22:55:20 +00:00
2026-03-11 18:18:06 +00:00
| Platform | Examples | Minimum |
|----------|----------|---------|
| **x86_64** | Intel NUC, mini PCs, any 64-bit PC | 4GB RAM, 32GB storage |
| **ARM64** | Raspberry Pi 5, ARM64 SBCs | 4GB RAM, 32GB storage |
2026-01-27 17:18:21 +00:00
2026-03-11 18:18:06 +00:00
**Recommended**: 8GB+ RAM, 1TB+ NVMe SSD (for full Bitcoin node)
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
## Development
2026-01-27 17:18:21 +00:00
2026-03-11 18:18:06 +00:00
### Prerequisites
2026-03-22 03:30:21 +00:00
- macOS or Linux for frontend development
2026-04-09 21:32:08 +02:00
- Linux dev server (Debian 13) for backend builds — **never build Rust on macOS for Linux**
2026-03-22 03:30:21 +00:00
- Node.js 20+, Rust stable toolchain
2026-01-27 17:18:21 +00:00
2026-03-11 18:18:06 +00:00
### Frontend Development
2026-01-27 17:18:21 +00:00
2026-03-11 18:18:06 +00:00
```bash
cd neode-ui
npm install
2026-03-22 03:30:21 +00:00
npm start # Dev server on http://localhost:8100 (mock backend on :5959)
2026-03-11 18:18:06 +00:00
npm run type-check # TypeScript validation
2026-03-22 03:30:21 +00:00
npm run build # Production build → web/dist/neode-ui/
2026-01-27 17:18:21 +00:00
```
2026-03-11 18:18:06 +00:00
### Deploy to Server
2026-01-24 22:59:20 +00:00
2026-01-28 11:12:19 +00:00
```bash
2026-03-22 03:30:21 +00:00
./scripts/deploy-to-target.sh --live # Deploy to primary dev server
./scripts/deploy-to-target.sh --both # Deploy to both LAN servers
2026-01-28 11:12:19 +00:00
```
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
### Build ISO
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
```bash
ssh archipelago@< server >
cd ~/archy/image-recipe
2026-03-22 03:30:21 +00:00
sudo ./build-auto-installer-iso.sh
2026-03-11 18:18:06 +00:00
```
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
## Architecture
2026-01-24 22:59:20 +00:00
```
2026-04-09 21:32:08 +02:00
Debian 13 (Trixie)
2026-03-22 03:30:21 +00:00
├── Rootless Podman (30 containers, archy-net DNS)
├── Nginx (reverse proxy, security headers, rate limiting)
├── Rust Backend (JSON-RPC API on 127.0.0.1:5678)
│ ├── core/archipelago/ — RPC endpoints, auth, identity, federation, mesh
│ ├── core/container/ — PodmanClient (REST API socket), manifests, health
│ ├── core/security/ — AppArmor, secrets, Cosign image verification
│ └── 6 more crates — models, helpers, js-engine, performance, etc.
├── Vue 3 Frontend (Composition API + TypeScript strict + Pinia + Tailwind)
└── System Tor (hidden services, SOCKS5 proxy)
2026-01-24 22:59:20 +00:00
```
2026-03-22 03:30:21 +00:00
~49,000 lines of Rust | ~47,000 lines of TypeScript/Vue | 78 shell scripts | 30 container apps
2026-03-11 18:18:06 +00:00
## Documentation
2026-01-24 22:59:20 +00:00
2026-03-22 03:30:21 +00:00
| Doc | Purpose |
|-----|---------|
| [Architecture ](docs/architecture.md ) | System design, codebase stats, data paths |
| [Architecture Review (HTML) ](docs/architecture-review.html ) | Interactive guide with diagrams and learning path |
| [Developer Guide ](docs/developer-guide.md ) | Dev setup, workflow, code conventions |
| [API Reference ](docs/api-reference.md ) | Complete RPC endpoint reference |
| [App Developer Guide ](docs/app-developer-guide.md ) | Building and publishing apps |
| [User Walkthrough ](docs/user-walkthrough.md ) | End-user installation and usage guide |
| [Troubleshooting ](docs/troubleshooting.md ) | Diagnostic scenarios and solutions |
| [Operations Runbook ](docs/operations-runbook.md ) | Ops commands and emergency recovery |
| [Security Audit ](docs/security-code-audit-2026-03.md ) | Penetration test findings |
| [Master Plan ](docs/MASTER_PLAN.md ) | Phased roadmap and task tracking |
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
## Contributing
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
1. Fork the repository
2. Create a feature branch (`feature/description` )
3. Follow the coding standards in [CLAUDE.md ](CLAUDE.md )
2026-03-22 03:30:21 +00:00
4. Submit a pull request
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
## License
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
[MIT License ](LICENSE )
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
## Acknowledgments
2026-01-24 22:59:20 +00:00
2026-03-11 18:18:06 +00:00
Built with: [Rust ](https://www.rust-lang.org/ ), [Vue.js ](https://vuejs.org/ ), [Podman ](https://podman.io/ ), [Bitcoin Core ](https://bitcoin.org/ ), [LND ](https://lightning.engineering/ ), [Debian ](https://www.debian.org/ )