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

快速开始

几分钟内在您的服务器上运行容器化服务。

快速开始

在您自己的服务器上部署加密、隔离的容器环境。无需云账户或 SaaS 依赖。一切都运行在您掌控的硬件上。


简介

核心概念

仓库是磁盘上的一个加密文件。可以移动、备份、分叉。它就是一个文件。挂载后,它变成一个文件夹,内含专属的 Docker 守护进程和您的应用数据。

可以把仓库想象成一个 USB 驱动器。它就在您手中,插入后系统就能看到并访问它。您的应用和数据完全可移植。在任何云服务商的任何机器上即插即用。

两个工具,两种角色:

  • rdc = 笔记本电脑上的 CLI(TypeScript,全局安装)
  • renet = 服务器上的编排器(Go 二进制文件,管理守护进程/网络/隔离)
  • RDC 在 config machine setup 过程中自动配置 renet。无需在服务器上手动设置。

架构介绍了安全模型。rdc vs renet说明了何时使用哪个工具。

1. 安装 CLI

curl -fsSL https://www.rediacc.com/install.sh | bash
rdc doctor     # 验证:Node、SSH 密钥、renet、Docker

Windows、Alpine、Arch:参见安装指南。完整系统要求:系统要求

2. SSH 密钥设置

rdc 通过 SSH 连接。服务器必须先信任您的公钥,rdc 才能访问。

# 生成密钥(如果已有则跳过)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519

# 将公钥复制到服务器(会提示输入密码)
ssh-copy-id -i ~/.ssh/id_ed25519 user@your-server-ip

# 告诉 rdc 使用哪个密钥
rdc config ssh set --key ~/.ssh/id_ed25519

此后每个 rdc 命令都使用此密钥进行认证。无需密码。

3. 添加服务器

rdc config machine add --name my-server --ip 192.168.1.100 --user muhammed
rdc config machine setup --name my-server  # 配置 renet + 创建数据存储

过程说明: 扫描 SSH 主机密钥,上传 renet 二进制文件,在服务器上初始化加密数据存储。准备好接收仓库。

数据存储大小、Ceph RBD、云服务商:服务器设置。SSH 故障:故障排除

4. 配置文件

rdc config show                            # 可读的摘要信息
cat ~/.config/rediacc/rediacc.json         # 原始 JSON:机器、仓库、存储、SSH 密钥

一个文件 = 一个环境。 复制到另一台笔记本电脑即可使用。


使用仓库

1. 创建仓库

rdc repo create --name my-app -m my-server --size 2G  # 创建 2 GB 加密仓库

创建加密卷,挂载它,并启动其 Docker 守护进程。仓库已注册到您的配置中,可以使用了。

调整大小、删除、验证:仓库

2. 应用模板

rdc repo template list                                        # 显示内置模板
rdc repo template apply --name app-postgres -m my-server -r my-app  # 部署 docker-compose.yml + Rediaccfile

模板提供 docker-compose.ymlRediaccfile 和辅助文件。如果没有模板(或您自己的 compose 文件),就没有可启动的内容。

3. 启动仓库

rdc repo up --name my-app -m my-server  # 运行 Rediaccfile up()
rdc repo list -m my-server                           # 查看机器上的所有仓库
rdc repo status --name my-app -m my-server  # 挂载状态、Docker、大小、加密

repo up 会在需要时自动挂载。无需额外参数。

4. VS Code

rdc vscode connect -m my-server -r my-app              # 打开 VS Code SSH,进入仓库沙箱

您正在加密卷内部编辑文件。docker ps 只显示此仓库的容器。保存、compose up、迭代。

5. rdc repo uprenet dev up

rdc repo uprenet dev up
运行位置您的笔记本电脑(CLI)VS Code 沙箱内
功能SSH → 自动挂载 → 运行 Rediaccfile up()直接运行 Rediaccfile up()
使用场景CI/CD、自动化、远程运维开发者内循环
隔离性从外部编排已在沙箱内部

演示流程: rdc repo template applyrdc vscode connect -m my-server -r my-app → 编辑 docker-compose.ymlrenet dev up → 看到应用运行 → 迭代。

Rediaccfile 结构:服务。何时使用哪个工具:rdc vs renet

6. 隔离模型

  • 通用用户rediacc):所有机器上使用相同的 UID。将仓库迁移到另一台服务器,文件所有权直接生效。无需为 chown 烦恼。
  • 每仓库独立 Docker 守护进程:每个仓库拥有自己的隔离 Docker 守护进程。docker ps 只显示本仓库的容器。
  • Landlock + OverlayFS 沙箱:VS Code shell 受文件系统限制。无法读取其他仓库。对 $HOME 的写入是每仓库的覆盖层。

隔离工作原理:架构。Rediaccfile 生命周期:服务

