机器设置
本页面将引导您完成首台机器的设置:创建配置、注册服务器、配置服务器,以及可选的公网访问基础设施配置。
步骤 1:创建配置
配置是一个命名配置文件,用于存储您的 SSH 凭据、机器定义和仓库映射。可以将其理解为一个项目工作区。
rdc config init --name 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 config machine add --name 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 config machine scan-keys -m server-1
查看所有已注册的机器:
rdc config machine list
步骤 3:设置机器
为远程服务器安装所有必需的依赖项:
rdc config machine setup --name server-1
此命令将:
- 通过 SFTP 将 renet 二进制文件上传到服务器
- 安装 Docker、containerd 和 cryptsetup(如果尚未安装)
- 创建
rediacc系统用户(UID 7111) - 创建数据存储目录并为加密仓库做准备
| 选项 | 必填 | 默认值 | 描述 |
|---|---|---|---|
--datastore <path> | 否 | /mnt/rediacc | 服务器上的数据存储目录 |
--datastore-size <size> | 否 | 95% | 分配给数据存储的可用磁盘空间比例 |
--debug | 否 | false | 启用详细输出以进行故障排除 |
每台机器只需运行一次设置。如果需要,可以安全地重新运行。
主机密钥管理
如果服务器的 SSH 主机密钥发生变化(例如重新安装后),刷新已存储的密钥:
rdc config machine scan-keys -m server-1
此命令更新配置中该机器的 knownHosts 字段。
测试 SSH 连接
添加机器后,验证其是否可达:
rdc term connect -m server-1 -c "hostname"
此命令打开到机器的 SSH 连接并运行命令。如果成功,您的 SSH 配置正确。
如需更详细的诊断,运行:
rdc doctor
仅限云适配器:
rdc machine test-connection命令提供详细的 SSH 诊断,但需要云适配器。对于本地适配器,请直接使用rdc term或ssh。
基础设施配置
对于需要公开提供流量的机器,配置基础设施设置:
设置基础设施
rdc config infra set -m 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 | Public IPv4 address, proxy entrypoints are only created for configured address families |
--public-ipv6 <ip> | Machine | Public IPv6 address, proxy entrypoints are only created for configured address families |
--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 config infra show -m server-1
推送到服务器
生成并部署 Traefik 反向代理配置到服务器:
rdc config infra push -m server-1
此命令:
- 将 renet 二进制文件部署到远程机器
- 配置 Traefik 反向代理、路由器和 systemd 服务
- 如果设置了
--cf-dns-token,则为机器子域名创建 Cloudflare DNS 记录(server-1.example.com和*.server-1.example.com)
DNS 步骤是自动且幂等的, 它会创建缺失的记录、更新 IP 已变更的记录,并跳过已经正确的记录。如果未配置 Cloudflare 令牌,则会跳过 DNS 并显示警告。 Per-repo wildcard DNS records (for auto-routes) are created automatically when you run rdc repo up.
云端配置
您可以配置云服务提供商,让 rdc 使用 OpenTofu 自动配置机器,而无需手动创建虚拟机。
前提条件
安装 OpenTofu: opentofu.org/docs/intro/install
确保您的 SSH 配置包含公钥:
rdc config set --key ssh.privateKeyPath --value ~/.ssh/id_ed25519
添加云服务提供商
rdc config provider add --name 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 --name prod-2 --provider my-linode
此单一命令将:
- 通过 OpenTofu 在云服务提供商上创建虚拟机
- 等待 SSH 连接就绪
- 将机器注册到您的配置中
- 安装 renet 和所有依赖项
- Configures Traefik proxy and Cloudflare DNS (auto-detects base domain from sibling machines, or pass
--base-domainexplicitly)
| 选项 | 描述 |
|---|---|
--provider <name> | 云服务提供商名称(来自 add-provider) |
--region <region> | 覆盖提供商的默认区域 |
--type <type> | 覆盖默认实例类型 |
--image <image> | 覆盖默认操作系统镜像 |
--base-domain <domain> | Base domain for infrastructure. Auto-detected from sibling machines if not specified |
--no-infra | Skip infrastructure configuration (proxy + DNS) entirely |
--debug | 显示详细的配置输出 |
取消配置机器
rdc machine deprovision --name prod-2
通过 OpenTofu 销毁虚拟机并将其从配置中移除。除非使用 --force,否则需要确认。仅适用于通过 machine provision 创建的机器。
列出提供商
rdc config provider list
设置默认值
设置默认值以避免在每条命令中重复指定:
rdc config set --key machine --value server-1 # 默认机器
rdc config set --key team --value my-team # 默认团队(云适配器,实验性)
设置默认机器后,您可以在命令中省略 -m server-1:
rdc repo create --name my-app -m my-server --size 10G
多配置管理
使用命名配置管理多个环境:
# 创建独立的配置
rdc config init --name production --ssh-key ~/.ssh/id_prod
rdc config init --name 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