Prerequisites
Before you start, make sure you have the following in place. The Hostinger VPS plan, root SSH access, and the OpenClaw template deployed from the Hostinger marketplace are the only hard requirements.
Why openclaw isn't on the host
After deployment you might try running openclaw directly in your SSH session and get this:
root@srv1345676:~# openclaw
-bash: openclaw: command not foundThis is expected. The Hostinger template runs OpenClaw entirely inside a Docker container. The binary is not installed on the host OS. It lives inside the container image. Your PATH will never find it from the host shell.
Find your Compose file
All docker compose commands must be run from the directory that contains the docker-compose.yml file. If you run them from anywhere else you'll get this error:
no configuration file provided: not foundLocate the file with:
find / -name "docker-compose.yml" -o -name "docker-compose.yaml" 2>/dev/nullYou should see something like /docker/openclaw-qrjy/docker-compose.yml. The suffix (e.g. qrjy) is random and will differ per deployment. Navigate into that directory:
cd /docker/openclaw-qrjyVerify the container is running
From inside the project directory, check the container status:
docker compose psA healthy deployment looks like this:
NAME IMAGE SERVICE STATUS
openclaw-qrjy-openclaw-1 ghcr.io/hostinger/hvps-openclaw:latest openclaw UpIf the container is not running, start it with:
docker compose up -dRunning OpenClaw commands
Every openclaw CLI call must be prefixed withdocker compose exec openclaw. The pattern is:
docker compose exec openclaw openclaw <command>Common commands
docker compose exec openclaw openclaw gateway statusdocker compose exec openclaw openclaw pairing pendingdocker compose exec openclaw openclaw pairing approve telegram <CODE>Interactive shell
If you need to run several commands in a row, open a shell directly inside the container. From there you can call openclaw without any prefix.
docker compose exec openclaw /bin/bash
# now inside the container:
openclaw gateway status
openclaw pairing pending
exit # back to hostApproving Telegram pairings
When a user tries to connect their Telegram account to your OpenClaw instance, the connection sits in a pending queue until the server owner approves it. The user will see a message like:
On the server, check what's waiting:
docker compose exec openclaw openclaw pairing pendingYou'll see a pairing code. Approve it with:
docker compose exec openclaw openclaw pairing approve telegram KZ2WLBGWAfter approval, the user should reopen the Telegram chat. The bot will start responding immediately. You can confirm the gateway is healthy with:
docker compose exec openclaw openclaw gateway statusOptional: host alias
Typing docker compose exec openclaw openclaw every time gets old fast. Add a shell alias so you can call openclaw from anywhere on the host:
alias openclaw='docker compose -f /docker/openclaw-qrjy/docker-compose.yml exec openclaw openclaw'Apply it immediately:
source ~/.bashrcNow openclaw gateway status works from any directory on the host, just like a native install.
Docker quick reference
A cheat sheet for the most common container operations. Always run these from /docker/openclaw-qrjy (or wherever your compose file lives).
docker compose psdocker compose logs -fdocker compose restartdocker compose downdocker compose up -dThat's it
Deploy via the Hostinger template, find your compose file, exec into the container, approve pairings. Add the alias and it feels like a native install.