PBS Backup Email Notifications with Rclone and msmtp

PBS + Rclone Backup Email Notification Setup for PacketRealm.io This document outlines how to configure email notifications for Proxmox Backup Server (PBS) backup syncs using rclone and msmtp, and send logs via email from [email protected]. 1. Email Account: [email protected] This email address is used as the sender for: PBS backup reports Grafana alerts General system monitoring You may use it with msmtp as an SMTP client to send messages. 2. Install Required Packages sudo apt update sudo apt install msmtp msmtp-mta 3. Configure msmtp Edit /root/.msmtprc: ...

June 22, 2025

ZFS Snapshot Automation on Proxmox

ZFS Snapshot Rotate Script This script automates: Daily snapshot creation for both LXC containers (subvol) and VMs (zvol) Cleanup of snapshots older than RETENTION_DAYS Logging to /var/log/zfs-snapshots/snapshot-YYYY-MM-DD.log Optional dry-run mode to simulate deletions Support for -v flag (verbose mode) Cron scheduling and logrotate ready πŸ“„ Script Location Place the script at: /usr/local/sbin/zfs-snapshot-rotate.sh chmod +x /usr/local/sbin/zfs-snapshot-rotate.sh ⏰ Cron Job (Automatic Daily Snapshots) Open root’s crontab: sudo crontab -e Add this line to run the script daily at 2:00 AM: ...

June 18, 2025

Proxmox Directory Storage: The Structure No One Explains

Proxmox Directory Storage: The Structure No One Explains If you’ve ever found yourself confused why Proxmox is β€œhiding” your ISO files or not listing them in the GUI, you’re not alone. The behavior is not a bugβ€”it’s by design, just very poorly documented. This guide documents what Proxmox expects when using directory (dir) storage typesβ€”especially on ZFSβ€”so everything shows up and works cleanly. πŸ” The Hidden Directory Structure When you point dir storage to a path, Proxmox does not use that folder directly. Instead, it creates specific subdirectories inside that path depending on content type: ...

June 15, 2025

Proxmox ZFS Migration Guide β€” Moving VMs to ZFS-SSD

I recently upgraded my Proxmox VE 8.4.0 homelab and added a dedicated 1TB SSD using ZFS. After setting up the new ZFS pool (zfs-ssd), I needed to migrate my existing VMs from local-lvm (LVM-Thin) to ZFS. This post documents my complete migration process. πŸ–₯️ System Overview Proxmox VE Version: 8.4.0 Existing Storage: local-lvm (LVM-Thin) New Storage: zfs-ssd (ZFS pool on 1TB SSD) 🧭 Migration Method The migration process uses Proxmox’s built-in disk move functionality. This converts LVM-Thin volumes into ZFS ZVOLs automatically. ...

June 15, 2025

Setting Up ZFS SSD Storage on Proxmox 8.4

I recently upgraded my Proxmox VE server with 48GB RAM and added a new 1TB SSD. This guide documents how I set up ZFS on the new SSD and configured it as a storage backend optimized for VM and container use. πŸ–₯️ System Overview Proxmox Version: 8.4.0 New SSD: /dev/sda (1TB) Existing boot disk: /dev/sdb (240GB) πŸ”§ Step 1: Identify the New SSD Run lsblk to identify your drives: lsblk -o NAME,SIZE,TYPE,MOUNTPOINT Look for your unpartitioned 1TB SSD (e.g. /dev/sda). ...

June 15, 2025

pfSense + LDAP Authentication Setup Documentation

