Skip to content

External App

The External App extension lets you integrate third-party applications installed on your ProxyBox. Instead of SSH-ing into the device to configure and manage each app separately, External App gives every application a consistent interface in the admin dashboard — with configurable settings, start/stop controls, and log viewing.

Each instance points to a manifest.json file that tells ProxyBox how to display the app, what settings it needs, and optionally what systemd service to control.

  1. A third-party application is installed on the ProxyBox device (either pre-installed or deployed later).
  2. The application includes a manifest.json file that describes its name, settings, and optional service.
  3. You create an External App instance in the admin dashboard and point it to the manifest file.
  4. The app’s settings appear in the dashboard, and you can configure, start, and stop it like any other extension.

This is how ProxyBox supports a growing ecosystem of applications without baking each one into the core firmware.

SettingTypeDescription
NamestringA short identifier for this app (e.g. qvp, mon).
Manifest PathstringAbsolute path to the app’s manifest.json file on the device.

The manifest file defines what the admin UI shows for this application:

{
"displayName": "My App",
"service": "my-app.service",
"fields": [
{ "name": "apiUrl", "type": "string", "label": "API URL", "default": "https://example.com" },
{ "name": "pollInterval", "type": "number", "label": "Poll Interval (seconds)", "default": 60 },
{ "name": "enabled", "type": "boolean", "label": "Enabled", "default": true }
]
}
FieldRequiredTypeDescription
displayNameYesstringHuman-readable name shown in the admin UI.
serviceNostringSystemd service name. If provided, starting/stopping the extension controls this service.
fieldsYesarrayArray of configurable settings. Each field has name, type (string, number, or boolean), optional label, and optional default.

Settings defined by the manifest are editable through the admin UI and persisted in a settings.json file alongside the manifest. Changes take effect the next time the extension is started.