# 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](https://developer.hashicorp.com/terraform/install) | | SSH key pair | `ssh-keygen -t ed25519 -C "your@email.com"` | | Hetzner Cloud API token | [Hetzner Console](https://console.hetzner.cloud/) → Security → API Tokens | | Venice AI API key | [Venice.ai](https://venice.ai) → Settings → API Keys | | Tailscale auth key (recommended) | [Tailscale Admin](https://login.tailscale.com/admin/settings/keys) | **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 ```bash 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. ```bash # Copy the example cp .env.example .env # Edit with your values $EDITOR .env ``` **Required secrets:** ```bash # 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:** ```bash # Tailscale for secure remote access TF_VAR_enable_tailscale=true TF_VAR_tailscale_auth_key=tskey-auth-xxxxx ``` ## Step 3: Source the Environment ```bash source .env ``` This loads your secrets into the shell. Terraform will read `TF_VAR_*` variables automatically. ## Step 4: Initialize and Plan ```bash 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 ```bash terraform apply ``` Type `yes` when prompted. Deployment takes 2-5 minutes. ## Step 6: Connect Terraform outputs the SSH command (username depends on framework): ```bash # 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: ```bash # The username will be either 'openclaw' or 'hermes' based on your framework ssh @ ``` ## Step 7: Run OpenClaw Onboarding On the server: ```bash openclaw onboard --install-daemon ``` This configures the OpenClaw gateway and starts the service. ## Step 8: Configure Tailscale (if enabled) If you're using Tailscale: ```bash # On the server sudo tailscale serve --bg 18789 ``` Then visit: `https://..ts.net/` ## Step 9: Configure Discord (Optional) See [DISCORD_SETUP.md](./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](./HETZNER_SETUP.md) - Detailed Hetzner configuration - [DIGITALOCEAN_SETUP.md](./DIGITALOCEAN_SETUP.md) - Detailed DO configuration - [SECRETS.md](./SECRETS.md) - Advanced secrets management - [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) - Common issues and fixes