This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
About s390x
- Dave's Garage at 2023-10: Why Do Mainframes Still Exist? What's Inside One? 40TB, 200+ Cores, AI, and more! https://www.youtube.com/watch?v=ouAG4vXFORc
- https://en.wikipedia.org/wiki/Linux_on_IBM_Z
- FLOSS 564 Interview about Open Mainframe Project
- Open Mainframe Project
- LinuxOne Community Cloud
- SWLUG Talk - Linux on the IBM Z mainframe platform
- https://wiki.qemu.org/Documentation/Platforms/S390X
- https://arstechnica.com/information-technology/2023/07/the-ibm-mainframe-how-it-runs-and-why-it-survives/
- https://sdl-hercules-390.github.io/html/
- Big-endian s390x https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/javier-perez1/2021/01/19/endianness-guidance-for-open-source-projects
- The Future of Big Iron: An Interview with IBM’s Christian Jacobi
Petclinic s390x
2024-01-20 Petclinic fork https://github.com/xet7/pet , with command blink redbean.com
- With Petclinic website, it is possible to add pets, visits to clinic, etc. There is no login system, it is possible to add to database directly at website http://127.0.0.1:8000/ or http://YOUR-COMPUTER-IP-ADDRESS:8000/
- When xet7 added issue about blink segfault at s390x, 5 minutes later jart added fix https://github.com/jart/blink/issues/162
- Blink is x86_86 emulator, similar to qemu https://github.com/jart/blink . With blink, it works at Linux s390x. Without blink, it works at x86_86/arm64 Win/Mac/Linux/BSD, but ASAN security feature does not work yet at arm64, like mentioned at Makefile of https://github.com/xet7/pet . If there is errors, maybe you need to run it with
chmod +x redbean.com && sh -c ./redbean.com
, or also need to installape
from https://github.com/jart/cosmopolitan . - Redbean is webserver https://redbean.dev
- Fullmoon is Lua web framework https://github.com/pkulchenko/fullmoon . Petclinic has fork of Fullmoon, making possible to use SQLite across CGI-like Lua processes of Redbean, like mentioned at Readme https://github.com/xet7/pet
- SQLite has triggers, and it's possible to Redbean's cron like scheduled actions
- By using Makefile with
make all
ormake start
it makes one executeable. When starting, it creates SQLite database to same directory, adding data, withsrv/.lua/*.sql
- At fork https://github.com/xet7/pet , xet7 added all external
.sql
, Javascript and CSS dependencies directly inside executeable. This can be seen at Makefile, where files fromsrv
directory are are added to.zip
file, that is added to end ofredbean.com
executeable. - Releases at https://github.com/xet7/pet/releases
Petclinic Benchmark
At Makefile, xet7 fixed make benchmark
of wrk benchmarks to to work at Mac M1 brew install wrk
and Linux sudo apt install wrk
. But wrk does not yet work at s390x, xet7 added issue about it to https://github.com/jart/blink/issues/163 . If you start with silent mode ./redbean.com -s
, then at M1 Air macOS Sonoma is this benchmark:
~/Downloads/pet$ make benchmark
wrk -H 'Accept-Encoding: gzip' -t 12 -c 120 http://127.0.0.1:8000/
Running 10s test @ http://127.0.0.1:8000/
12 threads and 120 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 73.21ms 136.41ms 1.25s 86.04%
Req/Sec 7.72k 12.48k 65.33k 89.46%
600013 requests in 10.09s, 708.40MB read
Socket errors: connect 0, read 427, write 2, timeout 0
Requests/sec: 59485.18
Transfer/sec: 70.23MB
Lua IDE
- It is possible to show hidden files like
.gitignore
with Lua IDE, ZeroBrane Studio, this way, and also debug redbean: https://github.com/xet7/pet/wiki/Redbean
QuickJS
- Unrelated to Lua, there is also QuickJS (similar like Node.js/Bun/Deno), where it is possible to embed Javascript to same Cosmopolitan x86_85/arm64 Win/Mac/Linux/BSD executeable binary https://github.com/xet7/pet/wiki/QuickJS
Other non-WeKan Open Source projects xet7 tried to build at s390x
- Works:
- TSC platform game, C++ https://secretchronicles.org/en/news/2020/11/16/tsc-for-s390x-available/
- Darkest Hour halloween text adventure game, C89, xet7 ported to 30+ CPU/OS https://github.com/xet7/darkesthour
- V https://github.com/vlang/v/issues/18737 at 2025-04-03 now works!
- Zig https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/internals/HACKING.md#building
- Does not work yet:
- Bun https://github.com/oven-sh/bun/issues/2632
- Partially related, Zig works, see above https://github.com/wekan/ferretdb/tree/main/node-deno-bun#trying-to-compile-llvm-for-zig-and-bun-at-s390x-fails
- Deno, because Rust ring (a crypto dependency) does not support s390x https://github.com/denoland/deno/issues/20212
- Bun https://github.com/oven-sh/bun/issues/2632
Ported by others, not xet7:
From xet7, WeKan at s390x
xet7, as maintainer of WeKan, got access to mainframe at IBM LinuxOne Community Cloud. Access to those servers is monitored, it's running on a real mainframe.
Previously xet7 had ssh access. At 2023-09 xet7 got web console access, and IBM bumped quota to 2 VMs with 8 GB of memory, 200 GB disk and 4 CPUs each. At web console it is possible to create and remove VMs, and select distro like RHEL/SUSE/Ubuntu. xet7 did do-release-upgrade to upgrade newest Ubuntu 23.10.
Download
- wekan-VERSION-s390x.zip at https://releases.wekan.team/s390x/
Installing MongoDB for s390x
This Snap package https://snapcraft.io/juju-db , created by Canonical, has MongoDB for various CPU architectures . It is internal package for Canonical's Juju service https://jaas.ai . Snap repo at https://github.com/juju/juju-db-snap and copy at https://github.com/wekan/mongodb-snap
Install Snap for your distro https://snapcraft.io/docs/installing-snapd
Then:
ssh yourserver
sudo dnf install nano
sudo reboot
sudo snap install juju-db
sudo snap refresh juju-db --channel=5.3/stable
sudo snap enable juju-db
sudo snap start juju-db
nano .bashrc
There add path to commands mongo, mongodump, mongorestore etc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/snap/juju-db/139/usr/lib/s390x-linux-gnu
export PATH="$PATH:/snap/juju-db/139/bin"
Save and exit: Ctrl-o Enter Ctrl-x
Exit ssh, and ssh to server again,
exit
ssh yourserver
Or alternatively just read new paths to mongo etc commands:
source .bashrc
Now MongoDB is at localhost port 27017. You connect to CLI with command:
mongo
RHEL 8
New info 2022-01-18:
-
Install snapd https://snapcraft.io/docs/installing-snap-on-red-hat
-
Reboot
-
Install MongoDB, so it will be at port 27017:
sudo snap install mongo36-configurable
- Install WeKan s390x bundle from:
Old info:
sudo yum -y update
sudo yum -y install git nano npm curl wget podman-docker openssl-devel libcurl-devel clang zip unzip
docker run --name wekan-db -d -p 127.0.0.1:27017:27017 mongo
sudo npm -g install n
sudo n 12.18.0 ## newest 12.x from https://nodejs.org
mkdir repos
cd repos
git clone https://github.com/wekan/wekan
cp wekan/start-wekan.sh .
nano start-wekan.sh
# Edit start-wekan.sh for ports and paths, so starts
# "node main.js" at "build" directory".
# Look for version number from https://releases.wekan.team/s390x/
wget https://releases.wekan.team/s390x/wekan-VERSION-s390x.zip
unzip wekan*s390x.zip
./start-wekan.sh
RHEL 7
Node.js LTS newest 12.x release for s390x can be downloaded from https://nodejs.org
MongoDB v4.x Community Server for s390x RHEL7 is at https://www.mongodb.com. For example files can be like these filenames:
- mongodb-org-mongos-4.2.3-1.el7.s390x.rpm
- mongodb-org-server-4.2.3-1.el7.s390x.rpm
- mongodb-org-shell-4.2.3-1.el7.s390x.rpm
- mongodb-org-tools-4.2.3-1.el7.s390x.rpm
Install
Installing is similar like at Raspberry Pi
You can start it with start-wekan.sh from https://github.com/wekan/wekan or add SystemD service.
Setup ROOT_URL like described at Settings
At wiki is also info about Caddy/Nginx/Apache etc.
Some related links also at Platforms
How this s390x bundle package was created for RHEL 7
- Install Node.js
- scp wekan-VERSION.zip bundle to s390x server, and unzip it
- Clone and build Fibers, copy fibers to bundle, and zip bundle.
git clone https://github.com/laverdet/node-fibers
cd node-fibers
node build.js
cd ..
cp -pR /home/linux1/node-fibers/bin/linux-s390x-72-glibc bundle/programs/server/node_modules/fibers/bin/
zip -r wekan-VERSION-s390x.zip bundle
Wekan
General
- Deep Dive Into WeKan
- Meteor WeKan Roadmap - board at Wekan demo
- Multiverse WeKan Roadmap
- Docs/Manual
- Change Language
- Forgot Password
- About
- Test Edge
- WeKan Design Principles
- FAQ
- IRC FAQ - answers to questions asked at IRC
- Team
- Press
- Blog
- Wekan vs Trello vs Restyaboard
- Results of Survey 2020-01
Fake: Not WeKan kanban
Security
- Allow private boards only: Disable Public Boards
- Security Disclosure and details of Security in Wekan
- Security issues
- Password Hashing
Scaling
- Cron: Hourly restart WeKan, because of memory leaks
- Maybe: Add more RAM to Node.js to prevent crash
- Clustering AWS etc
- Scaling
- Kubernetes
- Redis Oplog
- Meteor Scaling at Meteor Cloud
- Scaling at Meteor forums
Migrating
- From Previous Export, paste big WeKan JSON
- Progress: Import/Export/Sync
- From CSV/TSV
- From Trello
- From Jira
- From Asana
- From Zenkit
- From old Wekan manually
- Converting Meteor Stylus to CSS
Support priorities for new features and bugfixes
Backup
Repair
- Repair MongoDB
- Using Meteor MongoDB to repair files
- If board does not open and keeps loading
- Repair Docker
Themes
Markdown Syntax
- Wekan Markdown
- Emoji
- Mermaid Diagram DOES NOT WORK ANYMORE
- Numbered text
Login Auth
- Automatic login
- Disable Password Login
- Forgot Password
- Admin: Impersonate user
- Adding Users
- Active users Presence
- Accounts Lockout: Brute force login protection
- LDAP
- LDAP AD Simple Auth
- Keycloak
- Google login
- Azure
- OAuth2, Auth0, GitLab, RocketChat
- Oracle OIM on premise using OAuth2
- ADFS 4.0 using OAuth2 and OpenID
- Azure AD B2C using OAuth2
- Nextcloud
- CAS Please test
- SAML Please test
- Zitadel
Metrics, Logs, Stats
Integrations
Time
Features
- Multiline
- Linked Cards
- Drag Drop on Mobile and Desktop
- Rclone: Store attachments to cloud storage like S3, MinIO, etc
- Python based features
- Burndown and Velocity Chart
- Wait Spinners
- Translations
- Default Language for All Users
- Roadmap
- Features
- Planning Poker
- Scaling
- Custom Logo
- Subtasks <== Has fix
- Templates
- Cover
- Archive and Delete
- Custom Fields
- Fix Export board menu not visible on some boards
- RAM usage
- Demo
- Swimlane Documentation
- Customize Translations
Required Settings
Download
- Download Wekan for various Platforms: Supported by xet7, Operating Systems, NAS, Cloud
- Helm Chart for Kubernetes
Webservers
- Caddy
- Nginx
- Apache
- OpenLiteSpeed
- Local self signed TLS
- Let's Encrypt and Google Auth
- TLS with Node.js
- Traefik and self-signed SSL certs
REST API Docs
REST API issue
REST API client code
- Example: New card with Python3 and REST API
- Python client to REST API
- Go client to REST API
- Java
- Wekan Sandstorm cards to CSV using Python
- Excel and VBA
Webhooks
- Global Webhook
- Limiting Webhook data
- Receiving Webhooks
- Outgoing Webhook to Discord/Slack/RocketChat/Riot
- Outgoing Webhook to NodeRed
- Outgoing Webhook to PowerShell
- Security: Webhook and CA
- Outgoing Webhooks Data
- Outgoing Webhooks and Let's Encrypt
- Outgoing Webhooks Original Pull Request, multiple Webhooks, more parameters and response order
Case Studies
Development
- Kadira integration
- Debugging
- Developer Docs for Standalone Wekan
- Developer Docs for Sandstorm Wekan
- Adding new Snap setting to code
- Directory Structure
- Building Wekan for Sandstorm
- Docs - Sandstorm etc
- Beginner
- Maintainer FAQ
Issues
Wekan - OpenSource Kanban