docs/install/upstash.md
Run a persistent OpenClaw Gateway on Upstash Box, a managed Linux environment with keep-alive lifecycle support.
Use an SSH tunnel for dashboard access. Do not expose the Gateway port directly to the public internet.
Create a keep-alive Box in the Upstash Console. Note the Box ID, such as
right-flamingo-14486, and your Box API key.
Upstash maintains its current OpenClaw Box walkthrough at OpenClaw Setup.
Forward the OpenClaw dashboard port to your local machine. Use your Box API key as the SSH password when prompted:
ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -L 18789:127.0.0.1:18789 <box-id>@us-east-1.box.upstash.com
The keepalive options reduce idle tunnel drops during onboarding.
Inside the Box:
sudo npm install -g openclaw
openclaw onboard --install-daemon
Follow the prompts. Copy the dashboard URL and token when onboarding finishes.
Configure the Gateway for the Box network and start it in the background:
openclaw config set gateway.bind lan
nohup openclaw gateway > gateway.log 2>&1 &
With the SSH tunnel active, open the dashboard URL locally:
http://127.0.0.1:18789/#token=<your-token>
Set this command as the Box init script so the Gateway restarts when the Box starts:
nohup openclaw gateway > gateway.log 2>&1 &
If SSH freezes during onboarding, reconnect with a clean SSH config and keepalives:
ssh -F /dev/null -o ControlMaster=no -o ServerAliveInterval=15 -o ServerAliveCountMax=3 -L 18789:127.0.0.1:18789 <box-id>@us-east-1.box.upstash.com
This bypasses stale local ~/.ssh/config settings and keeps the tunnel active
through idle network periods.