---
title: "Self-host OpenClaw: connect your personal AI assistant to Telegram, Slack and Discord (plus Hermes Agent comparison)"
description: "Deploy OpenClaw on your own server with Zenavo, set up its public URL and gateway token, connect your model APIs or a self-hosted gateway, and hook up Telegram, Discord and Slack bots for a 24/7 personal AI assistant."
date: 2026-11-13
language: en
url: https://zenavo.app/blog/self-host-openclaw
---

# Self-host OpenClaw: connect your personal AI assistant to Telegram, Slack and Discord (plus Hermes Agent comparison)

Running a personal AI assistant on your laptop works until you close the lid and try to message it from Telegram or Discord on your phone. [OpenClaw](https://github.com/openclaw/openclaw) turns your assistant into an always-on gateway: you configure model providers and chat channels in its browser Control UI, then talk to it anytime from Telegram, Slack, Discord and other chat apps.

This guide uses Zenavo's OpenClaw template to run it 24/7 on a Linux server you rent or own, shows how to pair it with a self-hosted model gateway, and compares it with **Hermes Agent**. Your server, Zenavo and upstream model APIs are billed separately.

## 1. Before you deploy: pick your domain

On its first boot, OpenClaw writes your public HTTPS address into its configuration file (`publicOrigin` and `controlUi.allowedOrigins`) to validate Control UI requests and build webhook URLs.

1. Add a DNS `A` record pointing your subdomain (for example `assistant.example.com`) to your server's IP.
2. [Connect a Linux server](https://docs.zenavo.app/servers/add-a-server) to Zenavo (the template recommends at least **2 GB of memory**).
3. Open the [OpenClaw template](https://zenavo.app/deploy?template=openclaw), enter the full HTTPS address in **Public URL (`SITE_URL`)** **without** a trailing slash (such as `https://assistant.example.com`), choose your server and deploy.

The template sets up:

| Setting | Value or purpose |
|---|---|
| Image | `ghcr.io/openclaw/openclaw:2026.11.3` |
| HTTP port | `18789` |
| State & config volume | `/home/node/.openclaw` (holds `openclaw.json` and the `workspace` directory) |
| Auth volume | `/home/node/.config/openclaw` |
| `OPENCLAW_GATEWAY_TOKEN` | Generated when the project is created; signs in to the Control UI |
| `SITE_URL` | Your public HTTPS URL, written into `openclaw.json` on first boot |

## 2. Bind your domain and sign in to the Control UI

Once deployed:

1. Open the `openclaw` service's **Networking** tab, bind the exact same domain (`assistant.example.com`) to port `18789`, and wait for the HTTPS certificate. See [Domains & HTTPS](https://docs.zenavo.app/networking/domains).
2. Open the `openclaw` service's **Variable** tab and copy the value of `OPENCLAW_GATEWAY_TOKEN`.
3. Visit `https://assistant.example.com` in your browser and paste `OPENCLAW_GATEWAY_TOKEN` to sign in to the Control UI.

> **Note**: Anyone with `OPENCLAW_GATEWAY_TOKEN` can use your connected models and chat bots. Save it in a password manager (such as self-hosted [Vaultwarden](https://zenavo.app/blog/self-host-vaultwarden)) and keep it out of chats and screenshots.

## 3. Connect model providers or a self-hosted gateway

After signing in to the Control UI, add a model provider:

- **Direct provider APIs**: enter an official API key from OpenAI, Anthropic, Gemini or DeepSeek.
- **Self-hosted model gateway (recommended)**: if you run [Magpie](https://zenavo.app/blog/self-host-magpie), [New API](https://zenavo.app/blog/self-host-new-api) or [LiteLLM](https://zenavo.app/blog/self-host-litellm) on Zenavo, issue a dedicated key for OpenClaw with a daily quota cap and point OpenClaw at your gateway. Even if a bot is triggered repeatedly, it won't run up an unbounded provider bill.
- **Over the project private network**: when OpenClaw and your gateway live in the same Zenavo project (added via **Add Service → Templates**), use the internal address (`http://new-api.zenavo.internal:3000/v1` or `http://litellm.zenavo.internal:4000/v1`) so requests never traverse the public internet. See [Private Networking](https://docs.zenavo.app/networking/private).

## 4. Connect Telegram, Discord or Slack channels

On the **Channels** page in the Control UI, add your chat platforms:

1. **Create bot credentials**: for example, message `@BotFather` on Telegram with `/newbot` to get a bot token, or create a bot in the Discord Developer Portal or Slack App dashboard.
2. **Save and enable the channel**: paste the token into the channel settings in OpenClaw.
3. **Restrict who can talk to the bot**: any public bot on Telegram or Discord can be messaged by strangers who guess its handle. Enable the user or channel allowlist in OpenClaw so only your own Telegram User ID, Discord account or private server channels can trigger model calls.

## 5. OpenClaw vs Hermes Agent: which should you pick?

Zenavo's template catalog also includes [Hermes Agent](https://zenavo.app/deploy?template=hermes-agent) (open-sourced by Nous Research), which connects to Telegram, Discord and Slack as well:

| Feature | OpenClaw | Hermes Agent |
|---|---|---|
| Image & default port | `ghcr.io/openclaw/openclaw:2026.11.3`, port `18789` | `nousresearch/hermes-agent:v0.23.1`, port `9119` |
| Persistent volumes | `/home/node/.openclaw` and `/home/node/.config/openclaw` | `/opt/data` |
| Dashboard login | Token sign-in with `OPENCLAW_GATEWAY_TOKEN` | Username `admin`, password in `HERMES_DASHBOARD_BASIC_AUTH_PASSWORD` |
| Focus | Lightweight personal multi-channel AI gateway and workspace | Long-term memory, reusable skills and autonomous agent workflows |

Start with OpenClaw if you want a clean, fast gateway across your chat apps; pick the [Hermes Agent template](https://zenavo.app/deploy?template=hermes-agent) if you want Nous Research's persistent memory and skill system.

## 6. Backups and upgrades

OpenClaw stores its configuration, workspace files and channel credentials in `/home/node/.openclaw` and `/home/node/.config/openclaw`:

1. In a maintenance window, stop the project, back up both volumes from the `openclaw` service's **Backup & Restore** tab, start the project again and download a copy to keep. See [Backups & Restore](https://docs.zenavo.app/operations/backups).
2. The template pins a tested version (`2026.11.3`). Before upgrading, back up the volumes, check the upstream release notes, then update the image tag under **Settings → Source**.

## FAQ

**The browser says "Origin not allowed" or fails to connect.**
Check two things: first, `SITE_URL` must match your bound domain exactly (`https://...` with no trailing slash). Second, because the startup script only generates `/home/node/.openclaw/openclaw.json` when the file does not exist yet, changing `SITE_URL` *after* the first boot requires updating `publicOrigin` and `controlUi.allowedOrigins` inside `openclaw.json` and restarting the service.

**Why does the health check take a moment to turn green after deploy?**
OpenClaw initializes its gateway on first boot, and the template gives it a 60-second grace period (`start_period: 60`). If it still isn't ready after two minutes, open the built-in [Zenavo Agent](https://docs.zenavo.app/zenavo-agent) on the right edge of the console or inspect the logs from [Claude Code with MCP](https://zenavo.app/blog/claude-code-deploy-debug).

**Why doesn't my Telegram bot reply in group chats?**
Telegram bots enable Privacy Mode by default, so in groups they only see `/` commands or messages that `@mention` them. Either mention the bot or turn off Privacy Mode via `/setprivacy` in `@BotFather`, and make sure the group or your user ID is on the allowlist.

**What if I also want a browser chat UI?**
OpenClaw is great inside Telegram, Slack and Discord. If you also want a dedicated web interface with document uploads, knowledge bases and multi-user accounts, deploy [Open WebUI](https://zenavo.app/blog/self-host-open-webui) or [LobeHub](https://zenavo.app/blog/self-host-lobehub) alongside it on the same server.

Pick a subdomain and deploy the [OpenClaw template](https://zenavo.app/deploy?template=openclaw) or [Hermes Agent template](https://zenavo.app/deploy?template=hermes-agent) to put your own AI assistant in your pocket.
