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
166 lines
No EOL
3.9 KiB
Markdown
166 lines
No EOL
3.9 KiB
Markdown
# 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 <USERNAME>@<YOUR_SERVER_IP>
|
|
```
|
|
|
|
## 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://<hostname>.<tailnet>.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 |