
Vaire 推出单一 CLI 工具,可自托管加固版 PostgreSQL 18
来源标题:Show HN: Vaire, Self-Hosting Postgres Through the One Glorious CLI
Vaire 发布一款 CLI 工具,可将全新的 Debian 13 或 Ubuntu 26.04 VPS 自动加固并部署为 PostgreSQL 18 服务器,同时集成 PgBouncer、nginx 和 TLS 证书,通过 WireGuard 连接。每个数据库都拥有独立调优的 PostgreSQL 集群及资源限制。该工具目前处于首个 v1 alpha 的筹备阶段,尚未打标签或发布。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
一条 CLI,把一台全新 VPS 变成加固过的 PostgreSQL 18 服务器,并且此后它就是唯一的入口。 在你的笔记本上(或在一个编码 agent 里),vaire 会接管一台全新的 Debian 13 或 Ubuntu 26.04 服务器,对它进行加固,安装 PostgreSQL 18 并配上 PgBouncer 和 nginx,签发 TLS 证书,并通过 WireGuard 把你连接到它。你创建的每个数据库都会获得自己独立的、经过调优的 PostgreSQL 集群,带有大小和资源限制,就像托管服务商为每个数据库提供独立实例那样。之后的所有操作都通过同一个二进制、经由 SSH、在 WireGuard 内完成。没有服务器控制守护进程、Web UI 或开放的控制 API 端口;一个运维侧的共享隧道守护进程会让并发的 CLI 命令在每个 context 上共用一条 WireGuard 连接。
状态(2026-10-19):正在准备第一个 v1 alpha;尚未打标签或发布。Phase 0–5 已有实机验证证据,包括备份、灾难恢复、受保护写入、可观测性、本地 bootstrap 和自动 SSH 锁定回滚。已知的覆盖范围限制记录在 manual testing 中。Followers、extensions 和多节点仍属未来工作。参见 roadmap 和 draft alpha notes。Alpha 格式尚未冻结;后续的 alpha 可能需要重建并恢复。
领域 命令 Setup vaire server init(通过 SSH 远程执行,或在服务器上用 --local)、--resume Access vaire login、vaire context list|show|use|remove|set-address、vaire ssh、vaire tunnel 期望状态 vaire plan、vaire apply、vaire config show|get|set|edit|validate 数据库 vaire db list|create|resize|drop|credentials|fork|protect|unprotect 保护 vaire protect init|status(双因素验证码)、vaire db protect|unprotect SQL vaire sql(多语句和有序结果,对 JSON 友好)、vaire psql、vaire console(usql) 调优 vaire tune show|explain|apply 备份 vaire backup setup|now|list|verify、vaire dump、vaire dump list|get 恢复 vaire restore <db>(--time、--latest、--set、--dump)、vaire restore status|promote|undo|abort|cleanup|drill 灾难恢复 vaire server backup now|list|verify|export(主 bundle)、vaire server init --restore、vaire db recover <db>|--all 任务 vaire job list|follow 健康 vaire status [--watch]、vaire doctor [--only security]、vaire top、vaire queries 证据 vaire activity list|show|health、vaire diagnostics collect|inspect(本地仅元数据的历史记录和可移植的事故文件) 指标 vaire metrics show|rotate:一个经过认证的 https://db1.<domain>/metrics/...,供 Prometheus 或 Grafana Alloy 使用,并带有用于服务发现的 targets.json 维护 vaire maint vacuum|analyze|reindex|report|kill(repack 等待 Phase 7)、夜间和每周维护定时器 运维 vaire logs、vaire secrets export、vaire upgrade Agents vaire commands --json、vaire guide agents、vaire skill install 来自后续阶段的命令已经在代码树中,并会返回 not implemented yet。
本次检出中的新增内容,等待实机验证:vaire activity list|show|health 和 vaire diagnostics collect|inspect 提供本地的、仅含元数据的操作历史和可移植的事故证据。不需要日志数据库、外部收集器或原始日志导出。参见 activity 和 diagnostics。
在你的笔记本上:安装 CLI(签名发布,用 cosign 验证)
curl -fsSL https://vaire.mbvlabs.com/edge/install.sh | bash
引导一台全新服务器(首次连接使用服务商提供的 root key 或密码)
vaire server init --host root@203.0.113.10
vaire 会问几个问题,显示需要创建的 DNS 记录(db1.<your domain>),
加固机器,关闭公网 SSH,安装 PostgreSQL,最后完成
密钥交接。
vaire db create app --size small # 独立集群;一次性打印 URL 和密码 vaire sql --db app "select now()" vaire console app # 交互式 usql 会话 vaire console app --write # 以数据库所有者身份运行 DDL 在另一台机器上,运行 vaire login 并粘贴交接时给出的传输 bundle。
laptop / CI / agent VPS db1.<domain>(主节点) ┌───────────────────────────────┐ ┌─────────────────────────────────────────┐ │ vaire(operator 模式) │ │ wg0 10.42.0.1 │ │ ├ context + 凭据 │ │ └ sshd(端口 22 仅在 wg0 上可达) │ │ ├ 用户态 WireGuard ══════════╪═══╪════════════════▶│ │ │ │ (无需 root,无需 wg0) │ │ vaire(node 模式),每条命令运行一次: │ │ ├ 进程内 SSH ────────────────┼───┼── 在 WG 内 ───▶│ ├ 版本化步骤 + 内嵌脚本 │ │ └ pgx / usql / psql ─────────┼───┼── 在 WG 内 ───▶│ ├ /etc/vaire/cluster.toml(期望状态)│ └───────────────────────────────┘ (5432 / 6432) │ ├ 已应用步骤的日志 │ │ └ systemd 定时器 → vaire node run … │ │ │ │ nginx · 2 个 PgBouncer · 每个数据库 │ │ 一个 PostgreSQL 18 集群 │ └─────────────────────────────────────────┘
一个二进制,两种角色。在你的机器上,vaire 是 operator CLI。在服务器上,同一个二进制以 vaire node … 运行,由 SSH 为每条命令调用,也由 systemd 定时器调用。Operator 和 node 的版本保持同步:除非你传入 --auto-upgrade-nodes(它会推送匹配的签名构建),否则版本不匹配会被拒绝。
输入期望状态,输出收敛结果。服务器及其数据库由服务器上的一个 TOML 文件描述。vaire plan 显示将会发生什么变化,vaire apply 进行收敛,而且随时可以安全地再次运行。步骤带有版本化 ID(tls-v1,以及针对某个数据库集群的 postgres-config-v1@app),日志会记录运行过什么,因此升级只会重新运行发生变化的步骤。
vaire 拥有它写入的配置。受管文件由模板渲染,并会检查是否发生漂移。ALTER SYSTEM 被禁用,因此不会有任何东西在 vaire 背后悄悄改变。
数据库即集群 每个数据库都是自己的 PostgreSQL 集群:vaire db create app 会创建集群 18/app,拥有自己的数据目录、socket、WAL 流、配置、重启、pgBackRest stanza 和 systemd 资源限制。你只需要给数据库命名;集群位于其下。属于同一组的东西共享一个数据库,但使用多个 schema。
db1.<domain>
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。