<img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=7178634&amp;fmt=gif">
uControl Book a demo
Docs  ›  Discovery

Installation — Cloud Deployment

Last updated 2026-05-14

Cloud Deployment

Deploy the uControl Insight control plane to any cloud provider or VPS. On-premises worker agents handle local scanning — credentials stay on-prem.

Sizing Guide

AWS EC2 / Azure VM / GCP Compute

AssetsInstance Type (AWS)Instance Type (Azure)vCPUsRAMStorage
Up to 500t3.mediumB2s24 GB30 GB gp3
500 – 2,000t3.largeB2ms28 GB50 GB gp3
2,000 – 10,000m5.xlargeD4s_v5416 GB100 GB gp3
10,000 – 30,000m5.2xlargeD8s_v5832 GB200 GB gp3
30,000 – 60,000+m5.4xlargeD16s_v51664 GB500 GB gp3

Database Options

AssetsAWS RDSAzure DatabaseNotes
Up to 2,000db.t3.small (local MariaDB on same instance is fine)Local MariaDBCo-located DB is simplest
2,000 – 10,000db.r6g.large (MariaDB)D4s MariaDBManaged DB recommended
10,000+db.r6g.xlarge+D8s+Dedicated managed DB with provisioned IOPS

AWS Deployment Example

1. Launch EC2 Instance

  • AMI: Amazon Linux 2023 or Ubuntu 22.04 LTS
  • Instance type: t3.large (for up to 2,000 assets)
  • Security group: see Firewall Rules below
  • Storage: 50 GB gp3 root volume

2. Install Dependencies

# Amazon Linux 2023
sudo dnf install -y java-21-amazon-corretto mariadb105-server
sudo systemctl enable --now mariadb

# Ubuntu 22.04
sudo apt update && sudo apt install -y openjdk-21-jdk mariadb-server
sudo systemctl enable --now mariadb

3. Create Database

CREATE DATABASE ucontrolinsight CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ucontrolinsight'@'localhost' IDENTIFIED BY 'YourSecurePassword';
GRANT ALL PRIVILEGES ON ucontrolinsight.* TO 'ucontrolinsight'@'localhost';
FLUSH PRIVILEGES;

4. Install Tomcat & Deploy

Follow the same Tomcat installation steps as the on-premises guide. Deploy uControlInsight.war to /opt/tomcat/webapps/.

5. Configure TLS

Use an Application Load Balancer (ALB) with an ACM certificate, or install Certbot for Let's Encrypt:

# Certbot with Nginx reverse proxy
sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d ucontrol.yourcompany.com

6. Configure Security Group

RulePortProtocolSource
HTTPS443TCP0.0.0.0/0 (or your office IP)
SSH (admin)22TCPYour admin IP only

No other inbound rules needed. Workers connect outbound to port 443. Discovery of cloud resources (AWS API) uses the instance's internet access.

Using AWS RDS Instead of Local MariaDB

For larger deployments, use Amazon RDS MariaDB:

  1. Create an RDS MariaDB 10.5+ instance in the same VPC
  2. Set the environment variable: SPRING_DATASOURCE_URL=jdbc:mariadb://your-rds-endpoint:3306/ucontrolinsight
  3. Create the database and user via the RDS master credentials
  4. Ensure the EC2 security group allows outbound TCP 3306 to the RDS security group

Docker Deployment (Alternative)

uControl Insight can also run as a Docker container. A Dockerfile and docker-compose.yml are available in the project repository. The compose file includes both the application and MariaDB:

docker-compose up -d

Deploying Workers to Remote Sites

Once the cloud control plane is running:

  1. Go to sidebar → Workers and generate an API key for the remote site
  2. Download the worker agent installer (Windows EXE or Linux tar.gz)
  3. Install at the remote site — the installer prompts for the control plane URL and API key
  4. The worker registers automatically and appears in the Workers list
  5. Create discovery targets with the site label matching the worker's site

High Availability Considerations

For production deployments requiring high availability:

  • Database: Use RDS Multi-AZ or MariaDB Galera Cluster
  • Application: Run behind an ALB with health checks on /actuator/health
  • Workers: Deploy multiple workers per site for redundancy — the control plane load-balances scan jobs across available workers
  • Backups: Automate database backups (RDS snapshots or mysqldump). Back up the UCONTROL_MASTER_KEY separately.