Installation
Requirements
Running
Run Docker Compose:
docker-compose up
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:
http://localhost:3000
Clone repository
git clone https://github.com/wix-incubator/quix.git
Configuration
Most of the configuration you'll need is done through environment variables. docker-compose can load environment-variables easily through a .env file.
You should rename our env-example file to .env, and modify it's values as needed.
Presto
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:
MODULES_PRESTO_API -
http://presto.my.domain:8181/v1If you're running Presto locally, use the following instead of
localhost:- Your internal IP
- Or
host.docker.internal(macOS only)
DB
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 existDB_USER - defaults to
rootDB_PASS - defaults to empty password
DB_HOST - defaults to
dbDB_PORT - defaults to
3306DB_AUTO_MIGRATE - this sets the TypeORM
synchronizeflag. Defaults tofalse. You probably only want to set this when running locally for development or if you don't care at all about your data.
User authentication
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
fakeorgoogle. Defaults tofake(single-user mode).
If you use Google OAuth, you must supply the clientId and the secret:
- GOOGLE_SSO_CLIENT_ID
- GOOGLE_SSO_SECRET
Other variables related to authentication:
- AUTH_COOKIE - defaults to
__quix. When usinggoogleauth, must be provided. - 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
BACKEND_INTERNAL_URL. - ENABLE_APPMETRICS - Set this variable if you want to enable appmetrics-dash.
- APPMETRICS_PORT - The port where appmetrics dashboard will be exposed.
Upgrading Quix
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.ymlordocker-compose.prebuilt.yml. If you are not using the prebuilt images, you need to rundocker-compose build. - 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
DB_*variables. - Run DB migrations:
docker-compose run --no-deps --rm frontend scripts/run_migrations.sh. - Start services again
docker-compose up -d.