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

机器设置

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

机器设置

通过四个步骤让您的首台机器运行:创建配置、注册服务器、配置它,以及可选地为公网流量配置基础设施。

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

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

步骤 2:添加机器

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

rdc machine add 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 machine scan-keys server-1

查看所有已注册的机器:

rdc machine list

步骤 3:设置机器

为远程服务器安装所有必需的依赖项:

rdc machine setup server-1

此命令将:

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

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

数据存储后端

数据存储是每台机器上容纳加密仓库镜像的存储池。machine setup 默认创建本地数据存储:服务器自身磁盘上基于 loop 设备的 BTRFS 文件系统,通过 --datastore-size 设置大小(默认为可用磁盘的 95%)。这是几乎所有单机部署的正确后端,除了服务器本身外不需要任何其他东西。

数据存储容量

--datastore-size 接受百分比(95%)或绝对大小(50G1T)。数据存储之后可以在线扩容:

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

此命令:

  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 通配符 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/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 prod-2 --provider my-linode

此单一命令将:

  1. 通过 OpenTofu 在云服务提供商上创建虚拟机
  2. 等待 SSH 连接就绪
  3. 将机器注册到您的配置中
  4. 安装 renet 和所有依赖项
  5. 配置 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