Download Latest Version wekan-11.72-s390x.zip (286.8 MB)
Email in envelope

Get an email when there's a new version of wekan

Home / v11.70
Name Modified Size InfoDownloads / Week
Parent folder
wekan_11.70_armhf.snap 2026-09-11 303.4 MB
wekan_11.70_ppc64el.snap 2026-09-11 320.2 MB
wekan_11.70_s390x.snap 2026-09-11 319.3 MB
wekan_11.70_arm64.snap 2026-09-11 474.6 MB
WeKan-11.70-x86_64.AppImage.md5sum 2026-09-11 62 Bytes
WeKan-11.70-x86_64.AppImage.sha256sum 2026-09-11 94 Bytes
WeKan-11.70-armhf.AppImage.sha256sum 2026-09-11 93 Bytes
WeKan-11.70-i686.AppImage 2026-09-11 226.3 MB
WeKan-11.70-i686.AppImage.md5sum 2026-09-11 60 Bytes
WeKan-11.70-i686.AppImage.sha256sum 2026-09-11 92 Bytes
WeKan-11.70-x86_64.AppImage 2026-09-11 231.3 MB
WeKan-11.70-aarch64.AppImage 2026-09-11 227.2 MB
WeKan-11.70-aarch64.AppImage.md5sum 2026-09-11 63 Bytes
WeKan-11.70-aarch64.AppImage.sha256sum 2026-09-11 95 Bytes
WeKan-11.70-armhf.AppImage 2026-09-11 219.6 MB
WeKan-11.70-armhf.AppImage.md5sum 2026-09-11 61 Bytes
wekan-11.70-ppc64le.zip 2026-09-11 284.5 MB
wekan-11.70-ppc64le.zip.sha256sum 2026-09-11 90 Bytes
wekan-11.70-riscv64.zip 2026-09-11 283.4 MB
wekan-11.70-riscv64.zip.sha256sum 2026-09-11 90 Bytes
wekan-11.70-armhf.zip 2026-09-11 270.9 MB
wekan-11.70-armhf.zip.sha256sum 2026-09-11 88 Bytes
wekan-11.70-s390x.zip 2026-09-11 285.9 MB
wekan-11.70-s390x.zip.sha256sum 2026-09-11 88 Bytes
wekan-11.70-armv7.zip 2026-09-11 270.9 MB
wekan-11.70-armv7.zip.sha256sum 2026-09-11 88 Bytes
wekan-11.70-armv6.zip 2026-09-11 271.7 MB
wekan-11.70-armv6.zip.sha256sum 2026-09-11 88 Bytes
wekan-11.70-sandstorm.spk 2026-09-11 175.5 MB
wekan-11.70-mac-arm64.zip 2026-09-11 274.4 MB
wekan-11.70-mac-arm64.zip.sha256sum 2026-09-11 92 Bytes
wekan-11.70-mac-x64.zip 2026-09-11 238.4 MB
wekan-11.70-mac-x64.zip.sha256sum 2026-09-11 90 Bytes
wekan-11.70-i386.zip 2026-09-11 277.2 MB
wekan-11.70-i386.zip.sha256sum 2026-09-11 87 Bytes
wekan-11.70-amd64.zip 2026-09-11 278.8 MB
wekan-11.70-amd64.zip.sha256sum 2026-09-11 88 Bytes
wekan-11.70-arm64.zip 2026-09-11 278.6 MB
wekan-11.70-arm64.zip.sha256sum 2026-09-11 88 Bytes
README.md 2026-09-11 13.3 kB
v11.70 source code.tar.gz 2026-09-11 49.3 MB
v11.70 source code.zip 2026-09-11 51.2 MB
Totals: 42 Items   5.6 GB 0

Binaries in these bundles

Each bundle carries a Node.js, a FerretDB and the MongoDB Database Tools. Which source has a given CPU varies from release to release - nodejs.org builds some architectures, unofficial-builds others, and the wekan/node-patches build the ones neither of them does - and not every source publishes a checksum. This is what went into this release, and which downloads were checked against a published SHA256.

