About CNCF Community Infrastructure Lab
The Cloud Native Computing Foundation is a non-profit organization that hosts Wekan, Kubernetes, Prometheus, CoreDNS, and other projects. The Foundation helps open-source projects to thrive, and their Community Infrastructure Lab (CIL) provides free access to state-of-the-art computing resources (like bare metal x64 and arm64 servers) for open source developers working to advance cloud native computing. CNCF members from many big companies makes providing bare metal servers possible. CNCF is one of the Linux Foundation’s largest sub-foundations. More info at CNCF FAQ and interview at FLOSS Weekly 452.
Done: Wekan dependency version upgrades
- Meteor from 1.4 to 220.127.116.11 – latest
- Node from 4.6.7 to 8.11.1
- NPM from 4.6.1 to 6.0.1
- fibers from 1.0.15 to 2.0.0
x64 platforms status 2018-01
- Source install: Works with rebuild-meteor-1.6.sh script, if you add there new version numbers from above.
- Standalone Docker: Works. Upgraded from Debian 8 to Debian 10, can be tested with Docker Hub tag latestdevel at https:/
/and otherwise same docker-compose.yml file at https:/ hub.docker.com/ r/ wekanteam/ wekan/ /. github.com/ wekan/ wekan-mongodb
- Ubuntu Snap: Some build problem “Store upload failed: package contains external symlinks: lib/node_modules/wekan “. This is now 2018-05 solved.
- Sandstorm: Some build problem. This is now 2018-05 solved.
ARM platforms status 2018-01
- I did get ARM etc bare metal access from CNCF.
- Server ARM 64bit, more specifically arm64 / aarch64 with about 125 GB RAM and 300GB harddisk.
- Server has Debian 9.
- Currently I’m stuck at building fibers.
- ARM platforms are different. Most Raspberry Pi OS’s are 32bit distros like Raspbian are 32bit, so it would still need cross-compiling for armhf from x86, or compiling in emulator like qemu. There are 64bit arm64 distros for Raspberry Pi 3: Hypriot based on Debian 9, FreeBSD , LinuxKit. Also Wekan usually needs some hardware with at least 1 GB RAM.
- Docker is available for RasPi: blog post1 and blog post 2.
Getting locale working:
Having fast global search for filenames working:
apt install mlocate
locate somefilename-here | xargs grep 'some text to search'
Another slower way to search recursively in current directory is, for example searching for some text in wekan code directory:
find . | xargs grep 'some text here to search' -sl | less
That shows only filenames where it is. If you want to also see file content, leave out -sl . If you don’t want pagination with less command, leave out | less .
I added new user so I can compile as normal user, and also installed sudo, git, etc.
apt install sudo
and there added access to all for wekan user:
wekan ALL=(ALL:ALL) ALL
Using normal user account (non-root) is better, because without it you would need all kinds of workaround with npm packages and meteor like this:
npm -g install --unsafe-perm fibers
Node versions with NVM:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
nvm install 8.9.3
git clone https://github.com/npm/npm.git
sudo apt install mongodb mongodb-server mongodb-clients
sudo systemctl start mongodb
sudo systemctl enable mongodb
Building Meteor 1.4 ARM version, I did not find newer version yet:
git clone https://github.com/4commerce-technologies-AG/meteor.git
git checkout release-1.4-universal-beta
sudo apt-get install build-essential debian-keyring autoconf automake libtool flex bison scons git mongodb gcc python
sudo apt install build-essential capnproto git curl
Fibers, currently stuck building it:
git clone git://github.com/laverdet/node-fibers.git
It complains about ld-linux.so.2 that’s for x64 when correct one would be ld-linux-aarch64.so.1.
There could be fibers patch here but I did not get it working yet, maybe with some of these:
git clone https://github.com/4commerce-technologies-AG/node-fibers.git#v1.0.13-patch-arm64
sudo npm -g install [email protected]://github.com/4commerce-technologies-AG/node-fibers.git#v1.0.13-patch-arm64
Performance improvements included in Wekan 2018-05-22
- Wekan v0.84 2018-04-16 Change from Node 8.9.3 to custom compiled Node v8.11.1 from Sandstorm that has Node source code here, from Sandstorm fork of Node includes temporary fix. There is in progress research about root cause, and fixes will be included both to Meteor and Node. Custom Node and Wekan releases are hosted at https://releases.wekan.team . Also, increase fiber poolsize, increase ulimit to 100 000 in systemd config mentioned in Install from source section – not included to all platforms yet. It’s also possible to change to use Redis Oplog to increase Meteor performance.
- Wekan v0.61 2017-12-12 Added mixmax:smart-disconnect to disconnect backend when browser tab is not selected
- Wekan v0.60 2017-11-29 Fix frequent Subscriptions problem that make Excessive CPU usage
- Wekan v0.19 2017-05-06 Use Node version to 4.8.1 to solve 100% CPU issue in 6.x. Some still use Wekan with Node 4.x for lower resource usage.
- Wekan v0.11.1-rc2 2017-03-05 Improve Wekan performance by adding indexes to MongoDB.
Plans for performance improvements in future
- Reduce polling intervals between Meteor updates
- Increase ulimit in Wekan Snap, if possible
- Increase ulimit in Wekan Docker, if possible
- Do more Wekan Debugging, look at Dtrace talks, and running Wekan on SmartOS, Triton and other goals mentioned at Wekan CNCF GitHub issue.
- Look at other ways to increase performance
What CNCF servers have enabled to do
- Release new version of Wekan 3 times a day, on those days when there is a lot of progress. I (xet7) connect x64 server using x2go Open Source Remote desktop software (uses ssh transport), so I see desktop running at server. There I have installed VirtualBox, and inside VirtualBox I build Meteor bundle versions and VirtualBox versions of Wekan. It works very fast, because bare metal server has 32 GB RAM and SSD harddisk. Without those, I would be building those in my Core 2 Duo laptop (that was donated to me from relative), that I’m using currently, because I destroyd my faster laptop by spilling some water to it (ThinkPad had Intel i3 processor, it was donated to me by my previous employer). Basically, most of Wekan runs on donated hardware, time, and Open Source software, by worldwide Wekan community.
- Build Wekan, Sandstorm, Friend, etc Open Source projects on that hardware, and enabling the current fast progress of Wekan.
- x64 server has Wekan Snap installed, that incudes Caddy and Wekan. So https://releases.wekan.team release download server is served by Wekan snap on CNCF server.
- On x64 server Wekan snap, Wekan versions like Docker/Snap/VirtualBox etc are tested, and running Wekan boards used to plan future Wekan features with Wekan contributors
- On arm64 server, I have getting Wekan running on arm64 in progress:
- I have some problems with building fibers package currently.
- Add triggers, so then new release tag is added to GitHub, then CNCF servers will build Wekan VirtualBox etc other versions automatically.
- Add tests, so that if something gets broken, tests could notify about that.
- Add builds for more platforms, and other processor architectures.
- Add performance tests.
- Fix Wekan Gogs integration, that is currently broken, because modifications about Wekan’s new feature Swimlanes is missing from that intregration.
- Add IFTTT to Wekan, making tests on CNCF servers to verify that all the integrations work.
On behalf of Wekan Team