Rakazo生产级加固清单:6步完成主机加固、注册白名单与定时备份
【免费下载链接】rakazoOpen-source Grok Bot alternative. Choose your own model and sandbox.项目地址: https://gitcode.com/gh_mirrors/ra/rakazo
Rakazo 是一款开源的 Grok Bot 替代方案,让你自选模型和沙箱,在自己的机器上运行 AI 机器人团队。要把 Rakazo 部署到公网服务器,一套完整的 Rakazo 生产加固流程必不可少:主机安全加固、注册白名单、定时备份。本文给你一份可照做的清单,6 步即可完成,让你的 Rakazo 服务器既安全又可靠。🛡️
第一步:准备专用 deploy 账户(仅密钥登录)
在部署前先创建并验证一个仅密钥登录的deploy账户,后续所有加固操作都基于它进行。
- 创建
deploy用户,并把自己的 SSH 公钥写入其~/.ssh/authorized_keys - 在新终端验证
ssh deploy@你的服务器能正常登录 - ⚠️ 先别急着关当前会话——下一步脚本会重载 SSH 配置,保持云控制台一直开着,直到新的密钥登录测试成功,防止把自己锁在门外
这一步看似简单,却是整个 Rakazo 生产加固的地基:账户不对,脚本会直接报错退出。
第二步:一条命令完成主机安全加固 🛡️
Rakazo 自带幂等的主机加固脚本,在部署目录中执行:
sudo DEPLOY_USER=deploy bash infra/compose/harden-host.sh脚本会一次性完成以下配置(详见 harden-host.sh):
| 加固项 | 做了什么 |
|---|---|
| 🔐 SSH 加固 | 禁用密码登录和 root 登录,仅允许deploy用户密钥登录,最多 3 次尝试(L31-L54) |
| 🚫 fail2ban 防暴力破解 | 10 分钟内 3 次失败即封禁 1 小时,且封禁时长加倍递增、最长 1 周(L58-L70) |
| 🧱 UFW 防火墙 | 默认拒绝入站流量,仅放行限流的 SSH、80、443(TCP+UDP)(L130-L137) |
| 📦 自动安全更新 | unattended-upgrades 每日自动安装安全补丁(L72-L82) |
| 🧯 AppArmor + auditd | 开启应用隔离,并对/etc/passwd、/etc/sudoers、SSH 配置等敏感文件建立审计规则 |
| ⚙️ 内核与网络防护 | 30 余条 sysctl 保守配置,如禁未授权 BPF、SYN Cookie、反向路径过滤(L84-L114) |
脚本结尾会提示你新开一个 SSH 会话验证登录,成功后才算完成。
第三步:收紧 Docker 守护进程配置 🐳
Rakazo 的机器人(bot)在独立容器里运行浏览器和桌面。生产单机方案通过 docker-compose.prod.yml 运行 Postgres、API、Worker、Web 和 Caddy(自动 HTTPS),机器人电脑默认放在远程 E2B 沙箱执行,宿主机不暴露 Docker supervisor 或浏览器容器:
同时为宿主机应用配套的 Docker 守护进程配置 docker-daemon.json:
live-restore: true:重启 Docker 不打断运行中的容器max-size: 10m / max-file: 3:容器日志有界,防止日志撑爆磁盘no-new-privileges: true:容器默认不得提权userland-proxy: false:走内核 NAT 路径,转发效率更高
另外注意:Postgres 只运行在 Compose 内部网络,不要把数据库端口发布到公网。
第四步:配置注册白名单与独立密钥 🔑
Rakazo 的.env决定了谁能注册、数据如何加密(示例见 .env.example):
SIGNUPS_ENABLED=true SIGNUP_ALLOWLIST=you@example.com,@company.comSIGNUPS_ENABLED只在 API首次启动时写入种子值;SIGNUP_ALLOWLIST非空时,每次 API 启动都会重新应用,非常适合"先内部试运行、再逐步放开"的节奏- 配好 SMTP 邮件后,白名单内(包括已有)用户必须验证邮箱才能登录;全新实例在无 SMTP 时首个白名单账户可免验证注册,所以请先在公网暴露之前创建好第一个账户
- 五个密钥必须是相互独立的随机值,切勿复制粘贴同一个字符串,且
.env永不入库:
openssl rand -hex 16 # POSTGRES_PASSWORD openssl rand -hex 32 # BETTER_AUTH_SECRET / ENCRYPTION_KEY / SCREEN_PROXY_SECRET / SANDBOX_SUPERVISOR_TOKEN密钥的完整清单与轮换规则见 self-host-secrets.md,公开部署的完整环境变量示例见 docs/self-host.md 的 "Public single-VM deployment" 小节。
第五步:启用定时备份(systemd 每晚自动执行)⏰
生产备份由 backup-prod.sh 完成,官方要求将其安装为/usr/local/sbin/rakazo-backup,并启用随仓库提供的 systemd 定时任务 rakazo-backup.timer(服务单元见 rakazo-backup.service)。
定时器每天02:15 UTC + 最多 15 分钟随机延迟运行一次,且Persistent=true——关机期间错过的备份会在开机后补跑。每次运行产出:
- ✅ 经过
pg_restore --list校验的 Postgres 自定义格式转储rakazo.dump - ✅ 应用数据卷归档
appdata.tgz(机器人工作区、技能、凭据文件) - ✅
SHA256SUMS校验文件,快照权限0600 - ✅ 自动轮转:只保留最近 7 天快照,存放于
/var/backups/rakazo
如果你的代码检出不在默认的/srv/rakazo,把RAKAZO_DEPLOY_DIR写入 root 属主的/etc/rakazo/backup.env(权限0600)即可,服务每次运行都会读取。
💡 本地快照能救命,但不能替代主机之外的加密备份(对象存储或云厂商快照),二者建议同时保留。
开发环境则更简单:直接运行 scripts/backup.sh 得到backups/<时间戳>/快照,配合 scripts/restore.sh 恢复;数据库导入失败会在单事务内整体停止,文件只在导入成功后才会恢复。
第六步:上线验证与日常自检 ✅
全部配置完成后,按这张自检表逐项打勾:
| 检查项 | 方法 | 期望结果 |
|---|---|---|
| 密钥登录 | 新开终端ssh deploy@主机 | 登录成功(旧密码方式应失败) |
| 防火墙 | sudo ufw status verbose | 仅放行 SSH/80/443 |
| 自动更新 | systemctl status unattended-upgrades fail2ban | 均处于 active 状态 |
| 健康检查 | curl --fail https://app.example.com/health | 返回 200 且含revision |
| 注册白名单 | 用非白名单邮箱尝试注册 | 无法注册 |
| 定时备份 | systemctl status rakazo-backup.timer | active (waiting) |
| 备份轮转 | ls /var/backups/rakazo | 快照目录不超过 7 个 |
健康检查提示:本地构建的镜像需要在构建时传入--build-arg GIT_SHA=$(git rev-parse HEAD),/health才会报告当前版本,方便日后排查"线上跑的是哪份代码"。
小结:Rakazo 生产加固 6 步回顾 🏁
- deploy 账户:仅密钥登录,验证后再动手
- harden-host.sh:一条命令搞定 SSH、防火墙、防破解、自动更新
- docker-daemon.json:日志有界、默认不提权
- 注册白名单 + 独立密钥:先把门关上,再开门迎客
- 定时备份:systemd 每晚自动快照,7 天轮转 + 异地加密备份
- 自检表:上线前逐项打勾
更多细节(升级、回滚、恢复、updater 边车)都可以在 docs/self-host.md 中找到。按这份清单走一遍,你的 Rakazo 就能安心跑在生产环境了。🎉
【免费下载链接】rakazoOpen-source Grok Bot alternative. Choose your own model and sandbox.项目地址: https://gitcode.com/gh_mirrors/ra/rakazo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考