Monitor your devices with LibreNMS on FreeBSD

A guide on how to set up LibreNMS inside a FreeBSD jail.

https://it-notes.dragas.net/2026/05/07/monitor-your-services-with-librenms-on-freebsd/

#ITNotes #FreeBSD #Monitoring #Server #OwnYourData #Alerting #IT #SysAdmin #LibreNMS

Monitor your devices with LibreNMS on FreeBSD

A guide on how to set up LibreNMS inside a FreeBSD jail.

IT Notes
Monitor your devices with LibreNMS on FreeBSD

LibreNMS (https://www.librenms.org) has been a faithful companion for years now. It quietly handles the monitoring of my servers, devices, and services without demanding much in return - exactly what you want from a tool whose job is to watch over everything else. It's a solid alternative to heavier solutions like Zabbix, and it gives you alerts, data, and graphs on virtually anything reachable over SNMP.

I usually install it on a host that is not reachable from the outside, then let it poll all the devices through a VPN: a single observation point, clean perimeter. The ability to create multiple dashboards - and to filter them by user - has also let me give clients a transparent window onto their own servers. Transparency, in my experience, is always the better long-term bet.

Together with Uptime-Kuma (https://it-notes.dragas.net/2024/07/22/install-uptime-kuma-freebsd-jail/) (and the good old Nagios/Munin pair), LibreNMS lives in a FreeBSD jail on my monitoring servers and just does its job.

This post walks through a plain installation of LibreNMS on FreeBSD: package-based, no reverse proxy, no HTTPS, no fancy hardening. The goal is to get to a working setup you can build on top of.

Assumptions

  • FreeBSD 15.0-RELEASE, in a jail or on a dedicated VM/host
  • nginx + php-fpm + MySQL 8.4
  • LibreNMS installed from the official package — not via git clone
One note before we start: in this guide I use plain HTTP just to reach the first-time setup. If your LibreNMS instance won't stay confined to a private network or behind a VPN, configuring HTTPS is mandatory, not optional.

Installation

pkg install librenms mysql84-server python3 nginx
LibreNMS currently depends on PHP 8.4. If you want to speed PHP up, install OPcache too:

pkg install php84-opcache

MySQL

Two settings need to be in place before MySQL starts for the first time. After the first start they cannot be changed without reinitializing the data directory, so it's worth getting them right now.

cd /usr/local/etc/mysql
cp my.cnf.sample my.cnf
In the [mysqld] section, add:

innodb_file_per_table=1
lower_case_table_names=0
Now start MySQL:

service mysql-server enable
service mysql-server start
On a fresh FreeBSD install, the local root user can connect to MySQL without a password from the command line. Connect and create the database and user. I'm using password here as a placeholder - don't.

mysql
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
exit

php-fpm

Edit /usr/local/etc/php-fpm.d/www.conf and adjust the listen directives:

listen = /var/run/php-fpm-librenms.sock
listen.owner = www
listen.group = www
listen.mode = 0660
Then create php.ini from the production sample:

cd /usr/local/etc
cp php.ini-production php.ini
And set the timezone in php.ini:

date.timezone = Europe/Rome

nginx

Since this jail (or host) is dedicated to LibreNMS, we can rewrite the server block in /usr/local/etc/nginx/nginx.conf directly:

server {
listen 80;
#server_name yourServerName
root /usr/local/www/librenms/html;
index index.php;

charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location /api/v0 {
try_files $uri $uri/ /api_v0.php?$query_string;
}

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SERVER_SOFTWARE "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php-fpm-librenms.sock;
fastcgi_buffers 256 4k;
fastcgi_intercept_errors on;
fastcgi_read_timeout 14400;
}

location ~ /\.(?!well-known).* {
deny all;
}
}
Now start nginx and php-fpm:

service nginx enable
service nginx start

service php_fpm enable
service php_fpm start

LibreNMS configuration

Copy the default config:

cp /usr/local/www/librenms/config.php.default /usr/local/www/librenms/config.php
Because we installed from the package, this file already has the right commands and paths for FreeBSD - no need to hunt down mtr, fping, snmpwalk and friends one by one.

Create the directory for RRD graphs and set ownership:

mkdir -p /var/db/librenms/rrd
chown -R www:www /var/db/librenms
chmod 775 /var/db/librenms/rrd
Then the .env file:

cd /usr/local/www/librenms
cp .env.example .env
chown www .env
Edit .env and set at least:

  • DB_DATABASE - librenms
  • DB_USERNAME - librenms
  • DB_PASSWORD - the one you actually used (not password, please)
Then add this line, which tells LibreNMS we still need to run the web installer:

INSTALL=true
A note on permissions. The official LibreNMS documentation suggests chown -R www:www over the entire application tree, but on FreeBSD the package already lays down sane ownership, with storage/ and bootstrap/cache/ writable by www. There's no reason to widen the rest of the codebase. If validate.php complains later about something write-related, the first place to check is:

ls -la /usr/local/www/librenms/storage /usr/local/www/librenms/bootstrap/cache
Now generate the app key as www, since the file is owned by www:

su -m www -c "php artisan key:generate"
And tighten .env:

chmod 600 .env
Refresh the configuration cache:

su -m www -c "lnms config:clear"
su -m www -c "lnms config:cache"

Web installer

Open http://host/install and follow the steps. The validation process may fail. Refreshing the cache picks up the values written to config.php during the install:

su -m www -c "lnms config:clear"
su -m www -c "lnms config:cache"
When the web installer is done, edit .env again and remove the INSTALL=true line if it's still there. Leaving it in place re-exposes the installer to anyone who can reach the URL.

Polling service

LibreNMS needs something to actually run the polls. On FreeBSD, the package ships an rc service that runs the LibreNMS dispatcher, so there's no need to manage cron entries by hand the way most Linux guides assume.

service librenms enable
service librenms start

Validate

cd /usr/local/www/librenms
su -m www -c './validate.php'
You may see a couple of complaints right after starting the service - usually scheduler-related and self-resolving within a few minutes. Re-run validate.php once the dispatcher has had time to settle. Anything still red after that is worth investigating.

Next steps

At this point you can log into the web interface and start adding devices, configuring SNMP, and building dashboards. For that, the official LibreNMS documentation (https://docs.librenms.org/) is excellent, and there's no point in me paraphrasing it here.

https://it-notes.dragas.net/2026/05/07/monitor-your-services-with-librenms-on-freebsd/

#ITNotes #NoteHUB #freebsd #hosting #jail #monitoring #networking #ownyourdata #security #server #tutorial
LibreNMS

LibreNMS is an autodiscovering PHP/MySQL-based network monitoring system.

LibreNMS

Tired of your team's documentation getting lost in messy folders or locked behind SaaS paywalls? 📚

BookStack is an open-source wiki built for simplicity. It organizes knowledge into real-world books, chapters, and pages. You get WYSIWYG and Markdown editors, built-in diagrams.net support, and robust search.

Run your own private instance from just $2.10/mo.

https://pikapods.com/pods?run=bookstack

#opensource #ownyourdata

Yesterday, one of the younger electricians was telling me about the beauty of the new alarm systems he installs. While acknowledging the quality of my current one, he said, "It uses a SIM card and calls you. The new ones are 4G or Wi-Fi and use the cloud, so notifications go straight to your smartphone, it's not calling anymore."

I asked him, "And what if the cloud stops working? Why should I have to depend on the company’s cloud to receive alerts from my alarm? My alarm is 10 years old and works perfectly. Can you say with certainty that the company’s cloud will still be effective 10 years from now?"

He looked puzzled for a moment, then admitted he had never thought about it.

The real problem is that people do not realize what this means until things actually happen.

#OwnYourData

FOSS, single-file, vanilla, save with CTRL + S. This is designed to make single file webpages/programs in absolute position or VW. The keyboard is like Vi. 20 levels per project. #IndieWeb #PersonalWebsite #SmallWeb #VanillaJS #NoFramework #StaticSite #WebDesign #HandCrafted #SelfHosted #DigitalGarden #OwnYourData #WebDev #MinimalistWeb #HTML5 #OfflineFirst

Wealthfolio v3.3.0 is a massive update for open-source finance tracking. The standout feature is a brand new Retirement Planner backed by a Monte Carlo Risk Lab, running 5k simulations to stress test your future.

It also includes a redesigned goals dashboard with a tax-aware projection engine, and custom market data providers.

Release: https://github.com/afadil/wealthfolio/releases/tag/v3.3.0
Run it on PikaPods: https://pikapods.com/pods?run=wealthfolio

#opensource #selfhosted #ownyourdata

@bagder

I don't care about excuses or otherwise, we shouldn’t use centralised code management on principle.

https://lucumr.pocoo.org/2026/4/28/before-github/

Thank you, @mitsuhiko

#DVCS #Git #OwnYourData

Before GitHub

Open Source before GitHub was reputation-driven and full of friction

Armin Ronacher's Thoughts and Writings

I haven't been printing or designing much as I've been hard at work de-clouding our lives with a kubernettes cluster in my rack.

I've got Home Assistant, Jellyfin, and some personal projects up and running with DNS, Cloudflare, SSL TLS, all managed by K3s.

I am building out a 10TB storage node so I can get Immich setup and migrate off Google Photos.... #plans

#linux #foss #fosslife #fuckbigtech #ownyourdata #buildit #anikimakes #homelab #selfhosted

Last night I was watching a video from a YouTuber I enjoy. He’s likeable and reviews all kinds of smartphones. I find it relaxing, it makes me smile. In yesterday’s video, he showed his partner switching from an iPhone to Android and sharing his impressions.

At one point, the partner started saying that iOS is "dumber2 in many ways, specifically talking about the keyboard, because "Apple’s privacy is stronger, so they spy on you less". To me, that’s a feature, not a bug.

He went on to say it’s absurd, that he would actually like Amazon Alexa, Google, Android, iOS, and so on to know everything about him, so they can make things easier and provide more convenient features.

I was honestly stunned. So I went to check the comments and... they were all focused only on the fact that, "finally", he introduced his boyfriend in a video.

As long as this is how the average user thinks, big tech will keep their balance sheets locked tight and their hands on everyone’s data.

#Privacy #Security #OwnYourData

A belső privát #Pixelfed migráció is megtörtént a NAS-omról ugyanerre a szerverre, amin ez a #Mastodon #instance is működik, amit csak ketten használunk a saját privát emlékgyűjteményünkként.
(Nem mondom, hogy nagy munka volt kigyomlálni belőle a federációs hajlamot, de sajnos a Pixelfedben ez nem egy gombnyomás, szóval sokáig nagyon paranoid módon ellenőrizgettem, hogy valahol nincs-e mégis federációs adatszivárágs belőle.)

Amint támogatva lesz a natív mobilos alkalmazásban is a több felhasználós működés, vélhetően abból is lesz publikus saját verzióm is, hogy a publikumnak szánt emlékeim elérhetőek, de mégis általam kontrollálhatóak legyenek.

Sosem hátrány, ha az ember talál alkalmas vasat és hozzá megfelelő, legalábbis két-három felhasználó számára elég sávszéllel rendelkező szolgáltatót, hogy a saját kis homelabját üzemeltesse.

Jelenleg már fenn van a #JellyFin, #Nextcloud, #Pixelfed, ez és egy #privát Mastodon szerver, #Immich, #API végpont, #Pangolin és még sok-sok szolgáltatás, amihez nem hátrány, ha nem egy csóró falusi nettel üzemelteti az ember.

Gondoltam fizikai szerver hostingon is. De, azt már tényleg akkor, amikor fizetés emelés lesz. Sok pénzen meg egy a #geek hobbimra, nem kell még ennél is több egyelőre.

Sok ember nem érti, hogy ez miért szép és miért jó. De ebben sincs baj. Én például nem értem mi a jó a fociban, de pont azért, mert nem értek a focihoz. Ők nem értenek ehhez. Nem vagyunk egyformák. :)

#Fediverse #SelfHosting #HomeLab #NAS #OpenSource #Privacy #Decentralization #IndieWeb #ServerLife #LinuxServer #DataOwnership #DigitalSovereignty #HomelabSetup #TechLife #GeekLife #SysAdmin #APIs #CloudAlternative #PersonalServer #PrivacyFirst #NoTracking #SelfHostedApps #DecentralizedWeb #OwnYourData #Networking #ActivityPub