Rallly

Self-hosted meeting and event scheduling polls

Groupware ★ 5.3k stars Easy setup AGPL-3.0

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 wantPick
A Doodle replacement with a modern UIRallly
The same job in a lighter, Django-based toolBitpoll
Polls inside a suite you already runNextcloud with the Polls app
Team chat that already has pollingNextcloud 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