OpenClaw 接入 OpenAI API 教程(Docker 部署)

适用场景 适用于下面这种情况: 先说明一件事 OpenClaw 接入 OpenAI API,不是优先去网页设置里找输入框。更稳妥的方式是: 一、准备 OpenAI API Key 先准备好真实的 OpenAI API Key。 下面这种写法只是示例,不是真实密钥: OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx 不要把真实密钥直接写进博客、聊天记录、截图或公开网页。 二、进入 OpenClaw 目录 cd /你的/OpenClaw/目录 例如: cd /path/to/openclaw 三、创建或修改 .env 文件 在 OpenClaw 项目目录下创建 .env: vim .env 写入: OPENAI_API_KEY=你的真实OpenAI_API_KEY 保存退出。 四、在 docker-compose.yml 里把环境变量传给 OpenClaw 打开 docker-compose.yml: vim docker-compose.yml 找到运行 OpenClaw 的服务,在该服务下加入: environment: …

在 Ubuntu Server 上通过 Docker Compose 部署 OpenClaw,并接入反向代理

本文记录一次完整的 OpenClaw 部署过程:使用 Ubuntu Server 24.04,以 Docker Compose 管理 OpenClaw,将服务部署到一台内网主机,再通过另一台反向代理主机对外提供 HTTPS 访问。 文中的以下信息均已脱敏: 但是部署逻辑、命令顺序、踩坑过程都保留了,照着改成自己的值即可复现。 一、部署目标 目标架构如下: 二、环境信息 本文部署环境: 脱敏后的示例变量如下: INSTALL_DIR=/opt/docker/openclawCONFIG_DIR=/opt/docker/openclaw/data/configWORKSPACE_DIR=/opt/docker/openclaw/data/workspaceHOST_IP=192.168.100.10REVERSE_PROXY_IP=192.168.100.20HOST_PORT=10443PUBLIC_DOMAIN=openclaw.example.com 实际部署时,把这些替换成自己的值。 三、最终拓扑 最终结构如下: 浏览器 ↓ HTTPS / WSShttps://openclaw.example.com ↓反向代理主机(REVERSE_PROXY_IP) ↓ 反代到http://HOST_IP:HOST_PORT ↓OpenClaw Gateway(Docker 容器内固定监听 18789) 四、为什么选择 Docker Compose OpenClaw 官方本身就提供 Docker 方式,适合以下场景: 对我来说,Docker Compose 的优势主要在于: 五、准备工作 先安装基础组件: apt updateapt install …

在 Linux 桌面环境下使用 Nextcloud News:客户端选择与 RSS Guard 认证问题排查

在使用 Nextcloud News 作为 RSS 同步后端时,桌面端客户端的选择会直接影响使用体验。表面上看,KDE 自带的 Akregator 与第三方的 RSS Guard 都属于传统 RSS 阅读器,但两者在“是否支持与 Nextcloud News 同步”这个关键点上差别很大。实际配置过程中,还可能遇到 RSS Guard 报错,提示禁止使用密码登录、必须改用令牌。本文对这一过程做一次简要整理。 一、客户端选择:本地阅读器与同步客户端不是一回事 如果需求只是“在桌面上看 RSS”,那么很多传统阅读器都可以胜任。但如果需求是“连接 Nextcloud News,同步订阅、分类和已读状态”,就必须优先考虑是否支持 Nextcloud News 接口。 1. RSS Guard RSS Guard 更适合作为 Nextcloud News 的桌面客户端,原因主要有两点: 对于偏向 Qt 界面、长期使用 KDE 的用户来说,它的整体风格也更协调,适合作为主力桌面端阅读器。 2. Akregator Akregator 本身并不是不能用,它依然是一个合格的本地 RSS 阅读器: 但问题在于,它并不适合承担 Nextcloud …

macOS 极简化清理记录:从 8.1G 到 3.8G

一、背景 这台 iMac 的实际用途非常明确: 目标: 将 macOS 收敛为「极简维护环境」,只保留 Apple + Google 二、问题 macOS 删除应用后不会自动清理残留,主要集中在: 包括: 长期使用后,这些数据会不断堆积。 三、初始状态 清理前: 特点: 四、清理策略 核心原则: 五、第一轮清理(结构性清理) 清理内容: 结果: 节省: 约 3.8GB 六、第二轮清理(缓存级清理) 目标: 执行: 结果: 七、最终状态 当前系统: 结构: 特点: 八、关键经验 1. macOS 不会自动卸载干净 删除 App ≠ 删除数据必须手动清理 ~/Library 2. Application Support 是最大头 优先清: 3. …

Nextcloud 地图图层无法加载(OSM 403)问题分析与解决

