Skip to content

Installation

  • Domain name (eg dataspace.acme.com) or internal DNS name (eg dataspace.local)
    • Including two subdomains
      api.dataspace...
      app.dataspace...
  • Email and SMTP credentials for the ADMIN user
  • GitHub Key for pulling container images (Provided by DataSpace)
  • License Key for the platform (Provided by DataSpace)
  • Provisioned hardware with access to the internet
    (Or whitelisted access to github.com and dataspace.ch)
  • CPU: 8 cores
  • RAM: 16 GB
  • Storage: 500 GB SSD
  • Network: 1 Gbps
  • CPU: 16+ cores
  • RAM: 64+ GB
  • Storage: 1+ TB NVMe SSD
  • Network: 10 Gbps

The data transformation containers are the key differentiator here. They will dynamically consume resources based on your data processing workloads, so peak usage scenarios when multiple transformation jobs are running concurrently need to be taken into consideration.

For more information about this topic, please refer to the Scalability page.

Download and execute the Installation Script with the following command:

Terminal window
wget -q https://raw.githubusercontent.com/dataspaceswiss/Installer/refs/heads/main/install.sh
chmod +x ./install.sh
sudo ./install.sh

The installation script performs the following actions:

  • Creates a dedicated user dataspace (defaults to UID/GID 1007)
  • Installs Docker if not present
  • Sets up the directory structure in /opt/dataspaceswiss/DataSpace
  • Downloads configuration files from GitHub
  • Configures environment variables
  • Sets up secrets
  • Registers an automatic startup service

Manually set up the missing variables in the .env file and secrets in the secrets/ folder

Please refer to the Configuration for more details about the individual configuration options.

The infrastructure is set up with only one entry point into the system, being Caddy (the Reverse Proxy). It maps subdomains to ports and routes them internally to the appropriate services. This ensures that services like the database are never exposed to the outside world, and public services are all routed through the HTTPS protocol to ensure the data is encrypted in transit.

Enable the following ports:

Enable TCP Port 80 for HTTP passthrough (Required for initial certificate provisioning)
Enable TCP Port 443 for HTTPS passthrough

It is common for configurations to keep changing. Therefore, it is recommended to set up a local git repository to track the configurations and environment variables.

Terminal window
# Navigate to DataSpace directory
cd /opt/dataspaceswiss/DataSpace
# Initialize a local git repository
git init

Add the volume directory to the .gitignore:

volume/
volume_backup/
metrics/
metrics/host_metrics/

When everything is configured, you have to first run the ./update.sh script in order to bootstrap the database. Once all steps are successfully passed, all services will automatically start in the background.

Terminal window
# Switch to dataspace user
su - dataspace
# Navigate to DataSpace directory
cd /opt/dataspaceswiss/DataSpace
# Run update script to start services
./update.sh

See Operations for more details about the update.sh script.

After the installation is completed, the final folder structure should look something like this:

📁 /opt/dataspaceswiss/DataSpace
├── .env
├── docker-compose.yml
├── startup.sh
├── update.sh
├── 📁 caddy
│ ├── Caddyfile
│ └── blocked_ips.caddyfile
├── 📁 secrets
│ ├── gh_key.txt
│ ├── license_key
│ ├── platform_admin_password
│ ├── db_password
│ ├── encryption_key
│ └── smtp_server_password
├── 📁 metrics
│ ├── 📁 host_metrics
│ ├── metrics_collector.py
├── 📁 volume
│ ├── 📁 DataSpace_data
│ ├── 📁 DataSpace_db_backup
│ └── 📁 DataSpace_db_data
└── 📁 volume_backup