Documentation
Configuration

Overview

Cube is configured via environment variables and configuration options in a configuration file. Usually, both would be used to configure a Cube deployment in production.

Environment variables

Environment variables are mostly used for configuration that is defined statically and is not supposed to change while a Cube deployment is running.

For example, CUBEJS_DATASOURCES defines a list of data sources to connect to; changing that list would require the deployment to restart.

See the environment variables reference for all supported options.

Cube Core

You can set environment variables in any way supported by Docker (opens in a new tab), e.g., a .env file or the environment option in the docker-compose.yml file.

Cube Cloud

You can set environment variables in Settings → Configuration:

Cube Cloud Environment Variables Screen

Configuration options

Configuration options are mostly used for configuration that is defined programmatically and applied dynamically while a Cube deployment is running.

For example, query_rewrite provides a way to inspect, modify, or restrict every query that is being processed by Cube.

Configuration options take precedence over environment variables. See the configuration options reference for all supported options.

cube.py and cube.js files

Configuration options can be defined either using Python, in a cube.py file, or using JavaScript, in a cube.js file in the root folder of a Cube project.

Python
JavaScript

Both ways are equivalent; when in doubt, use Python.

Support for Python and the cube.py file was introduced in v0.34.

Cube Core

When using Docker, ensure that the configuration file and your data model folder are mounted to /cube/conf within the Docker container.

Cube Cloud

You can edit the configuration file by going into Development Mode and navigating to the Data Model page.

Runtimes and dependencies

As of v0.34, Cube uses Python v3.9 and Node.js v16.20 as runtime environments for the code of configuration and dynamic data models.

It's recommended to use requirements.txt and package.json files to specify dependencies for your Python and JavaScript code, respectively.

Cube Core

If you have specified Python packages in the requirements.txt file, make sure to install them by running pip install -r requirements.txt inside the Docker container.

If you have specified npm packages in the package.json file, make sure to install them by running npm install inside the Docker container. Alternatively, you can run npm install on your local machine and mount the node_modules folder under /cube/conf in the Docker container; however, if your dependencies contain native extensions, they might not work when provided this way.

To automate the installation of dependencies, build and use a custom Docker image.

Cube Cloud

Cube Cloud automatically installs dependencies from requirements.txt and package.json files.

Development mode

Cube can be run in an insecure, development mode by setting the CUBEJS_DEV_MODE environment variable to true. Putting Cube in development mode does the following:

  • Disables authentication checks
  • Enables Cube Store in single instance mode
  • Enables background refresh for in-memory cache and scheduled pre-aggregations
  • Allows another log level to be set (trace)
  • Enables Developer Playground on http://localhost:4000
  • Uses memory instead of cubestore as the default cache/queue engine
  • Logs incorrect/invalid configuration for externalRefresh /waitForRenew instead of throwing errors
  • Allows access to non-public cubes and members through the /meta endpoint and for querying through the REST, GraphQL or SQL APIs.