如何在 VPS 上用 Docker Compose 部署 headless openhuman-core 并挂载持久化数据卷

发布时间:2026/11/12 6:45:06

如何在 VPS 上用 Docker Compose 部署 headless openhuman-core 并挂载持久化数据卷 如何在 VPS 上用 Docker Compose 部署 headless openhuman-core 并挂载持久化数据卷【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhumanOpenHuman 本体是桌面应用但它的 Rust 核心openhuman-core是一个 headless JSON-RPC 服务器可以独立托管在云服务器上多台桌面客户端指向同一个 core、内部测试者不需要本地 Rust 工具链、长时间运行的 cron / webhook 任务不再依赖笔记本会话。gitbooks/features/cloud-deploy.md 把这条部署路径称为 Any VPS via Docker Compose在任意装有 Docker 的 VPS 上用 Compose 起一个容器运行openhuman-core serve监听 7788 端口并把工作区挂到持久化数据卷上。文档明确的前提主机已安装 Docker Engine ≥ 24 和 Compose 插件DigitalOcean Droplet、Hetzner、Linode、EC2、家庭服务器均可如果拉取 GHCR 发布镜像主机应为linux/amd64。发布镜像是linux/amd64arm64 主机应下载同一 GitHub Release 附带的独立 tarballopenhuman-core-version-aarch64-unknown-linux-gnu.tar.gz或在 arm64 构建机上从源码构建镜像。容器起来后对外暴露三个端点GET /health公开 liveness probe所有部署路径的 healthcheck 都用它POST /rpcbearer 保护的 JSON-RPC 入口GET /events、GET /ws/dictation公开流式通道。部署对象是 core 而不是 UI。文档说明 OpenHuman 支持的远程形态是core remote, UI localcore 跑在 Linux 服务器上桌面客户端通过 RPC URL 连接部署的 core 目前不会把完整 React/Tauri UI 作为生产 Web 应用对外提供托盘、原生 deep link、系统 keychain 等桌面专属功能仍依赖 Tauri shell。准备 .env必配项仓库根目录的 .env.example 是配置模板docker-compose.yml 通过env_file读取与 compose 文件同目录的.env。文档给出的开始前所需清单变量是否必需说明OPENHUMAN_CORE_TOKEN是客户端调用/rpc携带的 bearer token用openssl rand -hex 32生成。文档强调拿到这个 token 的人可以驱动整个 coreBACKEND_URL是core 连接的 Tinyhumans 后端生产环境为https://api.tinyhumans.aiOPENHUMAN_APP_ENV否production或staging默认productionOPENHUMAN_CORE_HOST否容器内默认0.0.0.0OPENHUMAN_CORE_PORT否默认7788RUST_LOG否info够用排查问题用debug在 VPS 上克隆仓库并生成.envgit clone openhuman 仓库地址 # 占位符替换为你获取本项目的仓库地址 cd openhuman cp .env.example .env # 编辑 .env至少设置 # BACKEND_URLhttps://api.tinyhumans.ai # OPENHUMAN_CORE_TOKENopenssl rand -hex 32 的输出 # OPENHUMAN_APP_ENVproductiontoken 直接在服务器上生成openssl rand -hex 32把输出粘进.env的OPENHUMAN_CORE_TOKEN行。这个值之后还要配到每台桌面客户端文档建议按密码对待。启动并验证docker compose up -d仓库内 Compose 文件默认从 Dockerfile 本地构建镜像tag 为openhuman-core:local构建较慢但版本与源码一致。Compose 文件自身固定了容器内绑定地址OPENHUMAN_CORE_HOST0.0.0.0、端口7788、OPENHUMAN_WORKSPACE/home/openhuman/.openhuman并设置restart: unless-stopped宿主机重启后容器自动拉起。按文档给出的两条命令验证docker compose ps curl -fsS http://localhost:7788/health/health是公开端点不需要 tokencurl 不报错误即说明容器已可响应。docker-compose.yml 还配置了 healthcheck每 30 秒执行一次curl -fsS http://localhost:7788/healthtimeout 5s、start_period 15s、重试 3 次docker compose ps中的健康状态会反映这条检查的结果。看日志docker compose logs -f openhuman-core持久化卷openhuman-workspace容器内工作区目录固定为/home/openhuman/.openhuman存放 core 的配置、sqlite 数据库和 skill 状态。文档对生产部署的要求很直接必须把该目录挂到持久卷上否则重启就丢数据。docker-compose.yml 已经完成了这件事volumes: - openhuman-workspace:/home/openhuman/.openhuman volumes: openhuman-workspace: name: openhuman-workspace也就是说按仓库文件原样启动持久化已就位无需额外操作。数据属主问题由镜像自带的入口点处理Docker 创建的 named volume 默认属于root:root而 core 以非 root 的openhuman用户Dockerfile 中 UID 10001运行若不做处理首次写工作区就会报Permission denied (os error 13)。镜像内的/usr/local/bin/docker-entrypoint-core.sh源文件为 scripts/docker-entrypoint-core.sh按顺序以root启动对$OPENHUMAN_WORKSPACE和$HOME/.openhuman执行mkdir -pchown openhuman:openhumanexec gosu openhuman openhuman-core $降权交接给二进制。该逻辑是幂等的全新卷上 chown 是修复已修复的卷上是空操作。从早于该修复的旧镜像升级时不需要手动docker volume rm。Compose 文件同时限制了容器能力read_only: true、no-new-privileges、cap_drop: ALL只加回CHOWN/SETUID/SETGID三个能力分别用于修复卷属主和 gosu 降权。文件注释给出零能力的替代方案固定user: 10001:10001入口点会直接执行二进制并跳过修复代价是无法再修复 root 属主的卷。资源上限默认mem_limit4g、cpus2.0可用OPENHUMAN_CORE_MEM_LIMIT/OPENHUMAN_CORE_CPUS环境变量覆盖。可选分支改用 GHCR 发布镜像不想在 VPS 上编译 Rust 的话可以用各生产发布推送到 GHCR 的多 tag 镜像下面1.2.4为文档给出的示例版本docker pull ghcr.io/tinyhumansai/openhuman-core:latest # 跟踪最新 prod cut docker pull ghcr.io/tinyhumansai/openhuman-core:v1.2.4 # 按 GitHub Release tag 固定 docker pull ghcr.io/tinyhumansai/openhuman-core:1.2.4 # 按 SemVer 固定按 docker-compose.yml 头部注释的说明把build:段替换为image: ghcr.io/tinyhumansai/openhuman-core:tagtag替换为上面的镜像 tag再执行docker compose up -d即不再本地构建。cloud-deploy 指南 对同一操作的表述是把image:字段切到发布镜像。边界提醒发布镜像是linux/amd64arm64 VPS 上应改走文档给出的独立 tarball 或源码构建两条路而不是直接拉发布镜像。核对运行中的 token 来源重部署后 401是最常见的部署故障根因几乎都是 token 来源。core 有两种加载 token 的方式实现见 src/core/auth.rsOPENHUMAN_CORE_TOKEN环境变量由调用方预置Tauri shell、Docker、App Platform、systemd 均属此类core 原样使用从不写文件{workspace}/core.token文件仅在未设置环境变量时于首次启动生成供 CLI 客户端cat。文档对任何远程/容器化部署的规则始终设置OPENHUMAN_CORE_TOKEN不要依赖容器里的core.token——临时文件系统重部署后 token 会丢容器外读到的也是过期或空值。两条路径在启动时互斥混用就是重部署后 dashboard 401的常见原因。确认运行中的容器实际用的是哪个# 宿主机上查来源打印 env 或 file:/path scripts/print-core-token.sh --where # 进容器看前 8 位脱敏可进日志 docker compose exec openhuman-core /bin/sh -c \ echo -n $OPENHUMAN_CORE_TOKEN | head -c 8; echo …scripts/print-core-token.sh 还支持--redact前 8 位 hex 省略号和不带参数打印完整值可直接管道给客户端。把桌面客户端指向这台 corecore 部署完成不等于可用——桌面端要显式切换到外部 core。在桌面应用的环境文件app/.env.local中写入# 使用托管 core而不是本地拉起 sidecar OPENHUMAN_CORE_RUN_MODEexternal OPENHUMAN_CORE_RPC_URLhttps://core.example.com/rpc OPENHUMAN_CORE_TOKEN与服务器 .env 中相同的值重启桌面应用。也可以不编辑文件直接用首次运行选择器里的 Core RPC URL token 输入框旁边的Test connection按钮会对该 URL 发起core.ping在内联位置报告Connected ✓/Auth failed/Unreachable确认通过后才持久化配置。协议边界应用选择器拒绝公网http://地址公网可达的 core 必须走 HTTPS。文档给出的最小 Caddy 反代配置core.example.com { reverse_proxy localhost:7788 }只在私网/tailnet 暴露如 Tailscale 的100.x.x.x地址、公网不可达时可以直接用http://100.x.x.x:7788/rpc。若另外把浏览器 UI 部署到非 loopback origin需把该 origin 精确加入OPENHUMAN_CORE_ALLOWED_ORIGINSloopback 的 Vite originhttp://127.0.0.1:1420、http://localhost:1420自动放行。常见故障与排查重部署后客户端 401对照核对运行中的 token 来源一节确认OPENHUMAN_CORE_TOKEN环境变量存在且与每台客户端里的值一致。轮换 token 后仍持旧 token 的客户端在下次/rpc调用时收到 HTTP 401 是预期行为不是回归。Permission denied (os error 13)文档列出三个已知触发场景在同一持久卷上混用 Dockerfile 构建镜像openhuman用户 UID 10001与 GHCR 发布镜像UID 1000旧文件属主不匹配named volume 比镜像升级活得久以 root 身份docker exec往工作区写了文件——docker exec不经过入口点root 写入会留下root:root的config.tomlcore 以 0600 权限写它运行用户随后完全打不开。入口点每次启动都会递归 chown 修复跳过已属主正确的条目。如果修复无法执行例如cap_drop: ALL但没加cap_add: CHOWN入口点会拒绝启动并在日志中打印需要执行的chown命令——检查容器日志里的[docker-entrypoint] pre-heal/FATAL行。手动修复文档给出的 Docker 等价命令UID 从容器内动态推导docker exec -u 0 openhuman-core sh -c \ chown -rh $(id -u openhuman):$(id -g openhuman) /home/openhuman/.openhuman docker restart openhuman-core修复前可先确认属主注意docker exec默认以 root 进入要显式查运行用户而不是直接iddocker exec openhuman-core sh -c id openhuman; ls -ln /home/openhuman/.openhuman/config.toml日常进容器操作建议加-u openhuman避免再次制造 root 属主文件。云端运行时 OAuth 登录后 sign-in 失败现象浏览器里 OAuth 已完成提示关闭此页返回应用桌面端却报 sign-in 错误而同一账号在本地内嵌运行时登录正常。文档issue #3025指出根因几乎总在远端 coreauth_store_session会先让 core 调用后端GET /auth/me校验新会话再持久化该调用发生在你的服务器上文档列出的失败原因BACKEND_URL未设置或错误——文档说是最高发原因生产必须是https://api.tinyhumans.aistaging 为https://staging-api.tinyhumans.ai服务器到后端不通出口防火墙、DNS、TLS 拦截——core 在/auth/me上遇到网关错误/超时core 版本过旧——早于allowPendingBackendValidation的版本是同步校验、无宽限期把服务器更新到当前发布RPC token 不匹配——表现为/rpc上的 HTTP 401重贴 token 即可。在远端 core 日志里找Session validation failed (GET /auth/me)及其 status/reason桌面端对这类云场景会给出具体可操作的信息而不是笼统的 try again。运维轮换 token 与更新版本OPENHUMAN_CORE_TOKEN是公网与全量 RPC 访问之间唯一的屏障文档建议定期轮换、并在任何疑似泄露后轮换。下面命令组会改写服务器上的.env、删除临时 token 文件并重建容器执行前确认.env路径正确# 1. 生成新 token 并更新服务器侧 .env openssl rand -hex 32 /tmp/new-token sed -i.bak s|^OPENHUMAN_CORE_TOKEN.*|OPENHUMAN_CORE_TOKEN$(cat /tmp/new-token)| .env rm /tmp/new-token .env.bak # 2. 重建容器让新值进入 core 进程 docker compose up -d --force-recreate openhuman-core # 3. 确认运行中的容器使用新 token脱敏打印前 8 位 docker compose exec openhuman-core /bin/sh -c \ echo -n $OPENHUMAN_CORE_TOKEN | head -c 8; echo … # 4. 更新每台桌面客户端切换模式后在选择器重贴或改 app/.env.local 再重启。 # 仍持旧 token 的客户端下一次 /rpc 调用会 401 —— 属预期行为。更新版本本地构建路径git pull docker compose build docker compose up -d对暴露/rpc的生产部署文档建议保持变更类 update RPC 关闭OPENHUMAN_AUTO_UPDATE_RPC_MUTATIONS_ENABLEDfalse版本发布走镜像 tag 或包管理流程而不是通过 RPC 触发更新。【免费下载链接】openhumanOpenHuman is an open source personal AI for Mac, Windows and Linux — local-first memory, agent orchestration, and deep research.项目地址: https://gitcode.com/GitHub_Trending/op/openhuman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/12 10:22:02

