RepoDaily · 2026-07-21 · Infrastructure / Runtime

Openship:一个用 TypeScript 打造的自托管部署平台,把容器、域名和邮件收进同一个控制面

#2 Infrastructure / Runtime TypeScript +1,719 oblien/openship 打开仓库

Openship 把 push-to-deploy 的 CI/CD、自动签发的 Let's Encrypt 证书、内置 SMTP 邮件服务,以及 15 个一键应用,打包进一个 Apache-2.0 的项目里,可以跑在任意 Linux 服务器或 Openship Cloud 上。

项目类型Infrastructure / Runtime
最适合想在自己的 Linux 服务器上获得 Vercel 式 push-to-deploy 体验、同时又需要 Postgres、Redis、SMTP、备份等完整后端能力的独立开发者和小团队。
风险等级中等——Apache-2.0、迭代活跃(0.2.0 是一次大幅硬化发布),但项目仍处于 1.0 之前,只有最新版本会收到安全修复。
评估时间30 分钟即可通过 npm 安装、运行 `openship up` 并部署一个示例项目;1–2 小时可挂上自定义域名和数据库。

核心问题: 你的团队是否真的需要一个覆盖构建、部署、TLS、CDN、邮件和备份的自托管工具,并且能接受为安全补丁一直跟随最新版本?

91/100

RepoDaily 采用评分

RepoDaily 将该项目的采用分评为 91/100(强):分数来自文章来源、安装路径、生产风险、差异化、许可证清晰度以及 AI/Agent 适配度。

基于 RepoDaily 来源和采用说明的方向性评分,不是基准测试。风险: 中
100证据质量

包含 6 个来源、覆盖 3 类来源;如有 RepoDaily 独有模块,会进一步提高证据分。

100可安装/可试用性

检测到 4 个工作流步骤、5 个下一步动作,以及 6 个命令/安装信号。

76维护可信度

趋势热度为 +1,719 stars;如内容中有 release、issue 或维护信号,会提高维护可信度。

94生产准备度

采纳风险标记为 medium,并包含 6 条安全说明与 3 条跳过条件。

100差异化

3 个机会视角、4 个替代方案,以及 4 个类型化模块支撑差异化判断。

82许可证清晰度

文章中包含许可证来源或许可证表述。

66Agent / AI 适配度

文章正文和元数据中检测到 3 个 AI/Agent 相关信号。

项目概览

Openship 是一个开源、可自托管的部署平台,主体用 TypeScript 编写。它会自动识别技术栈、构建项目、配置数据库/域名/SSL/邮件,再以标准 Docker 容器的方式发布——整个过程不需要配置文件、流水线或 YAML。README 直接给出承诺:“零配置文件、零流水线、零 YAML”。你只要把它指向一个仓库,它就能识别 Node、Python、Go、Rust、PHP、Ruby、Java、.NET、Docker 以及 monorepo 结构。

项目提供三种入口:桌面应用、Web 控制台和 CLI(`openship deploy`)。它可以搭配 Openship Cloud(托管版)使用,也可以部署到你自己拥有的任意 Linux 服务器。同一个二进制既能服务独立开发者的副业项目,也能支撑团队的生产环境,区别只在于是否设置了 `CLOUD_MODE=true`——该开关会决定是否挂载 billing 等云端专属模块。

2026 年 7 月 21 日,Openship 排在趋势榜第 2 位,周期内新增 1,719 颗 star。它的标签——agents、ai、deployments、self-hosted——透露了维护者的方向:一个以自托管为优先、并且越来越面向 Agent 的部署底座。0.2.0 的更新日志展示了在部署流程、应用目录、路由、服务器、任务和构建工具链上的具体硬化工作,这种广度说明它想做的不是单纯的 runner,而是控制面。

