Actual Budget Prometheus Exporter
Build and run the Prometheus exporter for Actual Budget as a systemd service.
actual-budget-prometheus-exporter.sh builds
sakowicz/actual-budget-prometheus-exporter from its release source and runs
it with Node.js.
| Run it | On any system that can reach your Actual Budget server, usually the Actual Budget container. The script has no Proxmox VE host check |
| Supported OS | Debian or Ubuntu (require_debian_like: Alpine and systems without apt-get exit with code 238) |
| Port | 3001 by default, asked at install |
| Source | tools/addon/actual-budget-prometheus-exporter.sh |
Run
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/actual-budget-prometheus-exporter.sh)"Prompts
| Prompt | Answer |
|---|---|
Install Actual-Budget-Prometheus-Exporter? (y/N): | y installs. Anything else exits |
Enter URL of Actual Budget server, example: (http://127.0.0.1:5006): | Written as ACTUAL_SERVER_URL. No default |
Enter Actual Budget server password: | Hidden input, written as ACTUAL_PASSWORD |
Enter Budget Sync ID: | Written as ACTUAL_BUDGET_ID_1. Find it in Actual under Settings > Advanced settings > Sync ID |
Enter E2E encryption password (leave empty if end-to-end encryption is disabled): | Hidden input, written as ACTUAL_E2E_PASSWORD_1 |
Enter metrics port (default: 3001): | Written as PORT |
When the exporter is already installed:
| Prompt | Answer |
|---|---|
Uninstall Actual-Budget-Prometheus-Exporter? (y/N): | y removes it |
Update Actual-Budget-Prometheus-Exporter? (y/N): | y updates. Anything else exits with No action selected |
What it creates
| Item | Value |
|---|---|
| Packages | build-essential, python3 (needed to compile a native dependency), Node.js 22 through setup_nodejs |
| Application | /opt/actual-budget-prometheus-exporter, built with npm ci and npm run build |
| Configuration | /opt/actual-budget-prometheus-exporter.env |
| Service | actual-budget-prometheus-exporter (/etc/systemd/system/actual-budget-prometheus-exporter.service), runs as root |
| Update helper | /usr/local/bin/update_actual-budget-prometheus-exporter |
| Metrics | http://<ip>:<port>/metrics |
The configuration file holds both passwords in plain text. It also contains
commented examples for a budget label (ACTUAL_BUDGET_NAME_1), further budgets
(ACTUAL_BUDGET_ID_2, ...) and NODE_TLS_REJECT_UNAUTHORIZED="0" for a
self-signed certificate on the Actual server. Restart the service after
editing it.
Update
Run update_actual-budget-prometheus-exporter, answer y to the update
prompt, or let the container's update command offer it (see
how update finds add-ons).
If a newer release exists, the service is stopped, the application directory is replaced and rebuilt, and the service is started. The configuration file lives outside that directory and is kept.
Remove
The uninstall prompt stops and disables the service and deletes the service
file, /opt/actual-budget-prometheus-exporter, the .env file and the update
helper. Node.js and the build packages stay.