Skip to content

Self-hosting the Dolos web app

If you do not want to use our free to use instance (dolos.ugent.be/server), it is also possible to host your own instance.

Local hosting using docker-compose

These instructions are for local hosting only. The section external hosting explains how you create a public instance of Dolos.

Docker is a containerization technology that allows you to run our service without the hassle of installing the different dependencies and services yourself.

Run Dolos on your own system using these instructions:

  1. Ensure Git, Docker Engine and Docker Compose are installed on the system where you will be running Dolos on.
  2. In a terminal, clone the Docker repository with Git and enter the new directory
  git clone https://github.com/dodona-edu/dolos.git
  cd dolos/
  1. Run docker-compose pull in this directory to pull and fetch all needed container images.
  2. Run docker pull ghcr.io/dodona-edu/dolos-cli:latest to ensure the container running the Dolos CLI is present and up-to-date.
  3. Run docker-compose up to start the services.

You can now visit the web app running locally on http://localhost:8080. The API is available on http://localhost:3000.

WARNING

The Dolos web app launches a new docker container for each analysis. For this reason, we mount the docker socket (/var/run/docker.sock) in the docker-compose.yml configuration.

This grants the web app full control over your docker instance.

External hosting without docker-compose

To host your own public instance of Dolos, you will need some extra security precautions that are not included in the docker-compose.yml configuration:

  • configure a domain name and subdomain or path for the API
  • configure HTTPS
  • configure serving static files for the front-end Web UI

This is typically handled by using a reverse proxy like Nginx, Apache, Traefik, ...

As this configuration is highly dependent on your situation, we recommend contacting us describing what you want to achieve.

Configurable environment variables

Please refer to the documentation of the dolos-api and dolos-web components for information how to build and setup the API and front-end.

Below is a list of configurable environment variables:

Dolos web

Environment variables of the dolos-web service (the front-end web UI):

  • VITE_API_URL: full URL (format: https://{hostname}:{port}) where the API service is hosted
  • VITE_MODE: should be server to build for the web app_

Dolos API

Environment variables of the dolos-api service (the API server):

  • DOLOS_API_URL: full URL where Dolos API will be hosted, including the subdirectory (e.g. http://localhost:3000/api)
  • DOLOS_API_FRONT_END_URL: full URL where the front-end is hosted (format: https://{hostname}:{port})
  • DOLOS_API_DATABASE_{HOST,USERNAME,PASSWORD}: hostname, username and password of the database server (MariaDB or MySQL)

INFO

When hosting the Dolos API on a subdirectory (for example: /api/) using Docker behind a reverse proxy (nginx, apache, haproxy), there is currently a bug where Rails is generating incorrect URL's not respecting this subdirectory.

See issue#1523 on GitHub for more information and possible workarounds.

Made by Team Dodona with ❤️