news 2026/9/15 15:25:22

Openship 自托管部署平台完全指南:内置 CI/CD 的开源 PaaS 中文手册

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Openship 自托管部署平台完全指南:内置 CI/CD 的开源 PaaS 中文手册

Openship 自托管部署平台完全指南:内置 CI/CD 的开源 PaaS 中文手册

【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship

Openship 是一个开源、可自托管的部署平台,内置 CI/CD,把「推送代码 → 构建 → 发布 → 域名/TLS 路由 → 邮件/备份」整条链路收敛进一个工具。本文以官方中文 README(docs/i18n/README.zh.md)为骨架,结合仓库源码(CLI 实现、Compose 编排、环境变量参考)逐项展开,读完你将掌握 Openship 的安装方式、运行形态、功能边界、CLI 用法与关键配置参数,能够独立完成从零部署到日常运维。

Openship 控制台界面


项目定位:一个「指向仓库即可发布」的部署平台

Openship 的核心使用方式极其简单:把它指向一个代码仓库,它会自动检测技术栈、构建、配置好一切并发布——不需要配置文件、不需要流水线、不需要 YAML。数据库、域名、SSL、CDN、邮件、备份全部在一处管理。

它同时支持两种运行后端:官方托管的Openship Cloud,或你自己拥有的任意 Linux 服务器。独立开发者发布副业项目、团队运行生产环境,使用的是同一个工具、同一套界面。

从仓库结构可以印证这一设计:控制平面(API)位于 apps/api,CLI 位于 apps/cli,Web 控制台位于 apps/dashboard,路由/TLS 边缘(OpenResty)位于 apps/edge,另有桌面应用 apps/desktop 与邮件引擎 apps/email。核心业务逻辑沉淀在 packages/core 与 packages/adapters 中。


快速开始:两条官方安装路径

中文 README 给出的入门命令只有两行:

npm i -g openship openship init

npm i -g openship安装全局 CLI(需要 Node 22+),openship init则把当前目录链接到一个 Openship 项目。从源码看,init 命令会调用GET /api/projects拉取项目列表(支持交互式选择或--project <id>直连),并把projectIdnameslug、默认环境等写入当前目录的.openship/project.json,供后续openship deploy等命令读取。

如果你更偏好 Docker,官方提供了第二种方式:

git clone https://github.com/oblien/openship.git && cd openship cp .env.example .env docker compose up -d

仓库根目录的 docker-compose.yml 是「SaaS / 从源码构建」形态的控制平面:postgres(存储)、redis(队列/缓存/限流)、api(:4000)、dashboard(:3001)、web(:3000,落地页),其中 postgres/redis 仅在集群内部可达,API 启动时自动执行数据库迁移,健康检查通过GET /api/health验证。

注意:根目录的docker-compose.ymldocker/docker-compose.yml两个不同的栈。前者是控制平面(从源码构建,不含 edge 与 Docker socket);后者是自托管拉取镜像栈(含 OpenResty edge,见下文「自托管服务器」一节)。中文 README 中cp .env.example .env && docker compose up -d对应的正是根目录控制平面。

或者也可以从 openship.io 下载桌面应用直接使用。


三种运行形态:桌面应用、自托管服务器、Openship Cloud

官方英文 README(README.md)给出了一个清晰的决策矩阵,中文 README 的「部署到任何地方」与之呼应:

你的场景Openship 本身怎么跑你的应用跑在哪里
单人、单机、不想折腾运维桌面应用通过 SSH 连接一台服务器,或 Openship Cloud
团队,或想要 push-to-deploy / 在自己机器上托管应用自托管服务器openship up本机(Compose 模式),或推到另一台服务器 / Cloud(bare 模式)
什么都不想跑Openship Cloud托管沙箱,零配置

单人场景:桌面应用

控制平面在本地运行,通过 SSH 驱动远端服务器。无需登录、无需终端、没有对外暴露面。桌面应用本体不托管公开应用——它只是编排器。应用实际运行在你连接的服务器或 Openship Cloud 上。

