Skip to main content

System Requirements

Hardware, software, and network requirements for deploying the Zynomi CTMS platform.


Server Requirements

Production Server

SpecificationMinimumRecommended
CPU4 vCPU8 vCPU
RAM8 GB16 GB
Disk50 GB SSD100 GB SSD
Architectureamd64 (x86_64)amd64 (x86_64)

Development Machine

SpecificationMinimumRecommended
CPU4 cores8 cores
RAM8 GB16 GB
Disk50 GB SSD100 GB SSD
ARM Not Supported for Production

Images like zynomi/zynexa, zynomi/sublink, cubejs/cubestore are amd64-only. Apple Silicon (ARM) works for local dev with CUBEJS_DEV_MODE=true but is not recommended for production.


Supported Operating Systems

Since the platform runs entirely in Docker containers, any Linux distribution that supports Docker is suitable for production.

OSVersionNotes
Amazon Linux2023 (recommended)Recommended for AWS EC2 production
Rocky Linux9, 10Tested on Hetzner Cloud (Rocky 10.1)
AlmaLinux9Community RHEL rebuild
Ubuntu22.04 / 24.04 LTSWidely supported alternative
Any LinuxAny distro with Docker Engine support
macOS12+Development only (ARM caveat below)
Windows10/11 with WSL2Development only

Software Requirements

The platform runs entirely inside Docker containers — no application runtimes (Node.js, Python, etc.) need to be installed on the host.

SoftwareVersionRequiredNotes
Docker Engine>= 24.0YesContainer runtime
Docker Compose>= 2.20YesMulti-container orchestration (included with Docker Desktop / Engine)
Docker Buildx>= 0.10Yes (self-hosted)Required when building the Frappe image locally (docker compose build). Included with Docker Desktop; on Linux servers install the docker-buildx-plugin package.
GNU Make>= 4.0YesTask runner for deployment commands (Makefile)
Git2.xYesClone the deployment repository
tip

All other runtimes — Node.js, Python, Bun, dbt — are bundled inside the Docker images. You do not need to install them on the server.

Installing Make

Amazon Linux / RHEL / CentOS:

sudo yum install -y make

Ubuntu / Debian:

sudo apt-get install -y make

macOS ships with Make pre-installed (via Xcode Command Line Tools). Verify with make --version.


Port Requirements

Application Ports

PortServiceProtocolDescription
80CaddyTCPHTTP (redirects to HTTPS)
443CaddyTCPHTTPS reverse proxy
3000ZynexaTCPMain CTMS web application
3001SublinkTCPMobile web application
4000Cube.jsTCPAnalytics semantic layer
5080OpenObserveTCPObservability dashboard
5433Lakehouse DBTCPPostgreSQL (external port)
8006MCP ServerTCPAI agent (Model Context Protocol)
9080KrakenDTCPAPI gateway
8001ODM APITCPCDISC ODM report generator

Self-Hosted Only Ports

These ports are used only in self-hosted mode where Frappe and Supabase run locally alongside the CTMS stack.

PortServiceProtocolDescription
8080FrappeTCPClinical backend (ERPNext + MarleyHealth)
8000Supabase KongTCPSupabase API gateway / Studio
Self-Hosted Port Conflicts

In self-hosted mode, Frappe binds to port 8080 and Supabase Kong binds to port 8000. Because of this, the KrakenD API gateway and ODM API are remapped to 9080 and 8001 respectively to avoid conflicts.

ServiceCloud PortSelf-Hosted PortReason
KrakenD (API Gateway)80809080Frappe occupies 8080
ODM API80008001Supabase Kong occupies 8000

These mappings are defined in docker-compose.prod.yml.

Internal Docker Ports

PortServiceDescription
5432Lakehouse DBPostgreSQL (Docker-internal)
4000Cube.jsAnalytics API (Docker-internal)
Security Group / Firewall

For cloud deployments (AWS EC2, etc.), open the application ports above in your security group. For Phase 2 (DNS + HTTPS), only ports 80 and 443 need to be publicly exposed.


External Cloud Services

Required

ServiceProviderPurposeLocal Alternative
AuthenticationSupabaseAuth, user profiles, PostgreSQLSelf-hosted Supabase via Docker
Clinical BackendFrappe CloudEHR, patient data, API backendSelf-hosted Frappe via Docker
AI / LLMOpenAIGPT-4o-mini for AI chatbot— (required for AI features)
Frappe Cloud — MarleyHealth App Required

When purchasing a Frappe Cloud site, the default setup creates a site with only the ERPNext app. The CTMS platform requires the MarleyHealth (Healthcare module) app to be installed on top of ERPNext.

After site creation on Frappe Cloud:

  1. Go to Sites → Your Site → Apps
  2. Click Install App and search for MarleyHealth (or the Healthcare module)
  3. Install it — this adds the Healthcare DocTypes (Patient, Healthcare Practitioner, Vital Signs, etc.) that CTMS depends on

Without MarleyHealth, the 5-stage Frappe provisioning (DocTypes, Custom Fields, RBAC, seed data, practitioner) will fail because the base Healthcare DocTypes it extends do not exist.

For self-hosted Frappe via Docker, the MarleyHealth app is already included in the Frappe stack configuration.

Optional

ServiceProviderPurposeWhen Needed
Push NotificationsFirebaseMobile push notificationsOnly if using Sublink mobile app
Web HostingVercelNext.js hosting, edge functionsOnly for serverless deployment
Container HostingFly.ioServerless containers (Cube, dbt)Only for serverless deployment
Source Control

GitHub is used for the code repository and CI/CD but is not a runtime dependency of the platform.

Local Deployment

Both Supabase and Frappe can be self-hosted using Docker, enabling fully local / air-gapped deployments without any cloud service dependencies (except OpenAI for AI features).


Network / Firewall Allowlist

Outbound access required from the server:

Domain PatternServiceRequired
*.supabase.coAuthentication & databaseYes (unless self-hosted)
*.frappe.cloudClinical backendYes (unless self-hosted)
api.openai.comLLM / AI featuresYes
github.comSource control (deploy only)Yes
*.googleapis.comFirebase push notificationsOptional
*.vercel.appWeb hostingOnly for serverless deployment
*.fly.devContainer hostingOnly for serverless deployment

Deployment Options

OptionDescriptionBest For
Docker Compose on EC2 (Recommended)Self-hosted via Docker on AWS EC2 (Amazon Linux)Most deployments, full control
Docker Compose (any Linux)Self-hosted via Docker on any Linux serverOn-premises, other cloud providers
Serverless (Optional)Vercel (web) + Fly.io (containers)Rapid scaling, low maintenance

Next Steps