
Deploy Gauzy ERP
Open source ERP, CRM and HRM platform. One-click deploy with PostgreSQL.
webapp
Just deployed
Just deployed
/data
Just deployed
/var/lib/postgresql/data
Deploy and Host Gauzy on Railway
Gauzy is an open source business management platform (ERP, CRM, HRM, ATS and project management) built by Ever. This template deploys the full stack in one click: the Gauzy API, the Gauzy web app, and a PostgreSQL database, with all secrets and the admin password generated per deploy.
About Hosting Gauzy
Gauzy is a NestJS API plus an Angular web app backed by PostgreSQL. On first boot the API runs its database migrations and seeds a default tenant, so the first deploy takes a couple of minutes before the healthcheck goes green. Uploads are stored on a persistent volume attached to the API service. Outbound email (invites, confirmations) is off until you add your own SMTP settings to the api service variables: MAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD and MAIL_FROM_ADDRESS.
Common Use Cases
- Run a self-hosted ERP and CRM for a small business
- Track employees, time, expenses and invoices in one place (HRM)
- Manage candidates and hiring pipelines (ATS)
- Evaluate Gauzy before moving to Ever's hosted offering
Dependencies for Gauzy Hosting
Deployment Dependencies
Everything is included in the template; no external accounts are required.
- db: PostgreSQL 17 (postgres:17-alpine) with a persistent volume
- api: Gauzy API (ghcr.io/ever-co/gauzy-api, pinned by digest) with a persistent volume for uploaded files
- webapp: Gauzy web UI (ghcr.io/ever-co/gauzy-webapp, pinned by digest)
Upstream's full docker-compose stack also ships Redis, MinIO, OpenSearch, Cube, Zipkin and Jitsu. Those are optional analytics, tracing and object-storage extras, so this template leaves them out: sessions and cache run in memory, and files are stored on the API volume. Add them back later if you need them.
Implementation Details
Logging in. On first boot Gauzy seeds a super admin. The email is DEMO_SUPER_ADMIN_EMAIL on the api service (default admin@ever.co) and the password is the generated DEMO_SUPER_ADMIN_PASSWORD value shown right below it in the api service variables. Sign in at your webapp URL, then change the password.
First boot. The API runs migrations and a full default seed before it starts listening. Measured at about 90 seconds, well inside the healthcheck window. If the first deploy ever times out, redeploy the api service once; the seed resumes where it left off.
Optional variables.
- DEMO_SUPER_ADMIN_EMAIL: pick your own admin email before deploying, or keep the default.
- SMTP settings (above) for transactional email through your own provider.
- GAUZY_GITHUB_* variables if you want the GitHub integration; see the upstream docs.
Troubleshooting.
- Web app loads but cannot reach the API: hard refresh once. The API address is substituted into the web app at container start.
- Login fails with the generated password: the seed only creates the admin when the database is empty, so the password is the one from the first successful boot of that project.
- API restarts during the very first boot: normal while migrations run; it stabilizes on its own.
Upgrading. Both Gauzy images are pinned by digest for reproducible deploys. To move to a newer release, update the digest on the api and webapp services to the current ghcr.io/ever-co latest digest and redeploy. The API runs new migrations automatically on boot.
Why Deploy Gauzy on Railway?
Railway gives Gauzy the three things it needs without any YAML: a private network between the API and PostgreSQL, persistent volumes for the database and uploads, and public domains for the API and web app with TLS handled at the edge. One click gets you a running ERP; scaling later is a slider, not a migration.
Template Content
