#Help with VPS Hetzner VPS setup
1 messages ¡ Page 1 of 1 (latest)
If you want a âsecurity-consciousâ Hetzner VPS setup, the safest default is:
- Do not expose the OpenClaw Gateway port (18789) to the public internet
- Keep the VPS with only SSH open
- Access the Control UI via SSH tunnel (or Tailscale), and keep token auth enabled
Docs youâll want open in another tab:
- Hetzner VPS (Docker guide): https://docs.openclaw.ai/install/hetzner
- VPS hub: https://docs.openclaw.ai/vps
- Security model + audit: https://docs.openclaw.ai/gateway/security
- FAQ (VPS section): https://docs.openclaw.ai/help/faq#how-do-i-install-openclaw-on-a-vps
First: pick your approach (reply with numbers)
A) How do you want to access the Gateway UI?
- SSH tunnel (recommended; simplest + no extra services exposed)
- Tailscale (recommended if you already use it)
- Public HTTPS reverse proxy (advanced; easiest to misconfigure)
B) How do you want to run OpenClaw on the VPS?
- Docker / docker-compose (recommended on VPS; matches the Hetzner guide)
- Host install (systemd user service; fine but a bit more ops-y)
âNoob-safeâ hardening checklist (before OpenClaw)
Do these in a way that wonât lock you out:
- Create a non-root user with sudo, add SSH key login, and confirm you can log in in a second SSH session
- Then disable password SSH + root SSH login
- Turn on a firewall (e.g. UFW) and allow only SSH (and Tailscale if you pick option A2)
- Enable automatic security updates (Ubuntu/Debian: unattended-upgrades)
- Enable Hetzner snapshots/backups (at least before big changes)
OpenClaw-specific security âbaselineâ
Once itâs running, immediately do:
- Run the built-in audit:
openclaw security audit --deep(and optionally--fix) - Ensure the Gateway requires auth (token/password). Token is most common.
- Keep chat channels locked down (DM pairing/allowlists; avoid âopen to everyoneâ while youâre learning)
Reply with A + B (e.g. âA1 B1â), and tell me:
- What OS image you chose on Hetzner (Ubuntu 22.04/24.04, Debian 12, etc.)
- Which chat channel you want first (Telegram/Discord/WhatsApp)
Then Iâll give you a step-by-step plan that matches your choices and keeps the Gateway non-public.
would you recommend any other providers other than hetzner, e.g. hostinger?
Hostinger can work, but I generally recommend picking a provider that gives you a plain, boring Linux VM with full root access + predictable networking, because OpenClaw doesnât need anything specialâjust reliability and the ability to not expose ports publicly.
What Iâd recommend (in order of âknown-good + easiest to follow docsâ)
- Use one of the providers we already have guides for: https://docs.openclaw.ai/vps
- Hetzner (Docker): https://docs.openclaw.ai/install/hetzner
- Fly.io: https://docs.openclaw.ai/install/fly
- exe.dev: https://docs.openclaw.ai/install/exe-dev
- GCP: https://docs.openclaw.ai/install/gcp
- Oracle Always Free (nice if you can get capacity): https://docs.openclaw.ai/platforms/oracle
- Railway / Northflank (more âone-clickâ, less traditional VPS): https://docs.openclaw.ai/vps
Also totally fine (no official step-by-step guide, but works well)
- AWS Lightsail / EC2, DigitalOcean, Linode/Akamai, Vultr (all standard âreal VPSâ experiences)
Hostinger specifically
- If itâs their VPS product (not shared hosting), and you can install Docker + control firewall rules + SSH normally, it should be fine.
- Iâd avoid anything âmanagedâ/shared where you donât fully control ports/services.
Security-wise, the provider matters less than these two choices:
- Keep the Gateway not publicly reachable (SSH tunnel or Tailscale; donât open 18789 to the world)
- Run
openclaw security audit --deepafter setup and fix anything critical
If you tell me:
- your budget/month and region, and
- whether you want âcheapest possibleâ vs âmost beginner-friendly UIâ,
I can point you to the best fit from that list.
im in the eu spain specifically. but i want something cheap and reliable to et started with the option to upgrade later if needed. something without too much headaches for a not too savvy person in these matters
Given âcheap + reliable + EU + upgrade later + minimal headachesâ, Iâd stick with Hetzner unless you have a hard requirement for the VPS to be physically in Spain.
Why Hetzner is the usual sweet spot:
- Very good price/performance, stable networking
- Easy to start small and resize up later
- The OpenClaw community already has a âknown-goodâ guide for it (so fewer weird surprises): https://docs.openclaw.ai/install/hetzner
Latency note: Spain â Germany/Finland is usually totally fine for a chat gateway. Youâll notice reliability way more than a few ms.
My recommended ânoob-friendly, security-consciousâ setup
- Hetzner VPS (Ubuntu LTS)
- Run OpenClaw via Docker compose (matches the guide)
- Keep the Gateway port bound to localhost only on the VPS (
127.0.0.1:18789:18789) - Access it from your laptop via SSH tunnel (no public exposure)
Thatâs basically: âonly SSH is open to the internetâ.
If you really want Spain specifically
Your main âSpain-regionâ option with an official guide is GCP (Madrid region), but itâs typically more expensive/complex than Hetzner for a simple always-on box: https://docs.openclaw.ai/install/gcp
Quick decision (reply with one number)
- Hetzner (recommended: cheapest + least hassle + best community path)
- GCP Madrid (if Spain-location is a must)
- Fly.io (more platform-y; can be nice, but more moving parts than a plain VPS): https://docs.openclaw.ai/install/fly
If you pick (1): tell me what OS image you chose (Ubuntu 24.04 / Debian 12), and whether you want SSH tunnel or Tailscale, and Iâll give you the exact minimal steps to get it running safely.
what about Contabo as the provider? Hetzner gave me a headache with failed ID verification and i cba waiting
Contabo is fine as long as itâs a real VPS where you have root access and can install Docker. OpenClaw doesnât care who the provider is â it just needs a stable Linux box.
That said, my âoperatorâ take:
- Hetzner is the nicest âcheap but still solidâ option when signup works.
- Contabo is often very cheap, but you should be mentally prepared for occasional ânoisy neighbor / inconsistent performanceâ type issues (which can show up as random slowness, especially if you start doing heavier things like browser automation). For a basic chat gateway itâs usually still OK.
If you go with Contabo, you can follow the same setup
Just use the Hetzner Docker guide as a generic VPS Docker guide:
https://docs.openclaw.ai/install/hetzner
(and/or the general Docker page: https://docs.openclaw.ai/install/docker)
Security-conscious key point (provider-independent):
- Keep the Gateway not publicly exposed: publish
18789on127.0.0.1only, and access via SSH tunnel.
That way your VPS only needs SSH open to the internet.
To keep headaches low, Iâd do this (reply with one number)
- âContabo + Docker + SSH tunnelâ (simple + secure, recommended if youâre proceeding today)
- âPick a one-click platformâ (Railway/Northflank) from the VPS hub if you want less Linux admin: https://docs.openclaw.ai/vps
If you pick (1), tell me what OS you installed on the VPS (Ubuntu 24.04 / Debian 12), and Iâll give you the minimal copy/paste steps (and which parts you should not change so you donât accidentally expose it).
alot of these vps proiders now have a 1-click openclaw setup now, it seems they have the integration done for you. would you recommend against this and if so why? or what are the considerations?
â1âclick OpenClawâ deployments (Railway/Northflank/etc.) are not inherently bad â theyâre basically a hosted template + a web /setup wizard â but the tradeoffs are real. Iâd decide based on what youâre optimizing for.
Docs for the two âofficial-ishâ oneâclick paths:
- Railway: https://docs.openclaw.ai/install/railway
- Northflank: https://docs.openclaw.ai/install/northflank
VPS hub: https://docs.openclaw.ai/vps
When 1âclick is a good idea
- You want to try OpenClaw quickly with minimal Linux/Docker work
- Youâre starting with Telegram/Discord/Slack (easy tokens)
- Youâre OK with the Gateway being reachable on a public HTTPS URL (but auth-protected)
Why I might recommend against it for a âsecurity-consciousâ setup
The big difference is: with a VPS you can do the safest pattern:
- Gateway effectively private (bind/publish to localhost only)
- Access via SSH tunnel or Tailscale
- Only SSH is internet-exposed
With 1âclick platforms, the default experience is the opposite:
- Your Gateway + Control UI are typically on a public internet URL (still protected by secrets, but itâs an exposed surface)
Thatâs not automatically unsafe, but it increases:
- Attack surface (public endpoint, more things to misconfigure)
- Trust in the platform (their routing/proxying/logging, volume handling, staff access policies, etc.)
- âOopsâ risk (weak
SETUP_PASSWORD, forgetting to setOPENCLAW_GATEWAY_TOKEN, etc.)
Practical considerations checklist (1âclick or not)
If you do use 1âclick, Iâd treat these as nonânegotiable:
- Set a strong random
SETUP_PASSWORD(this protects/setup) - Set a strong random
OPENCLAW_GATEWAY_TOKEN(this protects the Control UI/Gateway auth) - Make sure you have persistent storage (volume at
/dataon Railway/Northflank), otherwise youâll lose config/credentials on redeploy - Keep channels locked down (pairing/allowlists; donât run âopen DMsâ while youâre learning)
- Plan backups/migration (Railway has
/setup/exportper the docs)
My recommendation for your stated goal
- If you want least headaches to get started today: 1âclick is fine, but keep it low-stakes (donât put super sensitive personal accounts on it yet).
- If you want security-first: a normal VPS where you keep the Gateway non-public (SSH tunnel/Tailscale) is the cleanest model.
If you tell me which channel you want first (Telegram vs Discord vs WhatsApp), Iâll tell you whether 1âclick is likely to be smooth or annoying for that specific channel.
out of ubuntu or debian which should i choose and why
If your goal is cheap + reliable + minimal headaches, pick Ubuntu LTS (usually 24.04 LTS) unless you have a specific reason to prefer Debian.
Ubuntu LTS (recommended for most ânoob on a VPSâ setups)
- Most cloud/VPS guides (and random blog posts) assume Ubuntu, so troubleshooting is easier
- Package availability tends to be a bit smoother (especially around Docker, kernel modules, tooling)
- Very common default in the OpenClaw community (âworks like the docsâ is the main win)
Debian (also totally fine)
- Slightly more minimal/conservative defaults
- Very stable base; great if you already like Debian
- Sometimes you do an extra step here or there for ânewerâ packages, but itâs not a big deal
One nuance that matters here
If youâre running OpenClaw via Docker (which is what the Hetzner guide does), the host OS choice matters less â Docker abstracts most of it. So choose the OS youâll feel most comfortable administering.
My default answer: Ubuntu 24.04 LTS.
If you tell me whether youâre doing Docker or host install, I can tailor the exact âfirst stepsâ checklist (Docker install, firewall defaults, SSH tunnel, etc.).
that was going to be another quesiton, im still not clear on whether i use docker or not and honestly dont even know what it is. im abit lost on that point
Docker is basically a way to run an app in a âcontainerâ â think of it like a small, isolated box that has its own filesystem + dependencies, so the app runs the same way everywhere. Itâs popular on VPSes because you can start/stop/upgrade things cleanly.
But: you do not need Docker to run OpenClaw.
For you (not familiar with Docker), Iâd pick NO Docker first
Itâs simpler because youâll just:
- install OpenClaw on the VPS like a normal program
- run the onboarding wizard
- keep the Gateway private and access it via an SSH tunnel
This is literally the âBeginner quick path (VPS)â in the Linux docs:
https://docs.openclaw.ai/platforms/linux
When Docker is a good idea
Docker is nice if you:
- already know Docker, or
- want a very âself-containedâ deployment, or
- want to follow the Hetzner Docker guide copy/paste style (even on a non-Hetzner VPS)
Hetzner Docker guide (works on any VPS really): https://docs.openclaw.ai/install/hetzner
General Docker doc: https://docs.openclaw.ai/install/docker
The real tradeoff (simple)
No Docker
- Pros: fewer moving parts, easier to âinstall a toolâ later (ffmpeg, etc.), easier mental model
- Cons: youâre managing Node/OpenClaw directly on the VPS
Docker
- Pros: clean isolation, easy restarts, consistent environment
- Cons: one more concept to learn; installing extra binaries later usually means rebuilding the image
Pick one (reply 1 or 2)
- No Docker (recommended for you right now)
- Docker (if you want to follow the Docker guide exactly)
If you reply â1â, tell me what VPS you ended up with (provider + Ubuntu 24.04 or Debian 12), and Iâll give you the exact step-by-step commands from âblank VPSâ â âOpenClaw runningâ, including the security-conscious bit (SSH tunnel so you donât expose the gateway publicly).
does that affect security? honestly it still doesnt really help me decide because i dont even know if or not i benefit in any way. the bottom line is i dont mind setting up things heavily at the beginning as long as once its done it can just run. i have no idea what to expect. i dont know about restarts or anything like that, i thought open claw ran 24/7 so why mention restarts?
Docker can affect security a bit, but itâs not the deciding factor for a âsecurity-conscious OpenClawâ setup. The biggest security levers are (in order):
- Is your Gateway reachable from the public internet or not?
- Does it require auth (token/password) and are your chat allowlists/pairing sane?
- What tools you enable (exec/browser/nodes/etc.) and whether you sandbox tools
Docker vs non-Docker is more about operations and isolation, not âsafe vs unsafeâ.
Does Docker make it âmore secureâ?
Sometimes, slightly:
- Running the Gateway in a container can reduce how much of the host it can touch by default.
- But you still mount volumes for
~/.openclaw(state, creds, sessions), so the sensitive stuff still exists and is reachable. - And Docker is not a magic security boundary; misconfig (running as root, mounting lots of host paths, docker socket access, etc.) can erase the benefits.
If you want real isolation for âuntrusted content + toolsâ, the more relevant OpenClaw feature is tool sandboxing (separate from âgateway in Dockerâ). See: https://docs.openclaw.ai/gateway/sandboxing
Why do people mention restarts if itâs â24/7â?
Because â24/7â just means âitâs supposed to always be runningâ, not âit never restartsâ.
In real life, restarts happen because:
- the VPS reboots (kernel updates, provider maintenance, you reboot it)
- the Gateway process crashes (rare, but any software can)
- you update OpenClaw
- you change certain config that requires a restart (some settings hot-reload, some donât)
So you want a supervisor that automatically brings it back:
- No Docker path: systemd service (what
openclaw onboard --install-daemonsets up) - Docker path:
restart: unless-stoppedin docker-compose
Thatâs how you get âset it up once, then it just runsâ.
Bottom line: what Iâd recommend for you
Given: âI donât mind upfront setup, I want it to just run, Iâm not Docker-savvyâ
â Use NO Docker + systemd daemon. Itâs the least conceptual overhead, and it runs 24/7 just fine.
This is the exact beginner VPS flow: https://docs.openclaw.ai/platforms/linux (see âBeginner quick path (VPS)â)
Pick one (reply with 1 or 2)
- No Docker + systemd (recommended for you)
- Docker compose (fine, but youâll be learning Docker at the same time)
If you pick 1, tell me what OS you installed (Ubuntu 24.04?) and which provider you ended up on, and Iâll give you the step-by-step setup in the âsecure by defaultâ way (SSH tunnel, no public Gateway port).
alli know is im going to go with contabo. i dont care about which OS or docker or no dcker happy for you to choose that for me. as long as i have no security headaches and i can chat away with openclaw through my whatsapp in a secure manner after setup i am happy. with this in mind please guide me in the right direction
Got it. If you want âset it up once, then it just runsâ + WhatsApp + as few security headaches as possible, hereâs the path Iâd pick for you on a Contabo VPS:
- OS: Ubuntu 24.04 LTS
- No Docker (fewer concepts; still runs 24/7 via a service)
- Security posture: Gateway stays private (loopback only) and you access the UI via an SSH tunnel; WhatsApp is locked to your number (donât run an âopen botâ).
Important: donât paste phone numbers, tokens, or QR contents into this Discord thread.
1) Provision the VPS (Contabo)
Pick Ubuntu 24.04 LTS, and make sure you can SSH in with an SSH key.
Optional but recommended before you install anything:
- Create a non-root user with sudo, confirm you can SSH as that user
- Enable a firewall allowing only SSH
- The key idea is: you should not open port
18789to the internet at all
- The key idea is: you should not open port
2) Install OpenClaw (on the VPS)
OpenClawâs official installer will install Node 22+ if needed.
On the VPS:
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
(If youâre security-paranoid, run --dry-run first: ... | bash -s -- --dry-run â docs: https://docs.openclaw.ai/install/installer)
Then confirm:
openclaw --version
3) Run onboarding + install the âalways onâ service
On the VPS:
openclaw onboard --install-daemon
This is what makes it âjust runâ (systemd service). After onboarding:
openclaw gateway status
openclaw status
4) Link WhatsApp (QR) on the VPS
On the VPS:
openclaw channels login --channel whatsapp
It will print a QR. On your phone: WhatsApp â Settings â Linked devices â Link a device â scan QR.
Docs: https://docs.openclaw.ai/channels/whatsapp (see âQuick setupâ)
5) Lock WhatsApp down (secure-by-default)
In config, you want WhatsApp DMs/groups restricted to you.
A solid baseline (JSON5; edit via openclaw configure or by editing ~/.openclaw/openclaw.json):
{
channels: {
whatsapp: {
dmPolicy: "pairing",
allowFrom: ["+YOUR_NUMBER_HERE"],
groupPolicy: "allowlist",
groupAllowFrom: ["+YOUR_NUMBER_HERE"],
},
},
}
Notes:
dmPolicy: "pairing"means unknown senders get a pairing code and are ignored until you approve.- If you only ever want you and no pairing flow, switch to
dmPolicy: "allowlist".
If pairing is enabled and you need to approve a request:
openclaw pairing list whatsapp
openclaw pairing approve whatsapp <CODE>
6) Access the Control UI securely (from your laptop)
From your laptop (not on the VPS), run:
ssh -N -L 18789:127.0.0.1:18789 <user>@<your-vps-ip>
Then open on your laptop:
http://127.0.0.1:18789/
This keeps the Gateway off the public internet.
7) Run the built-in security audit
On the VPS:
openclaw security audit --deep
(And optionally openclaw security audit --fix if it offers safe fixes.)
Docs: https://docs.openclaw.ai/gateway/security
Two quick questions so I can tailor the next steps
- Are you planning to run OpenClaw on a dedicated WhatsApp number (recommended) or your personal number (supported, but a bit more confusing operationally)?
- Do you already have SSH key login working on the Contabo VPS, and are you logging in as
rootor a normal user?
Answer those, and Iâll give you the exact âdo this nextâ checklist (including the minimal firewall rules that wonât lock you out).
2 questions, should i get private networking for the vps? its cheap so i dont mind if its better. if not ill leave out.
secondly the last step of contabo is rsetting a password for root user. but it does say "You can add SSH keys later in the Control Panel.
Your password wonât be emailed.
Keep it safe for Windows access. If lost, a reinstall is required."
1) Private networking on the VPS â do you need it?
For a single OpenClaw VPS, private networking usually doesnât buy you much. OpenClaw mainly needs:
- outbound internet (to WhatsApp Web + model providers)
- SSH access from you
- optionally Tailscale (which is its own âprivate networkâ anyway)
Private networking helps when you have multiple servers (e.g., Gateway VM + separate DB VM) and you want them talking over an internal network.
So Iâd choose:
- Skip it for now (recommended) â simpler, fewer âwhy canât I reach Xâ network surprises.
- Enable it only if you already know youâll run multiple VMs/services that should talk privately.
If itâs cheap and you want to future-proof, you can enable it, but it wonât make your WhatsApp setup noticeably âmore secureâ by itself.
2) Contabo asking you to set a root password
Thatâs normal. Even if youâll use SSH keys, having a root password is useful as a âbreak glassâ recovery credential (console access / rescue mode). Their message about âWindows accessâ is generic boilerplate â still, the point stands: store it safely.
What I recommend:
- Set a strong random root password and save it in a password manager.
- As soon as the server is up, add your SSH key (panel or on the box), then switch to key-only SSH (disable password SSH) and ideally disable root SSH login after you have a sudo user.
If you want, paste the exact OS youâre deploying (Ubuntu 24.04 LTS?) and whether you plan to SSH in as root initially, and Iâll give you the safest âdonât lock yourself outâ sequence for setting up the non-root user + SSH key-only.
ok i can confirm my vps is now active with contabo. i selected ubuntu 24. please guide for next steps
Nice â Ubuntu 24.04 is a good pick. Hereâs the âsecure, boring, runs 24/7â path Iâd do next on a fresh VPS.
Iâm going to assume you can SSH in as root right now (with the password Contabo showed you). If thatâs not true, tell me what does work.
Step 0 â SSH in (from your laptop)
ssh root@YOUR_VPS_IP
Step 1 â Basic OS update (on the VPS)
apt update
apt upgrade -y
Step 2 â Create a non-root user + SSH key auth (recommended)
This is the part where people lock themselves out if they rush. Keep your current SSH session open until youâve confirmed the new login works.
2.1 Create a user (example: krill)
Pick any username you like:
adduser krill
usermod -aG sudo krill
2.2 Add your SSH key to that user
On your laptop, if you donât have an SSH key yet:
ssh-keygen -t ed25519
Then copy your public key to the VPS (from your laptop):
ssh-copy-id krill@YOUR_VPS_IP
Now test a new SSH session (from your laptop):
ssh krill@YOUR_VPS_IP
Only after that works, you can harden SSH:
2.3 Disable root SSH + password login (do this only after 2.2 works)
On the VPS, edit:
sudo nano /etc/ssh/sshd_config
Set (or add) these:
PasswordAuthentication no
PermitRootLogin no
Then reload SSH:
sudo systemctl reload ssh
Open another new terminal and confirm you can still login:
ssh krill@YOUR_VPS_IP
Step 3 â Firewall (keep it simple)
On the VPS:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Goal: only SSH is reachable from the internet. (Do not open port 18789 publicly.)
Step 4 â Install OpenClaw (on the VPS)
Use the official installer (it ensures Node 22+):
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw --version
Step 5 â Run onboarding + install the âalways onâ service
On the VPS:
openclaw onboard --install-daemon
Afterwards:
openclaw gateway status
openclaw status
Step 6 â Link WhatsApp (QR)
On the VPS:
openclaw channels login --channel whatsapp
Scan the QR in your phoneâs WhatsApp (Settings â Linked devices â Link a device).
Docs: https://docs.openclaw.ai/channels/whatsapp
Step 7 â Lock WhatsApp down (donât post your number here)
In ~/.openclaw/openclaw.json, set something like (replace +YOUR_NUMBER locally; donât paste it into Discord):
{
channels: {
whatsapp: {
dmPolicy: "pairing",
allowFrom: ["+YOUR_NUMBER"],
groupPolicy: "allowlist",
groupAllowFrom: ["+YOUR_NUMBER"],
},
},
}
Then restart:
openclaw gateway restart
Step 8 â Access the Control UI securely (SSH tunnel from your laptop)
From your laptop:
ssh -N -L 18789:127.0.0.1:18789 krill@YOUR_VPS_IP
Open on your laptop:
http://127.0.0.1:18789/
Step 9 â Run the security audit (on the VPS)
openclaw security audit --deep
Quick check-in (so I can guide you without guesswork)
Reply with:
- Are you currently logging in as
rootor did you already create a non-root user? - Whatâs the output of
openclaw --version(safe to paste), once youâve installed it?
quick side bar question, ive seen people suggest tailscale for connecting to the vps, do you suggest it?
Yes â Tailscale is a good idea for this exact use case, as long as you use it in the âprivate tailnetâ way (Serve or tailnet-only), not the âpublic internetâ way (Funnel).
Why I like Tailscale for a VPS OpenClaw gateway
- You donât have to expose port 18789 to the internet at all
- You get a stable private address / MagicDNS name for the VPS
- Itâs easier than keeping SSH tunnels running if you switch between laptop/phone/etc.
- It plays nicely with OpenClaw âremote gateway + nodesâ setups later
The two sane modes (pick one)
-
SSH tunnel (what we already discussed)
- simplest, zero extra software
- but you need a tunnel session running when you want the dashboard
-
Tailscale Serve (recommended if you want convenience)
- gateway stays bound to 127.0.0.1
- Tailscale exposes it over HTTPS to your tailnet only
- docs: https://docs.openclaw.ai/gateway/tailscale
What Iâd avoid
- Tailscale Funnel unless you really want it public. Funnel = public internet exposure, and OpenClaw forces stronger auth for it for a reason.
Security note
Tailscale is âsecureâ if your tailnet is secure:
- use Tailscale account 2FA
- keep device approvals tight
- donât share tailnet access broadly
If you want, after you get OpenClaw + WhatsApp working, we can add Tailscale as a âphase 2â improvement so youâre not changing too many variables at once.
can you elaborate on ssh tunnel, what do you mean by but you need a tunnel session running when you want the dashboard? like for example right now i ran this terminal session on my work laptop. im only at the first steps. but then when i get home i want to connect from my personal laptop instead. etc.
An SSH tunnel is just port-forwarding over an SSH connection.
The mental model
- Your OpenClaw Gateway runs on the VPS and (ideally) only listens on 127.0.0.1:18789 (not public).
- Your laptop canât directly reach the VPSâs
127.0.0.1(thatâs âlocalhost on the VPSâ). - So you open an SSH connection that says:
âTake my laptopâs local port 18789 and forward it through SSH to the VPSâs 127.0.0.1:18789.â
Then your browser opens http://127.0.0.1:18789/ on your laptop, but the traffic is actually going through SSH to the VPS.
What I meant by âyou need a tunnel session runningâ
The tunnel only exists while that SSH command is running.
Example tunnel command (run on your laptop):
ssh -N -L 18789:127.0.0.1:18789 krill@YOUR_VPS_IP
- As long as that terminal stays open and connected, the tunnel is active.
- If you close the terminal, or your laptop sleeps, or your network changes â the SSH connection drops â the tunnel is gone.
- The Gateway on the VPS is still running 24/7; you just temporarily lost your private path to the dashboard.
Switching laptops (work â personal)
Totally fine. When you get home:
- On your personal laptop, run the same tunnel command:
ssh -N -L 18789:127.0.0.1:18789 krill@YOUR_VPS_IP - Open
http://127.0.0.1:18789/in your browser.
Nothing âconflictsâ with the work laptop. Each laptop makes its own private tunnel.
Two practical tips
-
If port
18789is already used on your laptop, pick another local port:ssh -N -L 18790:127.0.0.1:18789 krill@YOUR_VPS_IPThen open
http://127.0.0.1:18790/. -
You only need the tunnel for the dashboard / UI access (and any local CLI that talks to the gateway).
You do not need a tunnel just to chat on WhatsApp â WhatsApp messages go to the VPS and the Gateway replies from there.
If you want âno tunnels, just open a URL from any deviceâ, thatâs where Tailscale Serve becomes nice â it gives you a stable HTTPS URL on your tailnet without exposing the gateway publicly.
ive gotten now as far as the add user part, entered the password and created it. this is the last part i got to. do i now enter: usermod -aG sudo krill ?
then can you guide me to install the tailscale stuff and finally the remaining steps?
Yes â if your new user is krill, then as root run:
usermod -aG sudo krill
Then do these in order (this order avoids lockouts):
A) Confirm you can SSH in as krill using an SSH key (do this before SSH hardening)
- On your work laptop, copy your SSH key to the new user:
ssh-copy-id krill@YOUR_VPS_IP
- Test login (still from your work laptop):
ssh krill@YOUR_VPS_IP
- Confirm sudo works (on the VPS, while logged in as
krill):
sudo -v
sudo whoami
If whoami prints root, youâre good.
Only after this works should you disable password SSH / root SSH (we can do that later).
B) Install Tailscale on the VPS
While logged in on the VPS (either as krill with sudo, or as root):
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
It will print a login URL â open it in your browser and approve the device.
Then verify:
tailscale status
tailscale ip -4
On your laptop(s), install the Tailscale app and sign into the same account. Now your work laptop and home laptop will both be able to reach the VPS over the tailnet.
C) Install OpenClaw (on the VPS)
On the VPS:
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw --version
Then run onboarding + install the always-on service:
openclaw onboard --install-daemon
D) Use Tailscale Serve for the Dashboard (so you donât need SSH tunnels)
Once OpenClaw is installed and Tailscale is up, run on the VPS:
openclaw gateway --tailscale serve
Then from any device on your tailnet, you should be able to open the dashboard over HTTPS at the MagicDNS name Tailscale shows (itâll look like https://<hostname>...ts.net/).
(If you prefer âtoken always required even on tailnetâ, tell me and Iâll point you at the exact config knob â thereâs a default that can allow Control UI auth via Tailscale identity headers.)
Docs: https://docs.openclaw.ai/gateway/tailscale
E) Finish WhatsApp
On the VPS:
openclaw channels login --channel whatsapp
Scan the QR on your phone.
Then weâll set the WhatsApp allowlist/pairing policy in ~/.openclaw/openclaw.json (donât paste your number here; use a placeholder).
Before you run anything else: quick check
- Are you currently connected as
rootor askrill? - When you run
sudo whoamiaskrill, does it printroot?
sorry i didnt do the ssh key stuff as that came after the user part which is where i am now. can you guide me on that again please. i havent made any ssh command yet
All good â weâll do the SSH key setup now from scratch. There are two parts:
- generate an SSH key on your laptop
- install the public key on the VPS for the
krilluser
Iâll give you the easiest path first.
0) Quick confirm (on the VPS)
You already created the user krill. Now (still on the VPS as root) run:
usermod -aG sudo krill
(If you already ran it, running it again is fine.)
1) Generate an SSH key (on your laptop)
On your work laptop, open Terminal and run:
ssh-keygen -t ed25519
Just press Enter for the defaults. It will create:
- private key:
~/.ssh/id_ed25519(keep secret) - public key:
~/.ssh/id_ed25519.pub(safe to share/install)
2) Install the key on the VPS (pick 1 option)
Option 1 (recommended): ssh-copy-id (fastest)
From your laptop:
ssh-copy-id krill@YOUR_VPS_IP
It will ask for the krill user password you set with adduser. After that, key auth is installed.
Then test:
ssh krill@YOUR_VPS_IP
Option 2: manual paste (if ssh-copy-id isnât available)
On your laptop, print your public key:
cat ~/.ssh/id_ed25519.pub
Copy the whole line (starts with ssh-ed25519 ...).
On the VPS (as root), run:
mkdir -p /home/krill/.ssh
nano /home/krill/.ssh/authorized_keys
Paste the public key on its own line, save, exit.
Then fix permissions:
chown -R krill:krill /home/krill/.ssh
chmod 700 /home/krill/.ssh
chmod 600 /home/krill/.ssh/authorized_keys
Now from your laptop:
ssh krill@YOUR_VPS_IP
3) Confirm sudo works (once logged in as krill)
On the VPS, as krill:
sudo whoami
It should print root.
Reply with:
- Which option you used (1 or 2)
- Whether
ssh krill@YOUR_VPS_IPworks now - Whether
sudo whoamiprintsroot
Then weâll do Tailscale next.
my user id is louis and after pasting the ssh-copy-id louis@YOUR_VPS_IP, the terminal returned /usr/bin/ssh-copy-id: ERROR: No identities found
That error just means: your laptop doesnât have an SSH key yet (so ssh-copy-id has nothing to copy).
Do this on your laptop:
1) Create an SSH key
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
- Press Enter to accept defaults.
- Passphrase is optional (recommended if this is a personal laptop; for a work laptop it depends on your setup).
2) Confirm the key files exist
ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
You should see both files.
3) Copy the public key to the VPS
Now run:
ssh-copy-id -i ~/.ssh/id_ed25519.pub louis@YOUR_VPS_IP
It should prompt for the password of the louis user on the VPS (the one you set when you ran adduser louis).
4) Test SSH key login
ssh louis@YOUR_VPS_IP
If that works, run on the VPS:
sudo whoami
and it should print root.
If you get stuck on step 2, paste the output of:
ls -la ~/.ssh
(just the filenames are fine; donât paste any private key contents).
please keep in mind im not too tech savy sorry. so do i run this command in the same terminal session im on currently?
Yes â run it in the same terminal on your laptop (the one where you just ran ssh-copy-id and got that error).
Quick rule of thumb:
- Commands like
ssh-keygen,ssh,ssh-copy-idare run on your laptop. - Commands like
sudo ...,apt ...,openclaw ...are run on the VPS after youâve SSHâd into it.
So right now (on your laptop), run:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
Then weâll do the next step (ssh-copy-id ...) again.
but right now im on the terminal of my laptop and connected to my vps, because im seeing root@vmi... is that fine? sorry again its not a concept i understand
Yep â that prompt (root@vmi...) means youâre inside the VPS right now (youâre in a remote shell).
Thatâs totally fine, but ssh-keygen needs to run on your laptop, not on the VPS (because the key is for your laptop to authenticate).
Do this:
Option 1 (recommended, safest): open a second terminal window/tab
- Keep the current VPS terminal open (donât touch it).
- Open a new Terminal window/tab on your laptop.
- In the new terminal (this one should NOT say
root@...), run:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
Option 2: exit the VPS session first
In your current terminal (the one showing root@...), type:
exit
Now youâll be back on your laptop. Then run the ssh-keygen command.
Quick way to tell where you are
- If you see
root@vmi...â youâre on the VPS. - If you see something like your laptop name/user â youâre on your laptop.
Once youâve generated the key, tell me what prompt you see in the terminal where you ran ssh-keygen, and weâll do the ssh-copy-id ... step next.
ok im doing another terminal tab. its asking to enter a passphrase, should i put in whatever i want here?
That passphrase is only for protecting the private key file on your laptop (it never gets sent to the VPS). You have two reasonable choices:
-
Set a passphrase (more secure, recommended)
- Pick something you can remember or store in a password manager.
- Youâll type it when you use the key (unless your OS remembers it).
-
Leave it blank (easier / fewer headaches)
- Just press Enter twice.
- Still secure enough for many people if your laptop account + disk are protected, but less protection if someone steals the key file.
If youâre not sure and want the smoothest setup today: option 2 (blank) is fine. If youâre comfortable using a password manager: option 1 is better.
Reply with 1 or 2 and Iâll tell you the next exact command to run.
Saving key "~/.ssh/id_ed25519" failed: No such file or directory
No worries â that just means the ~/.ssh folder doesnât exist yet on your laptop.
In that laptop terminal tab run:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Then rerun the keygen:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
After it finishes, run this to confirm the files exist:
ls -l ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub
Paste the output of that ls (it wonât include secrets), and then weâll do the ssh-copy-id ... step.
PS C:\Users\LOUIS-> mkdir -p ~/.ssh
mkdir : An item with the specified name C:\Users\LOUIS-DAMEX.ssh already exists.
At line:1 char:1
- mkdir -p ~/.ssh
-
+ CategoryInfo : ResourceExists: (C:\Users\LOUIS-\.ssh:String) [New-Item], IOException + FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
PS C:\Users\LOUIS-> chmod 700 ~/.ssh
chmod : The term 'chmod' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
- chmod 700 ~/.ssh
-
+ CategoryInfo : ObjectNotFound: (chmod:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
Youâre in Windows PowerShell, so two things are happening:
-pis a Linux/macOS thing (PowerShellâsmkdiris different)chmoddoesnât exist in PowerShell (Windows uses different permissions)
No problem â we can do this the Windows-friendly way.
1) Generate the SSH key (PowerShell on your laptop)
In PowerShell run:
ssh-keygen -t ed25519
- When it asks where to save, just press Enter to accept the default path (it will be under
C:\Users\LOUIS-DAMEX\.ssh\...). - Passphrase: you can press Enter twice to leave it blank if you want simplest.
2) Show (and copy) your public key
Run:
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"
Copy the whole line it prints (starts with ssh-ed25519 ...). This is safe to copy, but donât paste it into Discord.
3) Paste that public key onto the VPS (in your VPS terminal)
On the VPS (as root), run:
mkdir -p /home/louis/.ssh
nano /home/louis/.ssh/authorized_keys
Paste the public key on a single line, save, exit.
Then run:
chown -R louis:louis /home/louis/.ssh
chmod 700 /home/louis/.ssh
chmod 600 /home/louis/.ssh/authorized_keys
4) Test SSH login from PowerShell
Back on your Windows laptop PowerShell:
ssh louis@YOUR_VPS_IP
If that logs you in without asking for the VPS password, youâre done with keys.
Two quick questions so I donât mislead you:
- In PowerShell, does
ssh -Vwork (it should print an OpenSSH version)? - On the VPS, is your username definitely
louis(notkrill)?
ok ive ran ssh-keygen -t ed25519
left blank passphrase. it returned a key with a radomt art image. now what?
Perfect â that random ASCII art means the key was created successfully.
Now you need to copy the public key onto the VPS for your user (louis).
1) Show your public key (on your Windows laptop / PowerShell)
Run:
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"
This will print one long line that starts with ssh-ed25519 ...
Copy that whole line (but donât paste it into Discord).
2) Add it to the VPS (in your VPS terminal where you see root@...)
On the VPS:
mkdir -p /home/louis/.ssh
nano /home/louis/.ssh/authorized_keys
Paste the public key on its own line, save, exit.
Then run:
chown -R louis:louis /home/louis/.ssh
chmod 700 /home/louis/.ssh
chmod 600 /home/louis/.ssh/authorized_keys
3) Test SSH login with the key (back on your Windows laptop / PowerShell)
ssh louis@YOUR_VPS_IP
If it logs you in without asking for the Linux user password, youâre good.
If it still asks for a password, tell me exactly what it says (and confirm: does your VPS username definitely equal louis?).
when i run the mkdir command it opens a menu with consufing options
mkdir -p /home/louis/.ssh should not open any menu â it normally just runs silently and returns you to the prompt.
So this almost certainly means you ran it in the wrong place (or you actually opened nano, not mkdir).
Quick check: what prompt do you see?
Reply with just one of these (donât include IPs):
PS C:\Users\...>(Windows PowerShell prompt)root@something:~#(Linux VPS prompt)
If you see PS C:\Users\...> (Windows)
Donât run /home/louis/... commands there â thatâs a Linux path and PowerShell will behave weirdly.
In Windows, you only need to run:
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub"
(copy the line)
Then switch to your VPS terminal (the one that shows root@...) for the next steps.
If you see root@... (VPS)
Run exactly this (it wonât open a menu):
mkdir -p /home/louis/.ssh
Then youâll run:
nano /home/louis/.ssh/authorized_keys
Nano is the thing that shows a menu at the bottom â thatâs normal. You paste the key, then:
- Ctrl + O (save)
- press Enter
- Ctrl + X (exit)
Tell me which prompt youâre on (PS or root@), and Iâll keep you on the correct terminal for each command.
wow this is confusing. right so first i was on my laptop terminal i did the ssh key and you told me to copy the entire line. right i got there. then i went back to the vps terminal and pasted:
mkdir -p /home/louis/.ssh
nano /home/louis/.ssh/authorized_keys
this opened some kind of menu option in the terminal. i exited it because it was consfusing. so now are you saying instead of that command i run mkdir -p /home/louis/.ssh instead?
You did the right thing â what you saw wasnât a âmenuâ, it was nano, a simple text editor that opens inside the terminal. Nano always shows a strip of shortcut hints at the bottom (thatâs the âmenu-lookingâ thing).
Hereâs the exact sequence again, with what you should do when nano opens:
On the VPS terminal (the one showing root@...)
- Create the folder (this wonât show anything if it worked):
mkdir -p /home/louis/.ssh
- Open the file in nano:
nano /home/louis/.ssh/authorized_keys
- Now you are inside nano (this is expected).
- Paste the public key line you copied from your laptop into the empty file.
-
The key should be one long line starting with
ssh-ed25519.Pasting tips:
- Often: rightâclick to paste
- Or Shift+Insert
- (Ctrl+V usually wonât work inside nano)
- Save + exit nano:
- Press Ctrl + O (write out / save)
- Press Enter (confirm filename)
- Press Ctrl + X (exit)
- Fix permissions (still on VPS):
chown -R louis:louis /home/louis/.ssh
chmod 700 /home/louis/.ssh
chmod 600 /home/louis/.ssh/authorized_keys
Then test from your laptop (PowerShell)
ssh louis@YOUR_VPS_IP
So to answer your last question directly: No â you still run mkdir ... and then nano .... The âmenuâ is just nanoâs normal UI, and thatâs exactly where you need to paste the key.
If you want, tell me what you see at the top line when nano opens (e.g. âGNU nano ⌠authorized_keysâ) and Iâll confirm youâre in the right place.
ok did all of this including the final command from the laptop and it worked now! whats next?
Nice â thatâs the hardest âVPS 101â step done. Next we want to (a) make sure you wonât get hacked via SSH, then (b) install Tailscale + OpenClaw + WhatsApp.
Next step: SSH + firewall hardening (recommended)
This is the only part that can lock you out if done wrong, so we do it carefully.
Reply with one number:
- Harden SSH + firewall now (recommended)
- Skip for now (not recommended, but we can)
If you pick (1), do this:
0) Keep your current SSH session open while doing these steps.
1) Confirm sudo works (on the VPS, logged in as louis):
sudo whoami
Should print root.
2) Disable root SSH + password SSH (on the VPS):
sudo nano /etc/ssh/sshd_config
Find/set these lines (add them if missing):
PermitRootLogin no
PasswordAuthentication no
Then reload SSH:
sudo systemctl reload ssh
3) Open a NEW terminal on your laptop and test you can still log in:
ssh louis@YOUR_VPS_IP
Only after that works, you can close the old session.
4) Enable firewall (on the VPS):
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
After hardening: Tailscale
Once you tell me youâre ready, weâll do:
On the VPS:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Then weâll install OpenClaw:
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
Then link WhatsApp:
openclaw channels login --channel whatsapp
Reply with:
- 1 or 2 (whether to harden now)
- and (if you already tried it) what
sudo whoamiprints when youâre logged in aslouis.
picking 1 ofc. im on the vps but still seeing root not louis, do i still run sudo whoami? im confused
If your prompt shows root@..., youâre logged in as root on the VPS. In that case:
sudo whoamiisnât useful (you already are root)- What we actually need to verify is: can
louislog in and use sudo? (so you donât lock yourself out when we disable root SSH)
Do this:
1) Keep your current root session open (donât close it)
Itâs your safety net.
2) Open a NEW terminal tab on your laptop and SSH in as louis
From your laptop (PowerShell):
ssh louis@YOUR_VPS_IP
You should now see a prompt like louis@... (not root@...).
3) Now (while logged in as louis), run:
sudo whoami
It should print:
root
If that works, youâre safe to proceed with disabling root SSH + password auth.
If you prefer to switch users inside the VPS without opening a new tab, you can also run this in your root session:
su - louis
âŚbut the ânew laptop tab SSH loginâ test is the most important one.
Tell me what sudo whoami prints when youâre logged in as louis, and then weâll edit sshd_config.
i can confirm i printed root and thats all fine.
Sweet â that means louis sudo access is working, so we can safely harden SSH now.
1) Harden SSH (disable root login + password login)
Do this on the VPS as louis (or as root â but Iâll write it as louis):
1.1 Create a small SSH config âdrop-inâ (cleaner on Ubuntu 24)
sudo nano /etc/ssh/sshd_config.d/99-openclaw-hardening.conf
Paste these lines:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Save + exit (Ctrl+O, Enter, Ctrl+X).
1.2 Validate + reload SSH
sudo sshd -t
sudo systemctl reload ssh
1.3 IMPORTANT: test a fresh login from your laptop
Open a new terminal on your laptop and run:
ssh louis@YOUR_VPS_IP
If that works, SSH hardening is done. (Keep your old sessions open until you confirm.)
2) Turn on the firewall (UFW)
On the VPS:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
You should see OpenSSH allowed.
3) Install Tailscale (VPS)
On the VPS:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
Itâll print a URL to log in â open it and approve.
Then verify:
tailscale status
Reply with 3 quick confirmations and weâll move to installing OpenClaw + WhatsApp:
- Does
ssh louis@YOUR_VPS_IPstill work after the SSH hardening? - What does
sudo ufw statusshow (just the rules, no IPs)? - Does
tailscale statusshow your VPS as connected?
ok so back on the vps terminal. right now i see root@vmi.. so i now run this command there?
Yes â if you see root@vmi... youâre on the VPS as root, and you can run the commands there.
Just one tweak: since youâre already root, remove sudo from the commands.
So on that VPS terminal, run:
nano /etc/ssh/sshd_config.d/99-openclaw-hardening.conf
Paste:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Save/exit, then run:
sshd -t
systemctl reload ssh
Important: donât close your current root session yet. After reloading SSH, go to your laptop and test in a NEW terminal:
ssh louis@YOUR_VPS_IP
If that works, weâre safe to continue with the firewall + Tailscale steps.
after pasting PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes do i control O to write out and then exit?
Yep â youâre in nano.
Do this:
- Ctrl + O â âWrite Outâ (save)
- Press Enter to confirm the filename
- Ctrl + X â exit nano
Then run the next commands:
sshd -t
systemctl reload ssh
If sshd -t prints nothing, thatâs good (it means the config is valid).
ok i confirm i did this and finally ran ssh louis@YOUR_VPS_IP in a fresh tab and it worked again, saying welcome contabo bla bla. seeing louis@vmi in that particular tab. so now i have this one and also the other tab which is the vps showing root. what are the next steps now
Great â keep both tabs open for now:
- the
root@...tab = your safety net - the
louis@...tab = the one weâll use for day-to-day + OpenClaw
Next weâll do (1) firewall, (2) Tailscale, then (3) install OpenClaw + WhatsApp.
1) Firewall (do this in the root@... tab)
Run:
ufw allow OpenSSH
ufw enable
ufw status
(Goal: only SSH is open to the public internet. We are not opening the OpenClaw port publicly.)
2) Install + connect Tailscale (still in the root@... tab)
Run:
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
It will print a login URL â open it and approve.
Then check:
tailscale status
3) Install OpenClaw (do this in the louis@... tab)
Run:
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw --version
Then run onboarding + install the service:
openclaw onboard --install-daemon
Make it run 24/7 even when youâre logged out
OpenClaw on Linux defaults to a systemd user service, so we should enable âlingeringâ:
Run this in the root@... tab (or louis@... with sudo):
loginctl enable-linger louis
Docs (for reference): https://docs.openclaw.ai/gateway (Linux systemd user + lingering)
4) Link WhatsApp (in the louis@... tab)
openclaw channels login --channel whatsapp
Scan the QR on your phone (WhatsApp â Settings â Linked devices).
Reply with these 3 things (no secrets)
- Output of
ufw status(just the rules) - Does
tailscale statusshow the VPS as connected? - Output of
openclaw --version
Then weâll set up Tailscale Serve for the dashboard and lock down the WhatsApp allowlist.
where am i running:
ufw allow OpenSSH
ufw enable
ufw status?
please always be specific on the terminal to run on
Those UFW commands run on the VPS, in your root@vmi... terminal tab.
So:
Run on: VPS (root tab) â prompt looks like root@vmi...#
ufw allow OpenSSH
ufw enable
ufw status
For clarity going forward, Iâll label every step like this:
- Laptop (PowerShell) â prompt
PS C:\...> - VPS (root tab) â prompt
root@...# - VPS (louis tab) â prompt
louis@...$
after running that it returned:
ufw allow OpenSSH
ufw enable
ufw status
Rules updated
Rules updated (v6)
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Status: active
To Action From
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
root@vmi3127119:~#
Perfect â thatâs exactly what we want. SSH is allowed, everything else is blocked by default, and your SSH sessions should stay up.
Next: install + connect Tailscale
Run on: VPS (root tab) â prompt root@vmi...#
- Install Tailscale:
curl -fsSL https://tailscale.com/install.sh | sh
- Connect it to your Tailscale account:
tailscale up
It will print a login URL. Open that URL in your browser and approve the VPS.
- Verify itâs connected:
tailscale status
Reply with whether tailscale status shows your VPS as connected (you can redact/omit the tailnet name if you want). Then weâll install OpenClaw in your VPS (louis tab).
ok i can confirm success. note i have tailscale app on my iphone running that there. its successfully connected. after running status check i see vmi... and iphone...
Nice â Tailscale is connected. Next we install OpenClaw + make it run 24/7 + link WhatsApp.
Iâll be super explicit about which terminal.
1) Install OpenClaw
Run on: VPS (louis tab) â prompt looks like louis@vmi...$
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw --version
This installer may ask for confirmations / use sudo to install prerequisites â thatâs normal.
2) Make it stay running 24/7 even when you log out
Run on: VPS (root tab) â prompt root@vmi...#
loginctl enable-linger louis
(This is what keeps âsystemd user servicesâ running after logout.)
3) Run onboarding + install the Gateway service
Run on: VPS (louis tab) â louis@vmi...$
openclaw onboard --install-daemon
Youâll need to pick a model/auth option during onboarding (API key / OAuth / etc.). Donât paste any keys into Discord.
After onboarding, check:
openclaw gateway status
openclaw status
4) Link WhatsApp (QR)
Run on: VPS (louis tab) â louis@vmi...$
openclaw channels login --channel whatsapp
Scan the QR with your WhatsApp app.
Reply with:
- the output of
openclaw --version(safe) - whether
openclaw gateway statussays itâs running - whether the WhatsApp QR step worked (yes/no)
Then weâll do the final âsecure defaultsâ config + (optional) set up Tailscale Serve so you can open the dashboard from any of your devices without SSH tunnels.
louis@vmi3127119:~$ curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw --version
đŚ OpenClaw Installer
I'll refactor your busywork like it owes me money.
â Detected: linux
Install plan
OS: linux
Install method: npm
Requested version: latest
[1/3] Preparing environment
¡ Node.js found but version could not be parsed; reinstalling v22+
¡ Installing Node.js via NodeSource
¡ Installing Linux build tools (make/g++/cmake/python3)
â Installing build tools failed â re-run with --verbose for details
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
â Build tools installed
â Installing Node.js failed â re-run with --verbose for details
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
openclaw: command not found
Youâre super close â this is just Ubuntuâs package manager being in a slightly âbroken dependenciesâ state, so the installer canât finish installing build tools + Node 22.
Weâll fix APT first, then rerun the installer with verbose output.
1) Fix broken apt deps (run on: VPS (louis tab) â louis@...$)
sudo apt update
sudo apt --fix-broken install -y
If that completes cleanly, also run:
sudo apt upgrade -y
2) Quick sanity check (still on VPS louis tab)
node -v
which node
If node -v errors or prints something weird, paste just that output.
3) Rerun the OpenClaw installer in verbose mode
Run on VPS (louis tab):
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --verbose
Then paste the last ~30 lines of output around the failure (no secrets should appear there).
Why this happens
The installer uses Ubuntu apt to install compiler tools + NodeSource Node 22. If apt has unmet dependencies, it canât install anything reliably until you run apt --fix-broken install.
Send me the output of step (1) if it errors, otherwise the tail of the --verbose installer run and weâll get you unstuck quickly.
node -v printed this:
which node
v22.22.0
/usr/bin/node
Good news: Node is installed correctly now (v22.22.0 at /usr/bin/node). So we can move forward â we just need to get OpenClaw itself installed on your user.
Next, I need one quick check:
1) Run on: VPS (louis tab) (louis@...$)
npm -v
npm config get prefix
What weâre checking
npm -vconfirms npm is present- the
prefixtells us wherenpm i -g ...will install binaries (and whether youâll hit permission errors)
Once you paste those two outputs, Iâll tell you the exact next command.
(If you want to try immediately and you donât mind a possible permission error, the next step will be npm i -g openclaw@latest, but letâs confirm the prefix first so it installs cleanly without sudo.)
after running that it printed:
10.9.4
/usr
Great â that explains the problem.
npm config get prefix is /usr, which means global installs want to go into a system folder (needs root). We want OpenClaw installed under your user (louis) instead.
Fix npm prefix for louis (run on: VPS (louis tab))
Copy/paste these:
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
Now add that to your PATH (so the openclaw command is found):
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Quick check:
npm config get prefix
which openclaw || true
- Prefix should now be something like
/home/louis/.npm-global which openclawwill be empty for now (until we install it)
Install OpenClaw (still VPS louis tab)
npm i -g openclaw@latest
Then verify:
openclaw --version
If you hit any error, paste the last ~20 lines and weâll fix it. Once openclaw --version works, weâll go back to:
openclaw onboard --install-daemon- then WhatsApp QR (
openclaw channels login --channel whatsapp)
louis@vmi3127119:~$ npm i -g openclaw@latest
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated are-we-there-yet@2.0.0: This package is no longer supported.
npm warn deprecated gauge@3.0.2: This package is no longer supported.
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated glob@7.2.3: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm warn deprecated npmlog@5.0.1: This package is no longer supported.
npm warn deprecated tar@6.2.1: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
added 698 packages in 1m
131 packages are looking for funding
run npm fund for details
Nice â that install succeeded. Those âdeprecatedâ warnings are normal npm noise (annoying, but not your fault).
Next: confirm OpenClaw runs
Run on: VPS (louis tab) â louis@...$
openclaw --version
If that works, we move on immediately.
If it says âcommand not foundâ, run:
source ~/.bashrc
echo $PATH
ls -l ~/.npm-global/bin/openclaw
(and tell me what you see)
Then: onboarding + install the always-on service
Run on: VPS (louis tab)
openclaw onboard --install-daemon
During onboarding youâll be asked to set up a model/auth method (API key / OAuth etc.). Donât paste any keys here.
After onboarding, check:
openclaw gateway status
openclaw status
After that: link WhatsApp (QR)
Run on: VPS (louis tab)
openclaw channels login --channel whatsapp
Reply with:
- the output of
openclaw --version - whether
openclaw gateway statussays itâs running
âŚand weâll do the final âsecure WhatsApp allowlistâ config + (optional) Tailscale Serve for the dashboard.
it just printed 2026.3.2
Perfect â OpenClaw is installed (2026.3.2).
Next: run onboarding + install the always-on service
Run on: VPS (louis tab) â louis@...$
openclaw onboard --install-daemon
Notes:
- It will ask you to set up a model/auth method (API key / OAuth). Donât paste any keys in Discord.
- When it offers to install/start the gateway service, say yes.
After onboarding: verify the gateway is actually running
Run on: VPS (louis tab)
openclaw gateway status
openclaw status
Make sure it keeps running after logout (âlingerâ)
Run on: VPS (root tab) â root@...#
loginctl show-user louis -p Linger
If it says Linger=no, enable it:
loginctl enable-linger louis
Then: link WhatsApp (QR)
Run on: VPS (louis tab)
openclaw channels login --channel whatsapp
Reply with what openclaw gateway status says (running or not), and whether the WhatsApp QR appeared successfully.
onboarding mode with quick start or manual?
Pick Quick Start.
Itâs the best path when youâre new because it:
- gets you to a working Gateway + service quickly
- uses sane defaults (token auth, local/loopback-first patterns)
- you can still tighten/adjust everything afterwards in
~/.openclaw/openclaw.json
After Quick Start finishes, weâll do the âsecurity-consciousâ pass:
- confirm bind/auth
- set WhatsApp allowlist/pairing policy
- run
openclaw security audit --deep
So: Quick Start now, then we harden/verify.
when selecting model i chose open ai, i have a chat gpt plus subscription. then it asks auth method openai code or open ai api key, not sure which to select
If you only have a ChatGPT Plus subscription (and you donât have an API key from platform.openai.com), pick:
â âOpenAI Codeâ (Codex OAuth / subscription sign-in)
That uses your ChatGPT account login.
Pick âOpenAI API keyâ only if you have (or want to create) a paid API key on the OpenAI developer platform â thatâs separate billing from ChatGPT Plus.
Heads-up for VPS/headless onboarding: the OAuth flow usually prints a URL for you to open on your laptop. After you log in, you may need to copy the final redirect URL and paste it back into the wizard to finish.
Docs reference:
- Codex auth + subscription OAuth: https://docs.openclaw.ai/help/faq#how-does-codex-auth-work
- Also: https://docs.openclaw.ai/help/faq#do-you-support-openai-subscription-auth-codex-oauth
ok so i clicked the first one openai codex, it gave me a url, i tried to open it on my phone, signed in but it said autherntication error?
Thatâs a common gotcha on a VPS: the Codex OAuth flow tries to send you back to a callback URL on http://127.0.0.1:1455/... (localhost). On your phone, âlocalhostâ is your phone â not the VPS â so the callback canât complete and youâll see an auth error.
Do it from your laptop, with a small SSH tunnel for the callback port.
Fix (recommended): use your laptop + tunnel port 1455 to the VPS
1) Run on: Laptop (PowerShell) (NEW terminal tab)
ssh -N -L 1455:127.0.0.1:1455 louis@YOUR_VPS_IP
Keep that running.
2) Now open the Codex login URL on your laptop browser (not phone)
- Go back to the onboarding wizard on the VPS, have it show you the login URL again if needed.
- Open that URL on your laptop, sign in.
3) If you still get a âcallback errorâ page
Check your browserâs address bar â youâll usually end up on a URL like http://127.0.0.1:1455/auth/callback?....
Copy the full URL and paste it back into the wizard if it asks.
Important: donât paste that URL into Discord â it contains a one-time auth code.
If you tell me what the wizard is currently showing (e.g. âwaiting for callbackâ vs âpaste redirect URLâ), I can tell you exactly which of the last steps applies.
dam it i got far down the setup but i clicked escape thinking i could go back and it said setup cancelled by mistake. what do i do now?
No big deal â you didnât âbreakâ anything. The onboarding wizard is safe to re-run.
Do this now
Run on: VPS (louis tab) (louis@...$)
openclaw onboard --install-daemon
If it detects partial setup, it will usually offer to continue/repair (pick that), not reset.
Then check what state youâre in
Still on the VPS:
openclaw gateway status
openclaw status
When you get back to the âOpenAI Codex login URLâ step
Remember: do the OAuth on your laptop with the SSH tunnel for port 1455:
Run on: Laptop (PowerShell, new tab):
ssh -N -L 1455:127.0.0.1:1455 louis@YOUR_VPS_IP
Keep that running while you complete the login in your laptop browser.
If openclaw onboard shows an error or asks something confusing, paste the exact prompt text (no tokens/URLs) and Iâll tell you which option to pick.
ok so i dont do it again, if i need to go back during onboarding what do i click
In the CLI onboarding wizard, think of it like a âstep-by-step interviewâ, not a web form:
- Arrow keys + Enter = choose an option within the current question
- Esc = cancel the whole wizard (thatâs what bit you)
- There usually isnât a universal âgo back to the previous stepâ key
So if you realize you need to change something from an earlier step, the safe workflow is:
- Esc (cancel)
- Re-run:
openclaw onboard --install-daemon - If it asks about existing config, choose Keep or Modify (do not choose Reset)
Good news: re-running the wizard doesnât wipe anything unless you explicitly pick Reset. So âcancel + rerunâ is the normal way to âgo backâ.
If you tell me which screen youâre on right now (just the text of the prompt, not any URLs/tokens), I can tell you the safest option to pick.
can we maybe do the manual setup? instal of quickstart, guide me this way
Yep â we can do Manual/Advanced. Itâs more prompts, but youâll understand whatâs being configured, and we can make it âsecure by defaultâ.
Start the wizard (Manual)
Run on: VPS (louis tab) (louis@...$)
openclaw onboard --install-daemon
When it asks QuickStart vs Advanced/Manual â pick Advanced/Manual.
What to pick at each step (recommended for your setup)
1) âExisting config detectedâ (if it appears)
- Pick Modify (or Keep + then Modify), NOT Reset.
2) Model/Auth
Since you have ChatGPT Plus:
- Pick OpenAI Code (Codex OAuth)
When it gives you the login URL:
- Do NOT do it on your phone
- Do it on your laptop with the callback tunnel running:
Run on: Laptop (PowerShell, new tab)
ssh -N -L 1455:127.0.0.1:1455 louis@YOUR_VPS_IP
Keep that running, then open the URL on your laptop browser and sign in.
3) Workspace
- Accept the default (usually
~/.openclaw/workspace)
4) Gateway
- Mode: Local
- Bind: loopback (this keeps it private)
- Port: 18789
- Auth: Token (auto-generated or you set one)
- Tailscale exposure: Serve (tailnet-only) (NOT Funnel)
5) Channels
- Enable WhatsApp
- DM policy: choose allowlist (simplest) or pairing (also fine)
- When asked for your allowed number, enter your number there, but donât paste it into Discord.
6) Daemon / service
- Install the systemd user service
- If it offers to enable âlingerâ so it stays running after logout, choose Yes (it may ask for sudo)
7) Finish / health check
Let it run.
Make this easy: tell me what prompt youâre currently looking at
The wizard is interactive, so I should guide you screen-by-screen.
Reply with the exact text of the current question you see (but donât include any URLs, tokens, or phone numbers), and Iâll tell you exactly what to select next.
it has workspace: ~/.openclaw/workspace â
â model: openai-codex/gpt-5.3-codex â
â gateway.mode: local â
â gateway.port: 18789 â
â gateway.bind: loopback
those values then asks to modify the values then asks to click local gateway or remote gateway?
Youâre on the right screen.
What to pick here (on the VPS)
- Those defaults look good (
workspace,model,gateway.bind: loopback, port 18789). - When it asks Local gateway vs Remote gateway â pick Local gateway.
Why: Youâre running the Gateway on this VPS.
âRemote gatewayâ is only for machines that should connect to a gateway somewhere else (like if you were running the wizard on your laptop and the gateway lived on the VPS).
About âModify values?â
- If youâre happy with what it shows, choose Continue / donât modify.
- If the next screens offer Tailscale exposure, choose Serve (tailnet-only) (not Funnel).
Tell me what the next prompt says after you pick Local gateway, and Iâll tell you exactly what to select.
at the end it says gateway token (blank to generate) but it automatically already has a token there. do i copy it or just click enter?
Leave it as-is.
- That token is the admin key for your Gateway (donât paste it into Discord).
- If the wizard already filled one in, itâs fine to just press Enter to accept it.
I do recommend you copy it into a password manager for your own records, because youâll need it to connect the Control UI (unless you later rely purely on Tailscale Serve identity headers).
If you ever lose it later, you can retrieve it on the VPS with:
openclaw config get gateway.auth.token
For now: press Enter to continue, and save it somewhere private if you can.
ok thats fine. towards the end of the setup at the end after i lick enter on node for gatway service. i get the following error and then it ends my setup. what do i do?:
â Systemd âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââŽ
â â
â Linux installs use a systemd user service by default. Without lingering, systemd stops â
â the user session on logout/idle and kills the Gateway. â
â Enabling lingering now (may require sudo; writes /var/lib/systemd/linger). â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââŻ
â
â Systemd âââââââââââââââââââââââââââââââŽ
â â
â Enabled systemd lingering for louis. â
â â
ââââââââââââââââââââââââââââââââââââââââââŻ
â
â Gateway service runtime
â Node (recommended)
Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service
That error means: the wizard tried to manage a systemd user service, but in your current session systemctl --user ⌠isnât working/available (common on fresh servers when the user-session DBus bits arenât set up right).
Good news: your setup isnât ruined. We can install/start the gateway service manually.
0) First: which terminal are you in?
Make sure you do the next commands from your VPS (louis tab) where the prompt is louis@...$ (not the root@...# tab).
1) Check what the actual systemctl error is
Run on: VPS (louis tab)
systemctl --user status
echo $XDG_RUNTIME_DIR
Paste the output of those two lines (itâs safe).
2) Most likely fix (if systemctl --user canât connect to a bus)
Run on: VPS (root tab) (root@...#)
apt update
apt install -y dbus-user-session
Then log out and back in as louis (important):
- In the
louis@...$tab, typeexit - Reconnect from your laptop:
ssh louis@YOUR_VPS_IP
Now try installing/enabling the service manually:
Run on: VPS (louis tab)
openclaw gateway install
systemctl --user enable --now openclaw-gateway.service
openclaw gateway status
If you paste me the output from step (1), Iâll tell you which exact branch youâre on (and if we need to fall back to a system-wide service instead).
louis@vmi3127119:~$ systemctl --user status
echo $XDG_RUNTIME_DIR
â vmi3127119
State: running
Units: 158 loaded (incl. loaded aliases)
Jobs: 0 queued
Failed: 0 units
Since: Thu 2026-03-05 13:15:43 CET; 3h 1min ago
systemd: 255.4-1ubuntu8.12
CGroup: /user.slice/user-1000.slice/user@1000.service
ââinit.scope
ââ7010 /usr/lib/systemd/systemd --user
ââ7012 "(sd-pam)"
/run/user/1000
Perfect â your systemd user session is healthy (/usr/lib/systemd/systemd --user is running and XDG_RUNTIME_DIR is set). So the earlier wizard error was almost certainly just:
it tried
systemctl --user is-enabled openclaw-gateway.servicebefore the unit existed, and treated that as a hard error.
Letâs just install/enable the unit manually.
1) Install + start the Gateway service
Run on: VPS (louis tab) (louis@...$)
openclaw gateway install
systemctl --user daemon-reload
systemctl --user enable --now openclaw-gateway.service
openclaw gateway status
If that works, you should see the service as running.
2) (Optional) Confirm lingering is on
Run on: VPS (root tab) (root@...#)
loginctl show-user louis -p Linger
If it says yes, the gateway will keep running even after you log out.
Reply with the output of openclaw gateway status (it should be safe), and then weâll finish:
- Codex OAuth (with the port 1455 tunnel)
- WhatsApp QR linking (
openclaw channels login --channel whatsapp) - WhatsApp allowlist/pairing policy hardening
openclaw security audit --deep
the first command didnt work
printed:
louis@vmi3127119:~$ openclaw gateway install
systemctl --user daemon-reload
systemctl --user enable --now openclaw-gateway.service
openclaw gateway status
đŚ OpenClaw 2026.3.2 (85377a2) â iMessage green bubble energy, but for everyone.
Gateway service check failed: Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service
Failed to enable unit: Unit file openclaw-gateway.service does not exist.
đŚ OpenClaw 2026.3.2 (85377a2) â Type the command with confidenceânature will provide the stack trace if needed.
â
â
Service: systemd (disabled)
File logs: /tmp/openclaw/openclaw-2026-03-05.log
Service config looks out of date or non-standard.
Service config issue: Gateway service PATH is not set; the daemon should use a minimal PATH.
Recommendation: run "openclaw doctor" (or "openclaw doctor --repair").
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
You didnât do anything wrong â OpenClaw is installed, but the systemd service file didnât get created, so systemctl --user enable ⌠has nothing to enable.
The key line is:
Failed to enable unit: Unit file openclaw-gateway.service does not exist.
Letâs fix the service install the âsupportedâ way: Doctor repair.
1) Create the systemd user dir (just in case)
Run on: VPS (louis tab) (louis@...$)
mkdir -p ~/.config/systemd/user
2) Run Doctor repair (this usually fixes exactly this)
Run on: VPS (louis tab)
openclaw doctor --repair
It may ask for sudo for some steps (thatâs normal). Say yes.
3) Check gateway service again
Run on: VPS (louis tab)
openclaw gateway status
If it still says the unit doesnât exist
Run these and paste the output:
ls -áá ~/.config/systemd/user | grep -i openclaw || true
systemctl --user list-unit-files | grep -i openclaw || true
Then weâll force-install the unit (openclaw gateway install --force) and enable it.
(Weâll get you to a running service before we touch WhatsApp/Codex auth again.)
ok now i think were good, after running openclaw gateway status it looks fine. What to do now?
Awesome â if openclaw gateway status looks healthy now, youâve got the âruns 24/7â part sorted. Next we need to make sure:
- your model auth is actually configured (so the bot can reply), and
- WhatsApp is linked + locked down to only you.
Iâll label exactly where to run things.
1) Check model/auth status
Run on: VPS (louis tab) (louis@...$)
openclaw models status
This should tell us if OpenAI Codex auth is set up and usable. (It shouldnât print secrets; donât paste anything that looks like a token.)
2) Link WhatsApp (QR)
Run on: VPS (louis tab)
openclaw channels login --channel whatsapp
Scan the QR on your phone: WhatsApp â Settings â Linked devices â Link a device.
Then check:
openclaw channels status
3) Lock WhatsApp to ONLY you (security)
Run on: VPS (louis tab)
Open the config file:
nano ~/.openclaw/openclaw.json
Ensure you have something like (donât paste your number into Discord; just edit it on the VPS):
{
channels: {
whatsapp: {
dmPolicy: "allowlist", // or "pairing" if you prefer approve-codes
allowFrom: ["+YOUR_NUMBER"],
groupPolicy: "allowlist",
groupAllowFrom: ["+YOUR_NUMBER"],
},
},
}
Then restart the gateway service:
openclaw gateway restart
4) Quick test
Send a WhatsApp message to the linked account / self-chat (depending on how you linked it). You should get a reply.
Reply with:
- what
openclaw models statussays at a high level (e.g. âauthenticatedâ vs âmissing authâ), and - whether the WhatsApp QR login succeeded.
If Codex auth isnât set yet, weâll redo that OAuth step using the laptop tunnel (1455) again.
ok i clicked openclaw gateway restart and it printed: đŚ OpenClaw 2026.3.2 (85377a2) â Your .env is showing; don't worry, I'll pretend I didn't see it.
Restarted systemd service: openclaw-gateway.service
Perfect â that means the systemd service restart worked. The â.env is showingâ line is just a silly banner message, nothing scary.
Now continue with the actual setup steps:
1) Verify the gateway is up
Run on: VPS (louis tab) (louis@...$)
openclaw gateway status
2) Check model auth (so it can reply)
Run on: VPS (louis tab)
openclaw models status
3) Link WhatsApp (QR)
Run on: VPS (louis tab)
openclaw channels login --channel whatsapp
Then:
openclaw channels status
Tell me:
- does
openclaw models statusshow OpenAI Codex as authenticated/usable? - and did the WhatsApp QR appear and scan successfully?
i scanned whatsapp earlier and was successful. model status is fine too. it all looks fine now. where do i go next
If WhatsApp is linked and openclaw models status looks good, youâre basically âliveâ. Next steps are about (a) testing, (b) hardening, and (c) making access convenient.
1) Do a real end-to-end test
Send a WhatsApp message to the linked account / chat you intend to use (e.g. âpingâ).
You should get a reply back from OpenClaw.
If you donât, run on VPS (louis tab):
openclaw logs --follow
and send one more test message while watching logs.
2) Run the security audit (recommended)
Run on VPS (louis tab):
openclaw security audit --deep
If it reports fixes youâre comfortable with:
openclaw security audit --fix
3) (Optional) Make the dashboard easy from any device: Tailscale Serve
If you want to open the Control UI from your laptop/phone without SSH tunnels:
Run on VPS (louis tab):
openclaw config set gateway.tailscale.mode serve
openclaw gateway restart
Then open the HTTPS URL for your VPS MagicDNS name in your browser (Tailscale app shows it).
4) Confirm your WhatsApp access policy is locked down
Make sure your channels.whatsapp.dmPolicy is allowlist or pairing, and that allowFrom is only your number (donât paste it here). If you want, run:
openclaw config get channels.whatsapp.dmPolicy
If you tell me which of these you care about most next:
- âJust chat and keep it stableâ
- âTailscale dashboard on my phoneâ
- âMaximum security lockdownâ
âŚIâll give you the exact next 3â5 commands and weâll finish it cleanly.
hold on i mean i linked whatspp but now how do i get or find the chat on my whatsapp? i only have it linked but dont see a chat anywhere
?
What part is unclear / what do you want to do next?
Pick one and Iâll give you the exact steps:
- Just confirm itâs stable + secure (run the security audit + check WhatsApp allowlist)
- Open the dashboard from your phone/laptop via Tailscale (Serve setup)
- Backups / âhow do I not lose this setup?â (what to snapshot + what not to back up)
Reply with 1, 2, or 3.
well what im saying is how do i do this part "Send a WhatsApp message to the linked account / chat you intend to use (e.g. âpingâ).
You should get a reply back from OpenClaw."
i dont know where to send the message because i dont know how to message the linked account or chat. i cannot see it. all i can see on my whatsapp is that i have open claw linked. but no option to message anywhere
What youâre seeing is normal: linking WhatsApp doesnât create a new âOpenClaw contact/chatâ.
OpenClaw is acting like WhatsApp Web on your same WhatsApp account. So there isnât a new person to message â it will reply inside whatever chat the message arrives in (as long as your allowlist/policy allows it).
Easiest way to test (if you linked your personal WhatsApp number)
Use WhatsAppâs âMessage yourselfâ / self-chat:
- On your phone WhatsApp, tap New chat (the pencil / message icon)
- Search for your own name/number (many WhatsApp versions show âMessage yourselfâ)
- Open that chat and send:
ping
If your WhatsApp UI doesnât show a self-chat, another trick:
- Save your own number as a contact (âMeâ), then start a chat with that contact.
If you want it to feel like a bot you message
You need a separate WhatsApp number for OpenClaw (recommended). Then youâd simply message that number from your personal WhatsApp like any other contact.
Quick check (so I can tell you which case youâre in)
Run on VPS (louis tab) and paste the outputs (no secrets):
openclaw config get channels.whatsapp.dmPolicy
openclaw config get channels.whatsapp.selfChatMode
Also tell me: did you link WhatsApp using your main personal number, or do you have a second number for the bot?
ok i wrote ping to myself and openclaw responded pong im guessing that works. perhaps then i should set it up on telegram? i do rather a bot style responding to me
Yep â Telegram is a much nicer âbot-styleâ experience, because itâs a separate bot identity you message like a normal contact (unlike WhatsApp Web which is tied to your own account).
You can keep WhatsApp working and also add Telegram â they can run side-by-side.
Telegram setup (secure DM-only)
1) Create a Telegram bot + token (on your phone / Telegram app)
- Message @BotFather
- Run:
/newbot - Copy the bot token (looks like
123456:ABC...) - Do not paste the token into Discord
2) Add the token to OpenClaw config
Run on: VPS (louis tab) (louis@...$)
nano ~/.openclaw/openclaw.json
Add this block (or merge it into your existing channels object):
{
channels: {
telegram: {
enabled: true,
botToken: "PASTE_YOUR_TOKEN_HERE",
dmPolicy: "pairing"
}
}
}
Notes:
dmPolicy: "pairing"is a good secure default: only you can approve yourself.- Donât set
groupsat all for now â that keeps groups effectively blocked by default.
Save/exit nano.
3) Restart OpenClaw
Run on: VPS (louis tab)
openclaw gateway restart
4) Pair your Telegram user
- In Telegram, DM your new bot with âhiâ
- On the VPS, run:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
Then DM the bot again â it should reply normally.
If you tell me whether you already have the BotFather token, I can also tell you the safest way to paste it (and how to confirm Telegram is running via openclaw channels status).
putting telegram aside from now, i still feel like the setup wasnt fully complete, i didnt get to the part where it asks what should i call you etc. and the skills part. how do i get back to setting up openclaw how i want it. i want to first complete that before considering tranistioning to telegram
You can get back into âfinish setup / customize itâ mode anytime â onboarding isnât a one-shot.
A) Re-run the onboarding wizard (safest way to finish what you skipped)
Run on: VPS (louis tab) (louis@...$)
openclaw onboard
When it detects your existing setup, choose:
- Modify / Keep (do not choose Reset)
Then pick Advanced/Manual and continue â you should be able to go through the remaining steps (workspace/skills/health check, etc.). Re-running the wizard wonât wipe anything unless you explicitly reset.
B) The âwhat should I call you?â part is usually just editing your workspace files
OpenClawâs âpersonalizationâ mostly lives in the workspace (markdown files the agent reads).
1) Find your workspace path
Run on VPS (louis tab):
openclaw config get agents.defaults.workspace
Usually itâs ~/.openclaw/workspace.
2) Edit your user/preferences file
Run on VPS (louis tab):
nano ~/.openclaw/workspace/USER.md
Put whatever you want there (your name, what the assistant should call you, tone, etc.). Save/exit.
If you also want to name the assistant / set personality, check:
ls ~/.openclaw/workspace
and look for IDENTITY.md, SOUL.md, AGENTS.md.
C) Skills on Linux
You can either:
- pick skills during the wizardâs skills step, or
- install later via ClawHub (optional; wizard can also guide this)
If you paste the exact prompt text you see when you run openclaw onboard (no tokens/URLs), Iâll tell you which option to pick so you land specifically on the âskillsâ part and complete the setup cleanly.
what to select for:
â Gateway service runtime
â Node (recommended)
â
â Gateway service already installed
â â Restart
â â Reinstall
â â Skip
Select Restart.
- Restart = quickest/safest: applies whatever config changes the wizard just made and brings the gateway back up cleanly.
- Reinstall = only if you think the systemd service file is broken/outdated (you just fixed it, so no need).
- Skip = leaves the running gateway untouched (not what you want if youâre trying to âfinish setupâ and have changes take effect).