Deploying a Wekan App
Introduction
Wekan is an open-source Kanban board built with Meteor. This guide shows how to containerize Wekan, connect it to MongoDB, persist uploads, and deploy it to Klutch.sh over HTTP.
Prerequisites
- GitHub repository containing your Dockerfile.
- MongoDB database (managed or deployed separately).
- Klutch.sh project ready in klutch.sh/app.
Project structure
.└── DockerfileSample Dockerfile
FROM wekanteam/wekan:latest
# Default Wekan portENV PORT=8080EXPOSE 8080Required environment variables
MONGO_URL– Mongo connection string, e.g.,mongodb://USER:PASSWORD@HOST:27017/wekan?authSource=adminROOT_URL– public URL, e.g.,https://example-app.klutch.shPORT=8080
Optional environment variables
WRITABLE_PATH=/data– local storage path for attachmentsMAIL_URL– SMTP URL for notificationsWITH_API=true– enable the REST APIRICHER_CARD_COMMENT_EDITOR=true– enable rich text comments
Persistence
If you store attachments locally, attach a volume:
- Mount path:
/data - Size: based on expected attachment volume
Networking
- Protocol: HTTP
- Internal port:
8080 - Users reach
https://example-app.klutch.shwhile Klutch.sh routes to port8080inside the container.
Health check (recommended)
curl -I http://localhost:8080Deployment 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.
- Select HTTP traffic and set the internal port to
8080. - Add environment variables for
MONGO_URL,ROOT_URL, and any feature toggles. Mark secrets as sensitive. - Attach a persistent volume at
/dataif storing attachments locally. - Deploy. After the app starts, create your first board and invite collaborators.
Verification
-
UI: open
https://example-app.klutch.shand confirm the Wekan board loads. -
Quick check:
Terminal window curl -I https://example-app.klutch.sh
Next steps
- Configure SMTP via
MAIL_URLfor notifications. - Enable API access with
WITH_API=trueand add tokens as needed. - Schedule backups for MongoDB and the
/datavolume if attachments are stored locally.