7. 终端、同步与隧道

终端:

rdc term connect -m my-server -r my-app                            # SSH 进入仓库沙箱
rdc term connect -m my-server -r my-app -c "curl localhost:3000"   # 运行命令并退出
rdc term connect -m my-server                                   # SSH 到机器(无沙箱)

文件同步(通过 SSH 的 rsync):

rdc repo sync upload -m my-server -r my-app --local ./src       # 将本地文件推送到仓库
rdc repo sync download -m my-server -r my-app --local ./backup  # 将仓库文件拉取到本地
rdc repo sync download -m my-server -r my-app --local ./backup --dry-run  # 先预览

隧道(SSH 端口转发到容器):

rdc repo tunnel -m my-server -r my-app  # 自动检测容器和端口
rdc repo tunnel -m my-server -r my-app --port 5432  # 隧道连接 Postgres
rdc repo tunnel -m my-server -r my-app --port 5432 --local 15432  # 自定义本地端口

运行隧道 → 在浏览器中打开 localhost:3000 → 从远程服务器访问实时应用。

同步、终端、VS Code 详情:工具


分叉与备份

1. 主仓库与分叉仓库

rdc repo fork --parent my-app -m my-server --tag experiment --up  # 即时 CoW 克隆 + 启动
rdc repo list -m my-server                                  # 显示:my-app(主仓库)+ my-app:experiment(分叉)
rdc repo delete --name my-app:experiment -m my-server  # 删除分叉,主仓库不受影响

即时、零拷贝克隆。 CoW(写时复制)。微秒级完成,不复制数据。块在一方写入前保持共享。

使用场景:

  • AI / ML: 分叉生产数据集,运行实验,丢弃或提升
  • DevOps: 分叉 → 测试迁移 → 失败则删除,成功则提升
  • 备份: 分叉 = 即时快照,推送到异地

分叉生命周期、跨机器分叉:仓库

2. 推送到另一台机器

# 将仓库推送到另一台机器
rdc repo push --name my-app -m my-server --to backup-server

# 推送并在目标机器上自动部署
rdc repo push --name my-app -m my-server --to backup-server --up

# 使用 CRIU 检查点推送(实时迁移,保留内存状态)
rdc repo push --name my-app -m my-server --to new-server --checkpoint --up

# 推送到新机器(通过云服务商自动配置)
rdc repo push --name my-app -m my-server --to new-server --provision linode --up

3. 推送到云存储(OneDrive、Google Drive、S3)

# 导入您的 rclone 配置作为存储后端
rdc config storage import --file ~/rclone.conf

# 列出可用的存储
rdc storage list

# 将仓库推送到云存储
rdc repo push --name my-app -m my-server --to my-s3-backup

# 列出存储上的备份
rdc repo backup list --from my-s3-backup -m my-server

--to 自动检测目标是机器还是存储后端。支持所有 rclone 支持的提供商:S3、R2、B2、OneDrive、Google Drive、SFTP 等。

4. 从远程拉取

# 从云机器拉取仓库到本地服务器
rdc repo pull --name my-app -m my-local-server --from cloud-server

# 从云存储拉取
rdc repo pull --name my-app -m my-local-server --from my-s3-backup

# 拉取并立即启动
rdc repo pull --name my-app -m my-local-server --from my-s3-backup --up

为什么要拉取? 您的本地机器在 NAT 之后。云端无法推送到您这里。但您可以访问云端。拉取将仓库带回本地。

完整流程: 在开发机上创建 → 推送到云端 → 在生产环境拉取 → --up。一个仓库,任意机器,任意云。

计划任务、自动备份、恢复:备份与恢复


代理与 SSL

1. 基础设施配置

rdc config infra set -m my-server  # 配置:基础域名、公共 IP、端口范围
rdc config infra show -m my-server  # 查看配置
rdc config infra push -m my-server  # 将代理配置推送到远程

路由工作原理:

  • Traefik 通过 rediacc.service_namerediacc.service_port 标签自动发现容器
  • 路由:{service}-{networkId}.{baseDomain} → 容器 IP:端口
  • SSL:通过 Cloudflare DNS-01 验证使用 Let’s Encrypt(自动续期,通配符证书)

2. 代理模板

rdc repo template apply --name proxy -m my-server -r infra  # 将代理部署到仓库
rdc repo up --name infra -m my-server  # 启动 Traefik

Traefik 现在将外部流量路由到此机器上的所有仓库。每个容器自动获得 HTTPS 端点。

# 访问 https://my-app.example.com → 路由到容器
# 数据库的 TCP/UDP 转发:
#   rediacc.tcp_ports=3306,5432 → 自动分配的外部端口

路由规则、DNS、TLS 配置:网络


后续步骤