Install

🎉 Thank you for downloading Digital Twin as a Service.
This README provides a quick-start installation guide. For detailed configuration reference, see config.md.
[!IMPORTANT] The hostname
intocps.orgis used for illustration throughout this guide. Replace it with the actual server hostname of the installation.
Overview
This package installs the DTaaS as a multi-user web application with an integrated GitLab CE instance. GitLab serves as both the OAuth 2.0 authorisation provider and the DevOps backend for digital twin projects.

The docker-compose.yml starts the following services:
| Service | Purpose |
|---|---|
| traefik | Reverse proxy with TLS termination |
| client | DTaaS React frontend |
| user1 / user2 | JupyterLab user workspaces |
| libms | Library management microservice |
| traefik-forward-auth | OAuth 2.0 authorisation middleware |
| gitlab | Integrated GitLab CE (OAuth 2.0 provider) |
Prerequisites
| Requirement | Details |
|---|---|
| Docker Engine | v28 or later with Compose plugin |
| Domain name | A domain name (e.g. intocps.org) or IP address |
| TLS certificate | fullchain.pem and privkey.pem for the domain. Obtain via certbot or a certificate provider |
Quick Start
1. Create Configuration Files
Edit config/.env — set SERVER_DNS, USERNAME1, USERNAME2.
Leave the OAUTH_* variables as placeholders for now; they will be
filled after the GitLab instance is running (see step 5).
See config.md for a complete reference of every variable.
2. Create User Workspace Directories
3. Add TLS Certificates
Traefik falls back to self-signed certificates if these files are absent or invalid.
4. Start Services
Wait a few minutes for GitLab to become healthy:
5. Configure GitLab 
Once the GitLab container shows as healthy:
- Log in to
https://intocps.org/gitlabasroot. The initial password is insideconfig/gitlab/initial_root_password.
[!WARNING] This file is deleted 24 hours after the first start. Save the password immediately.
-
Create user accounts (see GitLab docs). The usernames must match
USERNAME1/USERNAME2inconfig/.env. -
Register two OAuth 2.0 applications in GitLab (Admin Area → Applications):
-
DTaaS Client Authorization — for the React SPA frontend. See client auth docs.
-
DTaaS Server Authorization — for Traefik forward-auth backend. See server auth docs.
-
Update configuration files (
config/.envandconfig/client.js) with the generated OAuth 2.0 tokens: - Set
REACT_APP_CLIENT_IDandREACT_APP_AUTH_AUTHORITYinconfig/client.js. -
Set
OAUTH_URL,OAUTH_CLIENT_ID, andOAUTH_CLIENT_SECRETinconfig/.env. -
Update user permissions in
config/conf.server. -
Reload the services:
6. Verify 
| URL | Expected result |
|---|---|
https://intocps.org |
DTaaS web interface (redirects to GitLab sign-in) |
https://intocps.org/gitlab |
Integrated GitLab instance |
https://intocps.org/user1 |
User 1 workspace (after sign-in) |
https://intocps.org/user2 |
User 2 workspace (after sign-in) |
Stop
Directory Layout
:framed_picture: References
Image sources: Traefik logo, gitlab