从零部署私有化AI助手:OpenClaw与飞书深度集成实战
1. 项目概述如果你正在寻找一个能够深度集成到飞书工作流中的个人AI助手并且希望完全掌控自己的数据和部署环境那么OpenClaw会是一个极具吸引力的选择。它不是一个简单的聊天机器人而是一个功能强大的AI代理平台可以连接多种AI模型如Azure OpenAI、Claude并通过飞书这样的企业协作工具与你交互。今天分享的是我在Azure虚拟机上从零部署OpenClaw并成功对接飞书的完整实战记录。整个过程涉及云服务器配置、反向代理、HTTPS证书、服务守护以及飞书应用开发等多个环节我会把每一步的原理、踩过的坑和优化技巧都掰开揉碎了讲清楚。无论你是想搭建一个团队内部的智能助理还是想深入研究AI Agent的私有化部署这篇指南都能给你提供一条清晰、可复现的路径。2. 核心架构与方案选型解析在动手之前我们先理清整个部署方案的骨架和背后的设计逻辑。理解“为什么这么做”比记住命令更重要这能帮助你在遇到问题时快速定位。2.1 为什么选择Azure VM OpenClaw的组合市面上AI助手方案很多从直接使用ChatGPT网页版到调用API自建前端再到使用LangChain等框架。OpenClaw的定位更偏向于一个“企业级AI网关”它抽象了模型调用、会话管理、工具扩展和消息通道。选择在Azure VM上部署主要基于以下几点考量数据隐私与可控性所有对话数据、上下文历史都留存在你自己的服务器上不会经过第三方服务除了你主动调用的AI模型API。这对于处理敏感信息的团队至关重要。模型灵活性OpenClaw支持多模型后端。你可以同时配置Azure OpenAI的GPT-4和Azure AI Claude的Claude 3.5 Sonnet并根据不同任务让助手自动选择或手动切换摆脱对单一供应商的依赖。深度集成能力通过“通道”Channel概念OpenClaw可以接入飞书、Slack、Discord等。飞书通道的配置是本次的重点它能将AI能力无缝嵌入到你日常的IM、文档、日历中实现真正的“工作流AI助手”。成本与性能平衡Azure B系列VM如B1ms提供基准性能并且支持突发对于个人或小团队使用的AI网关来说在多数空闲时间成本很低而在交互时又能提供足够的计算资源来处理请求转发和逻辑处理。2.2 技术栈分解与职责整个部署涉及多个组件它们各司其职Azure VM (Ubuntu 24.04 LTS)提供稳定、干净的Linux操作系统环境作为所有服务运行的基石。Node.js 22OpenClaw Gateway的核心运行时。选择22而非更旧的LTS版本是为了确保兼容OpenClaw可能使用的最新ECMAScript特性。OpenClaw Gateway核心服务。它监听本地端口默认18789处理所有AI逻辑、会话管理、插件加载和通道连接。Nginx扮演反向代理和SSL终结者。对外提供标准的80/443端口访问将HTTPS流量解密后转发给本地的Gateway。这样做的好处是Gateway无需处理复杂的SSL/TLS逻辑可以更专注于业务。Certbot (Let‘s Encrypt)自动化SSL证书管理工具。为我们的域名提供免费的、受浏览器信任的HTTPS证书这是启用飞书WebSocket长连接等现代特性的前提。systemd (User Service)服务守护进程。确保OpenClaw Gateway在服务器重启或SSH会话断开后依然能稳定运行。飞书开放平台提供机器人的“身份”和消息通道。我们的OpenClaw实例将以一个“企业自建应用”的机器人身份接入飞书的IM系统。2.3 网络与安全设计要点安全是私有化部署的生命线。本方案的设计遵循了最小权限和网络隔离原则端口暴露最小化Azure网络安全组NSG只开放22SSH、80HTTP、443HTTPS三个端口。OpenClaw Gateway的18789端口仅绑定在127.0.0.1本地回环不对外网暴露杜绝了从公网直接攻击Gateway的风险。认证双层防护Gateway层使用Token认证。任何设备包括浏览器访问Web UI首次连接都需要提供Token并在服务器端批准配对。这防止了未授权访问。飞书通道层使用App ID和App Secret进行OAuth2认证。同时通过dmPolicy如pairing控制哪些飞书用户可以与机器人交互。HTTPS全程加密从客户端浏览器到Nginx再到飞书服务器的通信全部基于TLS加密。Let‘s Encrypt证书确保了加密的权威性。理解了这套架构我们就能明白每个步骤的意义接下来进入具体的实操环节。3. 云端环境准备与初始化这一部分我们将在Azure上搭建好基础运行环境。我推荐使用Azure CLI进行操作效率高且易于脚本化复现。当然我也会提供Portal图形界面的关键步骤作为备选。3.1 使用Azure CLI创建资源组与虚拟机首先确保你本地已安装并登录了Azure CLI (az login)。以下命令集完成从资源组创建到VM启动的全过程。# 1. 创建资源组资源组的逻辑容器方便统一管理计费和生命周期。 # eastasia是东亚香港区域延迟对国内用户相对友好。你也可以选择japaneast(日本东部)等。 az group create --name openclaw-rg --location eastasia # 2. 创建虚拟机这是核心命令一次调用完成多项配置。 az vm create --resource-group openclaw-rg # 指定刚创建的资源组 --name openclawUbuntu # 虚拟机名称 --image Canonical:ubuntu-24_04-lts:server:latest # 使用Ubuntu 24.04 LTS镜像 --size Standard_B1ms # VM规格1 vCPU, 2 GiB RAM支持突发 --admin-username aristo7298 # 管理员用户名请替换为你自己的 --generate-ssh-keys # 自动生成SSH密钥对公钥会自动注入VM --public-ip-sku Standard # 分配一个标准SKU的公网IP支持静态分配推荐 --os-disk-size-gb 128 # 系统盘大小设为128GB为Docker、日志等留足空间实操心得规格选择Standard_B1ms适合纯OpenClaw Gateway内存2GB刚好满足Node.js服务及系统开销。在CPU空闲时积累积分突发时能应对短时高负载。Standard_B2s如果你计划在同一台VM上运行FutuOpenD富途Opend或其他数据服务2 vCPU和4 GiB RAM会更从容。B系列的成本效益比通用系列如D系列更高。--generate-ssh-keys对于个人项目非常方便免去了手动上传公钥的步骤。生成的私钥默认保存在~/.ssh/id_rsa(Linux/macOS) 或C:\Users\用户名\.ssh\id_rsa(Windows) 。请务必妥善保管私钥文件。3.2 配置网络安全组NSG规则创建VM时Azure会默认创建一个关联的网络安全组并开放22端口。我们需要手动添加HTTP和HTTPS规则。# 开放HTTP (80) 端口优先级设为1010数字越小优先级越高默认规则通常是1000以下。 # 80端口主要用于Certbot的域名验证和将HTTP请求重定向到HTTPS。 az vm open-port --resource-group openclaw-rg --name openclawUbuntu --port 80 --priority 1010 # 开放HTTPS (443) 端口优先级1020。 # 这是外部访问我们AI助手Web界面和飞书服务回调如果使用Webhook模式的主要入口。 az vm open-port --resource-group openclaw-rg --name openclawUbuntu --port 443 --priority 1020重要安全提示切勿开放18789端口到公网。OpenClaw Gateway将配置为仅监听127.0.0.1:18789由Nginx在内部进行反向代理。将服务端口直接暴露在公网是极大的安全风险。3.3 设置DNS域名标签强烈推荐VM的公网IP是动态的重启后可能变化。为其绑定一个DNS标签可以获得一个形如label.region.cloudapp.azure.com的稳定域名。# 首先查询公网IP资源的准确名称。创建VM时其公网IP资源名称可能与VM名不同。 az network public-ip list -g openclaw-rg -o table # 假设查到的名称是 openclawUbuntuPublicIP则设置DNS标签为 myopenclaw az network public-ip update --resource-group openclaw-rg --name openclawUbuntuPublicIP --dns-name myopenclaw设置成功后你就可以通过myopenclaw.eastasia.cloudapp.azure.com这个域名来访问你的服务器无需记忆IP地址。3.4 连接服务器与基础系统配置使用SSH连接到你的新虚拟机。# 在本地终端执行将username和dns-label替换为你的信息 ssh usernamedns-label.region.cloudapp.azure.com # 例如ssh aristo7298myopenclaw.eastasia.cloudapp.azure.com连接成功后我们先进行系统的基础更新和Node.js环境安装。# 更新软件包列表并升级所有已安装的包 sudo apt update sudo apt upgrade -y # 安装Node.js 22.x LTS版本 # 使用NodeSource提供的官方仓库版本比Ubuntu默认仓库更新。 curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs # 验证安装 node --version # 应输出 v22.x.x npm --version # 应输出 10.x.x至此一个干净、安全的云端Linux环境就准备就绪了。4. OpenClaw核心服务部署与配置基础环境搞定后我们来安装和配置主角——OpenClaw Gateway。这一步会建立起AI助手的核心大脑。4.1 安装OpenClaw与初始化向导OpenClaw提供了npm全局安装包这是最简便的方式。# 全局安装OpenClaw sudo npm install -g openclawlatest # 验证安装 openclaw --version安装完成后运行初始化向导。这个交互式命令会帮你完成最基础的配置。openclaw onboard --install-daemon向导会依次询问以下几个问题我的选择和建议如下运行模式 (Mode)选择local。这是最典型的单机部署模式所有数据会话、配置都存储在本地~/.openclaw/目录下。Gateway端口 (Port)直接回车使用默认的18789。记住这个端口后续Nginx配置会用到。认证模式 (Auth Mode)选择token。向导会自动生成一个高强度的48字符Token。请务必记下这个Token它位于~/.openclaw/openclaw.json的gateway.auth.token字段是后续设备配对的关键。主模型配置 (Primary Model)如果此时你手头有现成的OpenAI或Anthropic API Key可以在这里配置。如果没有可以先跳过我们后面会详细配置Azure的模型。安装守护进程 (Install Daemon)因为我们传递了--install-daemon参数向导会自动为我们创建并启用一个systemd用户服务 (openclaw-gateway.service)。这是保证服务稳定运行的关键。向导结束后Gateway服务应该已经启动。可以通过以下命令检查# 查看服务状态 systemctl --user status openclaw-gateway # 或使用OpenClaw CLI检查 openclaw gateway status如果状态是running恭喜你OpenClaw的核心服务已经跑起来了。你可以通过openclaw logs --follow查看实时日志。4.2 配置Azure AI模型提供商OpenClaw的强大之处在于能对接多种模型。这里以配置Azure OpenAI和Azure AI Claude为例。你需要提前在Azure门户中创建好相应的认知服务资源并获取到端点 (Endpoint)形如https://你的资源名.openai.azure.com/或https://你的资源名.cognitiveservices.azure.com/API密钥 (API Key)模型部署名称 (Deployment Name)你在Azure上为具体模型如gpt-4o创建的部署名。编辑OpenClaw的配置文件nano ~/.openclaw/openclaw.json在models.providers部分添加配置。注意JSON的格式和缩进。4.2.1 Azure OpenAI 配置详解{ models: { mode: merge, // 表示此配置会与默认配置合并 providers: { azure-openai: { // 提供商ID可自定义用于后续引用 baseUrl: https://你的资源名.openai.azure.com/openai/v1, apiKey: 你的Azure OpenAI API Key, api: openai-responses, // 指定使用OpenAI的Responses API格式 authHeader: false, // 关键Azure OpenAI使用api-key头而非标准的Authorization头 headers: { api-key: 你的Azure OpenAI API Key // 认证头在这里指定 }, models: [ { id: gpt-4o, // 此处的id对应你在Azure门户中创建的“部署名称” name: GPT-4o (Azure), // 在UI中显示的友好名称 reasoning: true, // 是否为推理模型支持思考过程 input: [text, image], // 支持的输入类型 cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, // 成本设置私有部署可设为0 contextWindow: 128000, // 上下文窗口大小token数 maxTokens: 4096, // 单次回复最大token数 compat: { supportsStore: true } // 关键推理模型必须设为true } // 你可以在这里添加同一个提供商下的其他模型部署 ] } } } }4.2.2 Azure AI Claude 配置详解极易出错配置Azure AI Claude时baseUrl的格式是一个常见的坑。{ models: { mode: merge, providers: { azure-claude: { // ⚠️ 重点注意baseUrl 结尾不要加 /v1 // 正确的格式https://资源名.cognitiveservices.azure.com/anthropic // 错误的格式https://资源名.cognitiveservices.azure.com/anthropic/v1 baseUrl: https://你的资源名.cognitiveservices.azure.com/anthropic, apiKey: 你的Azure AI Claude API Key, api: anthropic-messages, // 指定使用Anthropic Messages API格式 authHeader: false, // Azure AI Claude 使用 x-api-key 头 headers: { x-api-key: 你的Azure AI Claude API Key, // 认证头 anthropic-version: 2023-06-01 // 必须指定API版本 }, models: [ { id: claude-3-5-sonnet-20241022, // 对应Azure中的部署名称 name: Claude 3.5 Sonnet (Azure), reasoning: true, input: [text, image], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 200000, maxTokens: 8192 // Claude模型通常不需要 compat.supportsStore 配置 } ] } } } }踩坑记录baseUrl 的陷阱我最初在配置Azure Claude时习惯性地在baseUrl末尾加上了/v1结果一直收到404错误。原因是OpenClaw内部使用的Anthropic SDK会在请求时自动追加/v1/messages路径。如果baseUrl里已经包含了/v1最终请求的路径就会变成/v1/v1/messages导致路径错误。去掉末尾的/v1后问题立刻解决。4.3 设置默认AI模型并重启服务配置好提供商后我们需要告诉OpenClaw默认使用哪个模型。在配置文件的agents.defaults部分进行设置{ agents: { defaults: { model: { primary: azure-claude/claude-3-5-sonnet-20241022 // 格式提供商ID/模型ID }, models: { azure-claude/claude-3-5-sonnet-20241022: {}, // 声明可用的模型 azure-openai/gpt-4o: {} }, workspace: /home/aristo7298/.openclaw/workspace // 助手的工作目录用于存储文件等 } } }保存配置文件后重启Gateway服务使配置生效openclaw gateway restart # 或者使用systemd systemctl --user restart openclaw-gateway重启后检查日志确认模型加载成功openclaw logs --follow你应该能看到类似Model provider azure-claude registered和Model provider azure-openai registered的日志信息。5. 网络接入与安全加固现在OpenClaw服务已经在本地运行起来了但外界还无法访问。我们需要通过Nginx搭建一个安全的“门户”并为其穿上HTTPS的“铠甲”。5.1 安装与配置Nginx反向代理Nginx将扮演网关的角色对外提供Web服务并将请求转发给内网的OpenClaw Gateway。# 安装Nginx sudo apt install -y nginx创建OpenClaw的站点配置文件sudo nano /etc/nginx/sites-available/openclaw将以下配置粘贴进去请务必将server_name替换为你自己的Azure域名例如myopenclaw.eastasia.cloudapp.azure.com。server { listen 80; server_name myopenclaw.eastasia.cloudapp.azure.com; # 替换为你的域名 # 核心反向代理配置 location / { proxy_pass http://127.0.0.1:18789; # 指向本地运行的OpenClaw Gateway # 以下配置对于WebSocket长连接至关重要 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; # 传递客户端真实信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 设置超时时间避免长连接如飞书WebSocket被断开 proxy_read_timeout 86400s; proxy_send_timeout 86400s; } }配置解析proxy_http_version 1.1和Upgrade、Connection头是支持WebSocket协议升级的必须项。飞书的长连接模式依赖于此。X-Forwarded-*系列头信息将客户端的真实IP和协议传递给后端服务对于日志记录和安全审计很重要。将超时时间设为24小时86400秒是为了适配飞书长连接可能存在的长时间空闲防止Nginx主动断开连接。启用站点配置并测试# 创建符号链接启用站点 sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/ # 移除Nginx默认的欢迎页面配置可选 sudo rm /etc/nginx/sites-enabled/default # 测试配置文件语法是否正确 sudo nginx -t # 如果显示“syntax is ok”则重载Nginx配置 sudo systemctl reload nginx此时你应该已经可以通过HTTP访问你的OpenClaw控制台了尽管浏览器可能会提示不安全。在浏览器中访问http://你的域名如果能看到OpenClaw的WebChat界面说明Nginx反向代理配置成功。5.2 使用Let‘s Encrypt获取免费HTTPS证书现代浏览器和飞书等平台都要求使用HTTPS。Certbot可以自动化地从Let‘s Encrypt获取并管理免费证书。# 安装Certbot及其Nginx插件 sudo apt install -y certbot python3-certbot-nginx运行Certbot命令它会自动读取Nginx配置中的server_name并完成域名验证、证书获取和Nginx配置更新等一系列操作。sudo certbot --nginx -d myopenclaw.eastasia.cloudapp.azure.com # 替换为你的域名执行过程中Certbot会询问你的邮箱地址用于接收证书到期提醒。是否同意服务条款。是否愿意接收EFF的邮件可选。是否将HTTP流量重定向到HTTPS强烈建议选择“2: Redirect”。完成后Certbot会自动修改你的Nginx配置文件添加SSL监听块和重定向规则。你可以再次检查Nginx配置并重启服务sudo nginx -t sudo systemctl reload nginx现在访问https://你的域名应该能看到绿色的安全锁标志和OpenClaw控制台。HTTP版本也会自动跳转到HTTPS。5.3 配置systemd用户服务守护虽然初始化向导可能已经创建了服务但理解其原理和手动检查的能力很重要。我们需要确保OpenClaw Gateway能在后台稳定运行即使SSH连接断开。首先检查服务是否已正确安装并启用“linger”# 检查服务状态 systemctl --user status openclaw-gateway # 检查linger是否启用确保用户退出登录后服务仍运行 loginctl show-user $(whoami) | grep Linger # 如果Lingerno需要启用 sudo loginctl enable-linger $(whoami)为什么需要enable-linger默认情况下用户级systemd服务--user会随着用户会话的结束如退出SSH而停止。enable-linger允许特定用户的服务在系统启动时自动运行并在用户未登录时保持活动状态。这对于服务器上的后台服务是必须的。如果向导没有创建服务或者你需要自定义可以手动创建服务文件mkdir -p ~/.config/systemd/user cat ~/.config/systemd/user/openclaw-gateway.service EOF [Unit] DescriptionOpenClaw Gateway Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple # 关键使用绝对路径并指定运行端口 ExecStart/usr/bin/openclaw gateway --port 18789 Restarton-failure RestartSec10 EnvironmentNODE_ENVproduction # 可选设置工作目录和日志 WorkingDirectory%h/.openclaw StandardOutputjournal StandardErrorjournal [Install] WantedBydefault.target EOF然后启用并启动它systemctl --user daemon-reload systemctl --user enable openclaw-gateway systemctl --user start openclaw-gateway至此一个通过HTTPS访问、由systemd守护的OpenClaw服务就部署完成了。接下来我们将为它注入“灵魂”——连接飞书。6. 飞书通道深度集成实战这是让AI助手“活”起来的关键一步。我们将创建一个飞书机器人应用并让OpenClaw与之建立连接实现通过飞书收发消息。6.1 安装飞书插件并创建应用首先在服务器上安装OpenClaw的飞书通道插件openclaw plugins install openclaw/feishu openclaw plugins list # 确认插件已安装接下来前往 飞书开放平台 创建应用。请仔细阅读以下每一步权限配置错误是导致机器人无法工作的最常见原因。创建企业自建应用点击“创建企业自建应用”填写名称和描述。获取凭证在“凭证与基础信息”页面记录下App ID和App Secret。App Secret只显示一次请立即妥善保存。配置权限最关键的一步在“权限管理”页面点击“批量导入权限”粘贴以下完整的权限JSON。这组权限涵盖了消息收发、用户信息、文件读写等机器人核心功能以及支持文档/表格工具的高级权限。{ scopes: { tenant: [ aily:file:read, aily:file:write, application:application.app_message_stats.overview:readonly, application:application:self_manage, application:bot.menu:write, cardkit:card:read, cardkit:card:write, contact:user.employee_id:readonly, corehr:file:download, event:ip_list, docs:document.content:read, event:ip_list, im:chat, im:chat.access_event.bot_p2p_chat:read, im:chat.members:bot_access, im:message, im:message.group_at_msg:readonly, im:message.group_msg, im:message.p2p_msg:readonly, im:message:readonly, im:message:send_as_bot, im:resource, sheets:spreadsheet, wiki:wiki:readonly ], user: [ aily:file:read, aily:file:write, im:chat.access_event.bot_p2p_chat:read ] } }导入后务必点击每个权限项右侧的“申请权限”按钮通常会有批量申请选项。启用机器人能力在“应用能力”-“机器人”中启用机器人功能并设置机器人名称和头像。配置事件订阅WebSocket模式在“事件订阅”页面选择“使用长连接接收事件”。这是推荐模式无需配置公网URL由机器人主动连接飞书。添加事件im.message.receive_v1接收消息事件。重要必须先完成下一步的OpenClaw配置并启动Gateway才能成功保存长连接配置因为飞书会尝试即时建立连接进行验证。发布应用在“版本管理与发布”中创建版本提交审核。企业自建应用通常会自动通过审核。6.2 在OpenClaw中配置飞书通道有三种方式配置飞书通道推荐使用CLI交互更友好。# 方式一使用CLI交互式配置推荐 openclaw channels add # 在交互菜单中选择 Feishu然后输入 App ID 和 App Secret。 # 方式二手动编辑配置文件 nano ~/.openclaw/openclaw.json在channels部分添加如下配置如果使用CLI这部分会自动生成{ channels: { feishu: { enabled: true, dmPolicy: pairing, // 私聊策略pairing需配对, open开放, allowlist白名单 accounts: { main: { // 账户标识可自定义 appId: cli_xxxxxxxxxxxxx, // 替换为你的App ID appSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, // 替换为你的App Secret botName: 我的AI助手 // 可选用于日志显示 } } // 注意未指定 domain默认为 feishu。如果是Lark国际版需添加 domain: lark } } }配置完成后重启Gateway服务openclaw gateway restart通过日志观察连接状态openclaw logs --follow如果看到feishu channel connected或类似的成功日志说明飞书通道连接成功。6.3 用户配对与首次对话由于我们设置了dmPolicy: pairing首次与机器人私聊的用户需要进行配对这是一种安全机制。在飞书App中搜索你的机器人名称进入私聊窗口。发送任意消息如“你好”。机器人会回复一个配对码Pairing Code类似一串6位字符。在服务器上查看待处理的配对请求openclaw pairing list feishu批准该配对请求openclaw pairing approve feishu 配对码批准后用户在飞书中即可正常与AI助手对话。6.4 高级配置与调优根据你的使用场景可以调整飞书通道的丰富配置群聊策略默认机器人需要在群聊中被才会回复。你可以修改groupPolicy为open来允许它在所有群聊中响应慎用或使用allowlist只允许特定群ID。feishu: { groupPolicy: allowlist, groupAllowFrom: [oc_xxxxxxxxxx] // 具体的群聊chat_id }获取群聊chat_id的方法在群中机器人然后在OpenClaw日志中查找chat_id字段。流式输出飞书支持交互卡片OpenClaw默认会以流式打字机效果输出回复。如果你希望一次性返回完整内容可以关闭流式输出feishu: { streaming: false }性能与配额优化如果你的机器人用户量大可能会触及飞书API调用频率限制。可以关闭一些非核心功能来减少调用feishu: { typingIndicator: false, // 关闭“正在输入”状态提示 resolveSenderNames: false // 关闭发送者名称解析日志中显示ID而非姓名 }7. 故障排查与运维指南即使按照指南操作也可能会遇到问题。这里汇总了部署和运行过程中最常见的“坑”及其解决方案。7.1 服务状态与日志查看遇到问题首先查看服务状态和日志这是诊断的第一步。# 查看OpenClaw Gateway服务状态 systemctl --user status openclaw-gateway # 查看Nginx服务状态 sudo systemctl status nginx # 实时跟踪OpenClaw日志最常用 openclaw logs --follow # 查看OpenClaw systemd日志 journalctl --user -u openclaw-gateway -f # 查看Nginx错误日志 sudo tail -f /var/log/nginx/error.log7.2 常见问题速查表问题现象可能原因排查命令与解决方案浏览器访问域名显示502 Bad Gateway1. OpenClaw Gateway未运行。2. Nginx配置错误无法连接到后端。1.systemctl --user status openclaw-gateway检查并重启。2.sudo nginx -t检查配置。3.ss -tlnp | grep 18789检查端口是否监听在127.0.0.1。HTTPS证书不受信任或错误1. Certbot申请失败。2. 域名未正确解析到服务器IP。1.sudo certbot certificates查看证书状态。2.sudo certbot renew --dry-run测试续期。3. 检查DNS解析nslookup 你的域名。飞书机器人不回复消息1. 飞书应用未发布或权限不足。2. OpenClaw飞书插件未正确连接。3. 用户未配对如果dmPolicypairing。1. 检查开放平台应用是否“已启用”。2.openclaw logs查看是否有feishu connected日志。3.openclaw pairing list feishu查看并批准配对请求。Claude模型返回404错误baseUrl配置错误末尾多加了/v1。检查~/.openclaw/openclaw.json中Azure Claude的baseUrl确保结尾是/anthropic而不是/anthropic/v1。Azure OpenAI模型返回400错误推理模型reasoning: true缺少compat.supportsStore配置。在Azure OpenAI的模型配置对象中添加compat: { supportsStore: true }。SSH断开后OpenClaw服务停止用户级systemd服务未启用linger。执行sudo loginctl enable-linger $(whoami)然后重启服务。飞书群聊中机器人无反应1. 机器人未被添加到群。2.groupPolicy设置为disabled。3. 未获取到正确的群chat_id。1. 确认机器人已在群中。2. 检查配置文件中的groupPolicy。3. 在群中机器人从日志中获取正确的chat_id并加入白名单。7.3 日常运维命令速查一套好用的命令可以提升运维效率。# 服务管理 openclaw gateway restart # 重启OpenClaw Gateway sudo systemctl reload nginx # 重载Nginx配置不中断服务 sudo systemctl restart nginx # 重启Nginx服务 # 信息查看 openclaw devices list # 查看已配对的设备 openclaw models status # 查看模型状态和可用性 openclaw doctor # 运行诊断检查查看系统健康状况 # 证书管理 sudo certbot renew --dry-run # 模拟续期测试是否正常 sudo certbot renew # 手动续期证书 sudo certbot certificates # 查看所有证书信息 # 日志清理可选 journalctl --user -u openclaw-gateway --since 2 days ago recent.log # 导出近期日志 sudo journalctl --vacuum-time7d # 清理7天前的系统日志7.4 数据备份与迁移你的所有配置和会话数据都存储在~/.openclaw/目录下。定期备份这个目录是良好的习惯。# 备份整个配置和数据目录 tar -czf openclaw-backup-$(date %Y%m%d).tar.gz -C ~/.openclaw . # 在新的服务器上恢复 # 1. 安装OpenClaw并运行一次 openclaw onboard 生成基础目录。 # 2. 停止服务systemctl --user stop openclaw-gateway # 3. 解压备份文件到用户目录tar -xzf openclaw-backup-YYYYMMDD.tar.gz -C ~/ # 4. 重启服务systemctl --user start openclaw-gateway部署完成后你的个人AI助手就已经在云端7x24小时待命了。你可以通过飞书随时随地与它对话利用其背后的强大模型处理信息、分析文档甚至通过插件执行任务。这个私有化的方案不仅给了你完全的控制权也为后续集成更多工具如Git、日历、数据库打下了坚实的基础。整个部署流程看似步骤不少但每一步都有其明确的目的一旦跑通维护起来其实非常轻量。如果在实践中遇到任何本指南未覆盖的问题多查看日志善用openclaw doctor诊断命令大部分问题都能找到线索。