Skip to main content

Production Infrastructure

This guide covers how TUMApply is deployed to the testserver and production environments.


Docker Setup

TUMApply uses Docker Compose for server deployments. The configuration files are located in the docker/ directory:

FilePurpose
docker/compose.yamlTestserver deployment (MySQL + TUMApply + Nginx)
docker/compose-prod.yamlProduction deployment (MySQL + TUMApply + Nginx)
docker/mysql.envMySQL environment variables (local defaults)
docker/tumapply.envTUMApply environment variables (local defaults)

Both compose files run the full stack:

  • MySQL — database with UTF-8 support
  • TUMApply — the application image pulled from ghcr.io/ls1intum/tum-apply
  • Nginx — reverse proxy with SSL termination using TUM certificates

Environment Variables & Secrets

The .env files in the docker/ directory (mysql.env, tumapply.env) contain local defaults only. On the testserver and production, these values are overwritten by GitHub Variables and Secrets configured in the repository settings.

All sensitive configuration (database credentials, API keys, etc.) must be managed via GitHub Secrets — never commit secrets to the repository.


Deployment Workflows

Both testserver and production deployments are triggered via Helios, which in the background triggers GitHub Actions workflows.

TestserverProduction
Compose filedocker/compose.yamldocker/compose-prod.yaml
URLtumapply-test.aet.cit.tum.detumapply.aet.cit.tum.de
Workflowdeploy-to-testserver.ymldeploy-to-production.yml
Deployed viaHelios (by developers)Helios (by admins)
PurposeTesting PR branchesLive application

Both workflows:

  1. Take a branch name and target environment as input
  2. Use the respective compose file
  3. Deploy to /opt/tum-apply on the target vm
warning

Production deployments should only be triggered by an admin after thorough testing on the testserver.