GrowthBook切换ClickHouse Ubuntu部署域名配置及操作咨询
GrowthBook切换ClickHouse存储实操指南
一、Ubuntu Server环境适配ClickHouse的GrowthBook安装及自有域名绑定流程
- 前置依赖安装
先更新系统软件包,安装所需基础组件:
完成后安装Docker、Docker Compose组件,设置Docker开机自启,通过apt update && apt upgrade -y apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common nginx certbot python3-certbot-nginxdocker --version、docker compose version命令验证安装结果正常。 - 部署目录初始化
创建统一的服务持久化目录,避免数据丢失:mkdir -p /opt/growthbook/clickhouse/{data,logs} mkdir -p /opt/growthbook/app - GrowthBook服务编排配置
进入/opt/growthbook/app目录,创建docker-compose.yml配置文件,同时配置已有的MongoDB连接、ClickHouse连接参数,注意使用v2.7及以上版本的GrowthBook镜像才原生支持ClickHouse作为指标存储:
配置完成后在当前目录执行version: "3.7" services: growthbook: image: growthbook/growthbook:latest ports: - "127.0.0.1:3000:3000" environment: - NODE_ENV=production - MONGODB_URI=mongodb://替换为你已有的MongoDB连接地址/growthbook - CLICKHOUSE_HOST=clickhouse - CLICKHOUSE_PORT=8123 - CLICKHOUSE_DB=growthbook_metrics - CLICKHOUSE_USER=growthbook_ck - CLICKHOUSE_PASSWORD=替换为自定义的强访问密码 - APP_ORIGIN=https://替换为你绑定的自有域名 depends_on: - clickhouse restart: unless-stopped clickhouse: image: clickhouse/clickhouse-server:23.8-lts ulimits: nofile: soft: 262144 hard: 262144 volumes: - /opt/growthbook/clickhouse/data:/var/lib/clickhouse - /opt/growthbook/clickhouse/logs:/var/log/clickhouse-server restart: unless-stoppeddocker compose up -d启动所有服务,通过docker compose logs -f growthbook查看运行日志,确认MongoDB、ClickHouse连接无报错即可。 - 自有域名绑定配置
- 先将自有域名的A记录解析到Ubuntu服务器的公网IP地址。
- 编写Nginx反向代理配置,新建配置文件
/etc/nginx/sites-available/growthbook,内容如下:
server { listen 80; server_name 替换为你的自有域名; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }- 执行以下命令启用配置、重载Nginx:
ln -s /etc/nginx/sites-available/growthbook /etc/nginx/sites-enabled/ nginx -t systemctl reload nginx- 执行
certbot --nginx -d 替换为你的自有域名,按提示完成HTTPS证书申请,证书会自动配置续期,无需手动操作。
二、ClickHouse建库、专属访问用户正确操作步骤
你之前执行失败的核心原因是直接套用了MySQL语法逻辑,且命令是WordPress场景的MySQL初始化语句,和ClickHouse的权限体系、语法规则完全不兼容。ClickHouse不存在'用户名'@'访问地址'的用户定义格式,也不需要执行FLUSH PRIVILEGES触发权限生效。
- 进入ClickHouse命令行客户端
服务启动后执行以下命令进入交互终端,容器名称如果和示例不一致,可以通过docker ps查看实际的ClickHouse容器名替换:docker exec -it app-clickhouse-1 clickhouse-client - 创建专用数据库
执行以下命令创建GrowthBook指标存储专用库:CREATE DATABASE IF NOT EXISTS growthbook_metrics; - 创建专属访问用户
按最小权限原则创建用户,仅允许本地、Docker内网段访问,使用SHA256加密存储密码:CREATE USER IF NOT EXISTS growthbook_ck IDENTIFIED WITH sha256_password BY '替换为你之前配置的强密码' HOST LOCAL, HOST '172.16.0.0/12'; - 授权操作
给新建用户分配目标数据库的全部操作权限:GRANT ALL PRIVILEGES ON growthbook_metrics.* TO growthbook_ck; - 验证配置
退出当前客户端,执行以下命令用新建用户登录测试,能正常进入终端、执行SHOW TABLES;无报错即配置生效:
测试完成后输入docker exec -it app-clickhouse-1 clickhouse-client -u growthbook_ck --password 你设置的密码 -d growthbook_metricsexit退出终端即可。
注意:GrowthBook核心业务数据(用户信息、实验配置、特征标记等)依然存储在原有MongoDB中,ClickHouse仅承担实验事件存储、指标计算的时序查询负载,切换过程不会丢失原有业务数据。
内容的提问来源于stack exchange,提问作者AMRIT SHAHI
相关产品推荐
相关产品推荐

