Quick Start¶
Get Doable running on your machine in under 5 minutes.
The fastest path: Docker¶
You only need Docker (any version with Compose v2 built in, such as Docker Desktop 4.0+ or any recent Docker CE).
Linux, macOS, or Windows via WSL2¶
Native Windows (no WSL, no Git Bash)¶
PowerShell 5.1 (built into Windows 10/11) is enough. See Windows Quick Start for the full PowerShell walkthrough with -Domain, -DoableHost, -InstallTrust, and -Prebuilt flag examples.
What the script does¶
When prompted, press Enter to default to localhost. The script will:
- Generate
deployment/docker/.envwith secure random secrets (JWT_SECRET,ENCRYPTION_KEY,INTERNAL_SECRET,DOABLE_KEK,POSTGRES_PASSWORD,DOABLE_APP_PASSWORD,INSTALL_BOOTSTRAP_TOKEN). - Download mkcert (one-time), install its local CA into your OS + browser trust stores, and issue a leaf cert for
localhostatdeployment/docker/certs/. Chrome, Edge, Firefox, and Safari all trust it after a single browser restart. - Build the Docker images (~5-10 minutes the first time, or ~30s with
--prebuilt/-Prebuiltonceghcr.io/doable-me/doable-*images are public). - Start PostgreSQL, the API, the WebSocket server, the Next.js web app, and the Caddy TLS terminator.
- Wait for the one-shot
migratecontainer to apply DB migrations cleanly before reporting success.
When it finishes, open https://localhost. No certificate warning, because mkcert already installed trust.
Why HTTPS even on localhost? Some browser features Doable uses (clipboard, service workers, modern crypto) require a secure context.
First user becomes platform owner¶
Visit https://localhost/signup. The first account to sign up is auto-promoted to platform owner. No SSH, no SQL, no editing .env files. After signup you're guided through a 5-step setup wizard at /setup: Welcome, Sign-in, AI Provider, Cloudflare, Plans & Billing.
Add an AI key (optional but recommended)¶
Without an AI key Doable still runs. You can browse the dashboard, sign up, and create projects, but the chat agent has nothing to talk to. Easiest path: use the AI provider step of the setup wizard at /setup (50+ providers including OpenAI, Anthropic, Gemini, OpenRouter, MiniMax, Groq, DeepSeek, plus local servers like Ollama, LM Studio, vLLM).
Or pre-export any of these before re-running setup.sh / setup.ps1 and the wizard's AI step starts pre-configured (first non-empty wins):
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GEMINI_API_KEY=...
MINIMAX_API_KEY=sk-cp-...
# OPENROUTER_API_KEY, TOGETHER_API_KEY, GROQ_API_KEY, DEEPSEEK_API_KEY,
# MISTRAL_API_KEY, COHERE_API_KEY, XAI_API_KEY, PERPLEXITY_API_KEY,
# DEEPINFRA_API_KEY, NVIDIA_API_KEY, MOONSHOT_API_KEY, ZHIPU_API_KEY,
# OPENCODE_ZEN_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY
Or edit deployment/docker/.env after install and restart the API container:
See AI / Providers for details on each provider.
Stop / clean up¶
# Stop containers (data preserved)
docker compose -f deployment/docker/docker-compose.yml down
# Stop and DELETE all data (database, projects, thumbnails, ACME state)
docker compose -f deployment/docker/docker-compose.yml down -v
Common issues¶
| Symptom | Fix |
|---|---|
| Browser shows certificate warning on localhost | mkcert trust install was skipped or Chrome hasn't been restarted since. Re-run setup.sh / setup.ps1, then close every Chrome window and reopen. |
502 Bad Gateway right after start |
Wait 30 seconds. The API is still booting; Caddy returns 502 until the api healthcheck passes. |
Set JWT_SECRET in docker/.env (or similar VAR is required) |
Re-run ./deployment/docker/setup.sh (or setup.ps1) so it regenerates deployment/docker/.env. The compose file uses ${VAR:?required} and aborts on any empty secret. |
| Migration container exited with code 1 | Usually a stale postgres_data volume from a previous install with a different password. Run docker compose -f deployment/docker/docker-compose.yml --env-file deployment/docker/.env down -v and rerun setup. |
| Port 80 or 443 already in use | Stop any host-side nginx / apache / Caddy first (sudo systemctl stop nginx), or run with --skip-ssl to bind Caddy to 127.0.0.1 only. |
More in Troubleshooting.
What's next?¶
- Walk through your first project.
- Read about the architecture.
- If you want to hack on the code, set up a local development environment.
- Ready to deploy on a real server? See Production Deployment.