解决什么问题

  • 配置一条部署流水线通常意味着要写 Dockerfile、compose 文件、CI YAML、Nginx 配置、邮件中继,还要写一套基于 cron 的备份脚本,然后在 staging 和 prod 之间反复维护。
  • Vercel、Render 这类托管平台能消除这些摩擦,但会把运行时、定价和数据驻留锁死。Coolify 这类自托管方案确实存在,但 Openship 的差异点在于把带 DKIM/SPF/DMARC 的完整 SMTP 邮件服务,以及支持 HTTP/3 和 Brotli 的 CDN 也一起打包了进来。
  • 在单个应用和基于 service 的项目之间保持 TLS 证书、域名和续期的一致性非常麻烦;Openship 把这两者都走同一条 verify → DNS-records → SSL 管道,并把 certbot 卡在验证通过之后,避免白白浪费 Let's Encrypt 的签发次数。

工作原理

  1. 用 `npm i -g openship`(或 `curl -fsSL https://get.openship.io | sh`)全局安装,然后运行 `openship up`,把 Openship 注册为开机自启、自动重启的后台服务。
  2. 运行 `openship open` 打开控制台,或在项目目录里运行 `openship init` 把该目录关联为一个项目,Openship 会识别技术栈并生成构建。
  3. 运行 `openship deploy`,构建标准 Docker 容器并发布到你关联的 Linux 服务器或 Openship Cloud。预览环境、staging/prod 流程和回滚都从同一个控制台发起。
  4. 偏好 Docker 的运维同学可以克隆仓库、把 `.env.example` 复制为 `.env`,再运行 `docker compose up -d`。Compose 会启动 PostgreSQL、Redis、API、控制台和 Web 应用,Web 应用暴露在 `http://localhost:3000`。

产品演示与界面预览

Openship dashboard
Openship dashboard — Official README visual asset that helps readers understand the project interface, architecture, workflow, or output. README.md image

架构解读:Hono API、Next.js 控制台、Drizzle ORM 与基于 workspace 的 monorepo

Openship 是一个由 Bun 管理的 TypeScript monorepo。`apps/` 目录承载运行时入口:`apps/api/` 是跑在 4000 端口的 Hono API 引擎,`apps/dashboard/` 是跑在 3001 端口的 Next.js 部署控制台,`apps/desktop/` 是 Electron 桌面应用和本地服务启动器,`apps/cli/` 是 `openship deploy` 命令行工具,`apps/email/` 是带 Zero server/client orchestrator 的邮件引擎,`apps/web/` 是开发环境跑在 3009 端口的 Next.js 营销站。

`packages/` 目录承载共享基础设施:`packages/adapters/` 对接 Docker、裸机和云运行时;`packages/core/` 存放共享类型、常量、工具和错误;`packages/db/` 存放 Drizzle ORM 的 schema、client 和 repositories;`packages/db-email/` 存放邮件服务的 Drizzle schema;`packages/onboarding/` 存放共享的引导流程;`packages/ui/` 存放基于 Tailwind 的共享 React 组件。

每个 API 模块位于 `apps/api/src/modules/<name>/`,遵循四文件结构:`<name>.routes.ts` 定义 Hono 路由、`<name>.controller.ts` 处理请求、`<name>.service.ts` 承载业务逻辑、`<name>.schema.ts` 定义 TypeBox 校验 schema。auth、projects、deployments、domains、webhooks、health 等共享模块始终挂载;billing 模块为云端专属,仅在 `CLOUD_MODE=true` 时挂载。

命令面:你真正会用到的 CLI 与 Bun 脚本

  • `npm i -g openship`——全局安装;也可用 `curl -fsSL https://get.openship.io | sh`。
  • `openship up`——把 Openship 注册为后台服务(开机自启、自动重启);`openship up --foreground` 用于一次性前台运行。
  • `openship open`——打开控制台;`openship stop`——停止服务;`openship install`——安装桌面应用。
  • `openship init`——把当前目录关联为项目;`openship deploy`——构建并发布容器。
  • `bun db:generate` / `bun db:push` / `bun db:migrate`——生成 Drizzle 迁移文件、把 schema 推到开发库、运行生产待执行迁移;`bun run --cwd packages/db db:studio` 打开 Drizzle Studio。
  • `bun dev:local`——启动本地开发的 API 和控制台;`bun dev:api`、`bun dev:dashboard`、`bun dev:web`、`bun dev:desktop`、`bun dev:email`、`bun dev` 分别运行对应 workspace 的开发任务。

