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