Bundle Binary From Version Checked SHA256
amd64 FerretDB wekan/FerretDB v1.78.0 verified 523a96e832e5947a…
amd64 Node.js nodejs.org v24.21.0 verified fd8e59d5a511510f…
arm64 FerretDB wekan/FerretDB v1.78.0 verified d8bb85c7ff49fe02…
arm64 Node.js nodejs.org v24.21.0 verified 6ad1325edbdb5649…
armhf FerretDB wekan/FerretDB v1.78.0 verified c4df2f4e6fe8fa9a…
armhf Node.js wekan/node-patches v24.21.0 verified fcd7558bda05a44b…
armv6 FerretDB wekan/FerretDB v1.78.0 verified eeb962ba8d7b76d7…
armv6 Node.js wekan/node-patches v24.21.0 verified ea68d25e1eef47cb…
armv7 FerretDB wekan/FerretDB v1.78.0 verified c4df2f4e6fe8fa9a…
armv7 Node.js wekan/node-patches v24.21.0 verified 561b357700e2019c…
i386 FerretDB wekan/FerretDB v1.78.0 verified c855b2f74a7c8b13…
i386 Node.js wekan/node-patches v24.21.0 verified d3a55c1b0e22c164…
mac-arm64 FerretDB wekan/FerretDB v1.78.0 verified 34d45b3eee2f322f…
mac-arm64 Node.js nodejs.org v24.21.0 verified 6239d4cf92d86448…
mac-x64 FerretDB wekan/FerretDB v1.78.0 verified 1fd4a358aae472d9…
mac-x64 Node.js nodejs.org v24.21.0 verified 0ae5a24c24bb7d01…
ppc64le FerretDB wekan/FerretDB v1.78.0 verified ae5e77d7e26ff668…
ppc64le Node.js nodejs.org v24.21.0 verified 1936fd64623a2f98…
riscv64 FerretDB wekan/FerretDB v1.78.0 verified c52b5d9b477d8a73…
riscv64 Node.js unofficial-builds.nodejs.org v24.21.0 verified 5c4e83d46cc1f8ee…
s390x FerretDB wekan/FerretDB v1.78.0 verified 5f6e44510345e653…
s390x Node.js nodejs.org v24.21.0 verified 2ef7e2ecbf7a6c2f…

A row saying no checksum published is not a failed check - it is a source that publishes nothing to check against. Those are the ones worth fixing at the source.

v11.70 2026-09-11 WeKan ® release

In short: this release adds every way to log in that Meteor's accounts system offers - Google, GitHub, Facebook, X (Twitter), Meteor Developer, Weibo, Meetup and passwordless email codes - configurable with environment variables on every platform and overridable in Admin Panel / People / Login, where a badge beside each field names the source in effect and a change applies without a restart. It also fixes the release bump job, which failed on the generated OpenAPI spec.

This release adds the following new features:

Login - every way to log in that Meteor's accounts system offers.

