Getting Started
Self-Host with Docker
Run the complete EasyFlow stack on your own server in under 10 minutes. Everything included.
What you need
| Requirement | Version | Check |
|---|---|---|
| Docker | 24+ | docker --version |
| Docker Compose | v2+ | docker compose version |
| Git | Any | git --version |
| 2GB RAM | Minimum | For all services running simultaneously |
Start the stack
bash
# 1. Clone the repo
git clone https://github.com/your-org/easyflow.git
cd easyflow
# 2. Copy the env template
cp .env.example .env
# Edit .env with your public URLs and secrets
# 3. Start everything
docker compose up -d --build
# That's it. Five services start:
# ✓ web (Next.js frontend)
# ✓ api (FastAPI backend)
# ✓ postgres (database)
# ✓ rabbitmq (message bus)
# ✓ n8n (ERP automation)ℹThe full stack is now included in docker compose. For a free public demo, one Oracle Cloud Always Free VM is enough to run all services.
What starts up
| Service | URL | What it does |
|---|---|---|
| Web app (Next.js) | localhost:3000 | The full EasyFlow product — canvas, dashboards, docs, admin portal |
| API (FastAPI) | localhost:8000 | REST API, webhooks, access control, data persistence |
| n8n | localhost:5678 | Visual ERP automation — import templates, connect SAP/Oracle/Dynamics |
| RabbitMQ | localhost:15672 | Message queue management UI (guest/guest) |
| PostgreSQL | localhost:5432 | Database for API and n8n (easyflow/easyflow) |
First-time configuration
1
Set up Google OAuth (optional)
If you want Google sign-in, go to Google Cloud Console → APIs → Credentials → Create OAuth 2.0 Client. Add your app URL callback. Put the client ID and secret into .env. If you skip this, email/password still works for demo use.
2
Generate your secrets
Run: openssl rand -hex 32. Paste the outputs into BETTER_AUTH_SECRET and WEBHOOK_SECRET_KEY in .env.
3
Open the app
Go to http://localhost:3000. Sign in with Google. You'll land on the Globe screen with the demo tenant workspaces preloaded.
4
Create your first tenant
Open Admin Portal (purple shield in sidebar). Click New Tenant and follow the 4-step wizard.
Production checklist
- Replace WEBHOOK_SECRET_KEY and BETTER_AUTH_SECRET with strong random values (openssl rand -hex 32)
- Set NEON_DATABASE_URL to a managed Postgres instance (Neon, Supabase, RDS, or self-hosted)
- Update N8N_HOST and WEBHOOK_URL in docker-compose.yml to your server's public IP or domain
- Add your domain to Google OAuth's authorized redirect URIs
- Enable HTTPS with a reverse proxy (nginx + Certbot is the standard setup)
- Set POSTGRES_PASSWORD to a strong password, not the default
- Back up the postgres_data Docker volume regularly