试用路径:从 `openship up` 到域名上线,约 30 分钟

最快路径:运行 `npm i -g openship`,再 `openship up`,安装程序会注册后台服务。运行 `openship open` 进入本地端口的控制台,再 `cd your-project && openship init && openship deploy` 发布第一个容器。

Docker 优先路径:`git clone https://github.com/oblien/openship.git && cd openship`,`cp .env.example .env`,`docker compose up -d`。Compose 会拉起 PostgreSQL、Redis、API、控制台和 Web 应用,Web 应用暴露在 `http://localhost:3000`。

开发贡献路径:克隆仓库,`bun install --frozen-lockfile`,把 `apps/api/.env.example` 复制为 `apps/api/.env`、`apps/dashboard/.env.example` 复制为 `apps/dashboard/.env`,再 `bun dev:local`。控制台跑在 `http://localhost:3001`,API 跑在 `http://localhost:4000`。前置依赖为 Bun 1.3.10(固定在 `.bun-version` 和 `package.json`)以及 Node.js 22 以上(见 `.nvmrc`)。

维护风险:1.0 之前、仅支持最新版、攻击面较宽

Openship 当前为 0.2.0——一次大幅的功能与硬化发布,但仍处于 1.0 之前。安全政策明确指出只有最新版本受支持,旧版本不再支持,运维者需要保持实例更新;预发布和 beta 版本的支持优先级更低。

项目捆绑了相当多的功能面:CI/CD、基于 OpenResty 的 CDN 边缘层、基于 certbot 的 TLS、带 DKIM/SPF/DMARC 的邮件服务、备份,以及 15 个应用目录。每一面都是攻击向量,也是维护负担。安全范围明确列出了托管版 Openship Cloud、自托管控制面(API、控制台、CLI)、桌面应用、GitHub 集成与 webhook、构建/部署流水线、备份与恢复、域名与 TLS、OpenResty 边缘层以及邮件。

缓解措施是实在的:维护者提供 GitHub 私密漏洞上报和安全港条款,承诺 5 个工作日内确认、10 个工作日内完成初判,应用内更新器会从 `release-advisories.json` 推送重要安全公告。但政策是承诺,不是历史成绩——请按此评估。

谁适合关注

适合关注

  • 想在自己的 Linux 服务器上实现 push-to-deploy、又不想写 Dockerfile 或 YAML 的独立开发者和小团队。
  • 需要一个带 DKIM/SPF/DMARC 的自托管邮件中继、并且不想为 Mailgun 或 SES 付费的运维者。
  • 正在评估 Coolify 或 Dokku 替代方案、希望把 TLS、CDN、备份和一键应用目录整合在一起的团队。

可以先跳过

  • 要求对旧版本提供长期支持(LTS)的组织——Openship 只修复最新版。
  • 已经跑着成熟 Kubernetes + Argo CD + 服务网格的团队;Openship 的价值是整合简单,而不是编排深度。
  • 需要稳定的 1.0 API 契约、才能基于控制面搭建内部工具的团队。

风险与注意事项

Apache-2.0、迭代活跃、架构整洁,但仍在 1.0 之前、安全上只支持最新版,并且捆绑了邮件、边缘、TLS、备份等较宽的功能面,每一块都带来额外的暴露。

  • 只有最新版本会收到安全修复,旧版本明确标注为不支持。
  • 0.2.0 仍处于 1.0 之前,API、模块结构和应用目录可能还会调整。
  • 内置的 SMTP 服务、OpenResty 边缘和 certbot 集成把安全边界扩大到了普通部署工具之外。
  • 云端专属模块(billing)用 `CLOUD_MODE=true` 做了门禁,这很干净,但自托管者需要确认云端配置不会泄漏到自己的实例。
  • Apache-2.0 许可证——授予使用、复制和分发的版权与专利授权。
  • 通过 GitHub Security Advisories 或邮件 security@oblien.com 进行私密漏洞上报,不鼓励在修复协调完成前公开披露。
  • 安全港条款授权针对你自己账号、自托管实例或测试账号的善意研究。
  • 响应目标:5 个工作日内确认、10 个工作日内初判,协调披露通常在 90 天内。
  • 范围覆盖 Openship Cloud、自托管控制面、桌面应用、GitHub 集成与 webhook、构建/部署流水线、备份与恢复、域名与 TLS、OpenResty 边缘层以及邮件。
  • 0.2.0 的路由改动把 certbot 卡在验证之后,避免白白浪费 Let's Encrypt 签发次数,并在 storage、routing 和 domain-service 之间共用同一个规范化的 hostname 处理逻辑——这是域名管线的一次具体硬化。

