UPS shutdown with NUT over SNMP – Part 1: Proxmox VE

My Proxmox host and my TrueNAS share one UPS: an APC Smart-UPS SMT1500RMI2U with an AP9630 (NMC2) network management card. No USB cable, just Ethernet/SNMP.

Until now NUT ran as a container on the Proxmox host and served everything else. That’s a classic single point of failure: if Proxmox goes down first, the NUT server goes with it and nobody else gets told anything.

The design

  • No master/slave. Each host polls the UPS card itself over SNMP and shuts itself down.
  • Staggered thresholds: Proxmox shuts down at 50% battery, TrueNAS only at 40%. That way every VM/container writing to NAS shares is already stopped cleanly before the NAS goes down (consumer before provider).
  • Read-only SNMP community. No host can accidentally cut power to the shared UPS, even though NUT runs locally as primary.

Part 2 covers the TrueNAS side. This part is about Proxmox VE 8 (Debian 12, NUT 2.8.0).

Read more

Running SeAT 5 in Docker: every problem I hit and how I fixed it

I run SeAT, the EVE Online corporation management tool, for our corp in Docker on a Proxmox LXC, managed with Dockge. Getting it from SeAT 4 to SeAT 5 and then keeping it healthy turned into a long series of problems. This post collects all of them in one place, with the fixes that actually worked, so the next person (or future me) doesn’t have to dig through logs again.

The stack is a split compose setup, so every command needs the full -f chain:

Services are front, worker, scheduler, cache (Redis) and mariadb.

Read more

Network Monitoring with Prometheus & SNMP Exporter in the Homelab

Why SNMP Exporter instead of LibreNMS?

Anyone who’s done network monitoring before knows the usual suspects: Nagios, Zabbix, LibreNMS. These tools come with everything — SNMP discovery, device inventory, maps, alerting — but also their own database, their own visualization layer, and their own operational overhead.

In a homelab that already runs Prometheus, Grafana, and Loki, there’s little reason to add LibreNMS on top. The Prometheus SNMP Exporter fits seamlessly into an existing stack: it’s a single container that accepts SNMP queries and returns them as Prometheus metrics.

In this post I’ll walk through how I’m monitoring OPNsense, a Ruckus R720 AP, managed switches, Proxmox nodes, and a Brother printer with it.


Preparing devices: enabling SNMP

OPNsense

Go to Services → SNMP: enable the service, set a community string (e.g. homelab), bind to the LAN interface.

Ruckus R720

In the web UI under System → SNMP: enable SNMPv2c, enter the community string.

Proxmox nodes

On each node in the shell:

Edit /etc/snmp/snmpd.conf:

Managed switch & Brother printer

Varies by vendor — enable SNMP in the management UI and set the community string. On the Brother DCP-L8410CDW the option is under Network → Protocol → SNMP.


Docker Compose (Dockge)

Place snmp.yml in the same directory as the compose file.


snmp.yml — configuration

The official snmp.yml from the repository ships with ready-made modules for hundreds of device types and is the recommended starting point:

For a leaner custom config (compatible with snmp_exporter v0.26+):

Note on the Brother page counter: OIDs under 1.3.6.1.4.1.2435 are model-specific. The best way to find the right one for your printer is to run snmpwalk -v2c -c homelab <IP> 1.3.6.1.4.1.2435 and look for a counter that increments with each print job. The standard Printer-MIB (1.3.6.1.2.1.43) is model-independent and reliably covers toner levels.


Prometheus scrape config


Testing it

Once the container is running, query a device directly to verify everything works:

You should see Prometheus-formatted metrics. An empty response usually means a firewall issue — UDP 161 needs to be open from the exporter host to the target devices.


Grafana dashboards

Ready-made dashboards on grafana.com that work with these metrics out of the box:

  • 11169 — SNMP interface monitoring (generic)
  • 21491 — OPNsense
  • 10347 — Proxmox (SNMP)

For the printer, a simple hand-built dashboard works well — toner colors come through as labels directly from the SNMP walk.


Wrap-up

The SNMP Exporter is the leanest way to bring network devices into an existing Prometheus/Grafana stack. No extra database backend, no separate web UI — just one exporter container and a few lines of config. If you already have the stack running, it’s a much cleaner solution than standing up LibreNMS or Zabbix alongside it.

Fixing “OSError: image file is truncated” in Paperless-ngx while keeping PDF/A

Paperless-ngx installation done by ttecks Helperscripts. Getting every now and then those errors. Changing scanners didn’t help. (Brother xxx -> Fujitsu FI-8150)

one solution mentioned on Github was to set the output format from PDF/A to plain PDF as a workaround. But I decided to keep PDF/A.

Read more

Ubuntu 24.04 Server Quick Start: Sudo User, SSH Hardening, fail2ban, Docker and Dockge

Every time I spin up a new Ubuntu server I go through the same handful of steps before anything else touches it. This post is that checklist, written down so I (and hopefully you) don’t have to piece it together again. It assumes a fresh Ubuntu 24.04 LTS install where your SSH public key is already in place for the initial login.

Throughout the post I use youruser as the new account name and 2222 as the new SSH port. Replace both with your own values.

Golden rule: keep your current SSH session open the whole time and test every change from a second terminal. That way a typo never locks you out.

Read more