Self Hosting GrowthBook
GrowthBook consists of a NextJS front-end, an ExpressJS API, and a Python stats engine. Everything is bundled together in a single Docker Image.
In addition to the app itself, you will also need a MongoDB instance to store login credentials, cached experiment results, and metadata.
Don't want to install or host the app yourself? GrowthBook Cloud is a fully managed version that's free to get started.
Installation
You can use docker-compose to get started quickly:
# docker-compose.yml
version: "3"
services:
mongo:
image: "mongo:latest"
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=password
volumes:
- mongodata:/data/db
growthbook:
image: "growthbook/growthbook:latest"
ports:
- "3000:3000"
- "3100:3100"
depends_on:
- mongo
environment:
- MONGODB_URI=mongodb://root:password@mongo:27017/growthbook?authSource=admin
volumes:
- uploads:/usr/local/src/app/packages/back-end/uploads
volumes:
uploads:
mongodata:
Then, just run docker-compose up -d
to start everything and view the app at http://localhost:3000
The use of the mongo image within the docker-compose.yml is meant to quickly get a dev or staging environment up and running. For production you may want to use a more scalable and stable solution (ie. AWS DocumentDB, Google Cloud MongoDB Atlas, Azure Cosmos DB for Mongo, etc.) You may also want to have a Growthbook Proxy running as well for speed, scalability, sercurity, and real-time feature rollouts.
Docker Tags
Builds are published automatically from the GitHub repo main branch. The most recent commit is tagged with latest
.
GitHub Releases are also tagged using SemVer (e.g. 0.2.1
).
If you need to reference the image for a specific git commit for any reason, you can use the git shorthash tag (e.g. git-41278e9
).
Updating to Latest
If you are using docker-compose, and assuming you specify the growthbook container with :latest
, you can update with:
docker-compose pull growthbook
docker-compose stop growthbook
docker-compose up -d growthbook