Well, I’m not quite sure why you need official support. It’s being using it for that now at thingstudio:
Mainly because I can’t update. There are also the performance issues…
Could be some technical issue with Raspberry platform.
Meteor can run on RasPi3 and RasPi4, when you first generate x64 bundle and change some files that, then run it with Node and MongoDB on Ubuntu 19.10 arm64. Meteor can also run with other CPU’s and OS’s where Node+MongoDB is available.
For arm64, I have run Wekan on:
- Android phone that has 6 GB RAM using Termux+AnLinux+Ubuntu 18.04, browsing it with Android Chrome to http://localhost:2000
- arm64 bare metal server that has 128 GB RAM
I have also run Wekan on RHEL s390x IBM LinuxOne community cloud, with Node 12.x and MongoDB 4.2.x. Well, I should sometime build newest bundle and add it to Wekan download page.
At https://wekan.github.io there is now Download / s390x
@xet7 Could you give us a hint on how to managed to make your project run on these non-natively supported systems exactly? I am especially interested in Raspberry Pi 3, too. In the link you provided, I couldn’t find anything related to meteor in general.
I basically identified 2 parts:
- rm -rf node-gyp node-pre-gyp && npm install firstname.lastname@example.org node-pre-gyp fibers
- However, I was confused be the repetitive uninstall - install commands
- use a raspberry build of phantomjs
Are one or both of these parts related to Meteor generally or for Wekan in particular?
Thanks in advance
Note: I have only done these bundles for Wekan, but probably any other meteor app bundle directory could work too. Other Meteor apps could have less settings than Wekan in start-wekan script below.
Usually just building fibers is enough. PhantomJS is not needed at all.
- Build x64 bundle to wekan/.build/bundle
- Copy bundle to arm64 or other CPU Linux
- Install build-essential or similar that can build C/C++
- cd bundle/programs/server/node_modules/fibers
- node build.js
- After that, use Node.js 12.21.0 (or similar newest 12.x) Index of /dist/v12.20.2/ and MongoDB with start-wekan script.
start-wekan.sh script for *nix platforms:
start-wekan.bat for Win10 64bit:
Offline install info for Windows 64bit:
Raspberry Pi and and other bundle CPU platforms install info, services etc:
For Windows, it only requires Windows version of Node.js and MongoDB. No Linux stuff needed.
390x bundle code is probably most clean currently, I do build it on RHEL 8.0 s390x:
arm64 bundle code probably has some extra not-needed stuff, I do build it at Ubuntu 18.04 arm64 bare metal server that has 128 GB RAM, at CNCF Packet.com/Metal servers, but you could build it on RasPi3 or RasPi4 with Raspberry Pi OS arm64 64bit or Ubuntu 20.10 arm64 64bit:
wekan/maintainer-make-bundle-a.sh at master · wekan/wekan · GitHub
ppc64le bundle code is similar to s390x code, unfortunately OpenPower Minicloud Minicloud | Unicamp is currently down for maintenance, so I can not build newest Wekan:
wekan/maintainer-make-bundle-o.sh at master · wekan/wekan · GitHub
Although, actually, because only fibers needs to be added to bundle, it could be enough that from each bundle fibers would be copied to new bundle for different platforms.
Why Meteor excludes non-x64 ?
I don’t know, install meteor script excludes other CPUs. There are some unofficial patches to add other CPUs, like this:
And it would be really nice if I could use install meteor script also on arm64, s390x, ppc64le etc.
Some modules from https://atmospherejs.com or https://npmjs.com could possibly be harder to build, if they have some non-portable C/C++ code, but I have used in Wekan only those that are compatible with all CPUs. For example, I have not yet merged this PR Remove cfs:* dependency by blaggacao · Pull Request #3273 · wekan/wekan · GitHub because it uses some new module that does only build on x64, so I’m thinking could I somehow get it working.
For example, I did sometime run Wekan also on Mac PowerBook G4 that has PPC processor, 1 GB RAM, and Debian or Ubuntu installed. But I don’t have newest Wekan built with it, because I don’t know would someone need it.
For Rasberry Pi OS 32bit, problem is that 32bit MongoDB can only handle max 1GB or 2 GB of data total, bigger amount of data will probably corrupt it. 64bit MongoDB for arm64 64bit Linux does not have those limitations.
I have not yet had time to look would it be possible to make AppImage of Wekan+Node+MongoDB similar like there is nosqlbooster Backup · wekan/wekan Wiki · GitHub although I’m not sure what tech nosqlbooster users.
@xet7 Thank you for your in-depth answer(s)
I am trying to run a Meteor@^2 project on a Raspberry Pi 3, which is 32 bit, but it seems, due to the fact that mongodb builds for 32 bit systems only exist for very old versions (2.4 or so). Thus, I will try it on a Raspberry Pi 4, which has armv8 (64 bit), and let you know how it went once I am there
it may even be possible to get mongodb 4 running on 32 bit
You can install Ubuntu Server 64bit Version on an RPI 3
Edit: at least on a model B
Raspberry Pi OS 64bit
Please store database to external SSD, so you would not corrupt your microSD fast with big amount of writes MongoDB does.
For example this way:
From what I read, ARM 64 bit started with
armv8 but my RPI 3B outputs
$ uname -a Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
so I thought, it’s 32 bit.
Maybe it’s not the latest revision?
How does this corruption happen exactly? Does the data integrity actually damaged?
And is this a problem of mongoDB-writes or SD cards in general? Shouldn’t SD cards be writable just like SSDs?
That’s correct. I just found that RPI 3 still has armv7 while RPI 3 model B+ has already armv8 which is why it can run Ubuntu Server 64 bit.
SD cards have limited amount of writes, so when writing very much data like MongoDB does, SD card gets corrupted.
SSD and HDD works with very many writes.
Also running Meteor node+mongodb on arm64 Android Phone works: