openboatmobile-ai/docs/GETTING-STARTED.md
CeeLo Greenheart a593af9b27 Initial commit - Clean public release
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
2026-04-22 19:13:28 +00:00

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