Deploying a ToolJet App
Introduction
ToolJet is an open-source low-code platform for internal tools. This guide walks through containerizing ToolJet with a Dockerfile, connecting it to PostgreSQL and Redis, adding optional storage, and deploying it to Klutch.sh over HTTP.
Prerequisites
- GitHub repository containing your Dockerfile.
- External PostgreSQL (for app data) and Redis (for cache/queues), either managed or running as separate apps.
- Klutch.sh project set up in klutch.sh/app.
Project structure
.└── DockerfileSample Dockerfile
FROM tooljet/tooljet-ce:latest
# Default ToolJet portENV PORT=3000EXPOSE 3000Required environment variables
TOOLJET_HOST– public URL (e.g.,https://example-app.klutch.sh).DATABASE_URL– PostgreSQL connection string, e.g.,postgres://USER:PASSWORD@HOST:PORT/DB.REDIS_URL– Redis connection string, e.g.,redis://:PASSWORD@HOST:6379.LOCKBOX_MASTER_KEY– secure random key for secrets.SECRET_KEY_BASE– secure random key for Rails.DISABLE_SIGNUPS– set totruefor controlled access.
Optional environment variables
MINIO_ACCESS_KEY/MINIO_SECRET_KEY/MINIO_ENDPOINT/MINIO_BUCKETif you use S3-compatible storage.PORT– override if you change the internal port.
Persistence
ToolJet stores metadata in PostgreSQL. If you use local asset storage, attach a volume:
- Mount path:
/app/server/files - Size: align with expected uploads/exports
Networking
- Protocol: HTTP
- Internal port:
3000 - Users access via
https://example-app.klutch.shwhile Klutch.sh routes to port3000inside the container.
Health check (recommended)
curl -I http://localhost:3000Deployment on Klutch.sh
- Push your Dockerfile to GitHub.
- In klutch.sh/app, create a new app and select GitHub as the source.
- Klutch.sh automatically detects the Dockerfile in the repository root.
- Choose HTTP traffic and set the internal port to
3000. - Add environment variables for
DATABASE_URL,REDIS_URL, keys (LOCKBOX_MASTER_KEY,SECRET_KEY_BASE), andTOOLJET_HOST. Mark secrets as sensitive. - Optionally attach a persistent volume at
/app/server/filesif storing files locally. - Deploy and sign in with the first user you create (or enable controlled signups via
DISABLE_SIGNUPS=true).
Verification
-
UI: open
https://example-app.klutch.shand ensure the dashboard loads. -
API:
Terminal window curl -I https://example-app.klutch.sh/api/health
Next steps
- Set up email/OAuth for user onboarding.
- Configure object storage (S3/MinIO) if you expect significant file uploads.
- Enable database backups for PostgreSQL and persistence for Redis if needed.