πŸ” pfSense + LDAP Authentication Setup Guide A step-by-step guide to integrate pfSense with Active Directory over secure LDAPS using a Let’s Encrypt certificate issued via DNS validation. βœ… 1. Prerequisites πŸ–₯️ Windows Server 2025 as Domain Controller (DC) 🌐 A pfSense firewall instance 🌍 A domain name (e.g., packetrealm.io) ☁️ Cloudflare for DNS management πŸ”’ Admin access to pfSense Web UI πŸ“Ά Internet access from the Domain Controller 🌐 2. Configure DNS in Cloudflare Log in to your Cloudflare dashboard Select your domain (e.g., packetrealm.io) Navigate to DNS β†’ Add an A record: Name: dc IPv4 address: IP of your DC (LAN IP or WAN if accessible) Proxy status: βšͺ DNS only Save and verify with: nslookup dc.packetrealm.io πŸ“œ 3. Issue TLS Certificate via Win-ACME (Manual DNS) 🧰 3.1 Download Win-ACME πŸ‘‰ Download Win-ACME Use the win-acme.v2.x.x.x.x64.trimmed.zip version Extract to C:\win-acme πŸ“₯ 3.2 Issue Certificate (Manual DNS-01) cd C:\win-acme .\wacs.exe Choose M β†’ Create new certificate with advanced options Enter: dc.packetrealm.io Choose DNS-01 challenge Select Manual for DNS update method Add TXT record in Cloudflare: Name: _acme-challenge.dc Value: TXT value from wacs After propagation, hit Enter to continue πŸ” 3.3 Verify Certificate Open mmc.exe Add Certificates β†’ Local Computer Navigate to Personal β†’ Certificates Ensure: Issued to: dc.packetrealm.io Enhanced Key Usage: Server Authentication πŸ” 3.4 Restart NTDS Restart-Service ntds πŸ”— 4. Import Let’s Encrypt Root CA to pfSense πŸ“„ 4.1 Download Root Certificate πŸ‘‰ ISRG Root X1 - PEM format πŸ› οΈ 4.2 Add to pfSense Go to System β†’ Cert Manager β†’ CAs Click Add Name: Let’s Encrypt ISRG Root X1 Paste entire PEM contents Save βœ… πŸ‘€ 5. Create LDAP Bind Account (Best Practice) Open Active Directory Users and Computers Create OU: ServiceAccount (if needed) Add user: ldapbind Set password + Password never expires Example DN: CN=ldapbind,OU=ServiceAccount,DC=packetrealm,DC=io 🧩 6. Configure LDAP in pfSense Go to System β†’ User Manager β†’ Authentication Servers Click Add: Type: LDAP Hostname: dc.packetrealm.io Port: 636 Transport: SSL Peer CA: Let’s Encrypt ISRG Root X1 Base DN: DC=packetrealm,DC=io Bind DN: CN=ldapbind,OU=ServiceAccount,DC=packetrealm,DC=io Password: your ldapbind password Save & test with Diagnostics β†’ Authentication πŸ” 7. Enable LDAP Authentication in pfSense Go to System β†’ User Manager β†’ Settings Set your LDAP server as the authentication backend Apply settings πŸ”„ 8. Automate Certificate Renewal βœ… Win-ACME installs a scheduled task It auto-renews and places cert in Local Computer > Personal pfSense trusts it through the CA, no re-import needed Monitor expiry as a safeguard πŸ› οΈ 9. Troubleshooting Test LDAPS connectivity ...

June 13, 2025

Setting Up Hugo with NGINX on LXC

This guide walks you through deploying a Hugo static site using the PaperMod theme, hosted on an unprivileged LXC container running NGINX. This version includes a manual installation of Hugo via .deb for full control over the version. πŸ“ Prerequisites Proxmox or any hypervisor Ubuntu 22.04 LXC (unprivileged) A non-root user with sudo privileges πŸ› οΈ Step 1: Install Required Dependencies sudo apt update && sudo apt install -y curl wget git nginx πŸ“† Step 2: Install Hugo Manually (v0.147.8) wget https://github.com/gohugoio/hugo/releases/download/v0.147.8/hugo_0.147.8_linux-amd64.deb chmod +x hugo_0.147.8_linux-amd64.deb sudo dpkg -i hugo_0.147.8_linux-amd64.deb hugo version 🏠 Step 3: Create Your Hugo Site ...

June 10, 2025

Welcome to PacketRealm

Welcome to PacketRealm.io β€” my digital sanctum. I’m a homelab enthusiast and network engineer on a mission to understand the invisible threads that bind our digital world. Whether it’s Layer 2 magic, BGP sorcery, or deploying self-hosted services with just the right blend of elegance and redundancy, this realm is where ideas are forged and protocols come to life. 🧠 What I Do Network Engineering β€” From firewall rules to VLAN segmentation, my lab mimics enterprise-grade setups using open-source tools. System Architecture β€” I architect and maintain a hybrid environment using Proxmox, Docker, and virtualized infrastructure. Security & Identity β€” Integrating solutions like pfSense, Keycloak, and LDAP to secure and federate identity across services. Monitoring & Observability β€” Using tools like Prometheus, Grafana, Netdata to make sure no packet goes unnoticed. πŸ§ͺ My Lab Stack Includes pfSense (Primary + HA) Pi-hole (Redundant DNS sinkholes) Active Directory (Windows Server 2025) Dockerized services (like Nebula-sync) Prometheus + Grafana Hugo-powered website (this one!) 🌐 Why PacketRealm? Because every byte has a purpose. Every route hides a story. This is where packets go to become legends. ...

June 10, 2025