Guide

OpenClaw on a VPS

Hostinger's one-click template deploys OpenClaw inside a Docker container. That means the CLI isn't available on the host. You need to exec into the container. Here's exactly how.

5 min readFebruary 2026
01

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.

01
Hostinger VPS
Any plan with SSH access enabled.
02
OpenClaw template deployed
Deployed via Hostinger's one-click marketplace template.
03
SSH session as root
All commands below assume you are logged in as root.
02

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 found

This 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.

Docker containers are isolated environments. Binaries inside a container are not accessible from the host system unless explicitly exposed via a volume or a wrapper script.
03

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 found

Locate the file with:

find / -name "docker-compose.yml" -o -name "docker-compose.yaml" 2>/dev/null

You 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-qrjy
Bookmark this path. Every docker compose command for OpenClaw must be run from here.
04

Verify the container is running

From inside the project directory, check the container status:

docker compose ps

A healthy deployment looks like this:

NAME                       IMAGE                                    SERVICE    STATUS
openclaw-qrjy-openclaw-1   ghcr.io/hostinger/hvps-openclaw:latest   openclaw   Up

If the container is not running, start it with:

docker compose up -d
05

Running OpenClaw commands

Every openclaw CLI call must be prefixed withdocker compose exec openclaw. The pattern is:

docker compose exec openclaw openclaw <command>

Common commands

Gateway status
docker compose exec openclaw openclaw gateway status
List pending pairings
docker compose exec openclaw openclaw pairing pending
Approve a pairing
docker 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 host
06

Approving 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:

Your Telegram account tried to connect to this OpenClaw instance, but the gateway hasn't approved it yet.

On the server, check what's waiting:

docker compose exec openclaw openclaw pairing pending

You'll see a pairing code. Approve it with:

docker compose exec openclaw openclaw pairing approve telegram KZ2WLBGW

After 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 status
07

Optional: 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:

~/.bashrc
alias openclaw='docker compose -f /docker/openclaw-qrjy/docker-compose.yml exec openclaw openclaw'

Apply it immediately:

source ~/.bashrc

Now openclaw gateway status works from any directory on the host, just like a native install.

08

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).

Check container statusdocker compose ps
Follow live logsdocker compose logs -f
Restart the containerdocker compose restart
Stop the containerdocker compose down
Start the containerdocker compose up -d

That'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.