Installation
DATAZONE Control is deployed as a Docker Compose stack. The installation includes the backend, frontend, database, and reverse proxy.
Prerequisites
- Linux server with Docker and Docker Compose
- At least 2 GB of RAM and 10 GB of storage
- Network access to the managed hosts (port 443 outbound for agents)
Installation with Docker Compose
1. Clone the Repository
git clone https://gitlab.datazone.de/kidev/datazone-control.git
cd datazone-control2. Configure Environment Variables
Create a .env file in the project directory:
# Database
POSTGRES_PASSWORD=YourSecurePassword
DATABASE_URL=postgresql://datazone:YourSecurePassword@db:5432/datazone_control
# Backend
SECRET_KEY=YourSecretKey
CORS_ORIGINS=https://control.yourdomain.com
# Optional: Email for reports
SMTP_HOST=smtp.yourdomain.com
SMTP_PORT=587
SMTP_USER=reports@yourdomain.com
SMTP_PASSWORD=SmtpPassword3. Start the Stack
docker compose up -d --buildThis starts the following containers:
| Container | Service | Port |
|---|---|---|
datazone-db | PostgreSQL Database | 5432 (internal) |
datazone-redis | Redis Message Queue | 6379 (internal) |
datazone-backend | Flask API + SocketIO | 5001 (internal) |
datazone-frontend | React (Nginx) | 80 (internal) |
datazone-nginx | Reverse Proxy | 8080 |
4. Verify Accessibility
Open https://control.yourdomain.com in your browser. You should see the login screen.
Reverse Proxy (Optional)
For production environments, we recommend an upstream reverse proxy with SSL:
Nginx Example
server {
listen 443 ssl;
server_name control.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/control.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/control.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}Important
WebSocket support (Upgrade and Connection headers) must be enabled, as DATAZONE Control uses WebSockets for real-time updates, remote shell, and tunnels.
Tunnel Ports
For the tunnel functionality, ports 20000-25000 must be reachable on the backend server. These are used dynamically for SSH, RDP, and HTTP tunnels.
# Firewall rule (ufw)
ufw allow 20000:25000/tcpUpdate
cd /path/to/datazone-control
git pull
docker compose up -d --buildDatabase migrations are executed automatically when the backend starts.
Next Steps
After installation, proceed with the First Login.