Wähle einen Artikel
OpenClaw auf VPS installieren

Flexibel, leistungsstark und sofort einsatzbereit – dein dogado vServer

Der dogado vServer/VPS bietet dir volle Kontrolle, hohe Performance und flexible Ressourcen. Ideal für Websites, Shops und Anwendungen – sofort einsatzbereit, sicher gehostet in deutschen Rechenzentren.

Server-Racks mit blauer Beleuchtung, Frontpaneele mit Laufwerkschächten, Lüftungsgitter und Netzwerkausrüstung.

0. Überblick 

  • Verwendetes System: VPS/vServer Debian 12 64 bit 
  • Genutzter User: Ich nehme alles als „root“ vor 
  • Zeitdauer: ca. 20 Minuten 
  • Schwierigkeit: Einfach. Nur Code kopieren 😉 
  • Besonderheiten: 
  • Grundlage ist folgende Anleitung: https://www.dogado.de/vps/vserver-anwendungsfaelle/traefik-reverseproxy-auf-vserver-installieren  
    Diese Anleitung muss zuerst ausgeführt werden. 
  • Die Installation von Docker / Docker Compose wird hier vorausgesetzt. 
  • Ihr benötigt einen API Key eines KI Systems, da OpenClaw komplett von der KI abhängig ist 

1.1 Einleitung 

OpenClaw ist ein relativ neues Open-Source-Projekt, das seit seiner Veröffentlichung viel Aufmerksamkeit bekommen hat. Grob gesagt könnt ihr damit einen KI‑Agenten betreiben, der über Integrationen mit euch chattet und Aufgaben über angebundene KI‑Modelle ausführt (z. B. Text generieren, einfache Workflows anstoßen). 

Wichtig: OpenClaw ist dabei vollständig von einem KI-Modell abhängig. Ohne KI‑Backend „denkt“ es nicht selbst und da jede Antwort über eine externe KI erzeugt wird, ist jede Anfrage mit nutzungsabhängigen Kosten beim jeweiligen KI-Anbieter verbunden. 

In unserem konkreten Setup ist das Ziel, OpenClaw per Traefik bereitzustellen. Als KI‑Provider nutzen wir Google Gemini und zusätzlich wollen wir Telegram integrieren, damit wir bequem per Telegram-Chat mit OpenClaw interagieren können. 

1.2 Infos zu yml Dateien 

Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Ihr könnt den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator 

1.3 Vorbereitung 

Diese Anleitung basiert auf dem aktuellen Debian 12 Betriebssystem. OpenClaw werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates und eine schnelle Installation. 

Um OpenClaw neben anderen Diensten auf unserem Server betreiben zu können, nutzen wir hier den Reverse Proxy Traefik. Die Anleitung dazu finden Sie hier: https://www.dogado.de/vps/vserver-anwendungsfaelle/traefik-reverseproxy-auf-vserver-installieren 

1.3.1 Verzeichnis erstellen 

Wir erstellen uns ein neues Verzeichnis, in welchem wir später alle Daten von OpenClaw abspeichen. Dazu geben wir folgendes in der Konsole ein: 

mkdir -p /opt/containers/openclaw 

Ihr könnt hier auch ein anderes Verzeichnis verwenden. Müsst dann aber die gesamte Anleitung entsprechend anpassen. 

1.3.2 docker-compose.yml erstellen 

Nun können wir mit der eigentlichen „Installation“ von OpenClaw beginnen. Dazu öffnet ihr folgende Datei: 

nano /opt/containers/openclaw/docker-compose.yml 

Nun kopiert ihr folgenden Code in die Datei. Dieser Code ist unser Bauplan für unseren OpenClaw Container. 

