{"id":15317,"date":"2026-02-26T12:05:25","date_gmt":"2026-02-26T12:05:25","guid":{"rendered":"https:\/\/www.ssdnodes.com\/?p=15317"},"modified":"2026-03-13T17:47:07","modified_gmt":"2026-03-13T17:47:07","slug":"how-to-install-openclaw-on-a-vps","status":"publish","type":"post","link":"https:\/\/www.ssdnodes.com\/blog\/how-to-install-openclaw-on-a-vps\/","title":{"rendered":"How to Install OpenClaw on a VPS: Step-by-Step Guide"},"content":{"rendered":"<p>Setting up your own AI assistant on a VPS might sound intimidating, but it's actually surprisingly straightforward. In about 30 minutes, you'll have a fully functional AI assistant that can chat with you on Telegram, remember conversations, run commands, and even generate voice messages.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15358\" style=\"border-radius: 25px;\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/Install-OpenClaw-1024x683.webp\" alt=\"Install OpenClaw on a VPS\" width=\"604\" height=\"400\" \/><\/p>\n<p>In this guide, you'll learn how to install OpenClaw on a fresh Ubuntu VPS, connect it to Telegram, and start chatting with your personal AI assistant.<\/p>\n<blockquote><p><strong>Security Note:<\/strong> OpenClaw has full system access on whatever machine it runs on. Always install it on an isolated VPS. Never install OpenClaw on your main computer or a server with sensitive data. Treat it like giving someone remote access to your machine and proceed with caution.<\/p><\/blockquote>\n<hr \/>\n<h2>How to Install OpenClaw on a VPS - Quick Overview<\/h2>\n<div class=\"contents\">\n<div class=\"group relative relative pb-3\" data-is-streaming=\"false\">\n<div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\">\n<div>\n<div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 standard-markdown\">\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Install OpenClaw on your VPS by running the official installer as a dedicated user: <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">\u2265curl -fsSL https:\/\/openclaw.ai\/install.sh | bash<\/code>. The installer automatically handles Node.js dependencies and launches the setup wizard where you'll configure your Anthropic API key and Telegram bot connection. The entire process takes about 30 minutes from fresh VPS to functioning AI assistant.<\/p>\n<p class=\"font-claude-response-body break-words whitespace-normal leading-[1.7]\">Read on for the complete step-by-step installation process, security configuration, and troubleshooting guidance.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2>Prerequisites<\/h2>\n<p>Before starting, you'll need:<\/p>\n<ul>\n<li><strong>A fresh Ubuntu VPS<\/strong> (Ubuntu 22.04 or 24.04 recommended). If you need one, SSD Nodes offers an affordable <a href=\"https:\/\/www.ssdnodes.com\/openclaw-vps-hosting\/\">Openclaw VPS hosting<\/a> perfect for this.<\/li>\n<li><strong>SSH access<\/strong> to your server with root or sudo privileges<\/li>\n<li><strong>A Telegram account<\/strong> to create a bot and chat with OpenClaw<\/li>\n<li><strong>An Anthropic API key<\/strong> from <a href=\"https:\/\/console.anthropic.com\/\" target=\"_blank\" rel=\"noopener\">console.anthropic.com<\/a> (required for the AI brain)<\/li>\n<\/ul>\n<hr \/>\n<h2>Step 1: Connect to Your VPS<\/h2>\n<p>First, <a href=\"https:\/\/www.ssdnodes.com\/blog\/connecting-vps-ssh-security\/\">SSH into your fresh VPS<\/a>:<\/p>\n<pre><code class=\"language-bash\">ssh root@your-server-ip<\/code><\/pre>\n<p>You should see a welcome message and a command prompt.<\/p>\n<p>Before proceeding, install screen so your session survives any SSH disconnections during installation:<\/p>\n<pre><code>apt install -y screen<\/code><\/pre>\n<hr \/>\n<h2>Step 2: Create a Dedicated User<\/h2>\n<p>Running OpenClaw as root is not recommended. Let's create a dedicated user called <code>openclaw<\/code>:<\/p>\n<pre><code class=\"language-bash\">adduser openclaw<\/code><\/pre>\n<p>You'll be prompted to set a password and fill in some optional information (you can press Enter to skip the optional fields).<\/p>\n<p>Next, give this user sudo privileges:<\/p>\n<pre><code class=\"language-bash\">usermod -aG sudo openclaw<\/code><\/pre>\n<p>Now switch to the new user:<\/p>\n<pre><code class=\"language-bash\">su - openclaw\r\nscreen -S openclaw<\/code><\/pre>\n<p>You're now inside a screen session running as the openclaw user. If your SSH connection drops at any point, reconnect to your VPS, run <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">su - openclaw<\/code>, then <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">screen -rd openclaw<\/code> to pick up where you left off.<\/p>\n<p>Your prompt should change to show <code>openclaw@yourserver<\/code>. From now on, we'll do everything as this user.<\/p>\n<hr \/>\n<h2>Step 3: Install OpenClaw<\/h2>\n<p>OpenClaw provides a simple one-line installer. Run it:<\/p>\n<pre><code class=\"language-bash\">\u2265curl -fsSL https:\/\/openclaw.ai\/install.sh | bash<\/code><\/pre>\n<p>This script automatically:<\/p>\n<ul>\n<li>Detects your system<\/li>\n<li>Installs Node.js if needed<\/li>\n<li>Installs OpenClaw globally<\/li>\n<\/ul>\n<p>This process can take from 10 minutes to 30 minutes or more depending on the dependencies needed.<br \/>\nOnce complete, it will go directly to the onboarding process.<\/p>\n<p>If it does not go directly to onboarding, then verify the installation first:<\/p>\n<pre><code class=\"language-bash\">openclaw --version<\/code><\/pre>\n<p>You should see something like <code>2026.3.7<\/code>.<\/p>\n<p><strong>Note:<\/strong> If you see <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">bash: openclaw: command not found<\/code> after installation, the binary isn't in your PATH yet. Fix it by running:<\/p>\n<pre><code>export PATH=$HOME\/.npm-global\/bin:$PATH<\/code><\/pre>\n<p>Then make it permanent so it survives future sessions:<\/p>\n<pre>echo 'export PATH=$HOME\/.npm-global\/bin:$PATH' &gt;&gt; ~\/.bashrc\r\nsource ~\/.bashrc<\/pre>\n<p>Now try <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">openclaw --version<\/code> again and you should see the version number.<\/p>\n<hr \/>\n<h2>Step 4: Run the Setup Wizard<\/h2>\n<p>OpenClaw includes an interactive setup wizard that configures everything for you. If it's not already running, run it with the following command:<\/p>\n<pre><code class=\"language-bash\">openclaw onboard<\/code><\/pre>\n<p>The wizard will guide you through several steps:<\/p>\n<h3>Security Warning<\/h3>\n<p>First, you'll see a security warning explaining that OpenClaw has full system access. Read it carefully, then select <strong>Yes<\/strong> to continue.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15335\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/01-security-warning-1024x576.webp\" alt=\"Openclaw Security Warning\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/01-security-warning-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/01-security-warning-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/01-security-warning-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/01-security-warning-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/01-security-warning.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Choose Onboarding Mode<\/h3>\n<p>Select <strong>QuickStart<\/strong> (the default) for the easiest setup.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15336\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/02-onboarding-mode-1024x576.webp\" alt=\"Openclaw onboarding mode\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/02-onboarding-mode-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/02-onboarding-mode-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/02-onboarding-mode-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/02-onboarding-mode-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/02-onboarding-mode.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Select Model Provider<\/h3>\n<p>Choose <strong>Anthropic<\/strong> as your model provider.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15337\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/03-model-provider-1024x576.webp\" alt=\"Openclaw model provider\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/03-model-provider-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/03-model-provider-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/03-model-provider-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/03-model-provider-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/03-model-provider.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Anthropic Auth Method<\/h3>\n<p>Select <strong>Anthropic API key<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15338\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/04-anthropic-auth-method-1024x576.webp\" alt=\"anthropic auth method for Openclaw\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/04-anthropic-auth-method-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/04-anthropic-auth-method-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/04-anthropic-auth-method-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/04-anthropic-auth-method-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/04-anthropic-auth-method.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Enter Your API Key<\/h3>\n<p>Paste your Anthropic API key when prompted.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15340\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/05-enter-api-key-1024x576.webp\" alt=\" Openclaw api key\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/05-enter-api-key-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/05-enter-api-key-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/05-enter-api-key-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/05-enter-api-key-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/05-enter-api-key.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<blockquote><p><strong>Tip:<\/strong> Get your API key from <a href=\"https:\/\/console.anthropic.com\/\" target=\"_blank\" rel=\"noopener\">console.anthropic.com<\/a>. You'll need to add credits to your account.<\/p><\/blockquote>\n<h3>Select Default Model<\/h3>\n<p>Keep the default (claude-opus-4-5) or choose a different model from the list.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15341\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/06-default-model-1-1024x576.webp\" alt=\"Openclaw Default\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/06-default-model-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/06-default-model-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/06-default-model-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/06-default-model-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/06-default-model-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Choose a Channel (Telegram)<\/h3>\n<p>Select <strong>Telegram<\/strong> as your messaging channel. The wizard will appear after a few minutes and show you instructions for creating a bot with BotFather.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15342\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/07-telegram-instructions-1-1024x576.webp\" alt=\"Openclaw telegram instructions\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/07-telegram-instructions-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/07-telegram-instructions-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/07-telegram-instructions-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/07-telegram-instructions-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/07-telegram-instructions-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Create a Telegram Bot &amp; Enter Token<\/h3>\n<p>To get a bot token:<\/p>\n<ol>\n<li>Open Telegram and search for <strong>@BotFather<\/strong><\/li>\n<li>Send <code>\/newbot<\/code> to BotFather<\/li>\n<li>Choose a display name for your bot (e.g., \"My OpenClaw\")<\/li>\n<li>Choose a username ending in <code>bot<\/code> (e.g., \"myopenclaw_bot\")<\/li>\n<li>BotFather will give you a token like <code>8562115417:AAFVazfBSo1234pE8n2kpN5TRlVcYWJOs64<\/code><\/li>\n<\/ol>\n<p>Paste this token into the wizard.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15343\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/08-telegram-token-entered-1-1024x576.webp\" alt=\"Openclaw telegram token entered\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/08-telegram-token-entered-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/08-telegram-token-entered-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/08-telegram-token-entered-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/08-telegram-token-entered-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/08-telegram-token-entered-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Configure Skills<\/h3>\n<p>You'll be asked about skills configuration. Select <strong>Yes<\/strong> to continue.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15344\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/09-skills-config-1-1024x576.webp\" alt=\"Openclaw skills config\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/09-skills-config-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/09-skills-config-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/09-skills-config-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/09-skills-config-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/09-skills-config-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3>Install Skill Dependencies<\/h3>\n<p>You'll see a list of available skills. Select <strong>Skip for now<\/strong> to continue without installing optional dependencies, or choose any skills you want.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15347\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/11-skills-list-1-1024x576.webp\" alt=\"Openclaw skills list\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/11-skills-list-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/11-skills-list-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/11-skills-list-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/11-skills-list-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/11-skills-list-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Skip Optional API Keys<\/h3>\n<p>The wizard will ask about various optional API keys (Google Places, Gemini, Notion, OpenAI, ElevenLabs). Select <strong>No<\/strong> for each one to skip them.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15348\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/12-skip-goplaces-1-1024x576.webp\" alt=\"Openclaw Skip API keys\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/12-skip-goplaces-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/12-skip-goplaces-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/12-skip-goplaces-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/12-skip-goplaces-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/12-skip-goplaces-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Enable Hooks<\/h3>\n<p>When asked about hooks, select <strong>Skip for now<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15349\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/15-hooks-1-1024x576.webp\" alt=\"Enable hooks\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/15-hooks-1-1024x576.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/15-hooks-1-300x169.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/15-hooks-1-768x432.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/15-hooks-1-1536x864.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/15-hooks-1.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3>Onboarding Complete!<\/h3>\n<p>The wizard will show a completion message with the dashboard information with instructions on how to access it.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15653\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/2026-03-09-164018_1920x1080_scrot-1024x576.png\" alt=\"\" width=\"1024\" height=\"576\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/2026-03-09-164018_1920x1080_scrot-1024x576.png 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/2026-03-09-164018_1920x1080_scrot-300x169.png 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/2026-03-09-164018_1920x1080_scrot-768x432.png 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/2026-03-09-164018_1920x1080_scrot-1536x864.png 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/2026-03-09-164018_1920x1080_scrot.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>This is your confirmation that everything is working. The dashboard URL shown (<code>http:\/\/127.0.0.1:18789\/...<\/code>) is intentionally bound to localhost only, meaning it\u2019s <strong>not accessible from outside the server<\/strong>. That\u2019s by design for security reasons. The next step covers how to access it from your local machine.<\/p>\n<p>Copy the full token URL from your terminal output, you\u2019ll need it in Step 6.<\/p>\n<hr \/>\n<h2>Step 5: Start the Gateway if Not Started automatically<\/h2>\n<div class=\"cl-preview-section\">\n<p>On most VPS environments, systemd user services aren\u2019t available. Use screen to keep the gateway running in the background.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<pre><code>screen -rd openclaw\r\nopenclaw gateway<\/code><\/pre>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>If you see <code class=\"bg-text-200\/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]\">openclaw: command not found<\/code>, run:<\/p>\n<pre>export PATH=$HOME\/.npm-global\/bin:$PATH<\/pre>\n<p>Then try again.<\/p>\n<p>Now detach from screen so the gateway keeps running after you close your terminal:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Press\u00a0<code>Ctrl+A<\/code>\u00a0then\u00a0<code>D<\/code><\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>To reattach later:\u00a0<code>screen -r -d openclaw<\/code><\/p>\n<\/div>\n<hr \/>\n<h2>Step 6: Verify the Gateway is Running and Access the Dashboard from Your Local Machine<\/h2>\n<p>Open a new terminal (or detach from screen with <code>Ctrl+A, D<\/code>).<\/p>\n<p>If you're logged in as root, switch to the openclaw user first:<\/p>\n<pre><code class=\"language-bash\">su - openclaw<\/code><\/pre>\n<p>Then check:<\/p>\n<pre><code class=\"language-bash\">openclaw status<\/code><\/pre>\n<p>You should see the gateway is running.<\/p>\n<div class=\"cl-preview-section\">\n<p>Since the gateway only listens on localhost, you need an SSH tunnel to reach it from your computer. Open a new terminal window on your\u00a0<strong>local machine<\/strong>\u00a0(not the VPS) and run:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<pre><code>ssh -N -L 18789:127.0.0.1:18789 openclaw@&lt;your-vps-ip&gt;\r\n<\/code><\/pre>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Replace\u00a0<code>&lt;your-vps-ip&gt;<\/code>\u00a0with your server\u2019s actual IP address. Leave this terminal window open, it needs to stay running while you use the dashboard.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Before opening the browser, confirm the tunnel is working by checking the VPS in a separate terminal:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<pre><code>ss -tlnp | grep 18789\r\n<\/code><\/pre>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>You should see a line showing something is listening on port 18789:<\/p>\n<pre>LISTEN 0 511 127.0.0.1:18789 0.0.0.0:* users:((\"openclaw-gatewa\",pid=3948,fd=24))\r\nLISTEN 0 511 [::1]:18789 [::]:* users:((\"openclaw-gatewa\",pid=3948,fd=26))<\/pre>\n<p>If the output is empty, the gateway isn\u2019t running, go back and check your screen session with <code>screen -rd openclaw<\/code>.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Once the tunnel is active, open your browser and paste the full token URL from your gateway output:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<pre><code>http:\/\/localhost:18789\/#token=YOUR_TOKEN_HERE\r\n<\/code><\/pre>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>If you missed the token from the gateway startup output, retrieve it directly from the config file:<\/p>\n<p><code>cat ~\/.openclaw\/openclaw.json | grep token<\/code><\/p>\n<p>You should see the OpenClaw Gateway Dashboard with \u201cHealth OK\u201d in the top right corner.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-15654\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/openclaw-gateway-and-dashboard-1024x486.png\" alt=\"openclaw gateway and dashboard\" width=\"1024\" height=\"486\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/openclaw-gateway-and-dashboard-1024x486.png 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/openclaw-gateway-and-dashboard-300x142.png 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/openclaw-gateway-and-dashboard-768x365.png 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/openclaw-gateway-and-dashboard-1536x729.png 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/openclaw-gateway-and-dashboard.png 1900w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<hr \/>\n<h2>Step 7: Pair Your Telegram Account<\/h2>\n<p>For security, OpenClaw requires you to \"pair\" before it will respond to your messages. This prevents random people from chatting with your AI.<\/p>\n<p>Open Telegram and send any message to your new bot (e.g., \"hello\").<\/p>\n<p>The bot will respond with a <strong>pairing code<\/strong> like <code>ABCD1234<\/code>.<\/p>\n<p>Now approve this pairing from your terminal:<\/p>\n<pre><code class=\"language-bash\">openclaw pairing approve telegram ABCD1234<\/code><\/pre>\n<p>Replace <code>ABCD1234<\/code> with your actual pairing code.<\/p>\n<hr \/>\n<h2>Step 8: Start Chatting!<\/h2>\n<p>Go back to Telegram and send a message. OpenClaw should now respond!<\/p>\n<p>Try asking it:<\/p>\n<ul>\n<li>\"What can you do?\"<\/li>\n<li>\"What's the weather like?\"<\/li>\n<li>\"Tell me a joke\"<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-15351\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/17-openclaw-installed-1.webp\" alt=\"openclaw installed on a VPS\" width=\"917\" height=\"781\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/17-openclaw-installed-1.webp 917w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/17-openclaw-installed-1-300x256.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2026\/02\/17-openclaw-installed-1-768x654.webp 768w\" sizes=\"auto, (max-width: 917px) 100vw, 917px\" \/><\/p>\n<p><strong>Congratulations!<\/strong> You now have your own personal AI assistant running on your VPS!<\/p>\n<hr \/>\n<h2>Managing Your OpenClaw Instance<\/h2>\n<h3>Check Status<\/h3>\n<pre><code class=\"language-bash\">openclaw status<\/code><\/pre>\n<h3>Restart the Gateway<\/h3>\n<p>If running in screen:<\/p>\n<pre><code class=\"language-bash\">screen -rd openclaw\r\n# Press Ctrl+C to stop, then run:\r\nopenclaw gateway<\/code><\/pre>\n<h3>View Configuration<\/h3>\n<pre><code class=\"language-bash\">cat ~\/.openclaw\/openclaw.json<\/code><\/pre>\n<hr \/>\n<h2>Troubleshooting<\/h2>\n<div class=\"cl-preview-section\">\n<h3>\"Connection refused\" when running the SSH tunnel<\/h3>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>This means the gateway isn\u2019t running on the VPS at that moment. The tunnel can only forward traffic if OpenClaw is actively running. Check whether it\u2019s running:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<pre><code>ss -tlnp | grep 18789\r\n<\/code><\/pre>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>If that returns nothing, reattach to your screen session and restart the gateway:<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<pre><code>screen -rd openclaw\r\nopenclaw gateway\r\n<\/code><\/pre>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>Then try the tunnel command again from your local machine.<\/p>\n<\/div>\n<div class=\"cl-preview-section\">\n<h3>\"Gateway unreachable\" or can\u2019t connect on port 18789<\/h3>\n<\/div>\n<div class=\"cl-preview-section\">\n<p>The gateway binds to\u00a0<code>127.0.0.1<\/code>\u00a0by design, which means it\u2019s intentionally not accessible from the public internet. You must use the SSH tunnel described in Step 6 to reach it. Do not try to open\u00a0<code>http:\/\/your-vps-ip:18789<\/code> directly in a browser, as it won\u2019t work.<\/p>\n<\/div>\n<h3>\"systemctl --user unavailable\" error<\/h3>\n<p>This is normal on VPS environments without systemd user sessions. Use <code>screen<\/code> to run the gateway in the background:<\/p>\n<pre><code class=\"language-bash\">screen -S openclaw\r\nopenclaw gateway\r\n# Ctrl+A, then D to detach<\/code><\/pre>\n<h3>Bot not responding?<\/h3>\n<ol>\n<li>Check the gateway is running: <code>openclaw status<\/code><\/li>\n<li>Verify your pairing: <code>openclaw pairing list telegram<\/code><\/li>\n<li>Make sure you approved the pairing code<\/li>\n<\/ol>\n<h3>\"API key invalid\" error?<\/h3>\n<p>Make sure your Anthropic API key is correct and has credits.<\/p>\n<h3>Need to reconfigure?<\/h3>\n<p>Run the wizard again:<\/p>\n<pre><code class=\"language-bash\">openclaw onboard<\/code><\/pre>\n<h3>Security audit<\/h3>\n<p>Run a security check on your installation:<\/p>\n<pre><code class=\"language-bash\">openclaw security audit --deep<\/code><\/pre>\n<hr \/>\n<h2>What You've Accomplished<\/h2>\n<p>By following this guide, you've successfully:<\/p>\n<ul>\n<li>Set up a secure, dedicated user for OpenClaw<\/li>\n<li>Installed OpenClaw on your VPS<\/li>\n<li>Created a Telegram bot and connected it to OpenClaw<\/li>\n<li>Paired your Telegram account for secure access<\/li>\n<li>Started chatting with your personal AI assistant<\/li>\n<\/ul>\n<p>Your AI assistant is now live! It can chat with you, remember context across conversations, search the web, run commands on your server, and much more.<\/p>\n<hr \/>\n<h2>FAQ<\/h2>\n<h3>Is OpenClaw free to use?<\/h3>\n<p>OpenClaw itself is free and open source. However, you'll need to pay for:<\/p>\n<ul>\n<li>Your VPS hosting<\/li>\n<li>Anthropic API usage (pay-per-token)<\/li>\n<li>Optional: ElevenLabs for voice features<\/li>\n<\/ul>\n<h3>Can I connect other messaging apps?<\/h3>\n<p>Yes! OpenClaw supports Discord, WhatsApp, Signal, Slack, and more. Run <code>openclaw onboard<\/code> again to add additional channels.<\/p>\n<h3>How do I update OpenClaw?<\/h3>\n<pre><code class=\"language-bash\">\u2265curl -fsSL https:\/\/openclaw.ai\/install.sh | bash<\/code><\/pre>\n<p>Then restart your gateway.<\/p>\n<h3>Where is my OpenClaw data stored?<\/h3>\n<p>All data is stored locally on your VPS in <code>~\/.openclaw\/<\/code> (config) and your workspace folder (memory, files). Nothing is sent to external servers except API calls to Anthropic.<\/p>\n<h3>Is OpenClaw secure?<\/h3>\n<p>OpenClaw has full access to whatever machine it runs on. That's why we strongly recommend:<\/p>\n<ul>\n<li>Using an isolated VPS (not your main computer)<\/li>\n<li>Not connecting sensitive accounts<\/li>\n<li>Being careful about prompt injection in group chats<\/li>\n<li>Running <code>openclaw security audit --deep<\/code> to check your setup<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Install OpenClaw on an Ubuntu VPS in 30 minutes. Connect Telegram, add your API key, and run your own AI assistant securely.<\/p>\n","protected":false},"author":19,"featured_media":15364,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[18,30],"tags":[],"class_list":["post-15317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/15317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/comments?post=15317"}],"version-history":[{"count":35,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/15317\/revisions"}],"predecessor-version":[{"id":15679,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/15317\/revisions\/15679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media\/15364"}],"wp:attachment":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media?parent=15317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/categories?post=15317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/tags?post=15317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}