Deploy with Coolify
Coolify is an open-source, self-hostable alternative to Vercel, Netlify, and Heroku. It provides a clean UI for managing Docker deployments on your own servers — no vendor lock-in. This guide walks you through deploying CrewForm on Coolify.Prerequisites
- A running Coolify v4 instance (installation guide)
- A server connected to Coolify with ≥ 2 GB RAM (4 GB recommended)
- A Supabase project (or self-hosted PostgreSQL 15+)
Method 1: Docker Compose (Recommended)
This deploys the full CrewForm stack (frontend, task-runner, postgres, migrations) using the built-indocker-compose.yml.
Step 1 — Create a New Resource
- Open your Coolify dashboard
- Click + Add New Resource
- Select Docker Compose
- Choose Git Repository as the source
Step 2 — Connect the Repository
| Field | Value |
|---|---|
| Repository URL | https://github.com/CrewForm/crewform |
| Branch | main |
| Docker Compose Location | docker-compose.yml |
Step 3 — Configure Environment Variables
In the Environment Variables tab, add the required variables:
💡 Generate a secure encryption key: openssl rand -hex 32
Step 4 — Configure Networking
In the Network tab:- Set the Exposed Port to
3000(the frontend port) - Add your custom domain (e.g.
crewform.yourdomain.com) - Enable HTTPS — Coolify handles TLS certificates automatically via Let’s Encrypt
Step 5 — Deploy
Click Deploy. Coolify will:- Clone the repository
- Run
docker compose up -d - Execute database migrations automatically (via the
migratecontainer) - Start the frontend on port 3000
- Start the task-runner for AI execution
Step 6 — Verify
Visit your configured domain. You should see the CrewForm login screen. Check individual service logs:- Frontend → nginx serving the SPA
- Task Runner → should show
[runner] Polling for tasks... - Migrate → should show
All migrations appliedand exit
Method 2: Git-Based (Frontend Only)
If you’re using Supabase Cloud and only need to deploy the frontend + task-runner (no local Postgres), you can use Coolify’s Git-based deployment.Step 1 — Create a Nixpacks Resource
- Click + Add New Resource
- Select Application
- Choose Public Repository
- Enter:
https://github.com/CrewForm/crewform - Branch:
main
Step 2 — Build Settings
| Setting | Value |
|---|---|
| Build Pack | Nixpacks |
| Install Command | npm install |
| Build Command | npm run build |
| Start Command | npm run preview |
| Port | 3000 |
Step 3 — Environment Variables
Add the same Supabase variables from Method 1 (skipPOSTGRES_* variables since you’re using Supabase Cloud).
Step 4 — Deploy
Click Deploy. Coolify will build and serve the frontend.⚠️ Note: You’ll need to deploy the task-runner separately as a Docker container, or run it on the same server via Docker Compose. The task-runner is required for AI task execution.
Updating
Automatic Updates
Coolify supports webhook-based auto-deploy:- Go to your resource Settings
- Enable Auto Deploy on push
- Add the Coolify webhook URL to your GitHub repository’s webhooks
main will trigger a rebuild.
Manual Updates
- Open your resource in Coolify
- Click Redeploy
- Coolify pulls the latest code, rebuilds, and runs migrations
Adding Ollama (Local AI)
To run local models alongside CrewForm on the same Coolify server:Step 1 — Add Ollama as a Service
- Create a new Docker resource in Coolify
- Use the image:
ollama/ollama - Mount a volume:
/root/.ollama→ollama_data - Expose port:
11434
Step 2 — Pull Models
Connect to the Ollama container and pull your preferred models:Step 3 — Connect in CrewForm
- Go to Settings → LLM Setup in CrewForm
- Find Ollama (Local) in the provider list
- Enter any value as the API key (e.g.
ollama) - If Ollama and CrewForm are on the same Coolify server, the task-runner reaches Ollama at
http://ollama:11434/v1(Docker network) orhttp://host.docker.internal:11434/v1
GPU Passthrough
If your server has an NVIDIA GPU, add to the Ollama service in Coolify:Troubleshooting
Frontend shows blank page
- Verify
VITE_SUPABASE_URLandVITE_SUPABASE_ANON_KEYare set in Coolify’s environment variables - Check the frontend container logs in Coolify
Task runner not processing
- Ensure
SUPABASE_SERVICE_ROLE_KEYis set - Check the task-runner logs in Coolify’s Logs tab
- Verify network connectivity to Supabase
Migrations not running
- Check the
migratecontainer logs — it runs once and exits - To re-run, restart the migrate service from Coolify
Domain not resolving
- Ensure your DNS A record points to the Coolify server IP
- Check that Coolify’s proxy (Traefik) is running: Coolify → Settings → Proxy
Need help? Join our Discord or open an issue on GitHub.

