Draft: RFC: Setting up a multi-node FreedomBox cluster

Motivation

FreedomBox devices are physically limited in the number of applications that
they can run. The only solution currently available to users is to backup and
restore the FreedomBox to a machine with a better configuration.

The users of the current Pioneer Edition FreedomBox would want to upgrade to the
next version of FreedomBox when it comes out with more apps and better
configuration. Discarding the old device leads to avoidable electronic waste.

Proposal: Extend, not Replace

An existing FreedomBox should be extendable with more capacity by configuring
another FreedomBox as its secondary. In theory, any number of such FreedomBox
devices can be added to extend the capacity of the primary FreedomBox.

Every FreedomBox has an Apache server running on it which reverse proxies all
the applications running on it. It is possible to reverse proxy applications
running on other machines as well.

One FreedomBox in a cluster is configured as the primary. This is the machine
that receives all requests from users. The secondary FreedomBox devices do not
receive any direct requests from users but only from the primary. Whenever a
primary receives a request, it proxies the request to an application running
on the local machine or running remotely on a secondary.

Example Use Case:

An early-adopter of FreedomBox discovers that their hardware is no longer able
to take advantage of all the cool new apps released recently. They purchase a
new more powerful FreedomBox device. The existing FreedomBox can still run basic
applications like calendar, synchronization server etc. so it’s left
undisturbed. All new applications are installed on the new FreedomBox which is
configured as a secondary to the first. The user does a bi-directional
acceptance to connect the two FreedomBox devices as peers (workflow similar to adding
peers in Syncthing). The first FreedomBox transparently routes all requests to
the new applications to its secondary. The user also decides to move one big
application from the old FreedomBox device to the new one using the backup and
restore mechanism.

5 Likes

This could also be really useful for resiliency

1 Like

Would it be in scope to also share user accounts between the 2 boxes?

Yes, sharing user accounts is implied in the use case, but not explicitly stated. Maybe only the primary can maintain the LDAP server with user accounts and the secondaries can connect to that.

Is it complicated to realize a mini cluster solution for 2 freedomboxes using Pacemaker/Corosync? In addition to my Freedombox Pioneer, I also have a Raspberry Pi 3b+ Freedombox with some applications running on the home network. The cluster solution would be more elegant.