services: 
  openclaw-gateway: 
    image: ${OPENCLAW_IMAGE} 
    environment: 
      HOME: /home/node 
      TERM: xterm-256color 
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} 
    volumes: 
      - ./config:/home/node/.openclaw 
      - ./workspace:/home/node/.openclaw/workspace 
    env_file: 
      - .env 
    init: true 
    restart: unless-stopped 
    command: 
      [ 
        "node", 
        "dist/index.js", 
        "gateway", 
        "--allow-unconfigured", 
        "--bind", 
        "${OPENCLAW_GATEWAY_BIND:-0.0.0.0}", 
        "--port", 
        "18789", 
      ] 
    healthcheck: 
      test: 
        [ 
          "CMD", 
          "node", 
          "-e", 
          "fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))", 
        ] 
      interval: 30s 
      timeout: 5s 
      retries: 5 
      start_period: 20s 
    labels: 
      - "traefik.enable=true" 
      - "traefik.http.routers.openclaw.entrypoints=http" 
      - "traefik.http.routers.openclaw.rule=Host(`openclaw.euredomain.de`)" 
      - "traefik.http.middlewares.openclaw-https-redirect.redirectscheme.scheme=https" 
      - "traefik.http.routers.openclaw.middlewares=openclaw-https-redirect" 
      - "traefik.http.routers.openclaw-secure.entrypoints=https" 
      - "traefik.http.routers.openclaw-secure.rule=Host(`openclaw.euredomain.de`)" 
      - "traefik.http.routers.openclaw-secure.tls=true" 
      - "traefik.http.routers.openclaw-secure.tls.certresolver=http" 
      - "traefik.http.routers.openclaw-secure.service=openclaw" 
      - "traefik.http.services.openclaw.loadbalancer.server.port=18789" 
      - "traefik.docker.network=proxy" 
      - "traefik.http.routers.openclaw-secure.middlewares=secHeaders@file,openclaw-auth" 
      - "traefik.http.middlewares.openclaw-auth.basicauth.users=" 
    networks: 
      - proxy 
 
  openclaw-cli: 
    image: ${OPENCLAW_IMAGE} 
    env_file: 
      - .env 
    network_mode: "service:openclaw-gateway" 
    cap_drop: 
      - NET_RAW 
      - NET_ADMIN 
    security_opt: 
      - no-new-privileges:true 
    environment: 
      HOME: /home/node 
      TERM: xterm-256color 
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN:-} 
      BROWSER: echo 
    volumes: 
      - ./config:/home/node/.openclaw 
      - ./workspace:/home/node/.openclaw/workspace 
    stdin_open: true 
    tty: true 
    init: true 
    entrypoint: ["node", "dist/index.js"] 
    depends_on: 
      - openclaw-gateway 
 
networks: 
  proxy: 
    external: true 

1.3.3 env Datei erstellen 

Nun erstellen wir noch eine Datei mit unseren Einstellungen. Gebt dazu folgendes ein: 

nano /opt/containers/openclaw/.env 

Inhalt: 

# ----------------------------------------------------------------------------- 
# Gateway auth + Image 
# ----------------------------------------------------------------------------- 
OPENCLAW_GATEWAY_TOKEN=change-me-to-a-long-random-token 
OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest 
OPENCLAW_CONFIG_DIR=./config 
OPENCLAW_WORKSPACE_DIR=./workspace 

Den Parameter OPENCLAW_IMAGE könnt ihr beliebig anpassen. Hier verwenden wir aber das offizielle OpenClaw Image. 

1.3.4 erstes Konfigurationsskript 

Um etwas Arbeit zu sparen, erstellen wir uns ein Skript, welches unsere Domain sowie Nutzername und Passwort vergibt, damit OpenClaw erreichbar sowie geschützt ist. 

nano /opt/containers/openclaw/setup.sh 

Inhalt: 

#!/bin/bash 
 
if ! command -v htpasswd &> /dev/null; then 
    echo "htpasswd ist nicht installiert. Installiere apache2-utils..." 
    sudo apt-get update && sudo apt-get install -y apache2-utils 
fi 
 
read -p "Bitte gebt eure gewuenschte Domain ein (z.B. openclaw.meinedomain.de): " USER_DOMAIN 
 
sed -i "s/Host(\`openclaw.euredomain.de\`)/Host(\`$USER_DOMAIN\`)/g" docker-compose.yml 
echo "Die Domain wurde in der docker-compose.yml auf $USER_DOMAIN aktualisiert." 
 
