跳至主要内容 跳至导航 跳至页脚

机器设置

创建配置、添加机器、配置服务器和设置基础设施。

机器设置

本页面将引导您完成首台机器的设置:创建配置、注册服务器、配置服务器,以及可选的公网访问基础设施配置。

步骤 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

您可以拥有多个配置(例如 productionstagingdev)。在任何命令上使用 --config 标志在它们之间切换。

步骤 2:添加机器

将您的远程服务器注册为配置中的机器:

rdc config machine add --name server-1 --ip 203.0.113.50 --user deploy
选项必填默认值描述
--ip <address>-远程服务器的 IP 地址或主机名
--user <username>-远程服务器上的 SSH 用户名
--port <port>22SSH 端口
--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

此命令将:

  1. 通过 SFTP 将 renet 二进制文件上传到服务器
  2. 安装 Docker、containerd 和 cryptsetup(如果尚未安装)
  3. 创建 rediacc 系统用户(UID 7111)
  4. 创建数据存储目录并为加密仓库做准备
选项必填默认值描述
--datastore <path>/mnt/rediacc服务器上的数据存储目录
--datastore-size <size>95%分配给数据存储的可用磁盘空间比例
--debugfalse启用详细输出以进行故障排除

每台机器只需运行一次设置。如果需要,可以安全地重新运行。

主机密钥管理

如果服务器的 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 termssh

基础设施配置

对于需要公开提供流量的机器,配置基础设施设置:

设置基础设施

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>MachinePublic IPv4 address, proxy entrypoints are only created for configured address families
--public-ipv6 <ip>MachinePublic 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

此命令:

  1. 将 renet 二进制文件部署到远程机器
  2. 配置 Traefik 反向代理、路由器和 systemd 服务
  3. 如果设置了 --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/linodehetznercloud/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

此单一命令将:

  1. 通过 OpenTofu 在云服务提供商上创建虚拟机
  2. 等待 SSH 连接就绪
  3. 将机器注册到您的配置中
  4. 安装 renet 和所有依赖项
  5. Configures Traefik proxy and Cloudflare DNS (auto-detects base domain from sibling machines, or pass --base-domain explicitly)
选项描述
--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-infraSkip 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