主题
部署
一条 compose 起全栈:nginx(HTTPS + 静态托管 + 反代)+ server + ClickHouse。
前置
- 云主机装好 Docker 与 Docker Compose
- 域名 DNS A 记录指向主机
- certbot 申请证书并挂到
deploy/certs/:
bash
sudo certbot certonly --standalone -d monitor.example.com
mkdir -p deploy/certs
ln -s /etc/letsencrypt/live/monitor.example.com/fullchain.pem deploy/certs/fullchain.pem
ln -s /etc/letsencrypt/live/monitor.example.com/privkey.pem deploy/certs/privkey.pem启动
bash
cp .env.example .env # 至少填 ADMIN_ORIGIN / MONITOR_ADMIN_PASSWORD
sed -i 's/__DOMAIN__/monitor.example.com/' deploy/nginx.conf
docker compose -f docker-compose.prod.yml up -d --build站点地图
| 路径 | 内容 |
|---|---|
/ | 产品落地页 |
/admin/ | 管理后台 |
/docs/ | 本文档站 |
/api/ | 监控服务端 |
初始超管密码
- 设置了
MONITOR_ADMIN_PASSWORD→ 即该值 - 未设置(生产)→ 首启生成随机密码,写入数据卷的
initial-admin-password.txt(0600 权限):
bash
docker compose -f docker-compose.prod.yml exec server cat /data/initial-admin-password.txt
# 登录后立即修改密码,并删除该文件
docker compose -f docker-compose.prod.yml exec server rm /data/initial-admin-password.txt数据与备份
| 卷 | 内容 |
|---|---|
clickhouse-data | 事件明细与聚合 |
server-data | 注册表/用户/规则(monitor.db)、sourcemap、报表产物 |
备份直接快照两个卷即可。
升级
bash
git pull && docker compose -f docker-compose.prod.yml up -d --build部署校验(SDK SRI)
固定版本 SDK 产物是内容寻址的(ms-<version>-<hash>.min.js),/sdk/manifest.json 的 file/integrity 字段即其指纹指针。为防部署窗口内指针与字节失配导致浏览器 SRI 拦截(issue #80),可让部署脚本在末尾走真实 HTTP 校验——在 deploy.env 配置:
bash
SITE_URL=https://monitor.example.comscripts/deploy.sh 会经 ms-server 容器内 node 执行 scripts/verify-sdk-sri.mjs: 分别经冷/热缓存路径拉取 manifest 与指纹文件、重算 SHA-384 断言一致,失配以 非零码失败。也可随时独立回归:
bash
node scripts/verify-sdk-sri.mjs https://monitor.example.com