---
title: On-Prem Control Plane Deployment
slug: telemetry-pipeline/on-prem-control-plane-deployment
docTags: 
createdAt: 2026-01-06T07:48:55.217Z
---

### 1. CMS Installation

**1.1 Docker Installation**

Install Docker and required dependencies on the server:

:::BlockQuote
yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https\://download.docker.com/linux/rhel/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
sudo docker run hello-world
:::

**1.2 Docker Log Configuration**

To prevent disk exhaustion caused by high-log-producing containers (e.g. GitLab), configure Docker log rotation.

Edit the Docker daemon configuration:

:::BlockQuote
nano /etc/docker/daemon.json
:::

:::BlockQuote
\{
&#x20; "log-driver": "json-file",
&#x20; "log-opts": \{
&#x20;   "max-size": "100m",
&#x20;   "max-file": "3"
&#x20; }
}
:::

Restart Docker:

:::BlockQuote
systemctl restart docker
:::

**1.3 Private Registry Login**

To pull application images, authenticate to the private Docker registry:

:::BlockQuote
docker login -u krontechdev dckr\_pat\_sdYRS5K\_YEnChJqMuFJbcs1psec
:::

**1.4 Docker Compose Installation**

Docker Compose version **2.16.0 or higher** is required.

:::BlockQuote
sudo curl -SL "https\://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86\_64" \\
-o /usr/libexec/docker/cli-plugins/docker-compose

chmod +x /usr/libexec/docker/cli-plugins/docker-compose
ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
:::

**1.5 CMS Installation (Internet-Accessible Environment)**

If the environment has internet access, images will be pulled automatically.

From the directory containing the deploy YAML file and the ms/ folder:

:::BlockQuote
docker-compose -f deploy-aws-25.3.2.yml -p dsp up -d
:::

**1.6 CMS Installation (Offline Environment)**

For air-gapped environments, images must be pulled and saved on another server.

Example:

:::BlockQuote
docker save \\
krontechdev/dsp-alarm-manager:25.3.2 \\
krontechdev/dsp-agent-handler:25.3.2 \\
krontechdev/dsp-worker-manager:25.3.2 \\
krontechdev/dsp-monitoring:25.3.2 \\
krontechdev/dsp-store-manager:25.3.2 \\
krontechdev/dsp-json-configuration-manager:25.3.2 \\
krontechdev/dsp-portal-ui:25.3.2 \\
krontechdev/dsp-portal:25.2.4 \\
krontechdev/dsp-process-controller:25.3.2 \\
krontechdev/kron-commons-alfred:25.0.13 \\
krontechdev/kron-commons-clickhouse:25.0.13 \\
krontechdev/kron-commons-notification:25.0.13 \\
krontechdev/kron-commons-network:25.0.13 \\
krontechdev/kron-commons-auth:25.0.13 \\
krontechdev/kron-commons-config:25.0.13 \\
krontechdev/kron-commons-license:25.0.13 \\
redis\:alpine \\
gitlab/gitlab-ee:17.2.2-ee.0 \\
postgres:16.0-alpine \\
\| gzip > kron-dsp-allimages-24.5.3.tar
:::

On the target server:

:::BlockQuote
docker load \< kron-dsp-allimages-24.5.3.tar
docker image ls
:::

Then deploy CMS:

:::BlockQuote
docker-compose -f deploy-aws-25.3.2.yml -p dsp up -d
:::

**1.7 GitLab Installation**

GitLab is deployed using a **separate Docker Compose file** and should run independently from CMS.

:::BlockQuote
docker compose -f gitlab.yml -p dsp up -d
:::

- CMS and GitLab must use the **same Docker network**&#x20;
- GitLab UI is accessible via http\://\<host-ip>:10100 (port configurable)&#x20;

After startup:

- The directory krn-git/ is created automatically&#x20;
- Initial admin password is located at:&#x20;

:::BlockQuote
krn-git/config/initial\_root\_password
:::

:::BlockQuote
This file is automatically deleted after 24 hours.
:::

**Post-installation steps:**

- Log in using the initial password&#x20;
- Create a new admin user with full permissions&#x20;
- Create GitLab groups:&#x20;
  - product (group)&#x20;
  - dsp (subgroup)&#x20;
- Generate a **Personal Access Token** with full permissions&#x20;
- Update the following files accordingly:&#x20;
  - ms/scripts/git/lab/.git-credentials&#x20;
  - ms/scripts/git/lab/.gitconfig&#x20;
- Update host-specific IPs in the compose files&#x20;

Finally, start CMS:

:::BlockQuote
docker compose -f /root/cms/cms-25.2.3.yml -p dsp up -d
:::

:::BlockQuote
If containers exit on first startup, rerun the command. This may happen due to initial health-check dependencies.
:::

