Railway

Deploy Wekan

Trello alternative. Open-source kanban board

Deploy Wekan

/data/db

Just deployed

/data

WeKan logo

Deploy and Host WeKan on Railway

WeKan is an open source kanban board — boards, lists, cards, swimlanes, checklists and drag-and-drop — built with Meteor on MongoDB and released under the MIT license. It is the closest self-hosted match to Trello's interface, so a migrating team keeps the workflow it already knows without per-seat billing. Agencies, universities and engineering teams use it for sprint boards, content calendars and support triage. Because every card stays in a database you control, WeKan also answers the GDPR and data-residency rules that rule out hosted SaaS.

Self-host WeKan on Railway and you get the production topology upstream recommends, not the lightweight demo one. Two services deploy together: wekan, the Meteor application from the official ghcr.io/wekan/wekan:v10.95 image, public on port 8080 with a volume at /data for attachments; and mongodb, a private MongoDB 7.0 service on port 27017 with a volume at /data/db, built from the gridalpha/wekan-mongodb-railway repository as a single-node replica set with keyfile authentication. Traffic terminates TLS at Railway's edge and reaches WeKan on 8080; WeKan reaches MongoDB only over the private network, so the database is never public. Connection strings, the oplog URL and volume permissions are pre-set.

WeKan Railway architecture

Getting Started with WeKan on Railway

When the deploy goes green, open the generated Railway domain. WeKan serves a brief "waiting for database" page until MongoDB finishes electing itself, so give the first load a moment. The first account that registers becomes the administrator — there is no admin password in the template and no CLI to create one — so register straight away, before sharing the URL. Use the Register link on the sign-in screen; account creation only works through that form, as WeKan refuses to create accounts over the REST API or raw DDP. Once in, open Admin Panel → People → Login, switch Self-registration off, and add teammates there. The /sign-up route still renders its form afterwards, but the methods behind it refuse new accounts. Then create a board, add Backlog, In Progress and Done lists, and drag a card across. Admin Panel → Settings → Version reports the reactivity mode; oplog or changeStreams rather than polling proves the replica set is working, and card moves will then show up in other open tabs with no refresh.

WeKan kanban board with four lists of roadmap cards WeKan card detail showing labels, dates, members and description WeKan admin panel reporting version, Meteor and MongoDB details

About Hosting WeKan

Teams self-host WeKan when project data must stay in a given jurisdiction, when headcount makes per-user pricing painful, or when boards need scripting rather than clicking.

  • Boards, lists, cards, swimlanes, labels, due dates, checklists and attachments
  • WIP limits, custom fields, subtasks, card voting, board templates and a no-code Rules automation engine
  • REST API, outgoing webhooks (Slack, Mattermost, Rocket.Chat, n8n), Trello JSON import, JSON/CSV export
  • LDAP, SAML, CAS and OAuth2/OIDC sign-on (Keycloak, Google, Azure AD, GitLab)

The two services split cleanly. wekan is a single Node.js process serving the UI, the REST API and the websocket that pushes live board updates; it holds Meteor sessions in memory and runs its own schedulers, so keep it at one replica. mongodb stores every board, card and user, and is a replica set on purpose: Meteor's reactive drivers — change streams first, OpLog tailing second — both need a replica-set member. A standalone MongoDB silently demotes WeKan to poll-and-diff, which upstream measures at 3-5x the CPU and 2000 ms latency instead of 50 ms.

Why Deploy WeKan on Railway

Railway removes the server work around a Meteor plus MongoDB stack:

  • Both services, volumes and private networking from one template
  • HTTPS domain and TLS certificates issued automatically
  • MongoDB stays private, with no database port to firewall
  • Volumes keep boards and attachments across redeploys
  • Scaling and metrics without touching a VM

Common Use Cases for Self-Hosted WeKan

  • Trello replacement — import Trello JSON boards and swap per-seat fees for a flat infrastructure bill
  • Agile sprint and roadmap boards — swimlanes per squad, WIP limits per column, story-point custom fields
  • Regulated or internal work — client, HR and contractual boards that must stay in your infrastructure
  • Automated intake — open cards from alerts or CI failures via the REST API, and fan activity out over webhooks

