Plugin architecture

Serverboards is expanded via plugins. These can have many components with each component of a given type. There are many types listed below, which expand serverboards in diferent dimensions. Normally all components in a given plugin have some defined goal, but they can be just support components.

Plugins only require the manifest.yaml file. Other elements are optional as:

Element Description
Active component Some executable that will communicate via JSON-RPC on stdio.
Static data Some static data that can be accessed by the Web UI, as new screens or icons.
Postinst script A script that checks if the plugin is properly installed and may install required software.

Manifest

The plugin components are defined in a YAML file named manifest.yaml.

Component types

Component type Description
Auth Allow to add new authentication schemes to Serverboards
Command Runs external executable sthat will communicate via JSON-RPC
Service type Defines new services types
Actions Define actions over services
System config Add new global settings
Notification Channel Define methods to send notifications to users
Trigger Status watchers that trigger an event when the status changes
Rule templates Predefined common rules
Screens Full sections inside serverboards
Widgets Widgets at the dashboard
Cron Periodic action running from the component
External URL Open an external URL related to a service
Internationalization Marks that this plugin has translations available

Static data

The UI may need some static data. It can be placed into a static subdirectory and the UI can access it at [URL]/static/[PLUGIN ID]/[filename.ext].

Postinst Script

At plugin installation Serverboards executes the executable as indicated in the postinst variable. It may be written in any programming language and does not communicate with serverboards.

It can print anything to stdout/stderr and this will be collected as plugin installation log.

If exit status is not 0, the plugin will be marked as broken and will not be activated.

This script has the normal envvars as normal plugins, and can write to its local directory for example to install required software there, but it can not install system wide software.