Ever needed to get together with someone, schedule a meeting, or a support call but not sure if the next person will be or is available at some point in time? Yeah, we've all been there.

In a corporate environment, many platforms offer that kind of functionality. Exchange, O365, and the like, but for a small team those kinds of systems might not be needed, as they are an overkill to simply get a slot in the calendar.

If we want to step away from the commercial segment altogether, and maybe self-host a solution, things get even more complicated. For some time I have been looking into a nice, easy, and quick way to set up a poll to book a calendar date.

While there are many options out there, just recently have I stumbled upon Rallly.co.

Rallly - meeting schedule platform that can be self-hosted as well

In this article, we will cover how to get Rallly up and running in Docker, as well as how it works, and whether this is the next Doodle alternative for you.

Setting up Rallly in Docker

Rallly is indeed a light and simple platform from a configuration standpoint, and personally much easier to set up than for example Cal.com (another similar app, same as the beforementioned Doodle).

Built with a solid foundation of both Next.js and Prisma, Rallly is fast, stable, modern, and functional.

GitHub - lukevella/rallly: Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.
Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier. - GitHub - lukevella/rallly: Rallly is an open-source scheduling and collaboration…

Rallly official GitHub repository

Created by Luke Vella, this is a platform that can be up and running in a matter of minutes, configured behind a reverse proxy, and pushed into the world to be used on any modern desktop or mobile device. The users of this platform don't even have to register to confirm a meeting.

Like most things today, Rallly is officially supported on Docker, and Luke maintains the image hosted on hub.docker.com. It is this exact image that we will use to get started as well as the Postgres instance (an already running one will work as well) for database operations.

The documentation for Rallly is very well done and can provide all the steps needed to get going. However, it is based on running docker-compose from a command line, so if that is not your cup of tea, and would like a different approach, keep reading.

For those familiar with how I like to run Docker deployments, you know that Portainer is my No.1 method, but of course not the only one. In case anyone wants to use any other docker-compose compatible solution or the command line, you are welcome to it.

docker-compose

To run this solution using docker-compose we can either clone the Github repository, alter the env variable and run it (as suggested via the documentation), or in case we already have Postgres running as a separate container, use the following compose to create Rallly instance.

version: "3.5"
services:
  rallly:
    image: lukevella/rallly
    container_name: rallly
    network_mode: bridge
    environment:
      - DATABASE_URL=postgres://username:password@IPADDRESS:PORT/db_name
      - NEXT_PUBLIC_BASE_URL=https://rallly.example.com
      - SECRET_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
      - [email protected]
      - [email protected]
      - SMTP_HOST=smtp.gmail.com
      - SMTP_PORT=587
      - [email protected]
      - SMTP_PWD=xxxxxxxxxxxxxxx
      - SMTP_TLS_ENABLED=true
    ports:
      - 3000:3000
    restart: unless-stopped

Rallly docker-compose example

All of the variables used in this compose file are from the official documentation found here, but here are just a few pointers for some of those.

NEXT_PUBLIC_BASE_URL - use the domain name including the protocol (http or https) with no trailing slashes or URLs with paths/subfolders.

SECRET_PASSWORD - A random 32-character secret key used to encrypt user sessions. To generate it we can use the following command:

openssl rand -base64 32

SUPPORT_EMAIL and SMTP_HOST are also two remaining mandatory variables, that need to be configured. The email address and the host don't have to be from the same domain but are needed for this platform to work.

💡
NOTE: Any account created will use email as the "username" but there will be no password. Instead, a message will be sent with either a magic link inside it or a 6-digit verification code.

Using an external Postgres DB as in this example we need to have it running as well. Below is an example of a docker-compose.

version: '3.8'
services:
  postgres:
    image: postgres:latest
    network_mode: bridge
    container_name: postgres
    ports:
      - "5432:5432"
    volumes:
      - /volume1/docker/postgresql:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=xxxxxxxxx
      - POSTGRES_USER=xxxxxxxx
    restart: always

Postgres docker-compose example

Following the Postgres instance, we could use another container to manage the said instance by running pgAdmin web UI.

version: '3.8'
services:
  pgadmin:
    image: dpage/pgadmin4
    network_mode: bridge
    container_name: pgadmin
    ports:
      - 80:80
    environment:
      - [email protected]
      - PGADMIN_DEFAULT_PASSWORD=SuperSecret
    restart: always

pgAdmin docker-compose example (web UI for Postgres administration)

How it works?

By starting a poll, with Rallly we will be able to create an event of any kind and set up various dates and times that we would like the participants to vote on.

By default, comment section will be allowed, so participants can also post suggestions and other various comments regarding the poll.

List of active and finalised polls

Another great feature that this platform offers is on the fly time zone change. This can come in handy if we want to verify how the meeting will be presented to other participants in their time zone.

Clock preferences can be changed on the fly

Once the meeting has been booked an email notification will be sent to all the participants with a confirmation and an ICS file so all the information can be imported into a calendar.

Confirmation with an attached calendar file

In terms of compatibility, the title, location, and description fields will be correctly populated in the calendar (iOS and macOS), but there will of course be no option to get alerts unless we set one in the cal app ourselves.

Personally, so far I am very pleased with the solution, as it is fast, mobile-friendly, and gets the job done. What I would like to see is maybe an option to implement webhook or push notification options. At the moment, any new comment, date choosing, etc, gets sent via an email, including the login process as stated above.

To minimize the number of emails it might come in handy for this platform to support some sort of method of notifications that does not include an email, and that way only login and confirmation emails would arrive.

Another feature that Rallly does not have is integration with other services, such as Zoom, Teams, and the like. From a user perspective, it would come in handy to have service-linked URLs, but then again, nothing prevents the organizer before finalizing the event from adding a Zoom link URL based on all the dates and times that work for all the participants.

Not a deal breaker for me, but these are some features that might come at a later date to further enhance the overall experience.

With all that said, Rallly is a well-built platform that will get the job done, and maybe this is the self-hosted alternative you were looking for.