Skip to content

Configuring Docker Compose

The STELLA Server is also primarily configured via Docker Compose and a set of environment variables.

Both configuration and runtime behavior are controlled through the docker-compose.yml files provided in the repository.


Important

Two Docker Compose files are provided:

  • docker-compose.yml — standard deployment
  • docker-compose-dev.yml — development deployment with hot reloading

The same environment variables are used by both files.
The choice of file only affects developer ergonomics (e.g. local code reloads), not system behavior or configuration semantics.

Setting up Credentials

Make sure to change the username and passwords in the Dockerfile for the following env variables:

Important Security Notice

Before deploying the STELLA Server in any environment, you must change the default usernames and passwords defined for the following environment variables. The provided values are placeholders and are not safe for production use.

Environment Variable Description
ADMIN_MAIL Email address for the administrator account
ADMIN_PASS Password for the administrator account
SITE_MAIL Email address for the site account
SITE_PASS Password for the site account
EXPERIMENTER_MAIL Email address for the experimenter account
EXPERIMENTER_PASS Password for the experimenter account

These credentials are used to initialize user accounts in the STELLA system.
Replace all default values in the Dockerfile or Docker Compose configuration before starting the containers to prevent unauthorized access.

Full Docker Compose Reference

The complete Docker Compose configuration is included directly from the repository:

name: stella

networks:
  stella-shared:
    name: stella-shared
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.100.0/24

services:
  server:
    build: ./web
    expose:
      - "8000"
    ports:
      - "8000:8000"
    networks:
      stella-shared:
        aliases:
          - stella-server
    environment:
      - FLASK_APP=app/app
      - FLASK_CONFIG=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PW=change-me
      - POSTGRES_DB=postgres
      - POSTGRES_URL=db-server:5432
      - SECRET_KEY=change-me
      - AUTOMATOR_GH_KEY=
      - ADMIN_MAIL=admin@stella-project.org
      - ADMIN_PASS=pass
      - SITE_MAIL=site@stella-project.org
      - SITE_PASS=pass
      - EXPERIMENTER_MAIL=experimenter@stella-project.org
      - EXPERIMENTER_PASS=pass

    command: gunicorn -w 2 --timeout 60 -b :8000 'app.app:create_app()'
    depends_on:
      - db-server

  db-server:
    image: postgres:16
    expose:
      - "5432"
    ports:
      - "5432:5432"
    networks:
      - stella-shared
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=change-me
      - POSTGRES_DB=postgres

  nginx:
    restart: always
    build: ./nginx
    ports:
      - "80:80"
      # - 443:443
    # volumes:
    #   - /etc/ssl:/etc/ssl
    #   - /etc/letsencrypt/live:/etc/letsencrypt/live
    #   - /etc/letsencrypt/archive:/etc/letsencrypt/archive
    networks:
      - stella-shared
    depends_on:
      - server