Bootstrap System¶
The Bootstrap System is a secure, encrypted mechanism for provisioning new servers and onboarding new devices into our infrastructure.
🛠️ Two Types of Bundles¶
We maintain two distinct types of bootstrap bundles, each serving a specific purpose:
1. 🖥️ Server Migration Bundle (bootstrap-secrets.age)¶
Use Case: Migrating production infrastructure or setting up a new production-class server.
- Contains:
- Infisical
ENCRYPTION_KEY(The most critical secret) - Database & Redis credentials
- Machine Identity credentials (for accessing existing Infisical instance)
- Hetzner API token
- SSH public keys for all devices
- S3 & Storage Box credentials
- Security: HIGH. Create before migration, delete immediately after.
2. 💻 Device Onboarding Bundle (device-bootstrap.age)¶
Use Case: Setting up a NEW laptop or computer to access the infrastructure.
- Contains:
- SSH Private Key: Your personal identity key.
- Infisical Credentials: Universal-auth machine identity.
- Optional Repository Backup: A compressed copy of
coder-corefor offline setup. - Security: CRITICAL. This bundle contains a private key. Transfer via secure method (USB/Tailscale) only.
🚀 Quick Usage¶
Creating Bundles (Existing Device)¶
Run these on your main device (macbook-pro):
cd ~/coder-core/.bootstrap
# Create Server Migration Bundle
./create-bundle.sh
# Create Device Onboarding Bundle
./create-device-bundle.sh
Using Bundles (New Device/Server)¶
On a New Device (Interactive)¶
The easiest way is using the Tailscale Bootstrap Server:
- On your main device:
./serve-via-tailscale.sh - On the new device:
curl http://<TAILSCALE_IP>:8080/device-bootstrap.age | age -d | bash
On a New Server (Manual)¶
🔐 Security Standards¶
- Never Commit: Bundles (
*.age) are gitignored and must NEVER be committed to source control. - Encryption: All bundles are encrypted using
age. - Passphrases: Must be complex and stored in a password manager.
- Ephemeral: Server bundles should be deleted as soon as the migration is successful.
- Zero-Trust: Transfer device bundles only via private networks (Tailscale) or physical media (USB).