Deploying a Rallly App
Introduction
Rallly is an open-source scheduling and polling app for teams. Deploying Rallly with a Dockerfile on Klutch.sh gives you reproducible builds, managed secrets, and optional persistent storage—all configured from klutch.sh/app. This guide covers installation, Dockerfile setup, environment variables, storage, Nixpacks overrides, and sample checks to verify your deployment.
Prerequisites
- A Klutch.sh account (sign up)
- A GitHub repository containing your Rallly Dockerfile (GitHub is the only supported git source)
- External PostgreSQL database
- Optional SMTP credentials for email notifications
For onboarding, see the Quick Start.
Architecture and ports
- Rallly serves HTTP on internal port
3000. Choose HTTP traffic in Klutch.sh and set the internal port to3000. - Persistent storage is optional (e.g., for uploads if enabled). Primary data resides in Postgres.
Repository layout
rallly/├── Dockerfile # Must be at repo root for auto-detection└── README.mdKeep secrets out of Git; store them in Klutch.sh environment variables.
Installation (local) and starter commands
Build and run locally (ensure Postgres is reachable):
docker build -t rallly-local .docker run -p 3000:3000 \ -e DATABASE_URL=postgres://user:pass@localhost:5432/rallly \ -e NEXTAUTH_SECRET=$(openssl rand -hex 32) \ -e NEXTAUTH_URL=http://localhost:3000 \ rallly-localDockerfile for Rallly (production-ready)
Place this at the repo root; Klutch.sh auto-detects Dockerfiles.
FROM node:18-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY . .RUN npm run build
FROM node:18-alpine AS runnerWORKDIR /appENV NODE_ENV=productionENV PORT=3000COPY --from=builder /app/.next ./.nextCOPY --from=builder /app/public ./publicCOPY --from=builder /app/package*.json ./RUN npm ci --omit=devEXPOSE 3000CMD ["npm", "run", "start"]Notes:
- Pin Node to the version Rallly supports; adjust if upstream changes.
- Keep the Dockerfile at the repo root; Docker selection is automatic in Klutch.sh.
Environment variables (Klutch.sh)
Set these before deploying:
PORT=3000DATABASE_URL=postgres://<user>:<password>@<host>:5432/<db>NEXTAUTH_URL=https://example-app.klutch.shNEXTAUTH_SECRET=<secure-random-hex>- Optional SMTP/email:
EMAIL_SERVER,EMAIL_FROM
If deploying without the Dockerfile and relying on Nixpacks:
NIXPACKS_NODE_VERSION=18NIXPACKS_START_CMD=npm run start
Attach persistent volumes
If you store uploads or cache locally, add storage in Klutch.sh (path and size only):
/app/storage— optional uploads/cache.
Ensure the path matches your Rallly configuration.
Deploy Rallly on Klutch.sh (Dockerfile workflow)
- Push your repository—with the Dockerfile at the root—to GitHub.
- Open klutch.sh/app, create a project, and add an app.
- Select HTTP traffic and set the internal port to
3000. - Add the environment variables above (database, NextAuth URL/secret, optional SMTP).
- Attach a volume at
/app/storageif you need local persistence, sized for your media. - Deploy. Your app will be reachable at
https://example-app.klutch.sh; add a custom domain if desired.
Sample checks
Landing page:
curl -I https://example-app.klutch.shIf you expose a health endpoint (replace if different):
curl -I https://example-app.klutch.sh/api/healthHealth checks and production tips
- Add an HTTP readiness probe to
/or your health endpoint. - Keep
NEXTAUTH_SECRET, DB credentials, and SMTP secrets in Klutch.sh secrets; rotate regularly. - Use external Postgres for durability; back it up on a schedule.
- Pin Docker base versions and test upgrades in staging before production.
- Monitor storage usage on
/app/storageif enabled; resize volumes proactively.
Rallly on Klutch.sh delivers reproducible Docker builds, managed secrets, and optional storage—without extra YAML or CI steps. Configure ports, env vars, and storage, then launch your scheduling app.