NEW_TOKEN=$(openssl rand -hex 32) 
sed -i "s/^OPENCLAW_GATEWAY_TOKEN=change-me-to-a-long-random-token/OPENCLAW_GATEWAY_TOKEN=$NEW_TOKEN/g" .env 
echo "Ein sicherer Gateway-Token wurde generiert und in der .env Datei hinterlegt." 
 
echo "---" 
echo "Einrichtung des OpenClaw Logins" 
read -p "Bitte gib einen Benutzernamen fuer das Dashboard ein: " AUTH_USER 
read -s -p "Bitte gib ein sicheres Passwort ein: " AUTH_PASS 
echo "" 
 
AUTH_STRING=$(htpasswd -nb "$AUTH_USER" "$AUTH_PASS" | sed -e s/\\$/\\$\\$/g) 
 
sed -i "s|^      - \"traefik.http.middlewares.openclaw-auth.basicauth.users=\".*|      - \"traefik.http.middlewares.openclaw-auth.basicauth.users=$AUTH_STRING\"|g" docker-compose.yml 
 
echo "Basic Auth Zugangsdaten wurden erfolgreich in der docker-compose.yml hinterlegt." 
echo "Setup abgeschlossen!" 

Nun machen wir das Skript noch ausführbar und starten es: 

chmod +x /opt/containers/openclaw/setup.sh 
cd /opt/containers/openclaw/ 
./setup.sh 

1.3.5 offizielles Einrichtungsskript downloaden 

Nun laden wir uns noch das offizielle OpenClaw Konfigurationsskript herunter. 

cd /opt/containers/openclaw 
wget -O docker-setup.sh https://raw.githubusercontent.com/openclaw/openclaw/main/docker-setup.sh 
chmod +x docker-setup.sh 

2. KI API Key erzeugen 

Terminalmenü mit Liste von Modell-/Auth-Anbietern; Google (Gemini API key + OAuth) durch grünen Punkt markiert.

Später müsst ihr einen API Key eines KI Systems eingeben, um OpenClaw nutzen zu können. In diesem Beispiel verwenden wir Google Gemini. Dazu geht ihr auf folgende URL: https://aistudio.google.com/ 

Registriert euch dort und dann könnt ihr euren API Key einsehen. Ebenfalls seht ihr dort die Kosten, welche ihr für Anfragen an Gemini bezahlen müsst. 

3. Kommunikations-Gateway hinzufügen (optional) 

OpenClaw bietet eine große Auswahl an Gateways über diese es kommunizieren kann. 

Terminal-Liste mit Kanalauswahl; Radio-Optionen: Telegram, WhatsApp, Discord, IRC, Google Chat, Slack, Signal.

Grundsätzlich stellt OpenClaw eine Webseite bereit, weshalb ihr kein weiteres Gateway benötigt. In diesem Beispiel verwenden wir den Dienst Telegram, da dieser kostenlos und sehr einfach einzurichten ist. 

Im ersten Schritt legt ihr euch einen Telegram Account an bzw. loggt euch in euren vorhandenen Account ein.  

Anschließend sucht ihr folgenden Kontakt: „@BotFather“. 

Screenshot eines Chats: BotFather Profilbild mit blauem Haken, Text BotFather, Öffnen-Button.

Wichtig hierbei ist, dass ihr den Dienst mit dem „blauen Haken“ nutzt, da es viele Fake Dienste gibt. 

Mit „/start“ seht ihr einen Überblick aller Parameter. 

Screenshot eines Telegram-Chats mit BotFather, zeigt Befehlsliste: /start, /newbot, /setname, Bot Settings, Web Apps.

Wählt hier „/newbot“ aus und vergebt einen Namen für euren Bot. Unter diesen Namen könnt ihr den Bot später suchen. Wichtig ist, dass der Namen auf „bot“ enden muss. 

Telegram-Chat mit grünen Blasen; Avatare links (CX, Bot); Text zur Bot-Erstellung; 8792 in roter Umrandung.

