2026年6月27日 2 分钟阅读

OpenBerth 完全指南:用自托管部署平台把 AI 应用一键送上生产环境

tinyash 0 条评论

概述

当你用 AI 编程工具(Claude Code、Codex、Cursor)快速生成了一个 Web 应用——一个数据分析面板、一个 API 服务或一个原型工具——接下来的问题永远是同一个:怎么把它丢到一个公开可访问的 URL 上?

传统的选择无非是:Vercel(只支持前端)、Railway(免费额度有限)、自购 VPS 然后手撸 Nginx + systemd。OpenBerth 给开发者多了一个选择——一个完全自托管的部署平台,你在一台 Ubuntu 服务器上运行它的服务端,然后一条命令就能把任意项目部署成 HTTPS 子域名。

OpenBerth 是 MIT 许可的开源项目,由 Go 编写,三个静态二进制文件零运行时依赖。它对 AI 工作流的特殊之处在于:HTTP API、MCP 服务器和 stdin pipe 三种集成方式,意味着你的 AI 编程工具可以直接把生成的应用部署出去。

架构:三个二进制,两个容器

OpenBerth 的架构相当简洁。部署后服务器上运行三个 Go 二进制文件:

  • berth-server:主守护进程,包含 API 服务、容器生命周期管理、SQLite 数据库、Caddy 反代配置、MCP 端点和 Web 管理界面
  • berth:客户端 CLI,开发者通过它提交部署
  • berth-mcp:独立的 MCP 服务器(stdio 传输),专用于 Claude Desktop 和 Cursor

每次部署创建两个 gVisor 沙箱容器:一个用于构建(安装依赖、运行构建脚本),一个用于运行(启动生产服务器)。两阶段让构建阶段的资源不受运行时限制,而运行时容器默认只有 512MB RAM 和 0.5 CPU 的紧凑限制。

更新采用蓝绿部署模式——旧容器继续服务,新容器构建完成后无缝切换,失败时自动回滚。

安装与服务端配置

安装分三步走。先准备一台 Ubuntu 22.04 或 24.04 的服务器(或本地 VM/远程 VPS)。你需要一个域名和一个通配符 DNS 记录:

A     openberth.example.com       -> 你的服务器IP
A     *.openberth.example.com     -> 你的服务器IP

然后 SSH 到服务器运行安装脚本:

curl -fsSL https://openberth.io/install-server.sh | bash
berth-server install --domain openberth.example.com

安装过程大约两分钟,自动配置 Docker、gVisor、Caddy、SQLite 和 systemd 服务。结束时打印管理 API 密钥。

最后在本地安装 CLI:

curl -fsSL https://openberth.io/install.sh | bash
berth config set server https://openberth.example.com
berth config set key sc_你的管理密钥

核心功能详解

1. 一键部署

最基本的用法:进入项目目录,执行 berth deploy。OpenBerth 自动检测语言和框架——从 package.json 识别 Node.js 项目,从 requirements.txt 识别 Python,从 go.mod 识别 Go,找不到这些则按静态 HTML 处理。

berth deploy

berth deploy --name my-app

berth deploy --ttl 7d

berth deploy --memory 1g --cpus 1.0

berth deploy --env API_KEY=xxx --env DB_URL=xxx

部署完成后输出 https://my-app.openberth.example.com——立即可以访问,自动 TLS 证书由 Caddy 申请。

2. 单文件快速部署

对原型阶段特别有用——直接部署一个 .jsx.tsx 文件:

berth deploy App.jsx      # React 文件,自动脚手架
berth deploy dashboard.tsx
berth deploy README.md    # Markdown 渲染为静态页面
berth deploy analysis.ipynb  # Jupyter Notebook 渲染为 HTML

CLI 会解析导入语句检测依赖、从 class 名检测 Tailwind、生成可构建的项目结构。

3. 访问控制

部署的应用默认公开访问。可以添加四层保护:

berth protect  --mode basic_auth --username admin --password xxx

berth protect  --mode api_key

berth protect  --mode user --users alice,bob

berth protect  --mode public

4. 持久化数据

部署是无状态的,但 OpenBerth 提供了两种持久化手段。/data 目录在重建时保留:

const db = new Database(process.env.DATA_DIR + '/app.db');

还有一个内置的文档存储 API,静态页面也能用:

// 写入数据
await fetch('/_data/votes', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({option: 'pizza'})
});

// 读取数据
const {documents} = await fetch('/_data/votes').then(r => r.json());

5. 管理与运维

berth list

berth logs  --follow

berth update 

berth update  --memory 2g

berth destroy 

berth lock 
berth unlock 

AI 集成方式

OpenBerth 有三个 AI 集成接口,让你在 AI 编程工具中直接部署:

HTTP API:从 AI 生成的代码直接 POST 到服务器:

curl -X POST https://openberth.example.com/api/deploy/code \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{"files": {"index.html": "

Hello

"}, "name": "my-app"}'

MCP 服务器:在 Claude Desktop 或 Cursor 的 MCP 配置中添加:

{
  "mcpServers": {
    "openberth": {
      "command": "berth-mcp",
      "env": {
        "BERTH_SERVER": "https://openberth.example.com",
        "BERTH_KEY": "sc_your_key"
      }
    }
  }
}

然后 AI 可以直接调用 berth_deployberth_statusberth_logs 等工具来管理部署。

Stdin Pipe:适用于终端型的 AI 编程工具:

echo '{"index.html": "

Hello

"}' | berth deploy --stdin --json

安全模型

所有容器运行在 gVisor(runsc)中——系统调用被拦截在用户态内核层。容器逃逸撞上的是 gVisor 的合成内核,而不是宿主机的真实内核。安全层次包括:

层级保护措施
沙箱gVisor 用户态内核隔离系统调用
权限全部 --cap-drop=ALL
资源容器级内存、CPU、PID 限制
网络仅绑定 localhost;Caddy 处理外部流量
认证每用户独立 API 密钥;可选每部署访问控制
过期默认 72 小时自动销毁
配额可选每部署网络流量限制

排错

构建卡住

berth logs               # 查看构建输出
journalctl -u openberth -f   # 查看守护进程日志

TLS 证书失败:检查 DNS 是否已指向服务器 IP,且默认模式下 DNS 不能处于 Cloudflare 代理(灰云)状态。

语言版本错误:在项目中添加 .nvmrc.python-versiongo.mod 中的版本指令——OpenBerth 会自动选择对应的基础镜像。

总结

OpenBerth 解决了一个真实存在的痛点:AI 编程工具生成应用越来越快,但部署依然要手动配服务器、域名和证书。它把从代码到 URL 的过程压缩到一个命令里,同时保留了自托管带来的数据主权和成本控制。如果你经常自建应用原型或给客户做演示,值得一试。

  • 项目地址:https://github.com/AmirSoleimani/openberth
  • 官网:https://openberth.io
  • 许可证:MIT

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。