sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg lsb-release apt-transport-https ca-certificates
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
newgrp docker
ETCD_VER=v3.5.9
curl -L https://github.com/etcd-io/etcd/releases/download/$ETCD_VER/etcd-$ETCD_VER-linux-amd64.tar.gz -o etcd.tar.gz
tar xzf etcd.tar.gz
sudo mv etcd-$ETCD_VER-linux-amd64/etcd* /usr/local/bin/
rm -rf etcd*
nohup /usr/local/bin/etcd --name demo-etcd --listen-client-urls http://0.0.0.0:2379 \
--advertise-client-urls http://127.0.0.1:2379 > /var/log/etcd.log 2>&1 &
Verify:
/usr/local/bin/etcdctl --endpoints=http://127.0.0.1:2379 endpoint status
docker pull projectdps/controller:latest
docker pull projectdps/worker:latest
docker pull projectdps/cli:latest
docker run -d --name dps-controller --restart unless-stopped \
-p 9000:9000 -p 9100:9100 \
-e ETCD_ENDPOINTS=http://host.docker.internal:2379 \
projectdps/controller:latest
Note: if host.docker.internal is unavailable on Linux, use host network or 127.0.0.1 and run with --network host:
docker run -d --name dps-controller --restart unless-stopped --network host \
-e ETCD_ENDPOINTS=http://127.0.0.1:2379 \
projectdps/controller:latest
docker run -d --name dps-worker --restart unless-stopped --network host \
-e CONTROLLER_ADDR=http://127.0.0.1:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
projectdps/worker:latest
docker run --rm -v ~/.dps:/root/.dps projectdps/cli:latest dpsctl configure --controller http://127.0.0.1:9000
# or, to copy a binary locally if provided in release:
# curl -Lo dpsctl https://example.com/releases/dpsctl && chmod +x dpsctl && sudo mv dpsctl /usr/local/bin/
dpsctl submit --name hello-demo --image busybox --cmd "sh -c 'echo Hello DPS; sleep 30'"
Or via controller UI at http://localhost:9000 (if UI included).
docker rm -f dps-worker dps-controller
docker rmi projectdps/controller:latest projectdps/worker:latest
sudo pkill etcd
Symptom: Demo agent crashes, OOMKilled in docker logs.
Fix: Reduce demo dataset size. Edit .env: project dps demo install
DEMO_DATA_SET=micro (5 users, 1 policy)
Most project dps demo install failures occur due to resource limits. Edit the .env file:
# .env overrides
DPS_MODE=demo
DEMO_DATA_SET=small_enterprise (10 users, 5 policies)
INGESTION_LIMIT_MBPS=50
LOG_LEVEL=DEBUG
UI_THEME=light # Improves rendering on virtual GPUs
LICENSE_FILE=./licenses/demo_30day.lic
We will use a containerized DPS demonstration as our reference architecture. Most modern DPS demos ship as Docker Compose bundles or OVA templates.
Feature Name: Demo Environment Auto-Installer (project dps demo install) sudo apt update && sudo apt upgrade -y
Summary: Provides a streamlined, single-command installation process for deploying a fully functional, isolated instance of the DPS (Data Processing System) for demonstration and testing purposes. This feature removes the complexity of manual configuration for sales engineers, QA testers, and new users.
User Story:
As a Sales Engineer or New Developer, I want to install a pre-configured 'Demo' version of the DPS project with a single command, so that I can quickly showcase features or test functionality without spending hours on environment setup. curl -fsSL https://download
Some vendors ship pre-expired demo licenses. Always run:
docker exec dps-engine dps-license --check
If expired, contact vendor for a hotfix license or adjust system date (temporarily, for sandbox only).
| Test Case | Result |
|-----------|--------|
| Backend health endpoint (/health) | ✅ OK |
| Database connectivity | ✅ Connected |
| Frontend loads without console errors | ✅ Pass |
| Demo user login (demo@dps.local / Pass123!) | ✅ Success |
| Core workflow (create → update → delete) | ✅ Functional |
| Mock API responses for external services | ✅ Simulated |