Skip to content

部署 ​

一条 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.com

scripts/deploy.sh 会经 ms-server 容器内 node 执行 scripts/verify-sdk-sri.mjs: 分别经冷/热缓存路径拉取 manifest 与指纹文件、重算 SHA-384 断言一致,失配以 非零码失败。也可随时独立回归:

bash
node scripts/verify-sdk-sri.mjs https://monitor.example.com