Wenn alles korrekt war, dann solltet ihr eine Bestätigung inklusive eines http API Tokens erhalten. Dieses benötigen wir später für OpenClaw. 

4. OpenClaw Einrichtung starten 

Wichtig Hinweis 

An mehreren Stellen lädt OpenClaw sehr lange. Wichtig ist, dass ihr hier einfach mehrere Minuten wartet, bis der Dialog weitergeht. In dieser Anleitung seht ihr auf den Bildern immer auf welche Dialoge / Ausgaben ihr warten müsst, bevor ihr weitermachen könnt. 

Nun starten wir die Einrichtung von OpenClaw. Dazu benötigen wir die zuvor erstellten API Keys. 

cd /opt/containers/openclaw 
set -a && source .env && set +a && ./docker-setup.sh 

Wählt im ersten Schritt „yes“ aus: 

Schwarzer Bildschirm mit weißem OPENCLAW-ASCII-Logo oben und darunter ein Terminalfenster mit orangefarbenen Überschriften.

Hier wählen wir „Manual“, damit wir alle Einstellungen vornehmen können: 

UI-Liste mit drei Einträgen: Onboarding mode, QuickStart, Manual. Links farbige Punkte.

Das Workspace Directory bestätigt ihr einfach: 

Terminalfenster mit der Zeile 'Workspace directory' und dem Pfad /home/node/.openlaw/workspace.

Nun könnt ihr euer KI-System auswählen. In unserem Fall ist es Google. 

Terminalliste mit Modell-/Provider-Optionen; Google (Gemini API key + OAuth) grün markiert.

Hier wählen wir „Google Gemini API key“ aus: 

Überschrift: Google auth method; Liste: Google Gemini API key, Google Gemini CLI 0Auth; Back

Jetzt wählen wir, dass wir den API Key direkt einfügen wollen („Paste API key now“): 

Dialog zur API-Key-Eingabe mit zwei Optionen: Paste API key now oder Use external secret provider.

Nun können wir unser Modell auswählen. Dies beeinflusst sowohl den Preis als auch die Qualität der Antworten. Gemini 3.1 Pro ist aktuell das stärkste der Google KI Modelle. 

Terminal mit Liste von google/gemini-Modellen; oberstes Element Keep current (google/gemini-3.1-pro-preview).

Den Gateway Port bestätigt ihr einfach: 

Dunkles Bildschirmfenster zeigt orangefarbenen Text 'Gateway port' und darunter die Zahl 18789; links ein hellblauer Cursor.

Wählt nun „LAN (0.0.0.0)“ aus, damit die Kommunikation später mit Traefik funktioniert: 

Gateway bind: Loopback 127.0.0.1, LAN 0.0.0.0 (ausgewählt), Tailnet IP, Auto (Loopback → LAN), Custom IP.

Die Kommunikation soll mittels Token geschützt werden. Dies haben wir ja bereits zuvor erstellen lassen. 

Dunkles Terminal-/Code-UI mit Auswahl: Gateway auth, Token (Recommended default (local + remote)), Password.

Tailscale wählen wir nicht aus: 

Bildschirm mit dem Titel 'Tailscale exposure' und drei Optionen: Off (No Tailscale exposure), Serve, Funnel; Radiobutton-Icons daneben.

Nun wählen wir „Generate/store plaintext token“: 

Terminal mit Token-Menü: Auswahl 'Generate/store plaintext token (Default)' oder 'Use SecretRef'.

Bestätigt das vorausgewählte Token mit ENTER. 

Hier könnt ihr nun wählen, ob ihr einen Channel / Gateway nutzen wollt, oder ob ihr OpenClaw einfach per Webseite nutzen möch tet. Wir wählen „Yes“, damit wir Telegram einbinden können. 

Terminalfenster: Channel status – Liste von Kanälen (Telegram; WhatsApp; Discord) Configure chat channels now? Yes / No.

Wir wählen Telegram, da wir es damit verbinden wollen. 

Terminal-Menü mit Kanälen: Telegram, WhatsApp, Discord, IRC, Google Chat, Slack, Signal, iMessage, LINE, Zalo, Urbit.

