Install on Raspberry Pi

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.

https://releases.wekan.team/raspi3/maintainer-make-bundle.sh

2 Likes

For arm64, I have run Wekan on:

  • RasPi3
  • RasPi4
  • 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.

2 Likes

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:

  1. rm -rf node-gyp node-pre-gyp && npm install node-gyp@5.0.4 node-pre-gyp fibers
    • However, I was confused be the repetitive uninstall - install commands
  2. 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 :slight_smile:

@jneuendorf

Meteor x64/arm64/s390x/ppc64le

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.

  1. Build x64 bundle to wekan/.build/bundle
  2. Copy bundle to arm64 or other CPU Linux
  3. Install build-essential or similar that can build C/C++
  4. cd bundle/programs/server/node_modules/fibers
  5. node build.js
  6. 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:

Mac info:

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:
https://github.com/wekan/wekan/blob/master/releases/maintainer-make-bundle-s.sh

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:
https://github.com/wekan/wekan/blob/master/releases/maintainer-make-bundle-a.sh

ppc64le bundle code is similar to s390x code, unfortunately OpenPower Minicloud https://openpower.ic.unicamp.br/minicloud/ is currently down for maintenance, so I can not build newest Wekan:
https://github.com/wekan/wekan/blob/master/releases/maintainer-make-bundle-o.sh

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 https://github.com/wekan/wekan/pull/3273 because it uses some new module that does only build on x64, so Iā€™m thinking could I somehow get it working.

Meteor is mostly just Javascript, used with Node.js and MongoDB.

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.

About Cosmopolitan

For x64 platforms, Iā€™m looking will someone make ā€œActually portable x64 version with cosmopolitanā€ (same exe runs on x64 on all of Win/Mac/Linux/BSD) of Node.js sometime, and would it be possible to embed all Javascript etc inside same executeable.

https://ahgamut.github.io/c/2021/02/27/ape-cosmo/

https://news.ycombinator.com/item?id=26292166

About AppImage

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) :slight_smile:

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 :wink:

As of

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
https://downloads.raspberrypi.org/raspios_arm64/images/

Ubuntu

Ubuntu Mate

@jneuendorf

Please store database to external SSD, so you would not corrupt your microSD fast with big amount of writes MongoDB does.

1 Like

For example this way:

1 Like

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? :man_shrugging:

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:

2 Likes