Sanitized for public release: - Removed all API keys, tokens, and secrets - Removed personal Discord IDs from hermes-openclaw.json - Updated git URLs to be generic placeholders - All sensitive data uses environment variable interpolation
3.9 KiB
3.9 KiB
DigitalOcean Setup
Detailed guide for deploying OpenBoatmobile to DigitalOcean.
When to Use DigitalOcean
| Factor | Hetzner | DigitalOcean |
|---|---|---|
| Price | €4.49/mo (cx23) | $24/mo (s-2vcpu-4gb) |
| US West Coast | No | Yes (SFO2, SFO3) |
| Documentation | Good | Excellent |
| One-click apps | Limited | Extensive |
| Support | Ticket | Ticket + Premium |
Use DigitalOcean if:
- You're on the US West Coast (SFO has better latency than Ashburn)
- You already have DO credits/promo codes
- You prefer DO's documentation and ecosystem
Create DigitalOcean Account
- Go to DigitalOcean
- Sign up
- Add a payment method ($5 minimum)
Create API Token
- Go to DO API Settings
- Click Generate New Token
- Name it (e.g., "openclaw-terraform")
- Permissions: Read & Write
- Copy the token immediately (shown only once)
Add SSH Key
- Go to DO Security Settings
- Click Add SSH Key
- Paste your public key contents:
cat ~/.ssh/id_ed25519.pub - Give it a name
- Click Add SSH Key
Get the Fingerprint
Terraform needs the fingerprint, not the name:
ssh-keygen -lf ~/.ssh/id_ed25519.pub
# Output: 256 SHA256:abc123... your@email.com (ED25519)
The fingerprint is the part after SHA256: and before the email.
TF_VAR_ssh_key_fingerprints='["abc123..."]'
Choose a Region
| Code | Location | Notes |
|---|---|---|
nyc1 |
New York | US East |
nyc3 |
New York | US East (recommended) |
sfo2 |
San Francisco | US West |
sfo3 |
San Francisco | US West |
ams3 |
Amsterdam | Europe |
lon1 |
London | Europe |
sgp1 |
Singapore | Asia |
Configure OpenBoatmobile
Minimal Configuration
In terraform.tfvars:
provider = "digitalocean"
server_name = "my-agent"
droplet_size_digitalocean = "s-2vcpu-4gb"
region_digitalocean = "nyc3"
# These come from environment:
# TF_VAR_do_token
# TF_VAR_venice_api_key
# TF_VAR_ssh_key_fingerprints
Droplet Sizes
| Size | vCPU | RAM | Disk | Price |
|---|---|---|---|---|
| s-1vcpu-2gb | 1 | 2 GB | 50 GB | $12/mo |
| s-2vcpu-4gb | 2 | 4 GB | 80 GB | $24/mo (recommended) |
| s-2vcpu-8gb | 2 | 8 GB | 160 GB | $48/mo |
| s-4vcpu-8gb | 4 | 8 GB | 160 GB | $64/mo |
The s-2vcpu-4gb is the sweet spot for OpenClaw.
Deploy
# Load secrets
source .env
# Initialize (first time only)
terraform init
# Preview changes
terraform plan
# Deploy
terraform apply
Post-Deployment
Terraform outputs:
server_ip = "123.45.67.89"
ssh_command = "ssh openclaw@123.45.67.89" # or "ssh hermes@123.45.67.89" for Hermes
Connect
# Username is 'openclaw' or 'hermes' depending on framework
ssh <USERNAME>@123.45.67.89
Run OpenClaw Onboarding
openclaw onboard --install-daemon
Firewall Rules
OpenBoatmobile creates a DigitalOcean firewall with:
| Direction | Port | Source |
|---|---|---|
| Inbound | 22 (SSH) | Configured IPs |
| Outbound | All | Any |
To restrict SSH to your IP:
TF_VAR_ssh_allowed_ips='["your.public.ip/32"]'
Cleanup
terraform destroy
Troubleshooting
"SSH Key fingerprint not found"
- Use the fingerprint, not the name
- The fingerprint is shown in DO Console under Security
- Make sure there are no extra spaces
"API Token invalid"
- Regenerate the token
- Copy immediately (shown only once)
- Check for trailing spaces in
.env
Droplet created but can't SSH
- Wait 2-3 minutes for cloud-init
- Verify your key fingerprint is correct
- Check firewall allows your IP
"Rate limit exceeded"
- DO has API rate limits
- Wait a few minutes and retry
- Use
terraform plansparingly beforeapply