# Production ERPNext on Coolify Validated Docker Compose stack for [ERPNext](https://erpnext.com) on [Coolify](https://coolify.io), derived from [frappe/frappe_docker](https://github.com/frappe/frappe_docker). **Repository:** https://git.aexoradao.com/epistemophiliac/production-erpnext ## Quick start (Coolify) 1. **New Resource** → **Docker Compose** 2. **Git repository:** `https://git.aexoradao.com/epistemophiliac/production-erpnext` 3. **Compose file:** `docker-compose.yml` 4. Set environment variables from [`example.env`](example.env) (at minimum `DB_PASSWORD`, `SITE_NAME`, `ADMIN_PASSWORD`) 5. Assign your domain to service **`frontend`**, port **`8080`** 6. Deploy — first boot creates the site and installs ERPNext (~5–15 minutes) Login: user `Administrator`, password = `ADMIN_PASSWORD`. ## What this stack includes | Service | Role | |---------|------| | `db` | MariaDB 11.8 | | `redis-cache` / `redis-queue` | Cache and job queue | | `configurator` | One-shot bench config | | `create-site` | Idempotent site + ERPNext install | | `migrator` | `bench migrate` on redeploy | | `backend` | Gunicorn API | | `frontend` | Nginx (port **8080**) | | `websocket` | Socket.IO realtime | | `queue-short` / `queue-long` / `scheduler` | Background workers | ## CI Forgejo Actions runs on every push/PR to `main`: - `scripts/ci/ci-readiness.sh` — secrets, docs, compose checks - `scripts/ci/validate-docker-compose.sh` — Coolify compose rules + `docker compose config` Run locally: ```bash make ci ``` ## Requirements - Coolify server with **4 GB+ RAM** (8 GB recommended) - Domain DNS pointing to your Coolify proxy - `SITE_NAME` and `FRAPPE_SITE_NAME_HEADER` must match the Coolify domain ## Documentation - [Coolify deploy guide](docs/COOLIFY_DEPLOY.md) - [Upstream frappe_docker docs](https://frappe.github.io/frappe_docker/) ## License Compose and docs: MIT. ERPNext/Frappe images: see upstream licenses.