Automated pfSense backup — config, RRD, certificates, ZFS snapshots, and more.
SSH & HTTPS. Windows & Linux (tested on Ubuntu). Zero telemetry. 100% local.
$ pip install pfsentinel
Available on PyPI · GitHub · Releases
Back up everything — config, RRD, certificates, ZFS snapshots — with scheduling, notifications, and change detection built in.
XML config, RRD graphs, package configs, DHCP leases, aliases, certificates, logs, ZFS snapshots, and filesystem archives.
Dual-protocol support. SSH via Paramiko with key auth, HTTPS with automatic CSRF handling.
Classifies config changes: interfaces, firewall rules, system, users, VPN, DHCP, and packages.
Daily or weekly automated backups via native OS scheduler on Windows and Linux.
Alerts via Telegram, Slack, or Windows Toast.
Manage multiple pfSense firewalls from one machine. Per-device config, credentials in OS keyring.
Rich terminal output with pfs status, pfs list, and pfs setup. Scriptable and automation-friendly.
SSH key auth, SHA-256 verification, gzip compression with 70%+ size reduction. No secrets in config files.
Compare backups with unified diff. Restore to any path. Watch mode auto-backs up on config changes.
Four steps from install to your first automated backup.
pip install pfsentinel
or download the standalone binary:
pfs device add
Interactive setup — enter hostname, IP, and credentials. Passwords stored in OS keyring.
pfs backup runpfs backup run --all-extras
Config backup by default. Add --all-extras for RRD, certificates, DHCP, packages, and logs.
pfs schedule enable --interval dailypfs notify slack setup
Automate backups and get notified on every run. Done.
A clean CLI with rich terminal output for every operation.
$ pfs backup run --all-extras ℹ Saving backups to: ~/backups/pfsentinel ℹ Extras: all targets ℹ Backing up fw-primary (192.168.1.1)... [==============================] 100% Connected ✔ [config] config_20260403_143000.xml ✔ [rrd] extras_rrd_20260403_143000.tar.gz ✔ [certs] extras_certs_20260403_143000.tar.gz ✔ [dhcp] extras_dhcp_20260403_143000.tar.gz ℹ Saved to: ~/backups/pfsentinel/fw-primary/ ℹ Backing up fw-backup (192.168.1.2)... [==============================] 100% Connected ✔ [config] config_20260403_143005.xml ✔ [rrd] extras_rrd_20260403_143005.tar.gz ℹ Saved to: ~/backups/pfsentinel/fw-backup/ ✔ Total: 6 backup(s) across 2 device(s)
$ pfs status pfSentinel Status ───────────────────────────────────────────── Config: ~/.config/pfsentinel/devices.yaml Backup dir: ~/backups/pfsentinel Devices ┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┓ ┃ Name ┃ Host ┃ Port ┃ User ┃ ┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━┩ ┃ fw-primary ┃ 192.168.1.1 ┃ 22 ┃ admin ┃ ┃ fw-backup ┃ 192.168.1.2 ┃ 22 ┃ admin ┃ └──────────────┴───────────────┴──────┴───────┘ Total XML backups on disk: 47