- Revamped GETTING_STARTED.md for clarity and completeness, detailing the Docker development environment and installation steps. - Updated Cargo.lock and Cargo.toml to replace deprecated dependencies and add new ones, including hyper-ws-listener and env_logger. - Improved WebSocket handling in the API to support upgrades and error management. - Enhanced Neode UI scripts to manage Docker containers during development. - Adjusted dummy app configurations for accurate LAN addresses. - Sorted app entries in the UI for better organization and accessibility.
7.0 KiB
Getting Started with Archipelago Docker Development
This guide will help you get the full Archipelago development environment running with all apps containerized.
What You'll Get
A complete Bitcoin node OS with 13+ apps running in Docker:
- Bitcoin Core (regtest - no blockchain download)
- Lightning Network (LND)
- BTCPay Server
- Mempool Explorer
- Home Assistant
- Grafana
- Ollama (local AI)
- SearXNG
- OnlyOffice
- Penpot
- And more...
Prerequisites
-
Docker Desktop - Download here
- Mac: 4GB RAM minimum, 8GB recommended
- Disk space: ~5GB for all images
-
Node.js 18+ - Download here
-
Git (you probably have this)
Installation Steps
Step 1: Start Docker Desktop
Make sure Docker Desktop is running:
- Mac: Look for the Docker icon in your menu bar
- If not running, open Docker Desktop from Applications
Step 2: Clone and Setup
cd ~/Projects
git clone [your-repo] archy
cd archy
Step 3: Install UI Dependencies
cd neode-ui
npm install
Step 4: Start Everything
npm start
This will:
- Check if Docker is running
- Download all Docker images (first time only, ~10-30 minutes)
- Start all containers
- Start the development UI server
First Time? You'll be prompted to confirm the image download. Type y and press Enter.
Step 5: Open the UI
Once everything starts, open your browser to:
Navigate to "My Apps" to see all your apps running!
What's Running?
After startup, you'll have these services:
Bitcoin & Lightning Network
- Bitcoin Core - Full node in regtest mode (no mainnet sync)
- LND - Lightning Network daemon
- BTCPay Server - Accept Bitcoin payments
- Mempool - Blockchain explorer
- Fedimint - Federated Bitcoin mint
Self-Hosted Apps
- Home Assistant - Home automation
- Grafana - Monitoring and analytics
- SearXNG - Private search engine
- Ollama - Run AI models locally
Collaboration Tools
- OnlyOffice - Office suite (docs, spreadsheets, presentations)
- Penpot - Design and prototyping (like Figma)
Placeholders
- Endurain - Coming soon
- MorphOS - Coming soon
Using the Apps
From the UI
- Go to http://localhost:8100
- Click "My Apps" in the sidebar
- All apps are listed alphabetically
- Click "Launch" on any running app
Direct Access
All apps have unique ports:
| App | URL |
|---|---|
| Grafana | http://localhost:3000 |
| Home Assistant | http://localhost:8123 |
| SearXNG | http://localhost:8082 |
| Mempool | http://localhost:4080 |
| Penpot | http://localhost:9001 |
| OnlyOffice | http://localhost:8083 |
| BTCPay Server | http://localhost:14142 |
See DOCKER_DEV_SETUP.md for the complete list.
Managing Apps
Start/Stop Individual Apps
# Stop an app
docker compose stop bitcoin
# Start an app
docker compose start bitcoin
# Restart an app
docker compose restart bitcoin
View Logs
# All logs
docker compose logs -f
# Specific app
docker compose logs -f bitcoin
docker compose logs -f btcpay
docker compose logs -f lnd
Check Status
docker compose ps
Stopping Everything
Stop All Apps
cd neode-ui
npm stop
This stops the UI and all Docker containers.
Stop Just Docker Apps
cd .. # Go to project root
./stop-docker-apps.sh
Remove All Data (Fresh Start)
docker compose down -v
Warning: This deletes all app data!
Troubleshooting
Docker not starting
# Check if Docker is running
docker ps
# If not, start Docker Desktop
open -a Docker
Port conflicts
If you see port errors:
- Check what's using the port:
lsof -i :PORT - Stop that service or change the port in
docker-compose.yml
App won't load
- Check if container is running:
docker compose ps - View logs:
docker compose logs [app-name] - Restart the container:
docker compose restart [app-name]
Out of disk space
Clean up Docker:
docker system prune -a
Complete reset
cd neode-ui
npm stop
cd ..
docker compose down -v
docker system prune -a
cd neode-ui
npm start
Development Tips
Making Changes
The UI hot-reloads automatically. Just edit files in neode-ui/src/ and refresh your browser.
Testing Bitcoin Stuff
Bitcoin Core runs in regtest mode - you can generate blocks instantly:
# Get a new address
docker exec archy-bitcoin bitcoin-cli -regtest -rpcuser=bitcoin -rpcpassword=bitcoinpass getnewaddress
# Generate blocks to that address
docker exec archy-bitcoin bitcoin-cli -regtest -rpcuser=bitcoin -rpcpassword=bitcoinpass generatetoaddress 101 [address]
Using Lightning
LND connects to Bitcoin Core automatically. Access the REST API at http://localhost:8080.
Adding New Apps
- Add service to
docker-compose.yml - Add entry to
neode-ui/src/utils/dummyApps.ts - Restart:
npm stop && npm start
File Structure
archy/
├── docker-compose.yml # All app definitions
├── start-docker-apps.sh # Start all Docker apps
├── stop-docker-apps.sh # Stop all Docker apps
├── DOCKER_DEV_SETUP.md # Detailed documentation
├── docker/ # Placeholder app HTML
│ ├── endurain-placeholder/
│ └── morphos-placeholder/
└── neode-ui/ # Vue.js UI
├── package.json
├── start-dev.sh # Main dev startup (npm start)
├── stop-dev.sh # Stop everything (npm stop)
└── src/
├── views/Apps.vue # My Apps page
└── utils/dummyApps.ts # App definitions
Next Steps
- Explore the apps - Try opening different services
- Check the logs - See what's happening:
docker compose logs -f - Read the docs - See DOCKER_DEV_SETUP.md for details
- Start building - The UI and backend are ready for development!
Common Tasks
Update all images
cd ~/Projects/archy
docker compose pull
docker compose up -d
Backup data
docker compose down
cp -r /var/lib/docker/volumes ~/docker-backup
Check resource usage
docker stats
See all containers
docker ps -a
Getting Help
- Documentation: See DOCKER_DEV_SETUP.md
- Logs:
docker compose logs -f [service-name] - Status:
docker compose ps - Docker issues: Check Docker Desktop logs
Architecture
This setup mimics production as closely as possible:
- Production: Alpine Linux + Podman + Real apps
- Development: macOS/Linux + Docker + Same app images
Key differences:
- Bitcoin in regtest (no blockchain sync)
- All on localhost (no Tor)
- Simpler networking (single bridge network)
See Architecture.md for the full production architecture.
Ready to build a Bitcoin node OS? Start with npm start! 🚀