Google, GitHub, Facebook, X, Meteor Developer, Weibo, Meetup and passwordless login. Thanks to xet7. Meteor's own accounts packages - accounts-google, accounts-github, accounts-facebook, accounts-twitter, accounts-meteor-developer, accounts-weibo, accounts-meetup and accounts-passwordless - are added, so every login method Meteor's accounts system offers is now in WeKan beside password, 2FA, OIDC, LDAP, CAS and SAML. `models/lib/oauthProviders.js` is the pure catalog of the seven providers: the `OAUTH_<provider>_ENABLED`, `_CLIENT_ID` (`_APP_ID` for Facebook, `_CONSUMER_KEY` for X) and `_SECRET` env vars, each credential also read from a `<name>_FILE` Docker secret; the shared `OAUTH_PROVIDERS_LOGIN_STYLE` (popup or redirect) and `OAUTH_PROVIDERS_MERGE_EXISTING_USERS`; and `PASSWORDLESS_ENABLED`. An Admin Panel value wins over the env var, and a provider is enabled only with the flag AND both credentials. `server/lib/oauthProviders.js` writes Meteor's `ServiceConfiguration` for every enabled provider at startup and whenever the Admin Panel saves, and REMOVES it for a disabled one, so switching a provider off takes effect without a restart. A first login through a provider becomes a WeKan user the way OIDC does, fail-closed: an existing account made by another login method is linked only when merging is on and the provider verified the address; otherwise the login is refused with `oauth-account-conflict` and the attempt is recorded on the new `oauth.account-conflict` canary, so Admin Panel -> Problems shows who tried. Passwordless is refused at both the token-request method and the login attempt while it is off, so the package cannot create accounts or send codes when nobody enabled it. The login form shows one button per enabled provider under the SAML button, and a two-step "Email me a sign-in code" form (address, then code) when passwordless is on; errors land in the same region as the password form. `getAuthenticationsEnabled` reports keys only - no credential ever reaches a browser. `tests/oauthProviders.test.cjs` pins the catalog shape, the env, `_FILE` and Admin Panel resolution, the enabled and takeover decisions, the upsert/remove, the canary, the form and the negative no-secret-on-the-client sweep.
Admin Panel override of the OAuth login provider and passwordless env vars. Thanks to xet7. Admin Panel / People / Login gets a section for Meteor's own accounts-* login services (Google, GitHub, Facebook, X/Twitter, Meteor Developer, Weibo, Meetup) and for passwordless login, built the same way as the LDAP section above it: every `OAUTH_<provider>_ENABLED` / `_CLIENT_ID` / `_SECRET` env var, the shared `OAUTH_PROVIDERS_LOGIN_STYLE` and `OAUTH_PROVIDERS_MERGE_EXISTING_USERS`, and `PASSWORDLESS_ENABLED` can be set there, a value set in the Admin Panel wins over the env var (`models/lib/configResolver.js`), and a badge beside each field says whether the env var, the Admin Panel or nothing is in effect. The secret is stored in `Settings.oauthProviders.<key>.secret` and, like the LDAP bind password, never reaches a browser: the `setting` publication carries only `enabled`, `id`, `loginStyle` and the boolean `secretSet` per provider, an empty secret submission leaves the stored one untouched, and the sources method reports the secret through `hasConfigValue()` as "is set (source)" only. `saveOauthProviderSettings` validates the provider key against the catalog, and both it and `savePasswordlessSettings` are admin-only and call `reconfigureOauthProviders()` so a change takes effect without a server restart. `tests/oauthProvidersAdminOverride.test.cjs` pins the schema, the published field list (secret absent, secretSet present), the admin gate, the key validation, the empty-secret rule, the reconfigure call and the jade badges; the whole-tree secret sweep in `tests/ldapAdminOverrideSecurity.test.cjs` now also matches hyphenated sub-document keys such as `oauthProviders.meteor-developer.secret`.
The provider and passwordless settings documented on every platform, with docs. Thanks to xet7. A setting that exists in the code but not where a user configures WeKan is invisible, so `OAUTH_<provider>_ENABLED` / `_CLIENT_ID` (`_APP_ID` for Facebook, `_CONSUMER_KEY` for Twitter) / `_SECRET` / `_SECRET_FILE` for Google, GitHub, Facebook, Twitter, Meteor Developer, Weibo and Meetup, `OAUTH_PROVIDERS_LOGIN_STYLE`, `OAUTH_PROVIDERS_MERGE_EXISTING_USERS` and `PASSWORDLESS_ENABLED` now appear, commented out with the same explanation, everywhere the `OAUTH2_*` and `SAML_*` settings already do: `docker-compose.yml` and its FerretDB v1 (PostgreSQL, MySQL, MariaDB, SAP HANA), FerretDB v2 and MongoDB variants, the `Dockerfile` and devcontainer `ENV` block (every `*_ENABLED` defaulting to `false`, login style to `popup`), `start-wekan.sh`, `start-wekan.bat`, the Snap's `config` (keys list plus a `DESCRIPTION_`/`DEFAULT_`/`KEY_` triple each, so `snap set wekan oauth-google-enabled='true'` works) and `wekan-help`, the Sandstorm package definition, the stacksmith Docker-secrets reader, `secrets/README.md` and the Helm chart's `values.yaml` in `wekan/charts`. Each comment names the callback URL to register at the provider, `<root_url>/_oauth/<service>`, and says that Admin Panel / People / Login overrides the environment. Two new docs pages: [OAuth Providers](docs/Features/Login/OAuth-Providers.md) (where to create the app at each provider, the callback URL, the variables, the Admin Panel section, login style, merging, troubleshooting) and [Passwordless](docs/Features/Login/Passwordless.md), both linked from the docs index. `tests/oauthProvidersPlatformEnv.test.cjs` pins every variable on every platform, the Snap triples and their kebab-case keys, the Sandstorm defaults, and that the docs pages exist and are linked; the compose-parity suite keeps the five FerretDB v1 files identical.

and fixes the following bug:

The release bump job no longer fails on the generated OpenAPI spec. Thanks to xet7. The bump job of release-all.yml regenerates `public/api/wekan.yml` from the models' JSDoc and renders it with @redocly/cli, which stopped the release with "bad indentation of a mapping entry (1232:2)". A `@param` whose description continues on the next JSDoc lines (the chart export's `chartKey`) was emitted under `description: |` with only its first line indented, so the continuation lines fell out of the block scalar and the whole spec failed to parse. The generator now indents every line. It also stopped warning "unknown type object" for the rules API's trigger/action parameters: OpenAPI 2.0 has no `object` for a path/query/form parameter, so they are emitted as a JSON string. Reproduced locally and verified with the same @redocly/cli render; `tests/openapiParamMultiline.test.cjs` pins the emitter and parses the regenerated spec.

and improves the translation workflow:

Thanks to above GitHub users for their contributions and translators for their translations.

Source: README.md, updated 2026-09-11