机器设置
通过四个步骤让您的首台机器运行:创建配置、注册服务器、配置它,以及可选地为公网流量配置基础设施。
步骤 1:创建配置
配置是一个命名配置文件,用于存储您的 SSH 凭据、机器定义和仓库映射。可以将其理解为一个项目工作区。
rdc config init my-infra --ssh-key ~/.ssh/id_ed25519
| 选项 | 必填 | 描述 |
|---|---|---|
--ssh-key <path> | 是 | SSH 私钥路径。波浪号(~)会自动展开。 |
--renet-path <path> | 否 | 远程机器上 renet 二进制文件的自定义路径。默认为标准安装位置。 |
此命令创建一个名为 my-infra 的配置并将其存储在 ~/.config/rediacc/my-infra.json 中。默认配置(未指定名称时)存储为 ~/.config/rediacc/rediacc.json。
您可以拥有多个配置(例如
production、staging、dev)。在任何命令上使用--config标志在它们之间切换。
步骤 2:添加机器
将您的远程服务器注册为配置中的机器:
rdc machine add server-1 --ip 203.0.113.50 --user deploy
| 选项 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--ip <address> | 是 | - | 远程服务器的 IP 地址或主机名 |
--user <username> | 是 | - | 远程服务器上的 SSH 用户名 |
--port <port> | 否 | 22 | SSH 端口 |
--datastore <path> | 否 | /mnt/rediacc | 服务器上 Rediacc 存储加密仓库的路径 |
添加机器后,rdc 会自动运行 ssh-keyscan 获取服务器的主机密钥。您也可以手动运行:
rdc machine scan-keys server-1
查看所有已注册的机器:
rdc machine list
步骤 3:设置机器
为远程服务器安装所有必需的依赖项:
rdc machine setup server-1
此命令将:
- 通过 SFTP 将 renet 二进制文件上传到服务器
- 安装 Docker、containerd 和 cryptsetup(如果尚未安装)
- 创建
rediacc系统用户(UID 7111) - 创建数据存储目录并为加密仓库做准备
| 选项 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--datastore <path> | 否 | /mnt/rediacc | 服务器上的数据存储目录 |
--datastore-size <size> | 否 | 95% | 分配给数据存储的可用磁盘空间比例 |
--debug | 否 | false | 启用详细输出以进行故障排除 |
每台机器只需运行一次设置。如果需要,可以安全地重新运行。
数据存储后端
数据存储是每台机器上容纳加密仓库镜像的存储池。machine setup 默认创建本地数据存储:服务器自身磁盘上基于 loop 设备的 BTRFS 文件系统,通过 --datastore-size 设置大小(默认为可用磁盘的 95%)。这是几乎所有单机部署的正确后端,除了服务器本身外不需要任何其他东西。
数据存储容量
--datastore-size 接受百分比(95%)或绝对大小(50G、1T)。数据存储之后可以在线扩容:
rdc datastore resize ds-server-1 --size 200G
数据存储内的仓库在 repo create 时独立设置大小,并可以在运行时扩容,因此您无需提前为数据存储预留过多空间。
Ceph RBD 后端
对于共享、横向扩展或支撑 Kubernetes 的存储,请改为在外部 Ceph 集群上初始化数据存储。此时数据存储位于一个 RBD 镜像上(其上是 BTRFS,没有按镜像的 LUKS 层),fork 使用 RBD 的写时复制克隆,而不是 BTRFS reflink。
# 1. 记录机器的 Ceph 引用(池 + RBD 镜像,非机密信息)
# 2. 在 Ceph 后端上初始化数据存储
rdc datastore create ds-server-1 -m server-1 --backend ceph --pool rbd --image datastore-server1 --size 100G
Ceph 密钥环保留在各台机器上;配置文件仅保存非机密的池和镜像引用。Ceph 同时也是 Kubernetes 集群通过 ceph-csi 使用的存储层。关于集群与持久卷,请参阅 Kubernetes 指南;关于两种后端的对比,请参阅架构。
主机密钥管理
如果服务器的 SSH 主机密钥发生变化(例如重新安装后),刷新已存储的密钥:
rdc machine scan-keys server-1
此命令更新配置中该机器的 knownHosts 字段。
测试 SSH 连接
添加机器后,验证其是否可达:
rdc term connect server-1 -c "hostname"
此命令打开到机器的 SSH 连接并运行命令。如果成功,您的 SSH 配置正确。
如需更详细的诊断,运行:
rdc doctor
提示:要验证 SSH 连接,运行
rdc term connect <machine> -c "hostname"或直接使用ssh。
基础设施配置
对于需要公开提供流量的机器,配置基础设施设置:
设置基础设施
rdc machine infra set server-1 \
--public-ipv4 203.0.113.50 \
--base-domain example.com \
--cert-email admin@example.com \
--cf-dns-token your-cloudflare-api-token
| 选项 | 范围 | 描述 |
|---|---|---|
--public-ipv4 <ip> | Machine | 公网 IPv4 地址,仅为已配置的地址族创建代理入口点 |
--public-ipv6 <ip> | Machine | 公网 IPv6 地址,仅为已配置的地址族创建代理入口点 |
--base-domain <domain> | Machine | 应用的基础域名(例如 example.com) |
--cert-email <email> | Config | 用于 Let’s Encrypt TLS 证书的电子邮件(跨机器共享) |
--cf-dns-token <token> | Config | 用于 ACME DNS-01 挑战的 Cloudflare DNS API 令牌(跨机器共享) |
--tcp-ports <ports> | Machine | 逗号分隔的额外转发 TCP 端口(例如 25,143,465,587,993) |
--udp-ports <ports> | Machine | 逗号分隔的额外转发 UDP 端口(例如 53) |
Machine 范围的选项按机器存储。Config 范围的选项(--cert-email、--cf-dns-token)在配置中的所有机器间共享,设置一次即可全局生效。
查看基础设施
rdc machine infra show server-1
推送到服务器
生成并部署 Traefik 反向代理配置到服务器:
rdc machine infra push server-1
此命令:
- 将 renet 二进制文件部署到远程机器
- 配置 Traefik 反向代理、路由器和 systemd 服务
- 如果设置了
--cf-dns-token,则为机器子域名创建 Cloudflare DNS 记录(server-1.example.com和*.server-1.example.com)
DNS 步骤是自动且幂等的:它会创建缺失的记录、更新 IP 已变更的记录,并跳过已经正确的记录。如果未配置 Cloudflare 令牌,则会跳过 DNS 并显示警告。Per-repo 通配符 DNS 记录(用于自动路由)会在你运行 rdc repo up 时自动创建。
云端配置
您可以配置云服务提供商,让 rdc 使用 OpenTofu 自动配置机器,而无需手动创建虚拟机。
前提条件
安装 OpenTofu: opentofu.org/docs/intro/install
确保您的 SSH 配置已将密钥注册到 rdc:
# 读取密钥文件并将内容内联到 /credentials/ssh 下。
rdc config ssh set --key ~/.ssh/id_ed25519
添加云服务提供商
rdc machine provider add my-linode \
--provider linode/linode \
--token $LINODE_API_TOKEN \
--region us-east \
--type g6-standard-2
| 选项 | 必填 | 描述 |
|---|---|---|
--provider <source> | 是* | 已知的提供商来源(例如 linode/linode、hetznercloud/hcloud) |
--source <source> | 是* | 自定义 OpenTofu 提供商来源(用于未知提供商) |
--token <token> | 是 | 云服务提供商的 API 令牌 |
--region <region> | 否 | 新机器的默认区域 |
--type <type> | 否 | 默认实例类型/规格 |
--image <image> | 否 | 默认操作系统镜像 |
--ssh-user <user> | 否 | SSH 用户名(默认:root) |
* 必须提供 --provider 或 --source 之一。已知提供商(内置默认值)使用 --provider。自定义提供商使用 --source 并配合 --resource、--ipv4-output、--ssh-key-attr 等附加标志。
配置机器
rdc machine provision prod-2 --provider my-linode
此单一命令将:
- 通过 OpenTofu 在云服务提供商上创建虚拟机
- 等待 SSH 连接就绪
- 将机器注册到您的配置中
- 安装 renet 和所有依赖项
- 配置 Traefik 反向代理和 Cloudflare DNS(从同级机器自动检测基础域名,或显式传递
--base-domain)
| 选项 | 描述 |
|---|---|
--provider <name> | 云服务提供商名称(来自 add-provider) |
--region <region> | 覆盖提供商的默认区域 |
--type <type> | 覆盖默认实例类型 |
--image <image> | 覆盖默认操作系统镜像 |
--base-domain <domain> | 基础设施的基础域名。未指定时从同级机器自动检测 |
--no-infra | 完全跳过基础设施配置(代理 + DNS) |
--debug | 显示详细的配置输出 |
取消配置机器
rdc machine deprovision prod-2
通过 OpenTofu 销毁虚拟机并将其从配置中移除。除非使用 --force,否则需要确认。仅适用于通过 machine provision 创建的机器。
列出提供商
rdc machine provider list
设置默认值
设置默认值以避免在每条命令中重复指定:
rdc config field set --pointer /defaults/machine --new '"server-1"' # 默认机器
rdc config set team my-team # 配置存储的默认团队
设置默认机器后,您可以在命令中省略 -m server-1:
rdc repo create my-app -m my-server --size 10G
多配置管理
使用命名配置管理多个环境:
# 创建独立的配置
rdc config init production --ssh-key ~/.ssh/id_prod
rdc config init staging --ssh-key ~/.ssh/id_staging
# 使用特定配置
rdc repo list -m server-1 --config production
rdc repo list -m staging-1 --config staging
查看所有配置:
rdc config list
显示当前配置详情:
rdc config show