UStackUStack
Vxero Neo icon

Vxero Neo

Vxero Neo 是仅基于 SSH 的 CLI,通过安装 Docker 与 Caddy,将 Docker 应用部署到任意 VPS,并实现 HTTPS 自动证书与零停机切换。

Vxero Neo

Vxero Neo 是什么?

Vxero Neo (Neo) 是一个原生 SSH 的命令行工具,用于将 Docker 应用部署到 VPS。它通过 SSH 连接您的服务器,设置 Docker 和 Caddy,并通过自动 SSL 部署应用以支持 HTTPS——无需安装代理或使用独立的控制平面。

Neo 还管理从本地开发到暂存和生产的全应用生命周期。它读取本地项目配置(包括 docker-compose.yml、.env 和 .neo.yml),通过 SSH 构建并传输镜像,进行健康检查,并实现零停机流量切换。

主要特性

  • 仅 SSH 部署流程(无代理、无仪表板): Neo 在本地机器运行,通过 SSH 连接 VPS;除运行时所需的 Docker/Caddy 外,无需额外服务器端工具。
  • 自动化服务器初始化(Docker + Caddy): 部署时,Neo 在目标服务器上设置 Docker 和 Caddy,使容器可运行并接收 HTTPS 流量。
  • 从 compose/配置到实时切换: Neo 读取本地配置,构建镜像,通过 SSH 传输,健康检查通过后切换流量;旧容器在切换前继续运行。
  • 即时 HTTPS 域名及备用证书选项: Neo 可使用 sslip.io(无需 DNS)通过 --temp 提供 HTTPS。对于真实域名,可使用 Caddy 的 Let’s Encrypt(DNS 指向后),或通过 --cert--key 使用自有证书。
  • 配置生成与环境管理: neo config generate 扫描 docker-compose.yml,自动生成 .neo.yml,检测应用服务、sidecars、工作进程、环境变量和卷。Neo 还可通过 neo envneo sync 等命令同步环境/状态。
  • 蓝绿式零停机部署: 启动新容器,等待健康检查通过后执行流量切换,前一版本在切换前保持可用。
  • 工作进程、sidecars 和持久卷: 在 .neo.yml 中定义后台工作进程和 sidecars,与主应用一同部署,共享卷和环境变量。在 .neo.yml 中声明卷以在重新部署间持久化数据。
  • 多服务器与按环境设置: 使用 --to staging 等标志部署到暂存或生产环境;每个环境可有独立的域名、环境变量和 SSL 配置。

如何使用 Vxero Neo

  1. 准备项目: 确保应用使用 docker-compose.yml(及可选 .env)描述。
  2. 生成 Neo 部署配置: 在项目目录运行 neo config generate。Neo 扫描 docker-compose.yml,生成 .neo.yml,包含检测到的服务(如应用、工作进程/sidecars(若定义/检测到)、环境变量和卷)。
  3. 本地开发(可选但支持): 使用 neo dev 结合 .neo.yml 的环境加载包装 docker-compose。
  4. 通过 SSH 部署: 运行 neo deploy 针对您的 VPS。Neo 从 Dockerfile(及 compose 派生配置)构建镜像,通过 SSH 传输,进行健康检查并切换流量。
  5. 启用 HTTPS: 使用 neo domain --temp 获取基于 sslip.io 的即时 HTTPS URL,或 DNS 指向后使用 Let's Encrypt 自动 SSL 的真实域名,或提供 --cert/--key 使用自有证书。

使用场景

  • 单 VM Docker 应用部署: 每个 VPS 部署一个容器化应用(如 Web 服务),偏好基于 SSH 自动化而非集群编排器。
  • 暂存 → 生产共享配置: 通过 .neo.yml 生成和环境加载跨环境使用相同配置,先部署暂存,再以不同域名/SSL 设置推广到生产。
  • 带 sidecars 和后台工作进程的应用: 部署主应用及 .neo.yml 中定义的工作进程和 sidecar 容器,包括共享环境变量和卷。
  • 无需 DNS 修改快速 HTTPS 的项目: 使用 neo domain --temp 通过 sslip.io 立即获取 HTTPS URL 测试,DNS 就绪后切换真实域名。
  • 小团队零停机发布: 执行带健康检查的蓝绿式更新,旧版本在新型容器就绪前保持运行。

常见问题

  • Neo 会在我的服务器上安装代理吗? 不会。Neo 在您的本地机器上运行,并通过 SSH 连接到您的 VPS。服务器上仅设置 Docker 和 Caddy 用于应用运行时。

  • 我已经在使用 docker-compose,如何切换到 Neo? 在项目目录中运行 neo config generate。Neo 会扫描 docker-compose.yml 并自动生成 .neo.yml,然后您可以使用 neo deploy 部署应用。

  • 支持哪些云提供商? Neo 可部署到任何提供 SSH 访问的 VPS,例如 DigitalOcean、Hetzner、Linode、Vultr、AWS EC2、GCP 和 Azure。Neo 部署到单个 VM(它不是像 Kubernetes 或 Docker Swarm 那样的多节点集群编排器)。

  • HTTPS 如何工作? Neo 支持 neo domain --temp 通过 sslip.io 即时启用 HTTPS,neo domain app example.com 在 DNS 指向后使用 Let’s Encrypt 自动 SSL,以及 --cert/--key 使用您自己的证书。

  • Neo 可以运行后台 worker 和数据库吗? Worker 可在 .neo.yml 中声明,并作为使用相同镜像、环境变量和卷的独立容器部署。对于数据库,Neo 可将其作为 Docker sidecar/服务运行用于小型项目;对于有真实用户的生产环境,推荐使用托管数据库。

替代方案

  • 手动 Docker + Caddy 部署脚本: 如果您偏好完全控制且已有自己的部署自动化,您可以构建并传输镜像、运行容器,并自行管理 Caddy/SSL。这通常比 Neo 的单命令工作流需要更多设置工作。
  • Docker Swarm 或 Kubernetes: 这些是用于多节点部署的集群编排器。与 Neo 不同,它们针对跨集群的编排,而不是单个可通过 SSH 访问的 VPS。
  • 其他以 VPS 为中心的 CI/CD 流水线: 您可以使用通用 CI/CD 工具通过 SSH 登录服务器、构建镜像并重启容器。与 Neo 相比,您需要自行处理配置生成、零停机切换逻辑和 HTTPS 集成。
  • 托管容器平台: 管理路由和 TLS 的平台可以减少基础设施步骤。它们通常会牺牲 Neo 描述的“无代理/控制平面”的 SSH 优先部署模式。
Vxero Neo | UStack