LPC2214寄存器级开发:ARM7TDMI内核、VIC中断与IAP编程实战

简介:本资源是面向嵌入式初学者与LPC2214单片机开发者的软件参考设计合集,涵盖ADC、GPIO、UART、I2C、SPI、PWM、RTC、WDT、VIC中断、EMC存储控制、IAP在线编程等30类核心外设的完整例程源码,适用于教学实验、课程设计及入门级项目开发。压缩…

2026/11/10 22:32:27

FastAPI实现局域网文件与剪贴板共享工具

1. 项目概述:局域网文件与剪贴板共享工具每次在手机和电脑之间传文件都要经历微信压缩、数据线插拔的繁琐流程?作为开发者,我们完全可以用技术手段解决这个痛点。今天要介绍的是一个基于FastAPI的轻量级解决方案,它能让你在同一局…

2026/11/13 5:52:16

你在外省考的电工证能不能转过来 怎么报名公证电工证全攻略

你在外省考的电工证能不能转过来 怎么报名公证电工证全攻略 之前考的证在外省能不能转过来?这个问题我每天被问到几十次,说实话,真不是你想的那么简单。很多人拿着外地的电工证,想着全国通用,结果在本地项目上碰了钉子,连进场资格都没了。今天我就从…

2026/11/13 5:52:16