一、问题现象 在 Nextcloud 的地图应用中,地图图层出现异常: 该问题表现为间歇性缺图块(tile),而非完全不可用。 二、问题背景 该系统长期稳定运行(约 8 年),未做明显变更,但近期突然出现异常。 三、问题定位 通过抓包分析(浏览器 Network)可确认: 关键结论: OpenStreetMap(OSM)服务器要求请求必须携带 Referer,否则拒绝访问。 四、根本原因 问题并非系统损坏,而是外部策略变化: 1)OSM 策略加强(2025–2026) 核心要求: 2)Nextcloud 返回策略导致 Referer 丢失 Nextcloud 默认可能返回: 结果: 3)反向代理未干预该行为 当前 Nginx 配置: → 实际上完全依赖 Nextcloud 默认行为 五、解决方案 核心思路 强制浏览器发送 Referer Nginx 修复配置 在反向代理中加入: 修改后完整流程 六、使配置生效 执行: 七、验证方法 打开浏览器开发者工具: 1)检查请求头 2)检查响应头 3)观察结果 …

OpenClaw 及其替代方案梳理

一、问题背景 OpenClaw 属于一类“可执行任务的 AI Agent 框架”,核心能力是:通过大模型驱动,实现自动调用工具、执行命令、完成复杂任务流程。 但在实际使用过程中,这类系统暴露出明显问题: 因此,出现了大量替代方案,其核心方向不是“更强”,而是:在能力与安全之间重新平衡 二、同类替代方案(直接对标 OpenClaw) 1. 安全强化型 这一类是最接近 OpenClaw,但重点解决安全问题: 特点总结: 2. 云托管方案 这类方案放弃本地执行,转向云端: 特点: 但代价是: 三、工作流型替代(不同思路) 这类工具不强调“自主 Agent”,而是“可控流程”。 n8n + AI 优点: 缺点: 无代码工具 特点: 四、当前生态的真实情况 OpenClaw 的优势 但核心问题明显 因此行业趋势已经很清晰: 从“完全自动执行” → 转向“受控执行 + 沙箱隔离” 五、选择建议 如果以“长期稳定运行”为目标,可以按如下思路选择: 优先方案 可尝试方案 不建议 六、本质总结 这一类工具的核心不是“哪个更强”,而是: 如何让 AI 有执行能力,同时不失控 …

树莓派多网卡环境下 USB 以太网无法自动获取 IP 的排查与修复

一、问题背景与目标 在一个多网卡环境的树莓派系统中,存在如下网络接口: 接口 类型 说明 lo 回环接口 系统内部通信 eth0 板载有线网卡 常态不插网线 enxUSB0 USB 以太网适配器 期望作为主要联网方式 wlan0 无线网卡 偶尔手动连接 系统出现的主要现象: 目标状态: 系统重启后,只要: 系统就应该: 同时需要实现多网卡路由优先级策略: wlan0(手动连接时优先)↓USB 以太网 enxUSB0↓eth0 二、确认接口状态与问题复现 首先查看系统识别到的网络接口: ip a 当时观察到: eth0 已获取 IPv4(192.168.x.x)enxUSB0 DOWNwlan0 未连接 进一步只查看 USB 网卡: ip link show enxUSB0 三、区分链路问题还是 DHCP 问题 在网络排查中,第一步必须判断物理链路是否建立。 使用 ethtool 检查链路状态: …

Linux 下两张 SD 卡的分区清理、重新格式化与一致化整理记录

一、背景 在日常使用 SD 卡的过程中,常会遇到这样几种情况: 这次的目标很明确:将两张不同容量的 SD 卡都整理为统一格式,即: 二、第一张 SD 卡的初始状态检查 首先查看第一张卡的分区信息。结果显示: 从表面上看,这张卡的结构并没有明显错误,属于“已经是单分区 FAT32”的状态。但仅凭分区表信息,还不能确认文件系统内部是否完全正常,因此继续做文件系统检查。 三、第一次文件系统检查发现的问题 对 FAT32 分区执行只读检查后,发现两处轻微异常: 这类问题通常不属于严重损坏,也不意味着卡本身有物理故障。更常见的原因是: 也就是说,这时的问题主要在文件系统元数据层,不是分区层,也暂时看不出是假卡或坏卡。 四、修复第一张卡的文件系统 随后对该分区执行自动修复。修复动作主要包括: 修复完成后再次执行只读检查,没有再出现报错,说明这张卡的 FAT32 文件系统已经恢复正常。 到这里可以得出一个中间结论: 第一张卡在分区结构上本来就是正常的,只是文件系统存在轻微元数据异常;修复后已经恢复到可正常使用的状态。 五、对第一张卡进行彻底重新格式化 虽然文件系统已经修好,但为了让状态更加统一、更加干净,后续还是决定重新格式化一次。 操作思路如下: 最终结果如下: 这样一来,第一张卡就从“可用但有轻微元数据问题”,变成了“结构标准、状态干净、检查通过”的整理完成状态。 六、第二张 SD 卡的初始状态 第二张卡容量约 14.8 GiB。最初的分区结构并不是普通存储卡的样子,而是典型的 Linux 镜像刷写后的结构: 这类结构非常常见,尤其是在刷写树莓派、嵌入式系统、各类 Linux 镜像之后。对于普通电脑、相机、文件传输等用途,这种结构并不方便,因此需要恢复成标准单分区 FAT32。 七、第二张卡的清理与重建过程 为了更彻底地清理这张卡,采用了比第一张更强一点的方式: 检查结果表明: 也就是说,第二张卡已经从“系统镜像卡”恢复成了“普通标准存储卡”。 八、最终统一后的状态 经过整理,两张卡最终都被统一为同一种结构: 目标状态 …

