Skip to main content
The Rallly CLI (rallly.sh) is the single entry point for day-to-day operations on a self-hosted instance. It ships with the self-hosted stack and should be run from the stack directory (e.g. /opt/rallly for installer-based setups).

Commands

Applying configuration changes

After editing .env, apply changes with:

Updating

This pulls the latest Docker images and recreates containers. Your data and configuration are preserved. By default the stack tracks the lukevella/rallly:4 tag, so update will bring you the latest compatible 4.x release. To pin to a specific version or follow a different major, set RALLLY_IMAGE in .env (see Configuration).
Do not edit docker-compose.yml or other stack files. ./rallly.sh update expects these files unchanged and will overwrite local edits. Only .env is safe to modify.

Backup and restore

Backup

Database backups are written to ./backups/ as timestamped .sql.gz files. Copy these off the server regularly — they are your main recovery artifact.
The backup captures the PostgreSQL database. Uploaded files (avatars, etc.) are stored in the garage-data Docker volume; back that up separately if you rely on uploads.

Restore

Stop the app first so it releases its database connections, drop and recreate an empty rallly database, stream in the dump, then restart:

Logs

Stream all services:
Or a single service (web, db, garage, traefik):

Troubleshooting

SSL certificate is not being issued

Let’s Encrypt can take up to a minute on first start. Check:
  • The domain’s DNS A record resolves to the server’s public IP.
  • Ports 80 and 443 are open in the server’s firewall.
  • ./rallly.sh logs traefik for ACME errors.

Port 80 or 443 already in use

Another service (nginx, apache, another Docker stack) is bound to the port. Stop it or reconfigure it to leave 80/443 free — Traefik needs both.

Containers keep restarting

Check the failing service’s logs:
Common causes:
  • Missing or invalid .env values (e.g. empty SECRET_PASSWORD, unreachable SMTP).
  • Database is still initialising on first boot — usually resolves within a few retries.

Database connection errors on first boot

PostgreSQL takes a few seconds to initialise. The app retries automatically. If errors persist, inspect ./rallly.sh logs db.