cPanel Package
careflow-cpanel-v1.7.15.zip
Pre-packaged ZIP for cPanel/WHM hosting. Upload it with File Manager,
extract it into public_html, then open the browser setup
wizard at /setup/install.php. No SSH and no PHP
shell_exec needed - the wizard walks you through the rest,
and it checks the server for you before it starts.
Requirements
- cPanel/WHM with root or a database you own
- PostgreSQL 13+ (required - MySQL is NOT supported). Most shared hosts are MySQL-only; use a host that offers PostgreSQL, or a managed PostgreSQL in an Australian region (e.g. Neon/Supabase Sydney)
- Python 3.11+ (via cPanel Python App)
- 5 GB disk · 2 GB RAM minimum
Full install notes setup token · Passenger · scheduled jobs · backup · PostgreSQL · patient data
Setup token. The wizard asks for a setup token first, so
nobody but you can run it. Open careflow-data/setup-token.txt
in your home directory (File Manager, or
cat ~/careflow-data/setup-token.txt in Terminal) and paste
it in.
Register the app with Passenger. cPanel shows
"Setup Python App" on CloudLinux, or
"Application Manager" on AlmaLinux/Rocky (app root
public_html/_careflow, startup passenger_wsgi.py,
entry point application). Requires Python 3.11 or
newer; the wizard checks and tells you if the server is short.
This Passenger method works on virtually every cPanel host, because
cPanel supervises the application itself - there is no background port
to keep alive and no mod_proxy requirement.
Scheduled jobs. Nothing has to be scheduled for the application itself to work: it runs its own scheduled jobs - reminders, credential-expiry alerts, the retention sweep and the rest - starting them itself after somebody uses the system.
The nightly encrypted backup is NOT one of them. It is a separate script, and on this avenue - the browser wizard, which has no shell and cannot write to your crontab - it does not run until you add it. The wizard's last screen gives you two lines to paste into cPanel → Cron Jobs: one is the backup, the other pins the scheduled jobs to exact times instead of first-use-after (that form has separate Minute, Hour, Day, Month and Weekday boxes plus a Command box; the wizard says which value goes where). Adding both is two minutes, the second is safe alongside the in-application scheduler because they run the same program and share one record of what has already run, and until you add the first one this install has no backup. The Docker, Ubuntu and cPanel terminal installers schedule it for you; this one cannot.
Why PostgreSQL, not MySQL? It gives the smarter search and stronger data-safety a clinical system needs - it is about protecting your patients' information properly, not about being difficult. PostgreSQL is a free, industry-standard database; many hosts can enable it, or you can use a managed PostgreSQL in an Australian region.
Handling patient data? For Protected Health Information, run on
infrastructure you control (a VPS/Docker install with full-disk encryption, or a
managed PostgreSQL that encrypts at rest) - multi-tenant shared hosting cannot meet
the at-rest encryption obligation. The AI semantic-search add-on uses the optional
pgvector extension; every core feature works without it.