
Should I self-host Doodle?
Rallly does the one Doodle job — find a time that works for everyone — with a clean UI, no ads around your poll, and no $10.95/mo for what is fundamentally a form with dates on it.
The math (nothing hidden, including your time)
| Doodle (Pro, per seat) | $10.95/mo |
| VPS share + storage | −$0.30/mo |
| Your maintenance: 10 min/mo at $20/h | −$3.33/mo |
| Net saving | $7.32/mo |
| Setup: 12 min measured (one-time) | $4.00 |
| Break-even | 0.5 months |
| Markup Index (price ÷ real self-host cost) | 3.0× |
Price: source, checked 2026-08-07. Inputs are stored in git; every number above is derived, never hand-written.
What you lose
- Doodle's booking-page features beyond group polls (Cal.com covers those, separately verified)
What you're paying Doodle for
- group scheduling polls
- availability collection
- calendar integration

Ranked alternatives
Send a group a link, let them tick the times that work, and pick the winner, with no cap on how many people answer.
Send someone a link, they pick a slot, the invite lands in both calendars, and none of it runs on a domain you are renting.
Hardware
Runs comfortably on Raspberry Pi.
The tested compose file (our evidence, CI-booted)
# Rallly — meeting polls; node app + postgres. Sidecar probe (slim image, no curl).
services:
rallly:
image: lukevella/rallly:latest
container_name: rallly
restart: unless-stopped
depends_on:
rallly-db:
condition: service_healthy
environment:
DATABASE_URL: postgres://rallly:rallly@rallly-db:5432/rallly
SECRET_PASSWORD: change-me-please-0123456789abcdef
NEXT_PUBLIC_BASE_URL: http://localhost:3004
ports:
- "3004:3000"
probe:
image: busybox:stable
network_mode: "service:rallly"
depends_on:
- rallly
command: sh -c 'while true; do sleep 30; done'
healthcheck:
test: ["CMD-SHELL", "nc -z localhost 3000 || exit 1"]
interval: 5s
timeout: 5s
retries: 60
start_period: 25s
rallly-db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: rallly
POSTGRES_PASSWORD: rallly
POSTGRES_DB: rallly
volumes:
- rallly-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U rallly"]
interval: 5s
timeout: 5s
retries: 12
volumes:
rallly-db:
Want a guided install instead? caniselfhostit.com/doodle has AI-agent prompts that assume a bare machine — that's their half of the stool, and it's good.
Verification
Protocol v1 · verified by zernonia on 2026-08-10 · setup measured at 12 min · AI assistant: claude-code (allowed & stated)
What broke
- Boot to healthy measured at 64s on the 2GB reference env
Full timed log
# Doodle — verdict log - **Date:** 2026-08-10 - **Verdict:** YES — worth it - **Protocol:** v1 (2GB reference env, Docker preinstalled, AI assistant: claude-code) ## Setup evidence - Compose: `compose/doodle-rallly.yml` - Boot to healthy: **64s** measured this session - Setup time recorded: 12 min (boot + configuration to first working workflow) ## What broke / notes - Boot to healthy measured at 64s on the 2GB reference env ## The call Rallly does the one Doodle job — find a time that works for everyone — with a clean UI, no ads around your poll, and no $10.95/mo for what is fundamentally a form with dates on it.
Verdict history
- 2026-08-10: unscored → YES — Initial verdict: Rallly does the one Doodle job — find a time that works for everyone — with a clean UI, no ads around your pol.