Nun dauert es wenige Minuten, bis ihr zur Eingabe eurer Telegram API aufgefordert werdet: 

Dunkles Terminalfenster mit Anleitungen zur Erstellung eines Telegram-Bot-Tokens: Schritte 1–3 und Token-Format.

Nun wählen wir „Finished“ aus, da wir keine weiteren Dienste verbinden möchten: 

Terminal-UI mit vertikaler Kanal-Liste; grüner Punkt neben 'Finished (Done)'.

Beim Pairing wählen wir „no“ aus, da dieser Modus für uns passt. 

Terminal prompt: Configure DM access policies now? (default: pairing)
o Yes
• No

Nun wählen wir noch einen Search Provider aus. Wir entscheiden uns für Google, da wir hier bereits einen API Key haben: 

Dunkles Terminalfenster zeigt eine Liste von Suchanbietern: Brave Search, Gemini, Grok, Kimt, Perplexity, Skip for now.

Ihr könnt euch nun verschieden Skills (Fähigkeiten) auswählen für OpenClaw, welche installiert werden sollen: 

CLI-Fenster zeigt 'Skills status': Eligible 3, Missing requirements 41, Unsupported on this OS 7, Blocked by allowlist 0; 'Configure skills now?' Yes/No mit grünem Punkt.

Wir überspringen den Schritt mit „Skip for now“. 

Dunkles Terminalfenster mit Überschrift Install missing skill dependencies und Checkbox-Liste von Paket-Namen.

Jetzt könnt ihr noch weitere API Keys eingeben. Wir überspringen dies aber.

Dunkles Terminalfenster mit sechs Zeilen; jede Zeile zeigt 'Set <KEY> for <service>? No' gefolgt von 'No'.

Jetzt könnt ihr noch Hooks festlegen. Auch dies überspringen wir: 

Terminal-Menü: 'Enable hooks?' mit Checkboxen: Skip for now, boot-md, bootstrap-extra-files, command-logger, session-memory.

Zum Schluss installieren wir noch die zsh Shell: 

Dunkler Terminal, orangefarbener Text: 'Enable zsh shell completion for openssl?'; grüner Punkt links von 'Yes / No'.

OpenClaw ist nun fertig eingerichtet und führt die Konfiguration durch. Dies dauert mehrere Minuten. Bitte wartet so lange, bis ihr folgendes seht: 

Schwarzes Terminalfenster mit vielen Zeilen Code und Befehlen in weißem und farbigem Text.

5. OpenClaw Anpassungen für Traefik 

Nun führen wir ein weiteres Skript aus, welches Anpassungen an OpenClaw für Traefik vornimmt: 

nano /opt/containers/openclaw/setup2.sh 

Inhalt: 

#!/bin/bash 
set -e 
 
echo "Lese Konfiguration aus..." 
 
if ! TOKEN=$(grep "^OPENCLAW_GATEWAY_TOKEN=" .env | cut -d '=' -f 2); then 
    echo "Fehler: OPENCLAW_GATEWAY_TOKEN in .env nicht gefunden." 
    exit 1 
fi 
 
if ! DOMAIN=$(grep -oP 'Host\(`\K[^`]+' docker-compose.yml | head -1); then 
    echo "Fehler: Konnte keine Domain (Host) in der docker-compose.yml finden." 
    exit 1 
fi 
 
echo "Gefundener Token: $TOKEN" 
echo "Gefundene Domain: $DOMAIN" 
echo "---" 
 
echo "Deaktiviere Device Auth..." 
docker compose run --rm openclaw-cli config set gateway.controlUi.dangerouslyDisableDeviceAuth true 
 
echo "Erlaube Domain in Control UI..." 
docker compose run --rm openclaw-cli config set gateway.controlUi.allowedOrigins "[\"https://$DOMAIN\"]" --strict-json 
 
echo "---" 
# 5. Container neustarten, damit die Konfiguration greift 
echo "Starte Container neu..." 
docker compose down 
docker compose up -d 
 