放心的特种工考证价格到期换证流程

特种工考证价格合理在哪考?怕考不过白交培训费?平顶山建筑工必看! 怕考不过白交培训费?你不是一个人。特种作业证考试,不仅关系到你的职业发展,更关系到你每天在工地上的安全。如果你在平顶山,正在找【放心的特种工考证价格】,又担心【在哪考】靠谱,…

2026/11/13 5:52:16

考电低压电工作业证复审延期怎么办理

低压电工作业证过期了怎么复审延期?含金量到底靠不靠谱 证书过期了不知道怎么复审延期?别慌,今天就给你说清楚,低压电工证怎么处理,含金量到底能不能撑得起你干这行的底气。特别是咱们郑州劳务班组负责人,干工地的都知道,没有这个证,干不了电焊、拉线…

2026/11/13 5:52:16

工地太忙根本没时间复习考试?西唐电工证焊i证官方报名入口全攻略

工地太忙根本没时间复习考试?西唐电工证焊i证官方报名入口全攻略 工地太忙根本没时间复习考试?西唐电工证焊i证官方报名入口全攻略,让你边干活边拿证,省时省力还合规。在一线施工中,电工和焊工是不可或缺的技术骨干,但很多人都在为证书办理头疼。尤其…

2026/11/13 5:52:16

