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
Getting Started with OpenBoatmobile
This guide walks you through deploying an OpenClaw agent in 15 minutes.
Prerequisites
Before you start, you need:
| Requirement | How to Get It |
|---|---|
| Terraform >= 1.5.4 | Install guide |
| SSH key pair | ssh-keygen -t ed25519 -C "your@email.com" |
| Hetzner Cloud API token | Hetzner Console → Security → API Tokens |
| Venice AI API key | Venice.ai → Settings → API Keys |
| Tailscale auth key (recommended) | Tailscale Admin |
Optional:
- DigitalOcean API token (if using DO instead of Hetzner)
- Discord bot token (for Discord integration)
- Brave Search API key (for web search)
Step 1: Clone the Repository
git clone https://github.com/YOUR_USERNAME/openboatmobile-ai.git
cd openboatmobile
Step 2: Configure Secrets
OpenBoatmobile uses environment variables for secrets. This keeps sensitive dataout of git.
# Copy the example
cp .env.example .env
# Edit with your values
$EDITOR .env
Required secrets:
# Choose your provider
TF_VAR_cloud_provider=hetzner # or digitalocean
# Provider API token (one of these)
TF_VAR_hcloud_token=your-hetzner-api-token-here
# TF_VAR_do_token=your-digitalocean-api-token-here
# Venice AI (required for inference)
TF_VAR_venice_api_key=your-venice-api-key-here
# SSH key name (as shown in your cloud provider's console)
TF_VAR_ssh_key_names='["my-ssh-key-name"]'
Recommended:
# Tailscale for secure remote access
TF_VAR_enable_tailscale=true
TF_VAR_tailscale_auth_key=tskey-auth-xxxxx
Step 3: Source the Environment
source .env
This loads your secrets into the shell. Terraform will read TF_VAR_* variables automatically.
Step 4: Initialize and Plan
terraform init
terraform plan
Review the plan. You should see:
- 1 server (Hetzner) or 1 droplet (DigitalOcean)
- 1 firewall
- Cloud-init configuration
Step 5: Deploy
terraform apply
Type yes when prompted. Deployment takes 2-5 minutes.
Step 6: Connect
Terraform outputs the SSH command (username depends on framework):
# Example output for OpenClaw:
ssh_command = "ssh openclaw@123.45.67.89"
# Example output for Hermes:
ssh_command = "ssh hermes@123.45.67.89"
SSH into your server:
# The username will be either 'openclaw' or 'hermes' based on your framework
ssh <USERNAME>@<YOUR_SERVER_IP>
Step 7: Run OpenClaw Onboarding
On the server:
openclaw onboard --install-daemon
This configures the OpenClaw gateway and starts the service.
Step 8: Configure Tailscale (if enabled)
If you're using Tailscale:
# On the server
sudo tailscale serve --bg 18789
Then visit: https://<hostname>.<tailnet>.ts.net/
Step 9: Configure Discord (Optional)
See DISCORD_SETUP.md for Discord bot configuration.
Troubleshooting
SSH Connection Refused
- Wait 2-3 minutes after deployment for cloud-init to complete
- Check firewall allows your IP:
TF_VAR_ssh_allowed_ips='["your.ip.here/32"]'
Terraform Error: "SSH key not found"
- Hetzner: Key name must match exactly as shown in Console
- DigitalOcean: Use the fingerprint, not the name
OpenClaw command not found
- Cloud-init installs Node.js and OpenClaw
- Wait a few minutes, then try:
which openclaw - Check logs:
tail -f /var/log/cloud-init-output.log
Tailscale not working
- Verify auth key is valid and unused
- Check Tailscale status:
sudo tailscale status - Enable Serve in Tailscale Admin Console
Next Steps
- HETZNER_SETUP.md - Detailed Hetzner configuration
- DIGITALOCEAN_SETUP.md - Detailed DO configuration
- SECRETS.md - Advanced secrets management
- TROUBLESHOOTING.md - Common issues and fixes