rpki/scripts
2026-07-17 09:51:53 +08:00
..
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-17 09:51:53 +08:00
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-17 09:51:53 +08:00
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-14 14:44:40 +08:00
2026-07-17 09:51:53 +08:00

脚本说明

scripts/ 目录用于离线安装、启动、健康检查、关闭和清理。

所有脚本建议在仓库根目录执行:

bash scripts/00_0_install.sh

目录

推荐流程

# 1. 加载镜像并执行 pre-check。
bash scripts/00_0_install.sh

# 2. 启动真实 server 和 console。
bash scripts/01_start.sh --mode tcp

# 3. 检查 server 和 console 是否正常。
bash scripts/02_self_check.sh

# 4. 关闭 server 和 console。
bash scripts/03_shutdown.sh --mode tcp

# 5. 清理 server 运行产生的文件。
bash scripts/04_cleanup.sh

client 单独启动和关闭:

bash scripts/11_start_client.sh --mode tcp
bash scripts/12_shutdown_client.sh --mode tcp

支持的模式:

  • servertcptlssshbase
  • clienttcptlsssh

环境变量文件

01_start.sh 会读取根目录下的 environment.server。如果文件存在,会将其中所有 KEY=VALUE 同步到 deploy/server/.env

示例:

RPKI_RTR_CCR_HOST_DIR=/opt/rpki-rtr/data
RPKI_RTR_SLURM_HOST_DIR=/opt/rpki-rtr/data
RPKI_RTR_DB_HOST_DIR=/opt/rpki-rtr/rtr-db
RPKI_RTR_LOG_HOST_DIR=/opt/rpki-rtr/logs/server
RPKI_RTR_REPORT_HOST_DIR=/opt/rpki-rtr/report

11_start_client.sh 会读取根目录下的 environment.client。如果文件存在,会将其中所有 KEY=VALUE 同步到 deploy/client/.env

如果 environment.serverenvironment.client 不存在,对应脚本会跳过更新,直接使用已有的 deploy .env 文件。

00 安装

00_0_install.sh 用于从 images/ 目录加载离线 Docker 镜像,更新 deploy .env 中的镜像名,然后执行 pre-check。

默认镜像包查找规则:

  • serverimages/rpki-rtr-*.tar,排除 rpki-rtr-debug-client-*.tar
  • clientimages/rpki-rtr-debug-client-*.tar
  • consoleimages/rpki-console-ui-*.tar

也可以显式指定镜像包:

bash scripts/00_0_install.sh \
  --server-tar images/rpki-rtr-amd64-v1.2.tar \
  --client-tar images/rpki-rtr-debug-client-amd64-v1.2.tar \
  --console-tar images/rpki-console-ui-amd64-v1.0.tar

脚本会从 docker load 输出中解析真实镜像名,并写入:

  • deploy/server/.envRPKI_RTR_SERVER_IMAGE
  • deploy/console/.envRPKI_CONSOLE_UI_IMAGE

00 Pre-Check

00_1_pre_check.sh 会在 .precheck/ 下准备隔离测试数据,使用仓库里的 Docker Compose 文件启动 server 和 debug client然后检查

  • admin health 接口返回正常。
  • server 写出了 source report。
  • debug client 收到了 EndOfData 和 payload summary。
  • pre-check 日志中没有 fatal 错误模式。

相关辅助脚本:

  • 00_2_generate_ccr.sh:生成固定的 CCR 测试文件。
  • 00_2_pre_check_prepare.sh:创建 .precheck/ 数据、SLURM 文件和 env 文件。
  • 00_3_pre_check_cleanup.sh:停止 pre-check 容器并清理 .precheck/

01 启动 Server 和 Console

01_start.sh 用于启动真实的 RTR server 和 console。

bash scripts/01_start.sh --mode tcp

启动后脚本会检查容器是否进入 running 状态。如果容器启动后退出,脚本会打印 compose 状态和最近日志,然后报错退出,不会继续打印 Start Finished

常用参数:

bash scripts/01_start.sh --mode tls
bash scripts/01_start.sh --mode ssh
bash scripts/01_start.sh --wait 60
bash scripts/01_start.sh --env ./environment.server

注意console 不读取 environment.server,只使用 deploy/console/.env

02 自检

02_self_check.sh 用于检查 01_start.sh 启动的 server 和 console 是否正常。

bash scripts/02_self_check.sh

检查内容包括:

  • server 容器是否 running。
  • console 容器是否 running。
  • RTR TCP 端口是否可连接。
  • admin health 接口是否健康。
  • console 端口和 HTTP 根路径是否可访问。

如果启动较慢,可以增加等待时间:

bash scripts/02_self_check.sh --wait 120

03 关闭 Server 和 Console

03_shutdown.sh 用于关闭 01_start.sh 启动的服务。

bash scripts/03_shutdown.sh --mode tcp

脚本会先关闭 console再关闭 RTR server。

04 清理

04_cleanup.sh 用于删除 server 运行产生的目录:

  • logs/
  • report/
  • rtr-db/

推荐先关闭服务,再清理:

bash scripts/03_shutdown.sh
bash scripts/04_cleanup.sh

清理前脚本会检查 rpki-rtr 是否仍在运行。如果仍在运行,会拒绝清理。只有明确需要强制清理时才使用:

bash scripts/04_cleanup.sh --force

清理脚本会拒绝删除仓库根目录之外的路径。如果某一项清理失败,会继续清理后续项,最后返回失败。

10 生成证书

10_generate_certs.sh 用于生成 TLS/SSH 模式需要的本地证书材料(测试用)。

bash scripts/10_generate_certs.sh

11 启动 Client

11_start_client.sh 用于启动 RTR debug client。

bash scripts/11_start_client.sh --mode tcp
bash scripts/11_start_client.sh --mode tls
bash scripts/11_start_client.sh --mode ssh

如果 environment.client 存在,脚本会将其中所有 KEY=VALUE 同步到 deploy/client/.env;如果不存在,则直接使用已有的 deploy/client/.env

12 关闭 Client

12_shutdown_client.sh 用于关闭 11_start_client.sh 启动的 client。

bash scripts/12_shutdown_client.sh --mode tcp

关闭时建议使用和启动时相同的 mode。