团队 / 常驻场景:自托管服务器(openship up

CLI 自带了 API 与 Web 控制台。运行openship会进入交互式向导:创建第一个管理员、绑定域名、把 Openship 安装为开机自启服务;再次运行即可管理实例。面向 CI / 无头机器,可以直接跳过向导:

openship up # 安装并以后台服务启动(开机自启 + 崩溃自动重启) openship up --public-url https://openship.example.com # 同时在你的域名上提供控制台(edge + TLS 自动处理)

从 up 命令源码可以看到,openship up会自动选择运行方式:

  • Linux + Docker → Compose 模式(默认):拉起完整栈——Postgres、Redis、API、Dashboard,以及容器化的OpenResty edge(占用 :80/:443),全部来自已发布镜像。这种形态能在同一台机器上托管你部署的应用,并自动完成域名解析 + Let's Encrypt TLS。可用--compose强制指定。
  • 其他环境 → bare 模式(macOS、Windows、或无 Docker 的 Linux):单个轻量进程 + 内嵌数据库(PGlite),作为常驻控制平面,通过 SSH 把应用部署到远端服务器或 Cloud,类似桌面应用但常驻且必须登录。可用--bare强制指定。

自托管实例始终要求登录(即向导中创建的管理员账号)。日常管理命令:

openship open # 打开控制台 openship stop # 停止服务 openship update # 升级 openship up --foreground # 前台附着运行

CLI 还支持 shell 补全(bash/zsh/fish),可写入静态补全文件或实时 source;具体方式见 README.md 的 "Shell completion" 一节。

部署一个项目

cd your-project openship init # 把当前目录链接到一个项目 openship deploy

deploy 命令会根据当前目录是否为 git 仓库自动分流:git 仓库走POST /api/deployments(按分支/commit 构建);非 git 目录则走文件夹上传流程。常用参数包括--env production|preview--branch--commit--force-all--service-ids(仅重建变更服务)、--smart-route--watch(流式查看构建日志)。

原始 Docker Compose 自托管(不用 CLI)

高级用户也可以直接使用 docker/docker-compose.yml 自托管栈,它拉取GitHub Container Registry 上已发布的镜像(ghcr.io/oblien/*),无需任何构建工具链:

git clone https://github.com/oblien/openship.git && cd openship cp .env.example .env # 然后编辑 docker compose --env-file .env -f docker/docker-compose.yml up -d

该栈为postgres + redis + api + dashboard + edge,其中 edge 是 host 网络模式的 OpenResty 容器(:80/:443),负责路由与 Let's Encrypt。仅限 Linux(依赖 host 网络);mac/win 请用openship up(bare 模式)。api容器挂载了宿主 Docker socket,以便控制平面以宿主容器的方式构建并运行你的应用——因此它经由 socket 拥有宿主级权限,只应运行在可信主机上

升级时在.env中固定OPENSHIP_VERSION以获得可复现的拉取,然后docker compose … pull && … up -d。若想从源码构建,追加-f docker/docker-compose.build.yml … up -d --build


核心特性详解

中文 README 的特性表是对平台能力的官方承诺,结合仓库源码逐一展开:

内置 CI/CD

推送即部署(push-to-deploy)、预览环境、staging/生产流程、回滚。GitHub webhook 在每次推送到被跟踪分支时重新执行流水线,且 monorepo 场景下只重建被推送真正影响到的服务(智能路由,对应--smart-route/--service-ids)。

任意技术栈

Node、Python、Go、Rust、PHP、Ruby、Java、.NET、Docker、Monorepo。从 packages/core/src/languages 的 11 个语言定义文件,以及 fixtures/deploy 下的 dotnet/go/kotlin/laravel/node/python-fastapi/rust-axum/springboot 示例项目可以看到官方验证过的技术栈覆盖。README 强调:系统会读取package.json、框架配置、锁文件以及任何docker-compose.yml/openship.json来推断技术栈、包管理器、构建/启动命令与端口——零配置文件即可工作;需要精细控制时,openship.json可覆盖自动推断。

完整后端

Postgres、MySQL、MongoDB、Redis、Worker、WebSocket、存储,作为被托管应用的附属服务一并编排。

域名与 SSL

自动 Let's Encrypt、通配符证书、无限域名、自动续期。路由与 TLS 发生在应用启动之后:即使 DNS 或证书出问题,只会显示 "action required",绝不会导致部署失败或应用下线。证书相关高级配置(ZeroSSL、私有 CA、ACME EAB)见 docs/acme.md 与 .env.example 中的OPENSHIP_ACME_*系列变量。

CDN

边缘缓存、HTTP/3、Brotli 压缩、即时清除。

邮件服务器

内置 SMTP,支持 DKIM/SPF/DMARC——无需 Mailgun 或 SES。邮件模块是一个完整子项目 apps/email,内含基于 iRedMail 的引擎(email/engine)、Web 邮箱客户端与独立数据库 packages/db-email。

备份

定时备份、数据库 + 卷、一键恢复、随时导出。备份实现分布在 packages/adapters/src/backup(33 个文件)与 CLI 的openship backup命令中。

实时监控

实时构建日志、容器指标、资源使用情况实时推送到屏幕,细节见 docs/monitoring.md。

伸缩

云端自动伸缩;自托管支持多节点(多节点集群、负载均衡 UI、私有网络列入「即将推出」路线图)。

可移植性

标准 Docker 容器——可在服务商之间自由迁移。

Docker Compose

原样部署现有的 compose 文件。


部署到任何地方

  • Openship Cloud—— 托管、自动伸缩、零配置
  • 任意 VPS—— Hetzner、DigitalOcean、Linode、OVH 等
  • 独立服务器—— 裸机、托管机房、家庭实验室
  • 多服务器—— 将负载分散到多台机器

无论部署在哪里,界面都一样。


三种界面 + 自动化接口

  • 桌面应用—— 完整 GUI、实时日志、一键操作(适合单人)。
  • Web 控制台—— 浏览器中的同一套界面,为团队打造。
  • CLI—— 可脚本化、对 CI 友好,同时也是安装和管理自托管实例的入口。

REST APIMCP(AI 智能体协议)为自动化和工具集成收尾:MCP 端点只暴露选择加入的路由作为工具,每次调用都会重新校验权限,凭据/令牌类路由永远不会成为工具。从仓库可看到 MCP 相关实现文件(如 apps/api/src/lib/mcp-resource.ts、mcp-token.ts),CLI 也支持--json输出模式便于脚本消费。


关键配置参考(.env.example 精读)

无论自托管还是 SaaS,都由同一个 .env.example 驱动——通过CLOUD_MODE这一个开关切换形态。以下是最常用的配置分组:

模式开关

  • CLOUD_MODE=false:false = 自托管(默认,无计费);true = SaaS(计费、计量、多租户)。
  • DEPLOY_MODE=docker:docker(默认,自托管)| cloud(SaaS)。

存储与队列

  • DATABASE_URL:指向 Postgres;留空则使用 PGlite 内嵌数据库(仅限开发)。
  • POSTGRES_USER/POSTGRES_PASSWORD/POSTGRES_DB:Compose 据此拼出DATABASE_URL
  • REDIS_URL:队列 + 缓存 + 限流共用。OPENSHIP_REQUIRE_REDIS=true可强制使用 Redis 后端并禁用静默的内存回退(自托管多副本建议开启)。

认证安全(上线前必改)

  • BETTER_AUTH_SECRET:会话密钥,用node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"生成。
  • INTERNAL_TOKEN:内部认证令牌,任何非桌面部署都必填——API 没有它会拒绝启动。

远程访问

  • OPENSHIP_PUBLIC_URL:默认只信任http://localhost:3001;要从其他机器访问(反向代理或局域网),必须设置为浏览器实际使用的完整 origin,否则登录会收到403 ORIGIN_REJECTED
  • TRUST_PROXY=true:反向代理后面启用(代理必须设置X-Real-IP,否则所有用户共享一个限流桶)。
  • OPENSHIP_BIND_ADDR:Compose 发布端口的网卡(默认 loopback,生产建议0.0.0.0需谨慎)。
  • API_PORT/DASHBOARD_PORT:端口覆盖(默认 4000 / 3001)。

ACME / 证书

  • OPENSHIP_ACME_EMAILOPENSHIP_ACME_DIRECTORY_URL(默认 Let's Encrypt 生产)、OPENSHIP_ACME_KEY_TYPE=ec256|ec384|rsa2048|rsa4096OPENSHIP_ACME_EAB_KID/OPENSHIP_ACME_EAB_HMAC_KEY(ZeroSSL 等 EAB 必须成对设置)等,完整说明见 docs/acme.md。

镜像源与版本钉住

  • OPENSHIP_IMAGE_REGISTRY(默认ghcr.io/oblien)与OPENSHIP_VERSION(建议钉到具体版本号如0.2.3以获得可复现升级;latest跟随最新发布)。

Docker socket 与宿主机操作通道

  • OPENSHIP_DOCKER_SOCKET:API 通过宿主 Docker daemon 驱动 edge 与所有应用容器。rootless Docker 下 socket 位于用户 runtime 目录(如/run/user/1000/docker.sock),可用docker context inspect --format '{{.Endpoints.docker.Host}}'确认;配置错误不会响亮失败,而是表现为「容器操作全部失败且不报路径」(对应上游 issue #482)。
  • OPENSHIP_HOST_SSH_*系列与OPENSHIP_HOST_KEY_PATH:用于容器内无法完成的少量宿主 OS 操作(释放 :80/:443 上的外部代理、宿主系统配置、邮件引擎等)。留空不会降级为本地执行,而是直接拒绝并指明此通道;普通部署不受影响(走 docker socket)。

OAuth 与 GitHub App

  • GITHUB_CLIENT_ID/SECRETGOOGLE_CLIENT_ID/SECRET:可选的第三方登录。
  • GITHUB_AUTH_MODE=auto+GITHUB_APP_ID/SLUG/PRIVATE_KEY_BASE64/WEBHOOK_SECRET:自托管 GitHub App(无需 Openship Cloud 或 PAT),PEM 与 webhook secret 只存于服务端 env,绝不落库。

SaaS 专属(CLOUD_MODE=true)

  • Oblien 三件套(OBLIEN_CLIENT_ID/SECRET/WEBHOOK_SECRET)、BILLING_ENABLEDSTRIPE_SECRET_KEY、各套餐价格 ID(STRIPE_PRICE_*)与优惠码(STRIPE_COUPON_LAUNCH50)等。价格目录定义在 packages/core/src/pricing/pricing.json,每个计划通过stripePriceEnv字段声明自己需要的 env 变量名。

项目状态、贡献与许可证

状态:核心已可用于生产,持续积极开发中;自托管免费(无计费)。即将推出:多节点集群、负载均衡 UI、私有网络、高级监控,以及可视化 CI/CD 流水线。

贡献:参见 CONTRIBUTING.md。官方提示文档仍在完善中,若发现缺失或不清楚之处,非常欢迎贡献。安全漏洞请遵循 SECURITY.md 私下披露。

许可证:Openship 依据 Apache License 2.0 授权。你可以使用、运行、修改、自托管和分发它——包括用于商业和闭源产品——只要遵守 Apache 2.0 的条款。

【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 15:25:02

EIP-7792 可验证日志:用链上日志累积器让 eth_getLogs 响应可验证

EIP-7792 可验证日志&#xff1a;用链上日志累积器让 eth_getLogs 响应可验证 【免费下载链接】EIPs The Ethereum Improvement Proposal repository 项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs 本指南以仓库中的 EIPS/eip-7792.md 为蓝本&#xff0c;系统…

作者头像 李华
网站建设 2026/9/15 15:24:35

基于51单片机的智能滴灌控制系统设计与实现

简介&#xff1a;基于51单片机的滴灌控制系统资料包&#xff0c;面向单片机学习者、课程设计与毕业设计人群&#xff0c;解决温室或农田场景下依据温湿度自动滴灌的工程问题。系统通过PT100测温&#xff0c;配合模拟量湿度传感器或仿真电位器监测湿度&#xff0c;用户可按键设定…

作者头像 李华
网站建设 2026/9/15 15:24:23

微信外卖点餐小程序模板二次开发:从zip导入到购物车订单联调

简介&#xff1a;美食餐饮外卖点餐微信小程序模板&#xff0c;是为餐饮商户与小程序开发者打造的一站式解决方案&#xff0c;帮助快速搭建外卖点餐与门店展示平台&#xff0c;无需从零编写代码&#xff0c;适合预算有限或希望快速试水的团队。压缩包共68个文件&#xff0c;其中…

作者头像 李华
网站建设 2026/9/15 15:23:33

深入 @scalar/void-server:Scalar 开源 HTTP 请求镜像服务器的设计与演进

深入 scalar/void-server&#xff1a;Scalar 开源 HTTP 请求镜像服务器的设计与演进 【免费下载链接】scalar Scalar is an open-source API platform:                                       &#x1f310; Modern REST API Client …

作者头像 李华
网站建设 2026/9/15 15:23:32

D3Dhook通杀所有DirectX版本:COM虚表与Present锚点解析

简介&#xff1a;面向需要深入Direct3D底层渲染控制与Hook技术研究的开发者&#xff0c;提供一份精简的C源文件&#xff0c;呈现D3DHook的完整实现思路&#xff0c;能够通过API钩子与内存钩子方式&#xff0c;对多个DirectX版本的渲染管线进行统一拦截与功能扩展&#xff0c;适…

作者头像 李华