OpenClaw x openEuler 24.03-LTS-SP3 Container Deployment Practical Guide

Introduction

You want an AI Agent to run continuously on a server, monitoring your code repositories, executing scheduled tasks, and handling urgent requests at any time—but you’re stuck at two major hurdles:

  • Hard to set up: Node.js version mismatches, dependency conflicts, system compatibility issues—after hours of troubleshooting, the agent still won’t start.
  • Hard to use: The agent runs on a remote server with no convenient communication channel. Sending a command requires logging in via SSH, making “anytime, anywhere” access impossible.

OpenClaw x openEuler offers a complete solution to these pain points:

  • Deployment side: Provides a container image based on openEuler 24.03-LTS-SP3 (version 2026.3.2). Just run docker pull, and you’re up and running—no local environment needed. The container runs 24/7 on the server and automatically restarts after reboot.
  • Usage side: The official Feishu plugin is now live. After configuration, Feishu becomes your real-time communication channel with the server agent—whether you’re commuting or between meetings, send a message, and the agent responds instantly. Results come back directly in the chat, with no need to log into the server.

Once set up, you’ll have a 24/7 online, always accessible, and extensible AI Agent. This tutorial will guide you through the full configuration—from container deployment to Feishu integration—on an openEuler server, all within 30 minutes.


Deploy OpenClaw Quickly Using Docker Containers

0. Environment Preparation

All steps in this tutorial depend on Docker. Install it according to your OS:

OS Installation Method
openEuler / Linux sudo yum install docker or refer to your distribution’s Docker Engine documentation
macOS Download and install Docker Desktop for Mac
Windows Download and install Docker Desktop for Windows

macOS Notes
After installing Docker Desktop for Mac, you must start the Docker Desktop app before each use. Wait until the whale icon in the menu bar shows “Running” before running any commands in the Terminal.

Windows Notes
Similarly, start Docker Desktop and wait for the system tray icon to show “Running”.

TODO: WSL deployment guide will be added later.

Verify Docker is ready after installation:

docker version

1. Pull the Image

docker pull openeuler/openclaw:2026.3.2-oe2403sp3

2. Run the Onboarding Wizard

docker run -it --name my-openclaw openeuler/openclaw:2026.3.2-oe2403ltssp3 onboard --install-daemon

After the wizard starts, follow the prompts to complete the following configurations:

2.1 Configuration Mode

Select QuickStart (recommended). The wizard will guide you through core setup.

2.2 Model Configuration

OpenClaw supports models from major LLM providers as well as local models. Here’s an example using Qwen (OAuth).

2.3 Channel Configuration

Most channel options are for international platforms. Domestic users are recommended to choose Feishu/Lark, or skip this step—complete Feishu setup in Chapter 2.

2.4 Skills Configuration

The wizard will ask for API keys required by each Skill (as shown below). Skip any you don’t need by selecting No. You can always install them later via /install during a conversation.

20260307_OpenClaw_container_04

2.5 Hooks Configuration

We recommend enabling all four official hooks:

  • boot-md: Automatically loads a specified Markdown file as default prompt on startup—ideal for injecting rules, preferences, or project context every time.
  • bootstrap-extra-files: Injects additional workspace files using glob/path patterns.
  • command-logger: Logs all executed commands and key operations for debugging and review.
  • session-memory: Persists session context when running /new or /reset, enabling a more seamless experience across restarts.

3. Start the Container

After completing onboarding:

docker start my-openclaw

4. Run Gateway (Terminal 1)

The Gateway is OpenClaw’s core service process, responsible for connecting models, channels, and Skills. It must stay running.

docker exec -it my-openclaw openclaw gateway run

5. Launch TUI Client (Terminal 2)

Open a new terminal and enter the TUI interface:

docker exec -it my-openclaw openclaw tui

Once TUI starts, you can begin interacting with OpenClaw:

At this point, OpenClaw is fully running in the container. To adjust model or channel settings later, run:

docker exec -it my-openclaw openclaw configure

Chapter 2: Configure Feishu Channel

OpenClaw supports integration with Feishu via the official plugin, recommended for users in China. Complete the following steps after the OpenClaw container is running.

Step 1: Create a Feishu Enterprise Self-Hosted App

Log in to the Feishu Open Platform and click Create Enterprise Self-Hosted App.

Fill in the app name, description, and icon in the popup, then click Create.

In the left sidebar, go to App Capabilities > Add App Capabilities, switch to the Add by Capability tab, and click Add on the Bot capability card.

Step 2: Configure Permissions