替代方案比较

方案适用场景代价
Coolify
你想要一个更成熟、社区更大的自托管平台,并且同样喜欢 push-to-deploy 的体验。自托管免费(开源);提供付费 Cloud 托管控制面。
Dokku
你想要一个极简、类似 Heroku 的单服务器体验,历史更久、攻击面更小。自托管免费(开源)。
CapRover
你想要一键应用目录和集群模式,但不需要 Openship 的邮件服务和 CDN 层。自托管免费(开源);Pro 版提供额外付费功能。
Vercel / Render
你更偏向全托管平台,不需要在自己的硬件上自托管邮件、数据库或备份。分档 SaaS 定价,含免费层;按用量扩缩。

这个趋势说明了什么

AI Agent 的部署底座

项目的 topics 列表包含 agents 和 ai,一键目录里也已经收录了 n8n、Convex 和 code-server。正在搭建内部 AI 工具的团队,可以把 Openship 当作在自有硬件上部署 Agent 运行时、向量存储和工作流引擎的部署层。

在一台带 GPU 的 Linux 服务器上启动 Openship,从 0.2.0 目录部署 n8n 和 Convex 模板,把部署时间和回滚延迟与你当前的手工 Docker 流程做对比。

自托管邮件整合

Openship 内置了带 DKIM/SPF/DMARC 的 SMTP 服务,并把它定位为 Mailgun/SES 的替代。在为交易邮件付费的团队看来,把部署 + 邮件整合到同一个自托管控制面可能同时降低成本和供应商数量。

把一个低量的交易邮件负载切到内置邮件服务,用 mail-tester.com 之类的工具校验 DKIM/SPF/DMARC 对齐,30 天内对比送达率和成本。

贡献者切入点

monorepo 使用 Bun 1.3.10、Node.js 22+、TypeScript 严格模式、Conventional Commits,以及清晰的四文件 API 模块结构(routes/controller/service/schema)。对想新增运行时适配器或目录应用的开发者来说,这是一份可读性很高的代码库。

克隆仓库,运行 `bun install --frozen-lockfile` 和 `bun dev:local`,按照现有目录结构新增一个一键应用模板,再按 CONTRIBUTING.md 提交一个 `feat:` 分支。

下一步建议

在一台一次性 Linux 服务器上安装 Openship,把一个真实项目从头到尾部署一遍

评估 Openship 最快的方式,是用全局安装路径跑一个真实的小项目、挂上域名,并观察完整的 deploy → TLS → 备份闭环。跳过营销站、直接用 CLI,这样才能看到控制面的真实行为。

  1. 准备一台全新的 Linux 服务器(任意云厂商),并确保 Node.js 22+ 可用。
  2. 运行 `npm i -g openship`,再 `openship up` 注册后台服务。
  3. 运行 `openship open` 进入控制台,`cd` 到一个小项目目录,依次执行 `openship init` 和 `openship deploy`。
  4. 在控制台挂上真实域名,确认 Let's Encrypt 证书签发和自动续期的行为。
  5. 开启按项目备份,触发一次恢复,在把生产数据交给 Openship 之前先确认恢复路径。

RepoDaily 判断

Openship 是一个有野心、架构干净的自托管部署平台,把 CI/CD、TLS、CDN、邮件和备份整合进同一个 TypeScript 控制面。0.2.0 版本展示了真实的硬化势头和一份可信的一键应用目录。主要顾虑是 1.0 之前的成熟度以及“只支持最新版”的安全策略——可以现在就把它用于副业项目、内部工具和 AI Agent 托管,但生产负载请务必跟随最新版本,并留出跟踪安全公告的时间。

信息来源