Virtual Machine (Docker) Deployment Prerequisites

Estimated reading: 6 minutes

This section outlines the infrastructure and software prerequisites required to deploy Robility Flow on one or more Virtual Machines using Docker and Docker Compose. This deployment model is designed for pilot implementations, proof-of-concept environments, development environments, and single-tenant deployments where a Kubernetes platform is not available or required.

The VM-based deployment model provides a simplified installation and operational experience by hosting all Robility Flow services as Docker containers managed through Docker Compose. This approach reduces infrastructure complexity while providing a consistent and portable deployment architecture.

Note: VM-based deployments do not provide native Kubernetes capabilities such as horizontal pod autoscaling, self-healing orchestration, rolling updates, or multi-zone high availability. For production environments requiring high availability, fault tolerance, and elastic scaling, Robility recommends deploying Robility Flow on a supported Kubernetes platform as described here. 

VM Sizing Overview

The following table summarises the VM configurations for pilot and production deployments. All services are co-located on the VM and run as Docker containers unless noted otherwise.

Deployment Type CPU Memory (RAM) Storage Notes
Pilot Deployment 8 vCPU 32 GB 250 GB SSD Suitable for pilot environments and small-scale workloads. All services are co-located on a single VM and run as Docker containers.
Production Deployment 16 vCPU 64 GB 500 GB SSD Recommended for production environments with higher transaction volumes and concurrent users. All services are co-located on the VM and run as Docker containers unless specified otherwise.

Operating System Requirements

The host VM must meet the following OS requirements before Docker installation:

1. OS: Ubuntu 22.04 LTS (recommended), RHEL 9, or Rocky Linux 9
2. Architecture: x86-64 (AMD64)
3. Kernel: 5.4 or higher
4. Swap: Disabled or set to a low value (Docker and database services perform better without swap)
5. Filesystem: ext4 or xfs on SSD-backed volumes
6. Time synchronisation: NTP / chrony configured and active

Required Software

The following software must be installed on the VM before the RobilityFlow Docker Compose stack is deployed:

Component Minimum Version Notes
Docker Engine 24.0+ Container runtime required for hosting all platform services.
Docker Compose v2.20+ Used to orchestrate and manage the multi-container application stack on the VM.
NGINX 1.24+ Acts as the reverse proxy and provides TLS/SSL termination for inbound traffic.
Cert-Manager / Certbot Latest Stable Automates TLS certificate provisioning and renewal processes.
PostgreSQL 15 or Higher Primary relational database. Can be deployed within Docker containers or installed natively.
Redis 7.0 or Higher In-memory cache and message broker service. Can be deployed within Docker containers or installed natively.
Object Storage Latest Stable Shared storage backend supporting NFS, Azure Files, AWS EFS, SMB, or CIFS.
Operating System Ubuntu 22.04 LTS / RHEL 9 64-bit Linux operating system with kernel version 5.4 or higher.

Note: Docker Engine and Docker Compose are the only mandatory prerequisites. PostgreSQL and Redis may optionally be deployed as managed cloud services rather than Docker containers.

Service Resource Allocation

All RobilityFlow services run as Docker containers on the host VM. The following table defines the recommended CPU and memory allocation per container. These should be enforced in the Docker Compose file using the deploy.resources.limits directives.

Service Containers CPU Allocation Memory Allocation Notes
RobilityFlow Designer 1 1–2 vCPU 2–6 GB NGINX serves the React Single Page Application (SPA). This service typically requires minimal CPU and memory resources.
RobilityFlow Runtime 1–2 4–6 vCPU 8–12 GB Primary consumer of compute resources. Scale vertically by increasing CPU and memory allocations based on workload demands.
PostgreSQL 1 2–4 vCPU 8–16 GB Requires a dedicated SSD-backed persistent data volume to ensure optimal database performance and durability.
Redis 1 1 vCPU 2–4 GB Single-node deployment with AOF (Append Only File) persistence enabled for data durability.
NGINX (Reverse Proxy) 1 0.5 vCPU 256 MB Handles TLS termination and routes incoming traffic to the RobilityFlow Designer and Runtime services.

Example Docker Compose resource limits for the Runtime container:

deploy:
resources:
limits:
cpus: ‘4.0’
memory: 8G
reservations:
cpus: ‘1.0’
memory: 4G 

Persistent Storage

Each container that requires persistence must mount a named Docker volume or a bind-mount to a host directory backed by SSD storage. The following volumes must be defined:

1. postgres-data – PostgreSQL data directory. Minimum 100 GB (pilot), 500 GB (production).
2. redis-data – Redis AOF/RDB persistence directory. Minimum 10 GB.
3. runtime-uploads – File uploads and execution payload attachments. Size based on expected usage.
4. object-storage-data – NFS, Azure Files, AWS EFS, SMB/CIF

All persistent volumes should reside on a separate SSD-backed disk or LVM volume from the OS partition to prevent I/O contention and enable independent resizing.

Networking & TLS on VM

The following network configuration must be applied at the VM OS and firewall level:

1. Port 443 (HTTPS) must be open inbound for end-user browser access.
2. Port 80 (HTTP) should redirect to 443; not required to be permanently open.
3. All inter-service communication (Runtime ↔ PostgreSQL, Runtime ↔ Redis) must be confined to the Docker internal network (not exposed on host interfaces).
4. NGINX on the host (or as a Docker container) must terminate TLS and proxy to Designer (port 3000) and Runtime (port 7860).
5. A CA-issued TLS certificate for the platform FQDN must be installed on NGINX. Certbot/Let’s Encrypt is recommended for automation.

VM-level network traffic matrix:

Source Destination Port Purpose
End-User Browsers NGINX (Host:443) 443 HTTPS Provides secure access to the RobilityFlow Designer user interface and Runtime APIs.
NGINX Designer Container 3000 HTTP Internal Docker network communication between the reverse proxy and the Designer service.
NGINX Runtime Container 7860 HTTP Internal Docker network communication between the reverse proxy and the Runtime service.
Runtime Container PostgreSQL Container 5432 Executes database queries and manages application data persistence.
Runtime Container Redis Container 6379 Supports caching, session management, and publish/subscribe messaging.
Runtime Container Object Storage 443 / 9000 Reads and writes files, documents, and workflow-related artifacts.
Runtime Container License Server 443 HTTPS Outbound connection used for license validation and entitlement checks. Refer to Section 8 for details.
Runtime Container External AI Providers 443 HTTPS Optional outbound connectivity for Large Language Model (LLM) APIs and other AI-powered services.

Backup & Recovery on VM

The following backup procedures must be established before going live on a VM deployment:

1. PostgreSQL: Configure daily pg_dump or pg_basebackup to an external destination (object storage or offsite volume). Minimum 7-day retention.
2. Redis: Enable both AOF (appendonly yes) and RDB snapshots. Copy snapshot files to an external destination daily.
3. VM-level snapshots: Take VM snapshots before each platform update to enable rollback.
4. Docker volumes: Script regular tar backups of named volumes to the backup destination.

Note: VM deployments do not benefit from Kubernetes PodDisruptionBudgets or multi-zone redundancy. A documented runbook for restart and recovery procedures is strongly recommended.

Share this Doc

Virtual Machine (Docker) Deployment Prerequisites

Or copy link

CONTENTS
Robility Chatbot
Robility Assistant
Online