Installation
Prerequisites
Section titled “Prerequisites”- Domain name (eg dataspace.acme.com) or internal DNS name (eg dataspace.local)
- Including two subdomains
api.dataspace...
app.dataspace...
- Including two subdomains
- 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)
Hardware Requirements
Section titled “Hardware Requirements”Minimum Viable Configuration
Section titled “Minimum Viable Configuration”- CPU: 8 cores
- RAM: 16 GB
- Storage: 500 GB SSD
- Network: 1 Gbps
Production-Ready Configuration
Section titled “Production-Ready Configuration”- 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.
Installation Steps
Section titled “Installation Steps”Script Download
Section titled “Script Download”Download and execute the Installation Script with the following command:
wget -q https://raw.githubusercontent.com/dataspaceswiss/Installer/refs/heads/main/install.shchmod +x ./install.shsudo ./install.shInstallation Process
Section titled “Installation Process”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
Manual Configuration
Section titled “Manual Configuration”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.
Firewall
Section titled “Firewall”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 passthroughGit Setup (Optional)
Section titled “Git Setup (Optional)”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.
# Navigate to DataSpace directorycd /opt/dataspaceswiss/DataSpace
# Initialize a local git repositorygit initAdd the volume directory to the .gitignore:
volume/volume_backup/metrics/metrics/host_metrics/Starting the Services
Section titled “Starting the Services”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.
# Switch to dataspace usersu - dataspace
# Navigate to DataSpace directorycd /opt/dataspaceswiss/DataSpace
# Run update script to start services./update.shSee Operations for more details about the update.sh script.
Folder Structure
Section titled “Folder Structure”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