高配电工证考哪方面 通过率揭秘 证书过期了不知道怎么复审延期

高配电工证考哪方面 通过率揭秘 证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期,是很多特种作业人员最头疼的问题之一,尤其是高配电工证这种高风险岗位的证书,一旦过期,不仅影响工作,还可能面临安全责任问题。 高配电工证考哪方面…

2026/11/13 5:47:16

海南高压电工证图片多久拿证?外省证书怎么转

海南高压电工证图片多久拿证?外省证书怎么转 之前考的证在外省能不能转过来?这是很多在海南从业的电工朋友最关心的问题,尤其是那些在外地考过高压电工证的人。现在你可能正在海南工作,但手里拿着的高压电工证是外省的,想要继续在海南执业,就必须知道怎…

2026/11/12 20:35:13

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/13 0:01:06

办上海高压电工证良心建议:别被中介坑了,自己看这篇就够了

办上海高压电工证良心建议:别被中介坑了,自己看这篇就够了 你是不是也像我一样,第一次听说“高压电工证”这个名词,就感觉一头雾水?其实很多人都跟我一样,不知道去哪报名、怕被中介坑,结果花了冤枉钱还考不上。今天我就从一个在商丘培训过的学员角度,…

2026/11/13 0:01:06

黎里考电工证在哪里值不值得考

黎里考电工证在哪里值不值得考 之前考的证在外省能不能转过来?这是很多在外地工作、准备回老家发展的朋友最关心的问题。特别是在黎里地区,很多从事电力相关工作的朋友,都面临这样一个难题: 外省的电工证能否在本地使用?值不值得考?…

2026/11/13 0:01:06

毕节哪里考电工证 怎么报名学历不高也能上手

毕节哪里考电工证 怎么报名学历不高也能上手 你是不是也和我一样,学历不高,想着考个电工证,但又担心自己条件不够,怕报不上名?其实不然,只要符合条件,学历不高也能考电工证。今天就来聊聊【毕节哪里考电工证】这个问题,还有怎么报名,让你一步到位不…

2026/11/12 22:10:13

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