Skip to main content

Cloud Vendor Alternatives

Optional — Alternative Deployment Strategy

This page is for teams that prefer using managed cloud services (Supabase Cloud, Frappe Cloud, etc.) rather than self-hosting everything via Docker Compose.

If you are using the standard Docker Compose deployment, you can skip this page — all services are already included and deployed together.

The standard CTMS deployment runs all services on a single server via Docker Compose. However, some teams may prefer using managed cloud providers for certain services — for example, using Supabase Cloud for authentication or Frappe Cloud for the clinical backend.


Deployment Options Comparison

ServiceStandard (Docker Compose)Cloud Alternative
Supabase (Auth)Self-hosted DockerSupabase Cloud
Frappe (Clinical Backend)Self-hosted DockerFrappe Cloud
Lakehouse DBDocker container on EC2Neon / RDS
OpenObserveDocker container on EC2OpenObserve Cloud

Supabase Cloud

Use Supabase Cloud instead of self-hosting.

  1. Create a project at supabase.com
  2. Copy the Project URL, Anon Key, and Service Role Key into your .env
  3. Run the CTMS Supabase seed to create required tables:
# Set DATABASE_URL to your Supabase connection string
docker compose --env-file .env.production --profile init run --rm ctms-supabase-seed

This creates the profiles, devices, medication_consumption_logs, notification_logs tables and RLS policies.


Frappe Cloud

Use Frappe Cloud instead of self-hosting.

MarleyHealth App Required

When purchasing a Frappe Cloud site, the default setup creates a site with only the ERPNext app. You must install the MarleyHealth (Healthcare module) app on top of ERPNext. See System Requirements for details.

  1. Create a Frappe Cloud site at frappecloud.com
  2. Install the MarleyHealth app (Sites → Your Site → Apps → Install App)
  3. Generate an API token (Settings → API Access)
  4. Set FRAPPE_URL and FRAPPE_API_TOKEN in your .env
  5. Run the 5-stage provisioning