Starting with v4.10, Rallly Self-Hosted ships as a managed Docker Compose stack with an installer, the Rallly CLI (Documentation Index
Fetch the complete documentation index at: https://support.rallly.co/llms.txt
Use this file to discover all available pages before exploring further.
rallly.sh), bundled reverse proxy (Traefik), and bundled object storage (Garage). If you set up Rallly before v4.10 — with a hand-edited docker-compose.yml, your own reverse proxy, or a config.env file — this guide walks you through the upgrade.
Before you begin
- You have root (or sudo) access to the server.
- You have a recent, tested database backup stored off the server.
- Your DNS
Arecord for the domain points at this server’s IP. Traefik will request a fresh Let’s Encrypt certificate on first boot.
Step 1 — Save your secrets
Open your existing.env or config.env. Copy these values somewhere safe — you’ll paste them into the new stack’s .env:
| Value | Notes |
|---|---|
SECRET_PASSWORD | Critical. Must carry over. Encrypts sessions; if it changes, all existing sessions are invalidated. |
SUPPORT_EMAIL | |
NOREPLY_EMAIL | If set. |
SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PWD | All SMTP config. |
ALLOWED_EMAILS | If set. |
INITIAL_ADMIN_EMAIL | If set. |
OIDC_*, GOOGLE_*, MICROSOFT_* | Any SSO credentials you use. |
NEXT_PUBLIC_BASE_URL) becomes DOMAIN in the new stack — without the scheme or trailing slash. For example https://rallly.example.com → rallly.example.com.
Step 2 — Back up the database
From your existing stack directory, with the old stack running:rallly-backup.sql.gz off the server (e.g. scp to your laptop). Do not skip this.
rallly_db is the Postgres service name in the official legacy docker-compose.yml. If you renamed it or authored your own compose file, replace it with whatever yours is called (run docker compose ps to check).Step 3 — Stop the old stack
From the old stack directory:Step 4 — Install the new stack
DOMAIN as before. For SUPPORT_EMAIL, SMTP settings, etc., paste in the values you saved in Step 1.
After setup completes, do not start the stack yet. Edit /opt/rallly/.env and:
- Replace the freshly-generated
SECRET_PASSWORDwith the value from your old.env. - Add any SSO variables (
OIDC_*,GOOGLE_*,MICROSOFT_*) that the interactive setup didn’t cover.
Step 5 — Start the stack and restore the database
database system is ready to accept connections, restore your backup:
Step 6 — Verify
- Visit
https://<your-domain>. You should see the sign-in page served over HTTPS (Traefik’s Let’s Encrypt certificate will be issued within a minute of first boot). - Sign in with an existing account. If
SECRET_PASSWORDwas preserved correctly, your previous session may even still be valid. - Open an existing poll and confirm votes are intact.
- Send a test sign-in email to confirm SMTP works.
- If you use SSO, sign in through each configured provider.
Step 7 — Clean up
Once you’re satisfied the new stack is working:What doesn’t carry over
- TLS certificates. Traefik issues fresh certificates via Let’s Encrypt on first start. Any existing certs (from certbot or your old proxy) are not imported.
- Custom
docker-compose.ymlchanges. The new stack is managed; edits will conflict with./rallly.sh update. Configure via.envonly. - Uploaded files from an external S3 bucket. The new stack ships with Garage for uploads. If you were previously using external S3, either keep pointing at it (advanced, see External object storage) or accept that previously uploaded files will not appear in the new Garage instance.
Moving to a different server
If you’re migrating to a new server rather than upgrading in place, the flow is the same, with one change: complete Step 4 (install new stack) on the new server, then update your DNSA record to point at it before Step 5. Keep the old server running until Step 6 verification passes, which gives you a rollback path.