Dependencies for WeKan

  • wekanghcr.io/wekan/wekan:v10.95. The Meteor app: UI, REST API and realtime websocket. Public on port 8080, volume at /data.
  • mongodb — MongoDB 7.0 from gridalpha/wekan-mongodb-railway (branch main). Private on port 27017, volume at /data/db, single-node replica set rs0 with keyfile auth.

WeKan Environment Variables Reference

VariableServicePurpose
ROOT_URLwekanPublic URL used for links and websockets
MONGO_URLwekanApplication database connection string
MONGO_OPLOG_URLwekanConnection to local for OpLog tailing
WEKAN_DBwekanmongodb, so the demo database is skipped
WITH_APIwekanEnables the REST API and board export
MAIL_URL / MAIL_FROMwekanOptional SMTP for notifications and resets

Deployment Dependencies for WeKan

Hardware Requirements for Self-Hosting WeKan

ResourceMinimumRecommended
CPU1 vCPU each service2 vCPU each
RAM1 GB WeKan, 1 GB MongoDB4 GB WeKan, 2 GB MongoDB
Storage1 GB volume per service10 GB+, sized to attachments
RuntimeNode.js 24, MongoDB 7.0 replica setSame, plus scheduled backups

WeKan has no undo, so back the MongoDB volume up on a schedule. Node sizes its heap from host memory, not the container limit, so the template caps it with NODE_OPTIONS.

Self-Hosting WeKan with Docker

The same two-container shape runs anywhere Docker does. Start MongoDB as a one-node replica set, then initiate it once it responds:

docker run -d --name wekan-db -v wekan-db:/data/db mongo:7.0 \
  mongod --replSet rs0 --bind_ip_all
docker exec wekan-db mongosh --eval 'rs.initiate()'

Then start WeKan against it:

docker run -d --name wekan --link wekan-db -p 8080:8080 -v wekan-data:/data \
  -e PORT=8080 -e ROOT_URL=http://localhost:8080 -e WEKAN_DB=mongodb \
  -e MONGO_URL='mongodb://wekan-db:27017/wekan?directConnection=true' \
  -e WITH_API=true -e WRITABLE_PATH=/data ghcr.io/wekan/wekan:v10.95

How Much Does WeKan Cost to Self-Host?

WeKan is free and open source under the MIT license, with no cap on users, boards or teams and no paid edition to upgrade to. Optional commercial support and a small managed SaaS exist, but nothing in the software is gated behind them. Self-hosting on Railway costs only what the two services consume in compute, memory and storage, and does not grow with headcount — unlike per-seat kanban SaaS at $5 to $17.50 per user per month.

FAQ About Deploying WeKan on Railway

What is WeKan?

An MIT-licensed open source kanban board built with Meteor and MongoDB: boards, swimlanes, checklists, WIP limits, custom fields, a Rules automation engine and a REST API. It is widely used as a self-hosted Trello alternative.

What does this Railway template deploy?

A public wekan service from ghcr.io/wekan/wekan:v10.95 on port 8080 with a volume for attachments, plus a private MongoDB 7.0 replica set with its own volume.

Why does the template run its own MongoDB instead of a managed database?

Meteor's realtime drivers — change streams and OpLog tailing — only work against a replica set. Managed MongoDB is usually standalone, which would quietly downgrade WeKan to polling and multiply CPU use and latency.

How do I create the admin user in self-hosted WeKan?

Register the first account through the sign-up form; WeKan makes the first user an administrator. There is no admin environment variable, so register immediately, then disable self-registration under Admin Panel → People → Login.

How does WeKan compare to Trello, and can I import my Trello boards?

WeKan mirrors Trello's board, list and card model closely enough that a migrating team needs no retraining, and costs infrastructure rather than per seat. Export a Trello board as JSON and WeKan's built-in import recreates its lists, cards, labels and checklists. Kanboard is leaner but has fewer features, and standalone Focalboard is no longer maintained.

Why is the WeKan image pinned instead of tracking latest?

WeKan releases very frequently, and v10.96 and v10.97 both fail to boot on upstream packaging regressions (#6601, #6602). v10.95 is the last clean release; bump the tag once a later one is good.


Template Content

More templates in this category

View Template
Rocky Linux
[Jul'26] Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
42
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51