Dashboard
Everything at a glance
| Run | Groups | Succeeded | Failed | Skipped |
|---|
| Time | Device | Error |
|---|
Devices
Inventory synced from LibreNMS · assign backup groups
| Device | IP | Vendor / OS | Firmware | Group | Last backup | Status |
|---|
Scripts & bindings
What runs on each platform, and which script each vendor/OS or device uses
Backup files
Every stored backup, grouped by device IP · click a device to expand
Version lifecycle
Every backup as v1 → latest · compare any two versions
| Host | Vendor | Versions | v‑4 | v‑3 | v‑2 | v‑1 | latest |
|---|
Access & authentication log
Every sign-in to this server — web UI, SSH and administrative changes
| Date | Source | Username | Source IP | Action | Detail |
|---|
| User | IP | Browser | Started | Last seen | Expires |
|---|
Syslog alert rules
Raise an alert when a message matches — by text, device and severity
| Rule | Match | Scope | Severity | Cooldown | Hits | State |
|---|
Offline repository
Every installer and image archive kept locally, so a rebuild never needs the internet
| Version | File | Kind | Size | SHA-256 | Stored |
|---|
IP pools
Managed ranges and how much of each is in use
| Pool | Prefix | Gateway | Site / VRF | Utilisation | Free |
|---|
Addresses
Allocate, release and track every address
| Address | Status | Customer | Service ID | Since | History |
|---|
Customers
Who holds addresses, and everything they have ever held
| Customer | Code | Contact | Active IPs | Ever held |
|---|
Lookup & lifecycle
Search by address, customer or service ID — see the full history from day one
Licence
Subscription entitlement for this installation
Create a token in the customer portal under Collectors. It can be used once and expires in 7 days.
Collectors
Appliances at customer sites, and the link to this server
| Customer | Status | Collectors | Devices | Cap | Contact |
|---|
| Collector | Customer | Site | Version | Devices | Last seen | State |
|---|
Changelog
Every field change detected on sync, plus UI actions and alerts
| Time | Device | Field | Change | Source |
|---|
| Time | Kind | Message | Mailed |
|---|
Alert templates
Every alert the system can send · toggle email / Telegram per template · edit wording with {placeholders}
| Placeholder | Meaning | Used by |
|---|
Custom templates can be fired from the API: POST /api/alert-templates/<key>/fire with a JSON body {"context": {...}}.
Application logs
Live backend logs — backups, sync, mailer, telnet, API
Device syslog
Live messages received from your network devices
Leave the host empty for every device. Leave the dates empty for the last 30 days.
| Time | Device | Severity | Module | Message |
|---|
Storage manager
Host-wise consumption for configuration backups and syslog
| Host | Files | Size |
|---|
| Host | Lines | Size |
|---|
Network configuration
Interfaces, addressing, gateway and DNS of this server
| Interface | IPv4 | Netmask | Gateway | MAC | State | Speed / MTU | Traffic |
|---|
Ping
Reachability test from this server to any IP or hostname
Traceroute
Path this server takes to reach a host
| Hop | Address | RTT | Raw |
|---|
SNMP agent
Expose this server to LibreNMS so it graphs like any other device
Config overrides
Devices whose connection settings differ from the defaults
| Device | IP | Vendor / OS | Group | What is overridden |
|---|
Release notes
Every change, newest first
TACACS+ devices
Network devices allowed to authenticate against this server
| Name | Address | Shared secret | Group | Description | State |
|---|
TACACS+ users
Accounts engineers use to log into network devices
| Username | Name | Group | Password | Enable | Expires | State |
|---|
TACACS+ groups
Privilege level and command authorisation profiles
Command sets
Reusable permit/deny rules attached to groups
Authentication report
Every login attempt against the TACACS+ server
| Date | NAC (client IP) | NAS (device IP) | Username | Port | Type | Action | Reason | Server |
|---|
Authorization report
Every command and shell authorisation decision
| Date | NAC (client IP) | NAS (device IP) | Username | Priv | Command | Action | Reason | Server |
|---|
TACACS+ event log
Every configuration change, validation and listener restart
| Date | Who | Action | Object | Name | Detail | From IP |
|---|
TACACS+ accounting
Every command run on your devices, by whom and where
| Date | NAC (client IP) | NAS (device IP) | Username | Port | Action | Priv | Command |
|---|
TACACS+ settings
Daemon configuration and shared secrets
Device configuration example (Huawei):
hwtacacs-server template nb
hwtacacs-server authentication <this-server-ip>
hwtacacs-server shared-key cipher <secret>
Server
Live utilisation of the backup server · alerts above threshold are mailed
Database + credential encryption key + config — what S3 device archives do not contain. Restore instructions are inside each archive.
| File | Created | Size |
|---|
Integrations
External systems: inventory source and alert channels
Devices keep the server they came from; the dashboard Sync button can sync one server or all at once.
The connection method (telnet/SSH) now lives on each script binding — see Devices → Scripts → Bindings, or override it per device with its Config button.
Create a bot with @BotFather, then message the bot (or add it to a group) and use @userinfobot / getUpdates to find the chat ID.
Uploads every 7z archive created since the last successful upload. Minimal IAM policy: s3:PutObject + s3:ListBucket on the bucket.
Uses DNS-01 (no port 80 needed). Host must have: apt install -y certbot python3-certbot-dns-cloudflare. Checked weekly (Mon 05:00); certbot renews inside 30 days of expiry and reloads nginx.
Share the target Drive folder with the service account's e-mail address, then paste the folder ID from its URL.
Used by any group that doesn't choose its own. Pick as many as you like.
Firewall
Host UFW managed from the GUI — rules apply to the whole server
| # | To | Action | From |
|---|
Users & access
Your account, user administration, and access history
| User | Role | 2FA | Created |
|---|
| Page | Read | Edit | Delete | Execute | Export | All |
|---|
| Time | User | IP | Action | Detail |
|---|
Settings
Changes apply immediately · secrets stay masked until replaced
"auto" uses cores × sessions-per-core. Telnet/SSH is I/O-bound, so 2–4 per core is usually safe and much faster.
When on, every account must enroll an authenticator at first login, and users cannot disable their own 2FA. Lost phone → admin uses "Reset 2FA" on the Users page. If the only admin is locked out: docker compose exec backend python -m app.rescue admin
Point devices here, e.g. on Huawei VRP:
info-center enable
info-center loghost <server-ip> facility local4
info-center source default channel 2 log level warning
Port changes need a container restart. Open the port in the Firewall page for
your device networks.
Runs after each backup cycle (daily backstop at 04:30). 7z archives never uploaded to S3 follow the local-days rule instead, so nothing is deleted before it could go off-site. History entries in Files/Versions remain, marked "file missing".
Session tokens are stored hashed, sent HttpOnly and marked Secure over HTTPS. Changing a password signs out that user's other sessions automatically.
Devices rewrite CRCs, digests and "last saved" timestamps on every save. Without this, each backup looks like a configuration change. Defaults cover Huawei VRP, Cisco IOS/NX-OS and JunOS.
| Group | Schedule | When | Cloud targets | Devices |
|---|
Re-enabling a device restores the group it came from. With the second option off, a subnet rule will pull disabled devices back into a scheduled group on the next sync.
Backups and version history are always kept, even when a device row is deleted — the files stay on disk and remain browsable on the Files page.
Devices matching a CIDR are auto-assigned to the group on every sync — except the excluded IPs, which keep their manual group.
Policy precedence — evaluated in this order, higher wins:
1️⃣ Vendor config (below): a disabled vendor locks all its devices to never, everywhere.
2️⃣ Group rules (subnet conditions): applied to the remaining devices, minus each rule's exceptions.
3️⃣ Manual assignment: whatever you set per device or per batch, for devices no rule touches.
At cycle time, "Pause all" and each device's Enabled flag are still respected on top.
Unticked vendors are skipped during cycles (their devices show as skipped, no failure mails).
Your current IP: ? — include it before saving or you will be locked out (127.0.0.1 always works).
A device that never uploads is retried automatically; a shorter wait (e.g. 20s) fails unreachable devices fast instead of holding a worker for two minutes. Configuration errors — missing script, disabled vendor, bad credentials — are not retried.
Placeholders: {ip} {hostname} {ddmmyyyy} {hhmm} {date} {time}. Example result: 10.8.0.36_14082026_1400 — .zip is appended automatically for TFTP-push; the server verifies the zip, stores the extracted .cfg, then deletes the zip.