最佳实践
CapRover 的设计目标是易用、直观。除此之外,这里还有一些小技巧可以帮助你更好地发挥 CapRover 的能力。
隐藏根域名
把技术栈信息从潜在攻击者那里隐藏起来通常是个好习惯。为了更安全,你可以让“根域名”比通配符 DNS 配置再深两级。例如,你在 DNS 面板里配置:
A RECORD:
*.server.domain.com >>>> 123.123.123.123然后在设置 CapRover 时,不要输入 server.domain.com,而是输入 something.server.domain.com。这样你访问面板就会是 captain.something.server.domain.com,而不是 captain.server.domain.com。接着你可以在应用的 HTTP 设置里,把应用域名设置为 myapp.server.domain.com,从而隐藏你的根域名。
请注意,这并不是万能的防护手段。它只是一个安全措施,用来提高攻击难度,让一些暴力破解攻击者几乎无法对你的 CapRover 基础设施下手。
自定义初始密码
CapRover 的默认密码是 captain42。通常这很安全,因为你可以在服务器安装完成后,马上在本地机器上运行 caprover serversetup 来修改密码。但这会留下一个很小的时间窗口(大约 30 秒),攻击者可能在你之前先改掉密码。这种情况非常罕见,但理论上可能发生,前提是攻击者需要准确知道某台机器的“窗口期”。为降低该风险,你可以在安装 CapRover 时通过在安装脚本里添加 DEFAULT_PASSWORD 环境变量,直接指定自定义初始密码。比如下面这条命令把默认密码从 captain42 改成了 myinitialpassword:
docker run -e ACCEPTED_TERMS=true -e DEFAULT_PASSWORD='myinitialpassword' -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover强制 HTTPS
强烈建议你第一时间为 CapRover 面板启用 HTTPS,并打开“Enforce HTTPS(强制 HTTPS)”。完成这些之后,再修改你的密码。注意:如果你使用 caprover serversetup 向导,上述步骤会自动完成,设置结束后无需再重复修改密码。
为 Git 使用服务账号
CapRover 最受欢迎的功能之一是从源码仓库(GitHub、BitBucket、GitLab 等)自动部署。要让它在私有仓库里工作,你需要输入用户名和密码,它们会以加密形式存储在服务器上。一个常见的最佳实践是:在 GitHub 等平台创建一个服务账号(机器人账号),只给它对特定仓库的最低权限(例如只读)。这样即使该服务账号被攻破,你的主账号依然安全,你也可以把被攻破的账号从仓库里移除。
构建时内存不足
在 Heroku 这类付费服务上构建时,构建过程通常发生在一台 CPU 和内存更充足的机器上。而使用 CapRover 时,你的构建是在同一台承载应用流量的服务器上完成的。应用不大时这没问题,但当应用变大、构建过程需要大量内存时,构建可能会崩溃。示例见 这个 issue。你可以采用以下几种方案:
1- 给服务器添加 swap,说明见 这里。
2- 在本地机器上构建。例如,对于 Create React App,详细流程见 这里。
3- 不过,最好的方案是使用独立的构建系统。指南见 这里。
为新应用自定义 NGINX 配置
已迁移到 NGINX 配置指南。
此处保留该段落以避免旧链接失效。