/rallly-selfhosted

Example docker configuration for running your own instance of Rallly

Rallly Self-Hosting Example

This repository contains all the necessary information and files to self-host your own instance of Rallly. Rallly is an open-source scheduling and collaboration tool designed to make organizing events and meetings easier.

Table of Contents

Requirements

To run this project you will need:

Setup Instructions

1. Clone the repository

git clone https://github.com/lukevella/rallly-selfhosted.git
cd rallly-selfhosted

2. Add required config

In the root of this project you will find a file called config.env. This is where you can set your environment variables to configure your instance.

Start by generating a secret key. Must be at least 32-characters long.

openssl rand -base64 32

Open config.env and set SECRET_PASSWORD to your secret key.

Next, set NEXT_PUBLIC_BASE_URL. It should be the base url where this instance is accessible, including the scheme (eg. http:// or https://), the domain name, and optionally a port. Do not use trailing slashes or URLs with paths/subfolders..

3. Configure your SMTP Server

First, set SUPPORT_EMAIL. Your users will see this as the contact email for any support issues and it will also appear as the sender of all emails.

Next, use the following environment variables to configure your SMTP server:

  • SMTP_HOST - The host address of your SMTP server
  • SMTP_PORT - The port of your SMTP server
  • SMTP_SECURE - Set to "true" if SSL is enabled for your SMTP connection
  • SMTP_USER - The username (if auth is enabled)
  • SMTP_PWD - The password (if auth is enabled)

4. Secure your instance (optional)

The default behaviour of the app is the same as on the cloud-hosted version on rallly.co. i.e. Anyone can create polls without needing to log in. You can prevent this by setting AUTH_REQUIRED to true in config.env which limits poll creation and admin access to logged in users.

Additionally, you can restrict who is able to register and log in by setting ALLOWED_EMAILS. You can use wildcards to allow a range of email addresses.

# Example: only users matching the following patterns can register/login
ALLOWED_EMAILS="user@email.com,*@example.com,*@*.example.com"

5. Disabling the landing page (optional)

By default the app will take you to the landing page which may not be what you want. If you want to go straight in to the app, set DISABLE_LANDING_PAGE to true.

6. Start the server

You can start the server by running:

docker compose up -d

This command will:

  • Create a postgres database
  • Run migrations to set up the database schema
  • Start the Next.js server on port 3000

Using a Reverse Proxy

By default the app will run unencrypted on port 3000. If you want to serve the app over HTTPS you will need to use a reverse proxy.

After setting up a reverse proxy be sure to change this line - 3000:3000 to - 127.0.0.1:3000:3000 in docker-compose.yml and restart the container for it to apply changes. This prevents Rallly from being accessed remotely using HTTP on port 3000 which is a security concern.

Configuration Options

For a full list of configuration options, check out the official self-hosting docs.

Update Instructions

Rallly is constantly being updated but you will need to manually pull these updates and restart the server to run the latest version. You can do this by running the following commands from within this directory:

docker compose down
docker compose pull
docker compose up -d

Version management

You can pin a specific version of Rallly by changing the image line in docker-compose.yml:

- image: lukevella/rallly:<version>

Check the releases to see what versions are available. We follow semver versioning so you may want to set your version to a major release (e.g. lukevella/rallly:2) to avoid pulling in breaking changes.

Links