diff --git a/docs/docs.json b/docs/docs.json index 6c46e660152..1ae8e5d34b8 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -52,6 +52,18 @@ ] }, "redirects": [ + { + "source": "/platforms/oracle", + "destination": "/install/oracle" + }, + { + "source": "/platforms/digitalocean", + "destination": "/install/digitalocean" + }, + { + "source": "/platforms/raspberry-pi", + "destination": "/install/raspberry-pi" + }, { "source": "/brave-search", "destination": "/tools/brave-search" @@ -885,6 +897,7 @@ "group": "Hosting", "pages": [ "install/azure", + "install/digitalocean", "install/docker-vm-runtime", "install/exe-dev", "install/fly", @@ -893,7 +906,9 @@ "install/kubernetes", "install/macos-vm", "install/northflank", + "install/oracle", "install/railway", + "install/raspberry-pi", "install/render", "vps" ] @@ -1164,10 +1179,7 @@ "platforms/linux", "platforms/windows", "platforms/android", - "platforms/ios", - "platforms/digitalocean", - "platforms/oracle", - "platforms/raspberry-pi" + "platforms/ios" ] }, { diff --git a/docs/install/digitalocean.md b/docs/install/digitalocean.md new file mode 100644 index 00000000000..92b2efc1e2d --- /dev/null +++ b/docs/install/digitalocean.md @@ -0,0 +1,129 @@ +--- +summary: "Host OpenClaw on a DigitalOcean Droplet" +read_when: + - Setting up OpenClaw on DigitalOcean + - Looking for a simple paid VPS for OpenClaw +title: "DigitalOcean" +--- + +# DigitalOcean + +Run a persistent OpenClaw Gateway on a DigitalOcean Droplet. + +## Prerequisites + +- DigitalOcean account ([signup](https://cloud.digitalocean.com/registrations/new)) +- SSH key pair (or willingness to use password auth) +- About 20 minutes + +## Setup + + + + + Use a clean base image (Ubuntu 24.04 LTS). Avoid third-party Marketplace 1-click images unless you have reviewed their startup scripts and firewall defaults. + + + 1. Log into [DigitalOcean](https://cloud.digitalocean.com/). + 2. Click **Create > Droplets**. + 3. Choose: + - **Region:** Closest to you + - **Image:** Ubuntu 24.04 LTS + - **Size:** Basic, Regular, 1 vCPU / 1 GB RAM / 25 GB SSD + - **Authentication:** SSH key (recommended) or password + 4. Click **Create Droplet** and note the IP address. + + + + + ```bash + ssh root@YOUR_DROPLET_IP + + apt update && apt upgrade -y + + # Install Node.js 24 + curl -fsSL https://deb.nodesource.com/setup_24.x | bash - + apt install -y nodejs + + # Install OpenClaw + curl -fsSL https://openclaw.ai/install.sh | bash + openclaw --version + ``` + + + + + ```bash + openclaw onboard --install-daemon + ``` + + The wizard walks you through model auth, channel setup, gateway token generation, and daemon installation (systemd). + + + + + ```bash + fallocate -l 2G /swapfile + chmod 600 /swapfile + mkswap /swapfile + swapon /swapfile + echo '/swapfile none swap sw 0 0' >> /etc/fstab + ``` + + + + ```bash + openclaw status + systemctl --user status openclaw-gateway.service + journalctl --user -u openclaw-gateway.service -f + ``` + + + + The gateway binds to loopback by default. Pick one of these options. + + **Option A: SSH tunnel (simplest)** + + ```bash + # From your local machine + ssh -L 18789:localhost:18789 root@YOUR_DROPLET_IP + ``` + + Then open `http://localhost:18789`. + + **Option B: Tailscale Serve** + + ```bash + curl -fsSL https://tailscale.com/install.sh | sh + tailscale up + openclaw config set gateway.tailscale.mode serve + openclaw gateway restart + ``` + + Then open `https:///` from any device on your tailnet. + + **Option C: Tailnet bind (no Serve)** + + ```bash + openclaw config set gateway.bind tailnet + openclaw gateway restart + ``` + + Then open `http://:18789` (token required). + + + + +## Troubleshooting + +**Gateway will not start** -- Run `openclaw doctor --non-interactive` and check logs with `journalctl --user -u openclaw-gateway.service -n 50`. + +**Port already in use** -- Run `lsof -i :18789` to find the process, then stop it. + +**Out of memory** -- Verify swap is active with `free -h`. If still hitting OOM, use API-based models (Claude, GPT) rather than local models, or upgrade to a 2 GB Droplet. + +## Next steps + +- [Channels](/channels) -- connect Telegram, WhatsApp, Discord, and more +- [Gateway configuration](/gateway/configuration) -- all config options +- [Updating](/install/updating) -- keep OpenClaw up to date diff --git a/docs/install/oracle.md b/docs/install/oracle.md new file mode 100644 index 00000000000..892674b5431 --- /dev/null +++ b/docs/install/oracle.md @@ -0,0 +1,156 @@ +--- +summary: "Host OpenClaw on Oracle Cloud's Always Free ARM tier" +read_when: + - Setting up OpenClaw on Oracle Cloud + - Looking for free VPS hosting for OpenClaw + - Want 24/7 OpenClaw on a small server +title: "Oracle Cloud" +--- + +# Oracle Cloud + +Run a persistent OpenClaw Gateway on Oracle Cloud's **Always Free** ARM tier (up to 4 OCPU, 24 GB RAM, 200 GB storage) at no cost. + +## Prerequisites + +- Oracle Cloud account ([signup](https://www.oracle.com/cloud/free/)) -- see [community signup guide](https://gist.github.com/rssnyder/51e3cfedd730e7dd5f4a816143b25dbd) if you hit issues +- Tailscale account (free at [tailscale.com](https://tailscale.com)) +- An SSH key pair +- About 30 minutes + +## Setup + + + + 1. Log into [Oracle Cloud Console](https://cloud.oracle.com/). + 2. Navigate to **Compute > Instances > Create Instance**. + 3. Configure: + - **Name:** `openclaw` + - **Image:** Ubuntu 24.04 (aarch64) + - **Shape:** `VM.Standard.A1.Flex` (Ampere ARM) + - **OCPUs:** 2 (or up to 4) + - **Memory:** 12 GB (or up to 24 GB) + - **Boot volume:** 50 GB (up to 200 GB free) + - **SSH key:** Add your public key + 4. Click **Create** and note the public IP address. + + + If instance creation fails with "Out of capacity", try a different availability domain or retry later. Free tier capacity is limited. + + + + + + ```bash + ssh ubuntu@YOUR_PUBLIC_IP + + sudo apt update && sudo apt upgrade -y + sudo apt install -y build-essential + ``` + + `build-essential` is required for ARM compilation of some dependencies. + + + + + ```bash + sudo hostnamectl set-hostname openclaw + sudo passwd ubuntu + sudo loginctl enable-linger ubuntu + ``` + + Enabling linger keeps user services running after logout. + + + + + ```bash + curl -fsSL https://tailscale.com/install.sh | sh + sudo tailscale up --ssh --hostname=openclaw + ``` + + From now on, connect via Tailscale: `ssh ubuntu@openclaw`. + + + + + ```bash + curl -fsSL https://openclaw.ai/install.sh | bash + source ~/.bashrc + ``` + + When prompted "How do you want to hatch your bot?", select **Do this later**. + + + + + Use token auth with Tailscale Serve for secure remote access. + + ```bash + openclaw config set gateway.bind loopback + openclaw config set gateway.auth.mode token + openclaw doctor --generate-gateway-token + openclaw config set gateway.tailscale.mode serve + openclaw config set gateway.trustedProxies '["127.0.0.1"]' + + systemctl --user restart openclaw-gateway + ``` + + + + + Block all traffic except Tailscale at the network edge: + + 1. Go to **Networking > Virtual Cloud Networks** in the OCI Console. + 2. Click your VCN, then **Security Lists > Default Security List**. + 3. **Remove** all ingress rules except `0.0.0.0/0 UDP 41641` (Tailscale). + 4. Keep default egress rules (allow all outbound). + + This blocks SSH on port 22, HTTP, HTTPS, and everything else at the network edge. You can only connect via Tailscale from this point on. + + + + + ```bash + openclaw --version + systemctl --user status openclaw-gateway + tailscale serve status + curl http://localhost:18789 + ``` + + Access the Control UI from any device on your tailnet: + + ``` + https://openclaw..ts.net/ + ``` + + Replace `` with your tailnet name (visible in `tailscale status`). + + + + +## Fallback: SSH tunnel + +If Tailscale Serve is not working, use an SSH tunnel from your local machine: + +```bash +ssh -L 18789:127.0.0.1:18789 ubuntu@openclaw +``` + +Then open `http://localhost:18789`. + +## Troubleshooting + +**Instance creation fails ("Out of capacity")** -- Free tier ARM instances are popular. Try a different availability domain or retry during off-peak hours. + +**Tailscale will not connect** -- Run `sudo tailscale up --ssh --hostname=openclaw --reset` to re-authenticate. + +**Gateway will not start** -- Run `openclaw doctor --non-interactive` and check logs with `journalctl --user -u openclaw-gateway -n 50`. + +**ARM binary issues** -- Most npm packages work on ARM64. For native binaries, look for `linux-arm64` or `aarch64` releases. Verify architecture with `uname -m`. + +## Next steps + +- [Channels](/channels) -- connect Telegram, WhatsApp, Discord, and more +- [Gateway configuration](/gateway/configuration) -- all config options +- [Updating](/install/updating) -- keep OpenClaw up to date diff --git a/docs/install/raspberry-pi.md b/docs/install/raspberry-pi.md new file mode 100644 index 00000000000..49e3d63b8dc --- /dev/null +++ b/docs/install/raspberry-pi.md @@ -0,0 +1,159 @@ +--- +summary: "Host OpenClaw on a Raspberry Pi for always-on self-hosting" +read_when: + - Setting up OpenClaw on a Raspberry Pi + - Running OpenClaw on ARM devices + - Building a cheap always-on personal AI +title: "Raspberry Pi" +--- + +# Raspberry Pi + +Run a persistent, always-on OpenClaw Gateway on a Raspberry Pi. Since the Pi is just the gateway (models run in the cloud via API), even a modest Pi handles the workload well. + +## Prerequisites + +- Raspberry Pi 4 or 5 with 2 GB+ RAM (4 GB recommended) +- MicroSD card (16 GB+) or USB SSD (better performance) +- Official Pi power supply +- Network connection (Ethernet or WiFi) +- 64-bit Raspberry Pi OS (required -- do not use 32-bit) +- About 30 minutes + +## Setup + + + + Use **Raspberry Pi OS Lite (64-bit)** -- no desktop needed for a headless server. + + 1. Download [Raspberry Pi Imager](https://www.raspberrypi.com/software/). + 2. Choose OS: **Raspberry Pi OS Lite (64-bit)**. + 3. In the settings dialog, pre-configure: + - Hostname: `gateway-host` + - Enable SSH + - Set username and password + - Configure WiFi (if not using Ethernet) + 4. Flash to your SD card or USB drive, insert it, and boot the Pi. + + + + + ```bash + ssh user@gateway-host + ``` + + + + ```bash + sudo apt update && sudo apt upgrade -y + sudo apt install -y git curl build-essential + + # Set timezone (important for cron and reminders) + sudo timedatectl set-timezone America/Chicago + ``` + + + + + ```bash + curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - + sudo apt install -y nodejs + node --version + ``` + + + + ```bash + sudo fallocate -l 2G /swapfile + sudo chmod 600 /swapfile + sudo mkswap /swapfile + sudo swapon /swapfile + echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab + + # Reduce swappiness for low-RAM devices + echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf + sudo sysctl -p + ``` + + + + + ```bash + curl -fsSL https://openclaw.ai/install.sh | bash + ``` + + + + ```bash + openclaw onboard --install-daemon + ``` + + Follow the wizard. API keys are recommended over OAuth for headless devices. Telegram is the easiest channel to start with. + + + + + ```bash + openclaw status + sudo systemctl status openclaw + journalctl -u openclaw -f + ``` + + + + On your computer, get a dashboard URL from the Pi: + + ```bash + ssh user@gateway-host 'openclaw dashboard --no-open' + ``` + + Then create an SSH tunnel in another terminal: + + ```bash + ssh -N -L 18789:127.0.0.1:18789 user@gateway-host + ``` + + Open the printed URL in your local browser. For always-on remote access, see [Tailscale integration](/gateway/tailscale). + + + + +## Performance tips + +**Use a USB SSD** -- SD cards are slow and wear out. A USB SSD dramatically improves performance. See the [Pi USB boot guide](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot). + +**Enable module compile cache** -- Speeds up repeated CLI invocations on lower-power Pi hosts: + +```bash +grep -q 'NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache' ~/.bashrc || cat >> ~/.bashrc <<'EOF' # pragma: allowlist secret +export NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache +mkdir -p /var/tmp/openclaw-compile-cache +export OPENCLAW_NO_RESPAWN=1 +EOF +source ~/.bashrc +``` + +**Reduce memory usage** -- For headless setups, free GPU memory and disable unused services: + +```bash +echo 'gpu_mem=16' | sudo tee -a /boot/config.txt +sudo systemctl disable bluetooth +``` + +## Troubleshooting + +**Out of memory** -- Verify swap is active with `free -h`. Disable unused services (`sudo systemctl disable cups bluetooth avahi-daemon`). Use API-based models only. + +**Slow performance** -- Use a USB SSD instead of an SD card. Check for CPU throttling with `vcgencmd get_throttled` (should return `0x0`). + +**Service will not start** -- Check logs with `journalctl -u openclaw --no-pager -n 100` and run `openclaw doctor --non-interactive`. + +**ARM binary issues** -- If a skill fails with "exec format error", check whether the binary has an ARM64 build. Verify architecture with `uname -m` (should show `aarch64`). + +**WiFi drops** -- Disable WiFi power management: `sudo iwconfig wlan0 power off`. + +## Next steps + +- [Channels](/channels) -- connect Telegram, WhatsApp, Discord, and more +- [Gateway configuration](/gateway/configuration) -- all config options +- [Updating](/install/updating) -- keep OpenClaw up to date