FreedomBox Developer Notes

App Components

A FreedomBox app can have one or more components. There are two main categories of components: leader and follower. The leader components must all be enabled in order for the app to be considered enabled. On the other hand, the follower components will follow the state of the leader components, but if they fail for some reason, it does not affect the overall state of the app.

Here are some of the components available in FreedomBox:

  • Info: holds basic info about the app like name, description, icon
  • Menu: make the app icon appear in either the Apps or System menu
  • Packages: list of Debian packages that are installed by the app
  • Daemon: a systemd service that is managed by the app
  • Firewall: open ports in the firewall
  • Webserver: Apache configuration
  • Frontpage: make the app icon appear on the main page
  • Domain Name: for any type of name service provided by the app, including DNS domain names, Tor onion service names, etc.
  • Let's Encrypt: update the app configuration whenever a certificate is obtained
  • Backups: holds the backup manifest and any special hooks
  • Coturn: for apps that rely on a STUN/TURN server

Each component can also implement its own diagnostics, which monitor the health of the component. For example, a daemon component can check if a service is listening on specific ports.

For more information, see the developer docs: https://docs.freedombox.org/reference/components/index.html