Run Docker Compose:
The initial run of the
docker-compose up command will take care of all the dependencies, like MySQL, Presto, Maven, etc, will install all necessary Quix components and create a web-accessible Quix instance.
You will need an
.env file to run it. We will configure it in the next step.
To access Quix, navigate to:
git clone https://github.com/wix/quix.git
Most of the configuration you'll need is done through environment variables. docker-compose can load environment-variables easily through a
You should rename our env-example file to
.env, and modify it's values as needed.
By default, Quix works with demo Presto instance that runs inside Docker Compose.
To work with your real Presto DB, change
PRESTO_API environment variable.
Note that you need to specify full URL, including protocol, port and API version:
If you're running Presto locally, use the following instead of
- Your internal IP
Quix also uses MySQL to store notebooks and other application data. The default docker-compose uses a mysql container, so no further setup is needed. As an alternative, you can also use an external MySQL database, by specifying some of the following variables:
DB_NAME - defaults to
quix, must exist
DB_USER - defaults to
DB_PASS - defaults to empty password
DB_HOST - defaults to
DB_PORT - defaults to
DB_AUTO_MIGRATE - this sets the TypeORM
synchronizeflag. Defaults to
false. You probably only want to set this when running locally for development or if you don't care at all about your data.
Quix can work in two modes: multi-user mode, authenticated with Google OAuth, or in a single-user mode. This is controlled by the following variables:
- AUTH_TYPE - can be
If you use Google OAuth, you must supply the clientId and the secret:
Other variables related to authentication:
- AUTH_COOKIE - defaults to
__quix. When using
- AUTH_SECRET - the encryption key for the cookie. Must be provided.
- COOKIE_MAX_AGE - should be in seconds, default is 30 days.
Configuration for custom deployment
Running quix with
docker-compose should "just work", but when deploying quix, there are a couple more variables you might want to change:
- BACKEND_INTERNAL_URL - An address + port number (no protocol) where you have the backend service deployed and accessible to the frontend service.
- BACKEND_PUBLIC_URL - An address + port number (no protocol) to the backend service, made accessible to user's browser. In most scenarios, it's value is the same as
- ENABLE_APPMETRICS - Set this variable if you want to enable appmetrics-dash.
- APPMETRICS_PORT - The port where appmetrics dashboard will be exposed.
This takes into account a
docker-compose setup. Extrapolate as needed if you have some other custom deployment.
- Backup your data, if possible.
- Download an updated
docker-compose.prebuilt.yml. If you are not using the prebuilt images, you need to run
- Stop the frontend and backend services -
docker-compose stop backend frontend.
- Make sure all your environment variables are exported correctly in your current shell, specifically all the
- Run DB migrations:
docker-compose run --no-deps --rm frontend scripts/run_migrations.sh.
- Start services again
docker-compose up -d.