Rallly
Self-hosted meeting and event scheduling polls
Rallly is a self-hosted scheduling tool that helps groups find the best date and time for a meeting through polls. It is a clean, modern alternative to Doodle.
Key features
- Group date and time polls
- Clean modern interface
- Email notifications
- No account needed for voters
Pros & cons
Strengths
- Simple and focused
- Pleasant UX
Trade-offs
- Scheduling polls only
- Requires Postgres
Rallly replaces
Last reviewed Sep 13, 2026 · 826 words
Rallly needs three things configured before anyone can log in, and none of them are the poll. It needs a Postgres database, a 32-character secret, and a working SMTP server, because login is by magic link and account creation is by email verification. Get those right and you have a self-hosted Doodle that takes 4 minutes to create a poll, needs no account from the people voting, and sends everyone a summary when you finalise the date. Get the SMTP wrong and you have a beautiful app that nobody can enter, which is the whole reason a tool this simple is on the Easy end of the catalogue yet generates so many "can't sign in" issues.
Compose with the parts that are not optional
services:
rallly:
image: lukevella/rallly:latest
environment:
DATABASE_URL: postgres://rallly:change-me@db:5432/rallly
SECRET_PASSWORD: a-random-string-of-at-least-32-characters
NEXT_PUBLIC_BASE_URL: https://when.example.com
SUPPORT_EMAIL: [email protected]
SMTP_HOST: smtp.example.com
SMTP_PORT: "587"
SMTP_USER: [email protected]
SMTP_PWD: change-me
SMTP_SECURE: "false"
ALLOWED_EMAILS: "*@example.com"
ports:
- "127.0.0.1:3000:3000"
depends_on: [db]
restart: unless-stopped
db:
image: postgres:16
environment:
POSTGRES_DB: rallly
POSTGRES_USER: rallly
POSTGRES_PASSWORD: change-me
volumes:
- ./pgdata:/var/lib/postgresql/data
Port 3000 is the app. NEXT_PUBLIC_BASE_URL must be the public HTTPS address, since every link in every email is built from it. ALLOWED_EMAILS is the line to notice: without it, anyone who finds your instance can register, and the pattern syntax lets you restrict sign-ups to your own domain. Voters never register, so this only limits who can create polls. The whole thing runs in about 512 MB, TypeScript on Next.js, AGPL-3.0, at 5,240 GitHub stars with a history back to 2015.
The Postgres requirement, and whether it is a problem
Rallly does not support SQLite, which the catalogue flags as a con. For an app whose entire dataset is a few hundred polls, it is a fair complaint. My answer is the one in the Postgres for everything post: run one Postgres container for the house and give each app its own database in it. Rallly's schema migrates itself on start, so upgrades are pull-and-restart, and the backup is a pg_dump you are already running.
What the poll flow gets right
Create a poll, add candidate dates or time slots, share the link. Voters see a grid, click yes, no or if-need-be per slot, leave a comment, and are done; no login, no cookie wall. The organiser sees the tally, picks a slot, and Rallly emails every participant who left an address. Time zones are handled per viewer, which is the feature that makes it usable for a call across three countries and the one When2meet never had. Polls can be duplicated, closed, and deleted; participants can be removed. It is a tidy, finished flow that I have watched people who hate software use without help.
What it deliberately does not do
It does not do booking pages. If you want "pick a 30-minute slot from my free time" against your calendar, that is a Calendly-style tool and Rallly is not one; it will not read your calendar at all. It does not do recurring meetings, room booking, or anything after the date is chosen. There is no API of consequence for automation. Newer features on the hosted service sit behind a Pro plan, and the self-hosted build has occasionally trailed it on things like finalisation emails and integrations; the core poll has always been fully there. This is a tool for one job, and the job is "when can we all meet".
Alternatives, smaller and larger
| You want | Pick |
|---|---|
| A Doodle replacement with a modern UI | Rallly |
| The same job in a lighter, Django-based tool | Bitpoll |
| Polls inside a suite you already run | Nextcloud with the Polls app |
| Team chat that already has polling | Nextcloud Talk |
Nextcloud is the bigger sibling for anyone already running it, and its Polls app covers 80 % of what Rallly does without a new container. Rallly wins on the participant experience: the voting page is cleaner, faster and works better on a phone than anything in Nextcloud. The groupware category and the calendar category hold the heavier scheduling tools.
What I'd do
Rallly against your shared Postgres, SMTP wired to a real relay, ALLOWED_EMAILS restricted to your domain, behind a reverse proxy with TLS. Test the magic-link login before announcing it to anyone. Run it for a club, a team or an extended family that plans dinners, and expect it to sit unused for weeks and then earn its keep in an afternoon. If you already run Nextcloud, try its Polls app first and switch to Rallly only if the voting page annoys the people you send it to; in my experience it does.
Similar groupware apps
Colanode
GroupwareCollaboration suite with real-time messaging, rich text pages, file
Radicale
GroupwareSimple, lightweight CalDAV and CardDAV server
Replaces Google Calendar, iCloud
Easy!Appointments
GroupwareOpen-source web appointment scheduler
Replaces Calendly, Acuity Scheduling
Baïkal
GroupwareLightweight CalDAV and CardDAV server with web admin
Replaces Google Calendar, iCloud
SOGo
GroupwareScalable groupware server with webmail, calendar and contacts
Replaces Microsoft Exchange, Microsoft 365
ZenTao
GroupwareOpen-source project and team collaboration platform
Replaces Jira, Confluence