Installation Instructions
The OpenHEXA platform is composed of multiple components, each having its own repository:
- BLSQ/openhexa-app: the App component (Django app for business logic & API)
- BLSQ/openhexa-frontend: the Frontend component, a React/NextJS application
- BLSQ/openhexa-notebooks: the Notebooks component, a customized JupyterHub setup
The recommended way to deploy OpenHEXA is to use Kubernetes. For a local development install, we recommend to use Docker.
Development installation¶
As each component requires a different stack, for local development, we recommend to use Docker. We provide Docker Compose manifest to deploy OpenHEXA apps and Notebooks. As for the frontend, it requires a Node local environment to be directly run.
In brief, when the 3 components Git repositories have been locally cloned, you can run them in order:
- the app with the pipelines runner and scheduler,
- the notebook, then
- the frontend.
You'll find detailed instructions for local development in each component README:
Even if the component is containerized, changing your local working copy will be taken in account.
Below, you'll find a short version to setup quickly a development environment for OpenHEXA:
Requirements¶
App¶
git clone git@github.com:BLSQ/openhexa-app.git
cp .env.dist .env
# edit the .env file to configure your instance
docker network create openhexa
docker compose build
docker compose run app fixtures
docker compose --profile pipelines up
Two URL endpoints are now exposed locally on the port 8000:
http://localhost:8000/graphqlfor the GraphQL APIhttp://localhost:8000/readyfor the readiness endpoint
Notebooks¶
git clone git@github.com:BLSQ/openhexa-notebooks.git
docker compose -f docker-compose.yml -f docker-compose-withdockerhub.yml up
Frontend¶
git clone git@github.com:BLSQ/openhexa-frontend.git
npm install
cp .env.local.dist .env.local
# edit the .env file to configure your instance
npm run dev
The web app is then served locally on the port 3000. You can browse and login at http://localhost:3000. The default credentials are root@openhexa.org/root.
Deploying OpenHEXA¶
Kubernetes is the recommended way to deploy OpenHEXA.
Kubernetes¶
🚧 For now, the different components must be installed separately. We are currently working on a Helm chart that will facilitate the deployment of OpenHEXA. In the meantime, you will find below a high-level overview of how OpenHEXA is deployed on a Kubernetes cluster. Don't hesitate to reach out if you need assistance with an OpenHEXA deployment.
Pre-requisites¶
To deploy OpenHEXA, you will need:
- A Kubernetes cluster
- A PostgreSQL server
- A way to provision object storage, such as AWS S3, Google Cloud GCS, or an open-source equivalent
App deployment¶
The openhexa-app component is a rather standard Django application. Deploying it with Kubernetes consists in:
- Creating a Kubernetes
Deployment, aServiceand exposing it with anIngress - Creating a
Deploymentresources for thedatasources_workercommand - Creating
CronJobin Kubernetes for theenvironment_syncanddatasource_synccommands - Creating a
Secretand aConfigMapfor the values required by the app component (seesettings.pyfor the parameter reference)
Frontend deployment¶
The openhexa-frontend component is a NextJS React application. Deploying it with Kubernetes consists in:
- Creating a Kubernetes
Deployment, aServiceand exposing it with anIngress - Creating a
Secretand aConfigMapfor the values required by the app component (see.env.local.distfor the parameter reference)
Notebooks deployment¶
The recommended way to deploy the OpenHEXA notebooks component is to use the Helm Chart provided by the Zero To Kubernetes project.
Pipelines deployment¶
The recommended way to deploy the OpenHEXA pipeline component is to use the Helm Chart provided by Airflow.
On a single machine¶
It's possible to install OpenHexa without Kubernetes on a single machine. It requires a recent Debian-based Linux distribution and Docker. This method is still under development. You'll find all the instructions directly on the main project OpenHexa.