Rallly
Rallly is an open-source scheduling and collaboration tool for organizing events and meetings.
Configuration
version: "3.8"
services:
rallly:
image: lukevella/rallly:4.11.1
restart: unless-stopped
depends_on:
- db
- minio
- minio-init
environment:
NEXT_PUBLIC_BASE_URL: ${NEXT_PUBLIC_BASE_URL}
DATABASE_URL: ${DATABASE_URL}
SECRET_PASSWORD: ${SECRET_PASSWORD}
SUPPORT_EMAIL: ${SUPPORT_EMAIL}
NOREPLY_EMAIL: ${NOREPLY_EMAIL}
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: ${SMTP_PORT}
SMTP_USER: ${SMTP_USER}
SMTP_PWD: ${SMTP_PWD}
SMTP_SECURE: ${SMTP_SECURE}
S3_ENDPOINT: ${S3_ENDPOINT}
S3_BUCKET_NAME: ${S3_BUCKET_NAME}
S3_REGION: ${S3_REGION}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
INITIAL_ADMIN_EMAIL: ${INITIAL_ADMIN_EMAIL}
db:
image: postgres:14-alpine
restart: unless-stopped
environment:
POSTGRES_DB: rallly
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- rallly-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -d rallly"]
interval: 10s
timeout: 5s
retries: 5
minio:
image: minio/minio:latest
restart: unless-stopped
command: server /data
environment:
MINIO_ROOT_USER: ${S3_ACCESS_KEY_ID}
MINIO_ROOT_PASSWORD: ${S3_SECRET_ACCESS_KEY}
volumes:
- rallly-minio:/data
minio-init:
image: minio/mc:latest
depends_on:
- minio
restart: "no"
entrypoint: >
/bin/sh -c "
until mc alias set local http://minio:9000 ${S3_ACCESS_KEY_ID} ${S3_SECRET_ACCESS_KEY}; do sleep 2; done;
mc mb --ignore-existing local/rallly;
"
volumes:
rallly-db:
rallly-minio:[variables]
main_domain = "${domain}"
support_email = "${email}"
noreply_email = "${email}"
initial_admin_email = "${email}"
postgres_password = "${password:32}"
secret_password = "${password:32}"
s3_access_key_id = "rallly"
s3_secret_access_key = "${password:32}"
smtp_host = "smtp.example.com"
smtp_port = "587"
smtp_user = "change-me"
smtp_password = "${password:32}"
smtp_secure = "false"
[config]
env = [
"NEXT_PUBLIC_BASE_URL=https://${main_domain}",
"DATABASE_URL=postgres://postgres:${postgres_password}@db:5432/rallly",
"SECRET_PASSWORD=${secret_password}",
"SUPPORT_EMAIL=${support_email}",
"NOREPLY_EMAIL=${noreply_email}",
"SMTP_HOST=${smtp_host}",
"SMTP_PORT=${smtp_port}",
"SMTP_USER=${smtp_user}",
"SMTP_PWD=${smtp_password}",
"SMTP_SECURE=${smtp_secure}",
"S3_ENDPOINT=http://minio:9000",
"S3_BUCKET_NAME=rallly",
"S3_REGION=us-east-1",
"S3_ACCESS_KEY_ID=${s3_access_key_id}",
"S3_SECRET_ACCESS_KEY=${s3_secret_access_key}",
"INITIAL_ADMIN_EMAIL=${initial_admin_email}",
"POSTGRES_PASSWORD=${postgres_password}",
]
[[config.domains]]
serviceName = "rallly"
port = 3000
host = "${main_domain}"Base64
To import this template in Dokploy: create a Compose service → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZlcnNpb246IFwiMy44XCJcblxuc2VydmljZXM6XG4gIHJhbGxseTpcbiAgICBpbWFnZTogbHVrZXZlbGxhL3JhbGxseTo0LjExLjFcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICAtIGRiXG4gICAgICAtIG1pbmlvXG4gICAgICAtIG1pbmlvLWluaXRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIE5FWFRfUFVCTElDX0JBU0VfVVJMOiAke05FWFRfUFVCTElDX0JBU0VfVVJMfVxuICAgICAgREFUQUJBU0VfVVJMOiAke0RBVEFCQVNFX1VSTH1cbiAgICAgIFNFQ1JFVF9QQVNTV09SRDogJHtTRUNSRVRfUEFTU1dPUkR9XG4gICAgICBTVVBQT1JUX0VNQUlMOiAke1NVUFBPUlRfRU1BSUx9XG4gICAgICBOT1JFUExZX0VNQUlMOiAke05PUkVQTFlfRU1BSUx9XG4gICAgICBTTVRQX0hPU1Q6ICR7U01UUF9IT1NUfVxuICAgICAgU01UUF9QT1JUOiAke1NNVFBfUE9SVH1cbiAgICAgIFNNVFBfVVNFUjogJHtTTVRQX1VTRVJ9XG4gICAgICBTTVRQX1BXRDogJHtTTVRQX1BXRH1cbiAgICAgIFNNVFBfU0VDVVJFOiAke1NNVFBfU0VDVVJFfVxuICAgICAgUzNfRU5EUE9JTlQ6ICR7UzNfRU5EUE9JTlR9XG4gICAgICBTM19CVUNLRVRfTkFNRTogJHtTM19CVUNLRVRfTkFNRX1cbiAgICAgIFMzX1JFR0lPTjogJHtTM19SRUdJT059XG4gICAgICBTM19BQ0NFU1NfS0VZX0lEOiAke1MzX0FDQ0VTU19LRVlfSUR9XG4gICAgICBTM19TRUNSRVRfQUNDRVNTX0tFWTogJHtTM19TRUNSRVRfQUNDRVNTX0tFWX1cbiAgICAgIElOSVRJQUxfQURNSU5fRU1BSUw6ICR7SU5JVElBTF9BRE1JTl9FTUFJTH1cblxuICBkYjpcbiAgICBpbWFnZTogcG9zdGdyZXM6MTQtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFBPU1RHUkVTX0RCOiByYWxsbHlcbiAgICAgIFBPU1RHUkVTX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIHJhbGxseS1kYjovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IFtcIkNNRC1TSEVMTFwiLCBcInBnX2lzcmVhZHkgLVUgcG9zdGdyZXMgLWQgcmFsbGx5XCJdXG4gICAgICBpbnRlcnZhbDogMTBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuXG4gIG1pbmlvOlxuICAgIGltYWdlOiBtaW5pby9taW5pbzpsYXRlc3RcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGNvbW1hbmQ6IHNlcnZlciAvZGF0YVxuICAgIGVudmlyb25tZW50OlxuICAgICAgTUlOSU9fUk9PVF9VU0VSOiAke1MzX0FDQ0VTU19LRVlfSUR9XG4gICAgICBNSU5JT19ST09UX1BBU1NXT1JEOiAke1MzX1NFQ1JFVF9BQ0NFU1NfS0VZfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIHJhbGxseS1taW5pbzovZGF0YVxuXG4gIG1pbmlvLWluaXQ6XG4gICAgaW1hZ2U6IG1pbmlvL21jOmxhdGVzdFxuICAgIGRlcGVuZHNfb246XG4gICAgICAtIG1pbmlvXG4gICAgcmVzdGFydDogXCJub1wiXG4gICAgZW50cnlwb2ludDogPlxuICAgICAgL2Jpbi9zaCAtYyBcIlxuICAgICAgdW50aWwgbWMgYWxpYXMgc2V0IGxvY2FsIGh0dHA6Ly9taW5pbzo5MDAwICR7UzNfQUNDRVNTX0tFWV9JRH0gJHtTM19TRUNSRVRfQUNDRVNTX0tFWX07IGRvIHNsZWVwIDI7IGRvbmU7XG4gICAgICBtYyBtYiAtLWlnbm9yZS1leGlzdGluZyBsb2NhbC9yYWxsbHk7XG4gICAgICBcIlxuXG52b2x1bWVzOlxuICByYWxsbHktZGI6XG4gIHJhbGxseS1taW5pbzoiLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxuc3VwcG9ydF9lbWFpbCA9IFwiJHtlbWFpbH1cIlxubm9yZXBseV9lbWFpbCA9IFwiJHtlbWFpbH1cIlxuaW5pdGlhbF9hZG1pbl9lbWFpbCA9IFwiJHtlbWFpbH1cIlxucG9zdGdyZXNfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnNlY3JldF9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuczNfYWNjZXNzX2tleV9pZCA9IFwicmFsbGx5XCJcbnMzX3NlY3JldF9hY2Nlc3Nfa2V5ID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5zbXRwX2hvc3QgPSBcInNtdHAuZXhhbXBsZS5jb21cIlxuc210cF9wb3J0ID0gXCI1ODdcIlxuc210cF91c2VyID0gXCJjaGFuZ2UtbWVcIlxuc210cF9wYXNzd29yZCA9IFwiJHtwYXNzd29yZDozMn1cIlxuc210cF9zZWN1cmUgPSBcImZhbHNlXCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbiAgXCJORVhUX1BVQkxJQ19CQVNFX1VSTD1odHRwczovLyR7bWFpbl9kb21haW59XCIsXG4gIFwiREFUQUJBU0VfVVJMPXBvc3RncmVzOi8vcG9zdGdyZXM6JHtwb3N0Z3Jlc19wYXNzd29yZH1AZGI6NTQzMi9yYWxsbHlcIixcbiAgXCJTRUNSRVRfUEFTU1dPUkQ9JHtzZWNyZXRfcGFzc3dvcmR9XCIsXG4gIFwiU1VQUE9SVF9FTUFJTD0ke3N1cHBvcnRfZW1haWx9XCIsXG4gIFwiTk9SRVBMWV9FTUFJTD0ke25vcmVwbHlfZW1haWx9XCIsXG4gIFwiU01UUF9IT1NUPSR7c210cF9ob3N0fVwiLFxuICBcIlNNVFBfUE9SVD0ke3NtdHBfcG9ydH1cIixcbiAgXCJTTVRQX1VTRVI9JHtzbXRwX3VzZXJ9XCIsXG4gIFwiU01UUF9QV0Q9JHtzbXRwX3Bhc3N3b3JkfVwiLFxuICBcIlNNVFBfU0VDVVJFPSR7c210cF9zZWN1cmV9XCIsXG4gIFwiUzNfRU5EUE9JTlQ9aHR0cDovL21pbmlvOjkwMDBcIixcbiAgXCJTM19CVUNLRVRfTkFNRT1yYWxsbHlcIixcbiAgXCJTM19SRUdJT049dXMtZWFzdC0xXCIsXG4gIFwiUzNfQUNDRVNTX0tFWV9JRD0ke3MzX2FjY2Vzc19rZXlfaWR9XCIsXG4gIFwiUzNfU0VDUkVUX0FDQ0VTU19LRVk9JHtzM19zZWNyZXRfYWNjZXNzX2tleX1cIixcbiAgXCJJTklUSUFMX0FETUlOX0VNQUlMPSR7aW5pdGlhbF9hZG1pbl9lbWFpbH1cIixcbiAgXCJQT1NUR1JFU19QQVNTV09SRD0ke3Bvc3RncmVzX3Bhc3N3b3JkfVwiLFxuXVxuXG5bW2NvbmZpZy5kb21haW5zXV1cbnNlcnZpY2VOYW1lID0gXCJyYWxsbHlcIlxucG9ydCA9IDMwMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCIiCn0=Links
Tags
scheduling, polls, collaboration
Version: 4.11.1