Rallly
Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.
Alternative to: doodle, when2meet
Rallly is an open-source scheduling tool that helps you find the best date and time to meet. Create a poll with a few options, share the link, and let your participants vote on when they're available, with no account needed to respond. It offers an availability grid, comments, notifications, and finalization of the winning date, all self-hostable via Docker.
Rallly Docker Compose example
Self-host Rallly on your own server, homelab, or VPS starting from this Docker Compose example.
It runs Rallly in Docker containers using the official lukevella/rallly:latest, postgres:18-alpine images, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
rallly:
image: lukevella/rallly:latest
depends_on:
db:
condition: service_healthy
restart: unless-stopped
environment:
# PostgreSQL connection string. The password is internal to the compose network.
DATABASE_URL: "postgresql://rallly:rallly@db:5432/rallly"
# Random 32+ character secret used to encrypt login tokens. CHANGE THIS.
SECRET_PASSWORD: "changemechangemechangemechangeme"
# Public URL where users reach Rallly. Used for links in emails and redirects.
NEXT_PUBLIC_BASE_URL: "http://localhost:3000"
# Contact/support email shown to users. Rallly requires this to be set.
SUPPORT_EMAIL: "support@example.com"
# SMTP server hostname used to deliver login codes and notifications.
SMTP_HOST: "changeme"
# SMTP server port (587 for STARTTLS, 465 for implicit TLS).
SMTP_PORT: "587"
# SMTP username.
SMTP_USER: "changeme"
# SMTP password.
SMTP_PWD: "changeme"
# Whether the SMTP connection uses implicit TLS (true) or STARTTLS (false).
SMTP_SECURE: "false"
db:
# Pinned to a major version; PostgreSQL is only reachable inside the compose network.
image: postgres:18-alpine
restart: unless-stopped
environment:
# Owner of the Rallly database.
POSTGRES_USER: "rallly"
# Internal database password (not published outside the compose network).
POSTGRES_PASSWORD: "rallly"
# Database created on first start.
POSTGRES_DB: "rallly"
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U rallly"]
interval: 5s
timeout: 5s
retries: 5
volumes:
db_data:
Values set to changeme are required — replace them with your own
values before starting Rallly.
Prefer a managed setup? WinterFlow installs, configures, and updates Rallly for you using this same Docker Compose configuration.