Current runtime baseline
Use the codebase itself as the authority rather than the older top-level README. The current UAT branch requires or validates:
- Laravel 12.61+ (
laravel/framework ^12.61.1). - PHP 8.2+; the active VPS CI pipeline validates with PHP 8.4.
- Composer 2.
- PostgreSQL 16 + PostGIS 3.4.
- Redis 7.2 for cache, sessions, queues and coordination.
- Node.js 24 in the active UAT build pipeline for Tailwind compilation.
- Docker / Docker Compose for the supported container deployment path.
- Go services built independently and published as immutable container images.
Containers in the current Coolify topology
The active compose definition includes: app, migrate, horizon, scheduler, postgres, redis, go-sync, go-bulk-import, go-dashboard, go-xlsform, go-report, livekit, and turn. Only services that need public ingress should be exposed. PostgreSQL, Redis and the internal Go HTTP ports stay private.
Persistent storage
Application containers are replaceable. Persist PostgreSQL data, Redis persistence where required, application uploads and generated artefacts on named volumes or managed services. For multi-host deployments, use S3-compatible object storage for files that must survive host replacement or be shared across application instances.
The Go report and bulk-import workers intentionally mount the same application storage root when local-disk mode is used, because Laravel records disk-relative paths and later serves the completed artefacts.
Capacity profiles in the repository
The current Coolify baseline is tuned for approximately 2 vCPU / 8 GB RAM and light/UAT workloads. The repository also contains a full-scale overlay targeting a dedicated 8 vCPU / 32 GB RAM host with two application replicas, larger PostgreSQL/Redis limits, more Horizon workers, and larger Go worker allocations.
Keep at least 20 GB of free disk space in the small-VPS model. Scale or separate PostgreSQL when CPU, RAM, connection pressure, WAL/checkpoint load, disk latency or campaign concurrency begins to remove safe headroom.