In the left sidebar, go to Development Configuration > Permission Management, click Batch Import/Export Permissions, switch to the Import tab, replace the example JSON with the following, then click Next, Confirm New Permissions.

{
  "scopes": {
    "tenant": [
      "contact:contact.base:readonly",
      "docx:document:readonly",
      "im:chat:read",
      "im:chat:update",
      "im:message.group_at_msg:readonly",
      "im:message.p2p_msg:readonly",
      "im:message.pins:read",
      "im:message.pins:write_only",
      "im:message.reactions:read",
      "im:message.reactions:write_only",
      "im:message:readonly",
      "im:message:recall",
      "im:message:send_as_bot",
      "im:message:send_multi_users",
      "im:message:send_sys_msg",
      "im:message:update",
      "im:resource",
      "application:application:self_manage",
      "cardkit:card:write",
      "cardkit:card:read"
    ],
    "user": [
      "contact:user.employee_id:readonly",
      "offline_access",
      "base:app:copy",
      "base:field:create",
      "base:field:delete",
      "base:field:read",
      "base:field:update",
      "base:record:create",
      "base:record:delete",
      "base:record:retrieve",
      "base:record:update",
      "base:table:create",
      "base:table:delete",
      "base:table:read",
      "base:table:update",
      "base:view:read",
      "base:view:write_only",
      "base:app:create",
      "base:app:update",
      "base:app:read",
      "board:whiteboard:node:create",
      "board:whiteboard:node:read",
      "calendar:calendar:read",
      "calendar:calendar.event:create",
      "calendar:calendar.event:delete",
      "calendar:calendar.event:read",
      "calendar:calendar.event:reply",
      "calendar:calendar.event:update",
      "calendar:calendar.free_busy:read",
      "contact:contact.base:readonly",
      "contact:user.base:readonly",
      "contact:user:search",
      "docs:document.comment:create",
      "docs:document.comment:read",
      "docs:document.comment:update",
      "docs:document.media:download",
      "docs:document:copy",
      "docx:document:create",
      "docx:document:readonly",
      "docx:document:write_only",
      "drive:drive.metadata:readonly",
      "drive:file:download",
      "drive:file:upload",
      "im:chat.members:read",
      "im:chat:read",
      "im:message",
      "im:message.group_msg:get_as_user",
      "im:message.p2p_msg:get_as_user",
      "im:message.send_as_user",
      "im:message:readonly",
      "search:docs:read",
      "search:message",
      "space:document:delete",
      "space:document:move",
      "space:document:retrieve",
      "task:comment:read",
      "task:comment:write",
      "task:task:read",
      "task:task:write",
      "task:task:writeonly",
      "task:tasklist:read",
      "task:tasklist:write",
      "wiki:node:copy",
      "wiki:node:create",
      "wiki:node:move",
      "wiki:node:read",
      "wiki:node:retrieve",
      "wiki:space:read",
      "wiki:space:retrieve",
      "wiki:space:write_only"
    ]
  }
}

After confirming the permission list is correct, click Apply for Activation.

Step 3: Publish the App Version

After permission approval, the app is in “Pending Release” status. Click Create Version at the top.

Enter a version number and update notes, then click Save.


After saving, click the Confirm Release button in the top-right corner to publish the app.

Step 4: Retrieve Configuration Info

In the left sidebar, go to Basic Info > Credentials & Basic Info, and record the App ID and App Secret—you’ll need them in the next step.

Step 5: Install Feishu Plugin and Complete Linking

Ensure the Gateway is running in the container (see Step 4 in Chapter 1). Open a new terminal and run:

docker exec -it my-openclaw feishu-plugin-onboard install

Follow the prompts to enter the App ID and App Secret obtained in Step 4.

Step 6: Subscribe to Bot Events

Return to the Feishu Open Platform, go to Development Configuration > Events & Callbacks, configure Long-Link event subscription, add the Receive Message event, and publish a new version to activate the configuration.

Step 7: Complete Bot Pairing

In Feishu, send any message to the bot. It will reply with a pairing code:

In the container, run the following command (replace <pairing code> with the actual code received):

docker exec -it my-openclaw openclaw pairing approve feishu <pairing code> --notify

1

After following the prompts to authorize, you’re all set and ready to use!


Frequently Asked Questions

How to adjust model or channel settings?

docker exec -it my-openclaw openclaw configure

For detailed instructions on installing the official Feishu plugin, visit: OpenClaw Feishu Official Plugin Installation Steps.
For more Skills and usage tips, visit openclaw.ai.

1 Like

Error pulling openclaw image:

Thank you for the feedback. The article’s mirror tags have been updated.