Closes: Debian #805108. Primary motivation is to provide swap for FreedomBox machines. On all FreedomBox images, currently there is no swap configured. Swap on disk may not be good for SBCs most of which use SD card for storage. We wish for processes to not get killed when hard memory limit is reached. Zram seems like a good solution to the problem suitable not only for SBCs but also for desktops and bigger machines. Fedora is currently using Zram as its default swap solution configured by the installer. Zram creates a block device with a configured size. Writing blocks into the device compresses them and stores them in RAM. This block device can be configured as swap among other things. See: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/blockdev/zram.rst Set the size of the swap to be 50% of RAM. Expected compression is about 1:2. That means, in an average case, 25% of RAM is consumed to provide the swap device. This results in the system being able to consume about 125% of RAM capacity to run processes. This value is inspired by Fedora. https://fedoraproject.org/wiki/Changes/SwapOnZRAM . Zram based swap takes priority over disk based swap (due the priority being set to 100). This reduces IO and improves latency on machines that already have a swap device. On containers, zramswap.service fails to start as it will not be possible to insert the 'zram' kernel module from within the container. This should not cause any further problems. Since 'config' app is an essential app, zram-tools now becomes a hard dependency of freedombox package. For FreedomBox images, zram-tools will be pre-installed and pre-configured. So, it will work on first boot. For users installing FreedomBox via apt or those upgrading from an older version, zram-tools will be newly installed but configuration will not be picked up until the next reboot. Restarting zramswap.service is not done because it may not be a safe/successful operation. systemd-zram-generator is a project that essentially does what zram-tools. It appears to be a better implementation and we may migrate to it when it becomes available in Debian. Migration expected to be straight forward. Tests performed: - Running `sudo -u plinth ./run --list-dependencies` shows zram-tools as a dependency. - On a container, `systemctl status zramswap.service` shows as failed. - On a virtual machine, confirm that configuration is installed properly. Run `./setup.py install; systemctl daemon-reload; systemctl show zramswap.service | grep Environment`. - On a virtual machine, ensure that you have more than 512MiB or RAM. Then restart zramswap.service. This should create a swap space of 50% of RAM capacity. Confirm with `free` and `zramswap status`. - Restarting the VM retains the swap that has been setup. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
FreedomBox Service (Plinth)
The core functionality and web front-end of FreedomBox.
Description
FreedomBox is a community project to develop, design and promote personal servers running free software for private, personal communications. It is a networking appliance designed to allow interfacing with the rest of the Internet under conditions of protected privacy and data security. It hosts applications such as blog, wiki, website, social network, email, web proxy and a Tor relay, on a device that can replace your Wi-Fi router, so that your data stays with you.
This module, called FreedomBox Service and also know as Plinth, is the core functionality and web interface to the functions of the FreedomBox. It is extensible and provides various applications of FreedomBox as modules. Each module or application provides simplified user interface to control the underlying functionality. As FreedomBox can act as a wireless router, it is possible to configure networking. It also allows configuration of basic system parameters such as time zone, hostname and automatic upgrades.
You can find more information about FreedomBox Service (Plinth) on the Plinth Wiki page, the FreedomBox Wiki and the FreedomBox Manual.
Getting Started
To have a running FreedomBox, first install Debian (Buster or higher) on a clean machine. Then run:
$ sudo apt install freedombox
Full instructions are available on FreedomBox Manual's QuickStart page.
For instructions on running the service on a local machine from source code, see INSTALL.md. For instructions on setting up for development purposes, see HACKING.md.
Contributing
See the HACKING.md file for contributing to FreedomBox Service (Plinth).






