Cloud Vendor Alternatives
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
| Service | Standard (Docker Compose) | Cloud Alternative |
|---|---|---|
| Supabase (Auth) | Self-hosted Docker | Supabase Cloud |
| Frappe (Clinical Backend) | Self-hosted Docker | Frappe Cloud |
| Lakehouse DB | Docker container on EC2 | Neon / RDS |
| OpenObserve | Docker container on EC2 | OpenObserve Cloud |
Supabase Cloud
Use Supabase Cloud instead of self-hosting.
- Create a project at supabase.com
- Copy the Project URL, Anon Key, and Service Role Key into your
.env - 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.
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.
- Create a Frappe Cloud site at frappecloud.com
- Install the MarleyHealth app (Sites → Your Site → Apps → Install App)
- Generate an API token (Settings → API Access)
- Set
FRAPPE_URLandFRAPPE_API_TOKENin your.env - Run the 5-stage provisioning