Wekan is an open-source, self-hosted alternative to Trello that gives teams unmetered kanban boards, swimlanes, and LDAP login on their own servers.
Built on the Meteor full-stack framework with MongoDB, Wekan provides real-time collaborative kanban boards on self-hosted infrastructure. Originally started in 2014 as LibreBoard, the project has gathered over 21,000 GitHub stars and translations in over one hundred languages. It delivers visual card, list, and swimlane workflows without transmitting telemetry or task details to third-party cloud services.
Trello relies on Atlassian's Power-Up marketplace to connect external tools, pairing boards with the Butler automation engine. Wekan approaches integrations through open protocols rather than a paid add-on directory. Instead of renting connector subscriptions, teams link Wekan via its REST API, board webhooks, and automation tools like n8n or IFTTT. Organizations running internal chat servers, private git repos, or local mail relays can stream board updates inside their firewall without exposing endpoints to public networks.
The operational divide centers on authentication and management effort. Trello charges per-seat subscription rates and requires Atlassian Guard for single sign-on, whereas Wekan includes LDAP, SAML, Keycloak, and OAuth2 support out of the box. Migrating from cloud boards is straightforward using Wekan's built-in Trello JSON importer, which brings over cards, checklists, labels, and attachments intact. However, setting up external calendar or CRM sync requires building custom webhooks or scripts, demanding technical effort that hosted SaaS platforms handle automatically.
Is Wekan free for commercial use? Yes. Wekan is open-source software that companies can use internally without subscription fees, seat quotas, or commercial feature paywalls.
Wekan vs Trello — which should you choose? Choose Trello for zero maintenance, native mobile apps, and turnkey marketplace integrations. Choose Wekan for self-hosted data ownership, native LDAP support, and unlimited boards without monthly user fees.
Can I import my existing Trello boards into Wekan? Yes. Wekan includes an import tool that ingests Trello JSON archives and restores lists, cards, checklists, and labels automatically.
Wekan is a practical choice for agencies and internal operations teams with the capacity to run a self-hosted stack who need unmetered visual task tracking. It is less suited for organizations that require native mobile applications or one-click SaaS marketplace connectors. Actively maintained with commits pushed regularly in 2026, its permissive MIT license allows teams to deploy, modify, and inspect the codebase indefinitely without licensing restrictions or recurring software costs.
We started this exact setup from scratch in a clean Linux machine on Nov 1, 2026 and checked it through Wekan's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p wekan && cd wekan
curl -fsSL https://open-source.store/tools/wekan/compose.yml -o compose.ymlcat > .env <<EOF
ROOT_URL=http://localhost:8080
EOFROOT_URL — Public URL where WeKan is reached (e.g. http://<your-server>:8080 or https://wekan.example.com); set this to your server's public URL.docker compose up -dservices:
ferretdb:
image: debian:bookworm-slim
restart: always
environment:
DO_NOT_TRACK: "1"
FERRETDB_TELEMETRY: disable
FERRETDB_RELEASE: download/v1.98.0
command:
- sh
- -c
- |
set -eu
BIN=/data/bin/ferretdb
RELEASE_FILE=/data/bin/ferretdb.release
if ! command -v curl >/dev/null 2>&1; then
apt-get update -qq
apt-get install -y -qq --no-install-recommends curl ca-certificates >/dev/null
fi
DOWNLOAD_RELEASE="$$FERRETDB_RELEASE"
REQUIRED_RELEASE="$$FERRETDB_RELEASE"
if [ "$$FERRETDB_RELEASE" = latest/download ]; then
LATEST_URL="$$(curl -fsSIL --retry 5 -o /dev/null -w '%{url_effective}' \
https://github.com/wekan/FerretDB/releases/latest)"
REQUIRED_RELEASE="$${LATEST_URL##*/}"
[ -n "$$REQUIRED_RELEASE" ]
DOWNLOAD_RELEASE="download/$$REQUIRED_RELEASE"
fi
CACHED_RELEASE="$$(cat "$$RELEASE_FILE" 2>/dev/null || true)"
if [ ! -x "$$BIN" ] || [ "$$CACHED_RELEASE" != "$$REQUIRED_RELEASE" ]; then
echo "Fetching newest FerretDB v1 $${REQUIRED_RELEASE} from the wekan/FerretDB release ..."
arch="$$(dpkg --print-architecture)"
case "$$arch" in ppc64el) arch=ppc64le ;; esac
mkdir -p /data/bin
curl -fSL --retry 5 -o "$$BIN.new" \
"https://github.com/wekan/FerretDB/releases/$${DOWNLOAD_RELEASE}/ferretdb-$${arch}"
curl -fSL --retry 5 -o "$$BIN.new.sha256sum" \
"https://github.com/wekan/FerretDB/releases/$${DOWNLOAD_RELEASE}/ferretdb-$${arch}.sha256sum"
EXPECTED="$$(awk '{print $$1; exit}' "$$BIN.new.sha256sum")"
ACTUAL="$$(sha256sum "$$BIN.new" | awk '{print $$1}')"
[ -n "$$EXPECTED" ] && [ "$$ACTUAL" = "$$EXPECTED" ]
chmod +x "$$BIN.new"
mv "$$BIN.new" "$$BIN"
rm "$$BIN.new.sha256sum"
printf '%s\n' "$$REQUIRED_RELEASE" > "$$RELEASE_FILE"
chmod +x "$$BIN"
fi
mkdir -p /data/files/db
exec "$$BIN" \
--handler=sqlite \
--sqlite-url=file:/data/files/db/ \
--listen-addr=0.0.0.0:27017 \
--repl-set-name=rs0 \
--telemetry=disable \
--log-level=error
healthcheck:
test: ["CMD-SHELL", "bash -c '</dev/tcp/127.0.0.1/27017' 2>/dev/null"]
interval: 5s
timeout: 3s
retries: 40
start_period: 30s
volumes:
- ferretdb-data:/data
wekan:
image: ghcr.io/wekan/wekan:v12.77
restart: always
ports:
- "8080:8080"
environment:
DEFAULT_METEOR_REACTIVITY_ORDER: polling
METEOR_REACTIVITY_ORDER: polling
DDP_TRANSPORT: sockjs
WRITABLE_PATH: /data
MONGO_URL: mongodb://ferretdb:27017/wekan?directConnection=true
ROOT_URL: ${ROOT_URL}
WITH_API: "true"
CARDS_LOADING: auto
CARD_OPENED_WEBHOOK_ENABLED: "false"
BIGEVENTS_PATTERN: NONE
BROWSER_POLICY_ENABLED: "true"
depends_on:
ferretdb:
condition: service_healthy
volumes:
- wekan-files:/data
volumes:
wekan-files:
ferretdb-data:
Free IDE for Java, Kotlin, Go, TypeScript and Python. Built on IntelliJ Community, fully open source, 300+ plugins.
Show that Wekan is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 97 s: ghcr.io/wekan/wekan:v12.77, debian:bookworm-slim.
Based on the upstream setup. Official FerretDB SQLite compose. Pinned WeKan to v12.77, pinned FerretDB release download, removed host localtime mount, and published web port 8080.
wekan-1 | 2026-11-01T16:06:37.500199425Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:37.500200050Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:37.500200634Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:37.500201175Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1191:7
wekan-1 | 2026-11-01T16:06:37.500201717Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.500202300Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.500202884Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:37.500203425Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:37.500203925Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:37.500204467Z at cookieParser (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/cookie-parser/index.js:57:14)
wekan-1 | 2026-11-01T16:06:37.500205009Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.500205592Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.503248300Z sockjs: could not parse request URL, skipping websocket rewrite //RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/administrator/index.cfm TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:37.503254175Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:37.503254842Z at Server.newListener (/build/programs/server/packages/meteor:/💻app/packages/ddp-server/transports/sockjs.js:100:27)
wekan-1 | 2026-11-01T16:06:37.503255634Z at Server.emit (node:events:514:20)
wekan-1 | 2026-11-01T16:06:37.503256259Z at parserOnIncoming (node:_http_server:1464:12)
wekan-1 | 2026-11-01T16:06:37.503256800Z at HTTPParser.parserOnHeadersComplete (node:_http_common:125:17) {
wekan-1 | 2026-11-01T16:06:37.503257384Z code: 'ERR_INVALID_URL',
wekan-1 | 2026-11-01T16:06:37.503265675Z input: '//RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/administrator/index.cfm',
wekan-1 | 2026-11-01T16:06:37.503269550Z base: 'http://localhost'
wekan-1 | 2026-11-01T16:06:37.503270134Z }
wekan-1 | 2026-11-01T16:06:37.509504425Z TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:37.509509384Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:37.509510050Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1215:34
wekan-1 | 2026-11-01T16:06:37.509510759Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.509511384Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.509511967Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:37.509512467Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:37.509513009Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:37.509513550Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1191:7
wekan-1 | 2026-11-01T16:06:37.509514092Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.509514675Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.509515175Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:37.509515717Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:37.509516259Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:37.509516759Z at cookieParser (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/cookie-parser/index.js:57:14)
wekan-1 | 2026-11-01T16:06:37.509517300Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.509517842Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.512033009Z sockjs: could not parse request URL, skipping websocket rewrite //RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/administrator/index.cfm TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:37.512036925Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:37.512037759Z at Server.newListener (/build/programs/server/packages/meteor:/💻app/packages/ddp-server/transports/sockjs.js:100:27)
wekan-1 | 2026-11-01T16:06:37.512038467Z at Server.emit (node:events:514:20)
wekan-1 | 2026-11-01T16:06:37.512039009Z at parserOnIncoming (node:_http_server:1464:12)
wekan-1 | 2026-11-01T16:06:37.512042884Z at HTTPParser.parserOnHeadersComplete (node:_http_common:125:17) {
wekan-1 | 2026-11-01T16:06:37.512043467Z code: 'ERR_INVALID_URL',
wekan-1 | 2026-11-01T16:06:37.512043967Z input: '//RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/administrator/index.cfm',
wekan-1 | 2026-11-01T16:06:37.512044550Z base: 'http://localhost'
wekan-1 | 2026-11-01T16:06:37.512045009Z }
wekan-1 | 2026-11-01T16:06:37.515561800Z TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:37.515568717Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:37.515569425Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1215:34
wekan-1 | 2026-11-01T16:06:37.515570259Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.515570842Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.515571425Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:37.515571967Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:37.515572550Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:37.515573092Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1191:7
wekan-1 | 2026-11-01T16:06:37.515573634Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.515574217Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:37.515574717Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:37.515575259Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:37.515575800Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:37.515576342Z at cookieParser (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/cookie-parser/index.js:57:14)
wekan-1 | 2026-11-01T16:06:37.515576925Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:37.515577509Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:38.459578509Z sockjs: could not parse request URL, skipping websocket rewrite //RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/wizards/common/_authenticatewizarduser.cfm TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:38.459756134Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:38.459760551Z at Server.newListener (/build/programs/server/packages/meteor:/💻app/packages/ddp-server/transports/sockjs.js:100:27)
wekan-1 | 2026-11-01T16:06:38.459764009Z at Server.emit (node:events:514:20)
wekan-1 | 2026-11-01T16:06:38.459783801Z at parserOnIncoming (node:_http_server:1464:12)
wekan-1 | 2026-11-01T16:06:38.459785259Z at HTTPParser.parserOnHeadersComplete (node:_http_common:125:17) {
wekan-1 | 2026-11-01T16:06:38.459786509Z code: 'ERR_INVALID_URL',
wekan-1 | 2026-11-01T16:06:38.459787634Z input: '//RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/wizards/common/_authenticatewizarduser.cfm',
wekan-1 | 2026-11-01T16:06:38.459789009Z base: 'http://localhost'
wekan-1 | 2026-11-01T16:06:38.459790051Z }
wekan-1 | 2026-11-01T16:06:38.462844301Z TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:38.462862134Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:38.462863842Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1215:34
wekan-1 | 2026-11-01T16:06:38.462865801Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:38.462867592Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:38.462868884Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:38.462869884Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:38.462870926Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:38.462872051Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1191:7
wekan-1 | 2026-11-01T16:06:38.462873092Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:38.462874134Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:38.462875426Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:38.462876426Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:38.462877509Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:38.462878467Z at cookieParser (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/cookie-parser/index.js:57:14)
wekan-1 | 2026-11-01T16:06:38.462879509Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:38.462880592Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:38.476408634Z sockjs: could not parse request URL, skipping websocket rewrite //RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/wizards/common/_authenticatewizarduser.cfm TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:38.476421842Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:38.476422884Z at Server.newListener (/build/programs/server/packages/meteor:/💻app/packages/ddp-server/transports/sockjs.js:100:27)
wekan-1 | 2026-11-01T16:06:38.476428634Z at Server.emit (node:events:514:20)
wekan-1 | 2026-11-01T16:06:38.476429301Z at parserOnIncoming (node:_http_server:1464:12)
wekan-1 | 2026-11-01T16:06:38.476429842Z at HTTPParser.parserOnHeadersComplete (node:_http_common:125:17) {
wekan-1 | 2026-11-01T16:06:38.476430551Z code: 'ERR_INVALID_URL',
wekan-1 | 2026-11-01T16:06:38.476431092Z input: '//RBaV1VQM%22%3E%3Cscript%3Ealert%28document.domain%29%3C/script%3E/..CFIDE/wizards/common/_authenticatewizarduser.cfm',
wekan-1 | 2026-11-01T16:06:38.476431717Z base: 'http://localhost'
wekan-1 | 2026-11-01T16:06:38.476432259Z }
wekan-1 | 2026-11-01T16:06:38.478772259Z TypeError: Invalid URL
wekan-1 | 2026-11-01T16:06:38.478776176Z at new URL (node:internal/url:911:25)
wekan-1 | 2026-11-01T16:06:38.478776801Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1215:34
wekan-1 | 2026-11-01T16:06:38.478777717Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:38.478778342Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:38.478778926Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:38.478779551Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:38.478780092Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:38.478780634Z at /build/programs/server/packages/meteor:/💻app/packages/webapp/webapp_server.js:1191:7
wekan-1 | 2026-11-01T16:06:38.478781217Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:38.478781759Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)
wekan-1 | 2026-11-01T16:06:38.478782301Z at /build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:297:9
wekan-1 | 2026-11-01T16:06:38.478782842Z at processParams (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:582:12)
wekan-1 | 2026-11-01T16:06:38.478783384Z at next (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:291:5)
wekan-1 | 2026-11-01T16:06:38.478783926Z at cookieParser (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/cookie-parser/index.js:57:14)
wekan-1 | 2026-11-01T16:06:38.478784467Z at Layer.handleRequest (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/lib/layer.js:152:17)
wekan-1 | 2026-11-01T16:06:38.478785009Z at trimPrefix (/build/programs/server/npm/node_modules/meteor/webapp/node_modules/router/index.js:342:13)