Ubuntu Server 首次初始化用户与新管理员用户创建实践

在一台树莓派上的 Ubuntu Server 系统中,首次启动后通常会创建一个默认的普通用户。这个用户往往承担“主用户”的角色:拥有独立家目录、默认 shell,并且通常具备较完整的 sudo 与硬件访问权限。 本文围绕一个实际问题展开:在不删除原有用户、不修改原有用户配置的前提下,新建一个新的管理员用户,并使其在实际使用层面与原始主用户基本等价。 一、首次初始化创建的用户,有什么特殊之处 系统首次启动时创建的普通用户,常见特征如下: 这类用户并不是 root,也不是隐藏系统用户,本质上仍然是普通用户。它的“特殊”主要体现在: 也就是说,它更像是“初始化阶段生成的默认管理员型普通用户”。 二、如何确认一个用户的权限画像 可以通过以下命令查看一个已有用户的核心信息: id <user>getent passwd <user>sudo -l -U <user> 这三条命令分别用于查看: 例如,一个典型的初始化用户,通常会显示: 如果出现 NOPASSWD: ALL,说明该用户执行 sudo 时不需要输入密码,属于非常高可用性的管理员账户。 三、UID/GID 到底意味着什么 很多人在创建新用户时,会注意到 UID 和 GID 与原有用户不同,于是担心“是不是权限不一样”。 实际上,UID/GID 更像是系统内部使用的编号,不是用户可见的身份标签,也不是“住址”。 可以这样理解: Linux 底层处理权限时,更看重的是 UID/GID,而不是用户名本身。但在单机日常运维场景下,只要满足以下条件,UID/GID 的具体数值通常不重要: 因此,如果只是想新建一个可正常使用的新管理员用户,并不需要追求 UID/GID 与旧用户相同。 四、两个用户“完全等价”到底指什么 严格来说,两个不同用户不可能在“身份层面”完全相同,因为: 但如果忽略 UID/GID,仅从实际使用功能来看,两者可以做到基本完全等价。判断标准包括: …

树莓派通过 USB 连接便携式 Wi-Fi 时的网络行为分析

一、问题背景 某台树莓派通过 USB 连接了一台便携式网络设备。该设备支持通过 USB 向树莓派暴露一个共享网络接口,但在未插入可用 SIM 卡时,本身并不具备实际的外网接入能力。与此同时,树莓派还通过自身的无线网卡连接家庭无线网络实现上网。 因此,系统中出现了这样一种结构: 这类结构的关键问题在于:系统如何识别这些网络接口,它们何时会变成 UP,何时会保持 DOWN,以及后续是否可以把 USB 连接作为备用链路使用。 二、当前网络接口状态的含义 通过 ip a 查看系统网络接口时,可以看到几类典型状态: 1. 回环接口 回环接口用于本机内部通信,通常始终处于可用状态。 2. 有线网口 物理有线网口即使被系统启用,只要没有插入网线,也会出现如下特征: 这说明:网口本身存在,但底层链路没有建立。 3. 无线网卡 当无线网卡已经成功连接到无线接入点并获得地址后,通常会看到: 这说明: 4. USB 暴露出的虚拟网卡 便携式网络设备通过 USB 共享网络时,Linux 会将其识别为一个额外网卡,通常接口名类似于 enx…。在未形成有效共享链路时,可能会看到: 这表示: 三、为什么 USB 接口当前是 DOWN USB 暴露出的网络接口之所以存在,是因为系统已经识别到该设备支持网络共享模式。但接口是否真正可用,不取决于“是否插着 USB 线”这一点,而取决于更完整的条件链。 典型条件包括: 如果上述条件不完整,即使接口名已经出现,该接口仍可能保持 DOWN。 …