CapRover
服务器购买

使用 OpenStack 搭建 CapRover

为什么选择 OpenStack?

OpenStack 是对专有 IaaS(Infrastructure-as-a-Service)云标准最流行的替代方案。 无论是 AWS、Azure 这类大型云厂商,还是 Hetzner 这类较小的厂商,在资源部署方面都有各自不同的 API、配置方式和命名习惯。 OpenStack 让你可以在任何实现了 OpenStack 标准的云上采用相同的方式进行部署(你甚至可以自己搭一套 OpenStack),从而摆脱厂商绑定(vendor lock-in)。

配置 OpenStack 云服务商

不少云服务商都支持 OpenStack,包括 Infomaniak、VEXXHOST、OVHcloud、SharkTech 等。

在我见过的这些服务商里,Infomaniak 的 文档 最完善。

你需要按照服务商的说明获取 clouds.yaml 文件,用于将 OpenStack CLI 连接到你的云项目。

下面是 Infomaniak 的步骤简要摘要。 更详细的说明(含截图)请参考他们的 文档。 其他服务商的步骤应该也类似。

  1. 在公有云控制台中创建一个新项目,例如命名为 caprover-prod
  2. 按提示为 OpenStack 用户生成并设置一个密码。
  3. 进入项目的 “Manage users”,在唯一用户(以 PCU-... 开头)旁的下拉菜单中下载 clouds.yaml 文件。
  4. clouds.yaml 移动到 OpenStack 客户端能够找到的位置,例如你家目录下的 .config/openstack/clouds.yaml。 如果你之前已经配置过该文件,请把新的配置复制并追加到现有文件中。
  5. 打开 clouds.yaml,把云名称从 PCP-... 改成更易读的名字,例如 infomaniak-prod。这样当你新增更多环境,甚至接入其他 OpenStack 服务商时,都能持续往同一个文件里追加配置。
  6. 同时把第 2 步生成的密码填入该文件中。

安装 OpenStack CLI 并验证连接

  1. 安装 OpenStack 命令行客户端。 OpenStack 官方说明 通常会让你用 pip 安装,但为了避免污染全局 Python 包环境,建议改用 pipx
    pip install pipx
    pipx install python-openstackclient
    pipx inject python-openstackclient python-heatclient
  2. 使用下面的命令验证连接:
    openstack --os-cloud mycloud project list
    (注意:在这条以及后续命令中,请将 mycloud 替换为你在 clouds.yaml 中配置的实际名称,例如 vexxhost-devinfomaniak-prod。) 该命令应会显示你的默认项目名称。

部署 OpenStack Heat 模板文件

  1. 你需要生成一个 key,以便在需要时可以 SSH 登录到 CapRover 服务器。 你可以创建 ~/.ssh/openstack 目录,或把 key 存到你喜欢的任何位置。
    openstack --os-cloud mycloud keypair create caprover > ~/.ssh/openstack/mycloud.priv
    chmod 600 ~/.ssh/openstack/mycloud.priv
  2. 许多 OpenStack 服务商会提供默认的 VM 镜像集。 你可以用下面命令查看可用镜像:
    openstack --os-cloud mycloud image list
    建议选择最新的 Ubuntu LTS 版本。 你也可以按 这里 的说明上传自定义镜像。
  3. 使用下面命令查看可用 flavor:
    openstack --os-cloud mycloud flavor list
  4. 使用下面命令查看可用网络:
    openstack --os-cloud mycloud network list
  5. 最后,把这些信息组合起来部署 CapRover。请务必把占位符替换成你自己的实际值。
    openstack --os-cloud mycloud stack create -t https://raw.githubusercontent.com/caprover/caprover/master/dev-scripts/openstack/single-instance.yml --parameter image_id=<Ubuntu image ID> --parameter instance_type=<flavor> --parameter network=<network> caprover
    例如,下面的命令在 Infomaniak 上可用:
    openstack --os-cloud infomaniak-dev stack create -t https://raw.githubusercontent.com/caprover/caprover/master/se

tup/openstack/single-instance.yml --parameter image_id="Ubuntu 22.04 LTS Jammy Jellyfish" --parameter instance_type=a1-ram2-disk20-perf1 --parameter network=ext-net1 caprover


## 验证部署
1.  登录 OpenStack 控制台的 Web UI。
2.  打开 Instances,你应该能看到实例 `caprover-caprover_manager-...`,复制它的 IP 地址。
3.  在浏览器中访问 `<IP address>:3000`,你应该能看到 CapRover 仪表盘。
接下来你就可以按 [快速开始](/docs/get-started) 中的说明完成 CapRover 的后续配置。
4.  你也可以用命令 `ssh -i ~/.ssh/openstack/mycloud-prod.priv -o StrictHostKeyChecking=accept-new ubuntu@<CapRover manager IP>` SSH 登录到实例。
登录后,可用 `sudo less /var/log/cloud-init-output.log` 查看 Heat 模板的安装过程输出日志。