echo "---" 
echo "✅ Setup erfolgreich abgeschlossen!" 
echo "" 
echo "Das Dashboard ist in wenigen Minuten unter folgender URL erreichbar:" 
echo "https://$DOMAIN/#token=$TOKEN" 
echo "" 

Dieses Skript starten wir nun: 

chmod +x /opt/containers/openclaw/setup2.sh 
cd /opt/containers/openclaw/ 
./setup2.sh 

Das Ausführen des Skriptes dauert mehrere Minuten. Bitte wartet bis ihr folgendes seht: 

Dunkles Terminal mit Mehrzeilen-Output: grüne 'Created'-Meldungen, rote Markierung um eine Zeile mit Dashboard-Link.

6. OpenClaw starten 

Kopiert euch nun den angezeigten Link und fügt diesen in euren Browser ein. Auch hier dauert es wieder mehrere Minuten, bis OpenClaw fertig gestartet ist. 

Anschließend solltet ihr diese Meldung erhalten: 

Login-Dialogfenster: Aufforderung zur Anmeldung; Felder für Benutzername und Passwort; blauer Anmelden-Button, grauer Abbrechen-Button.

Gebt hier euer Nutzername / Passwort aus Schritt 1.3.4 ein. 

Nun seid ihr auf der OpenClaw Oberfläche und könnt dort weitere Einstellungen vornehmen bzw. Befehle ausführen. 

Screenshot einer Chat-Oberfläche: linkes Seitenmenü, weißer Chatbereich, Texteingabefeld unten, obere Symbolleiste.

7. Telegram mit OpenClaw verbinden 

Sucht nun euren Telegram Bot, welchen ihr im Schritt 3 erstellt habt.  

Screenshot einer globalen Suchergebnisse-Liste; hervorgehobenes Profil 'dogado_bot' mit D-Avatar und @dogado_bot.

Mit dem Befehl „/start“ solltet ihr folgendes sehen: 

Chat-Screenshot: OpenClaw: access not configured. Pairing code: T4VAY9AN.

Diesen Pairing Code kopiert ihr euch nun. Anschließend führt ihr auf eurem Server folgenden Befehl aus: 

docker compose run --rm openclaw-cli pairing approve telegram PAIRING-CODE 

In meinem Fall also: 

docker compose run --rm openclaw-cli pairing approve telegram T4VAY9AN 

Wenn der Befehl bei eurem Server erfolgreich bearbeitet wurde, gebt bei Telegram „/status“ ein. Dort solltet ihr nun folgendes sehen: 

Telegram-Chat: OpenClaw – access not configured; User ID blurred; Pairing code T4VY9AN; Status: Modell, Runtime, Queue.

8. OpenClaw Versionen 

Zu OpenClaw gibt es aktuell alle paar Tage neue Docker Images, weshalb es sein kann, dass einige Menüs anders aussehen. Ebenfalls haben Nutzer in Foren berichtet, dass an manchen Tagen ein Image einen Fehler haben kann, welcher dann mit dem nächsten Image an den nächsten Tagen behoben sein kann 

9. OpenClaw Befehle ausführen 

Ihr könnt nun sowohl per Telegram: 

Zwei Chatblasen grün/weiß mit Texten: 'Erzähle mir einen Witz' und 'Was macht ein Clown im Büro?'; 'Faxen!' mit Clown-Emoji.

Als auch per Webseite Befehle ausführen: 

Zwei Chatblasen auf hellem Hintergrund; obere Blase: 'Erzähle mir einen Witz'; darunter: 'Was ist orange und geht den Berg hinauf? Eine Wanderine! 🍊'

Unter den Einstellungen könnt ihr euch auch anzeigen lassen, wie viele Anfragen OpenClaw bereits verschickt hat und welche Kosten dafür angefallen ungefähr angefallen ist. Ihr solltet dies aber zur Sicherheit immer zusätzlich in auf der Plattform des KI-Betreibers einsehen. 

Screenshot eines Dashboards: linke Seitenleiste mit markierter 'Nutzung'; zentrale Karten mit 'Usage Overview'.
Nächster Artikel
OpenSSH Public Key Authentifizierung auf VPS / vServer
Weitere passende Themen