<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hugo | DevOps | Cybersecurity</title>
    <description>The latest articles on DEV Community by Hugo | DevOps | Cybersecurity (@hugovalters).</description>
    <link>https://dev.to/hugovalters</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1175774%2F8a57b46a-da15-4ac2-ab41-fbe56c6a99a5.jpg</url>
      <title>DEV Community: Hugo | DevOps | Cybersecurity</title>
      <link>https://dev.to/hugovalters</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hugovalters"/>
    <language>en</language>
    <item>
      <title>Proxmox Backup Server: Incremental Backups and Restore Testing</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Wed, 11 Nov 2026 15:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/proxmox-backup-server-incremental-backups-and-restore-testing-kag</link>
      <guid>https://dev.to/hugovalters/proxmox-backup-server-incremental-backups-and-restore-testing-kag</guid>
      <description>&lt;p&gt;A mid-sized shop I worked with ran 18 months of "successful" nightly backups. Every job exited 0. Every dashboard was green. Then ransomware hit, they reached for the backups, and discovered the datastore had been silently corrupting chunks for months — the underlying disk had been throwing write errors that the verify jobs (which they'd never scheduled) would have caught. Eighteen months of green checkmarks, zero recoverable data. The post-mortem was short: nobody had ever restored a single VM.&lt;/p&gt;

&lt;p&gt;Proxmox Backup Server (PBS) is genuinely good infrastructure. The content-addressed chunk store deduplicates well, the QEMU dirty-bitmap integration makes incrementals cheap, and the verify tooling exists. But "backup job exited 0" is not a restore test, and PBS won't test restores for you unless you build the pipeline. This guide covers both halves: getting the incremental/dedupe model right, and automating the restore verification that nobody wants to do manually.&lt;/p&gt;

&lt;p&gt;This is written for the sysadmin or platform engineer who already has PBS running (or is about to) and wants it to survive contact with an actual incident. By the end you'll have a working restore-test script, sane GC/prune retention, an encryption key strategy that doesn't brick your recovery, and the five alerts that precede data loss.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PBS incrementals rely on QEMU dirty bitmaps — a lost bitmap means a full backup, so schedule with headroom, not at 99% of the window.&lt;/li&gt;
&lt;li&gt;Prune marks, GC reclaims. If GC never runs outside the backup window, your datastore fills up and you find out at 3 AM.&lt;/li&gt;
&lt;li&gt;The encryption master key is a single point of total loss. Escrow it offline or you have no backups, only ciphertext.&lt;/li&gt;
&lt;li&gt;"Verify" checks chunk integrity, not recoverability. Automate a full VM boot test on an isolated bridge — that's the only proof that matters.&lt;/li&gt;
&lt;li&gt;Pull-sync to offsite from the offsite side. A compromised primary should never be able to delete your offsite copy.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Proxmox VE 8.x and Proxmox Backup Server 3.x (check the official docs for current versions — the API surface is stable but flags evolve).&lt;/li&gt;
&lt;li&gt;A PBS datastore with at least one backup job configured and one snapshot present.&lt;/li&gt;
&lt;li&gt;Root or &lt;code&gt;DatastoreAdmin&lt;/code&gt; access on both PVE and PBS.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;proxmox-backup-client&lt;/code&gt; installed on any host that will run restore tests (it ships with PVE).&lt;/li&gt;
&lt;li&gt;An isolated bridge or VLAN on your PVE cluster for boot tests — no uplink, no DHCP to production.&lt;/li&gt;
&lt;li&gt;A Prometheus + Alertmanager stack if you want the monitoring section to be more than reading comprehension.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why PBS Beats Your rsync/ZFS-send Script (And Where It Doesn't)
&lt;/h2&gt;

&lt;p&gt;PBS is a content-addressed, chunk-based deduplicating store — not a file copier. It splits VM disk images into fixed-size chunks, hashes them, and stores each unique chunk once. A second VM with the same OS install dedupes against the first almost entirely. That's the whole value proposition, and it's why the "I'll just rsync the raw disks" crowd has an RTO measured in days, not hours: raw disk copies don't dedupe, don't do incrementals without snapshot gymnastics, and restore at disk speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fixed chunks, dirty bitmaps, and what "incremental" actually means
&lt;/h3&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/proxmox/proxmox-backup-server-incremental-backups-and-restore-testing/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>proxmox</category>
      <category>backup</category>
      <category>disasterrecovery</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>Proxmox Backup Server: Incremental Backups &amp; Restore Testing</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Tue, 10 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/proxmox-backup-server-incremental-backups-restore-testing-2606</link>
      <guid>https://dev.to/hugovalters/proxmox-backup-server-incremental-backups-restore-testing-2606</guid>
      <description>&lt;p&gt;Everyone's backups work until the first real restore. Then the dashboard goes green, the ticket gets escalated, and someone discovers the datastore was a single consumer SSD that had been silently corrupting chunks for a year and a half. Eighteen months of nightly PBS jobs, zero restore tests, and a retention policy that had pruned the last known-good snapshot three weeks before the incident.&lt;/p&gt;

&lt;p&gt;This is for senior sysadmins and security engineers running Proxmox VE in production who already have PBS installed and want to stop treating it as a checkbox. After reading, you'll understand what PBS "incremental" actually means at the storage layer, how to size and lay out a datastore that survives an audit, and how to build an automated restore-test harness that proves your guests boot — because PBS proves nothing of the sort.&lt;/p&gt;

&lt;p&gt;Scope: PBS 3.x/4.x, PVE 8.x, and working familiarity with &lt;code&gt;proxmox-backup-client&lt;/code&gt;, &lt;code&gt;proxmox-backup-manager&lt;/code&gt;, &lt;code&gt;qm&lt;/code&gt;, and &lt;code&gt;pct&lt;/code&gt;. If those mean nothing to you, this article will hurt.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PBS "incremental" is content-defined chunk dedup across the whole datastore — not a disk delta. Design storage for it.&lt;/li&gt;
&lt;li&gt;Client-side encryption is non-negotiable; the key lives with you, not on the PVE host.&lt;/li&gt;
&lt;li&gt;Verification checks chunk hashes against indexes. It does &lt;strong&gt;not&lt;/strong&gt; prove your VM boots. Restore testing does.&lt;/li&gt;
&lt;li&gt;Automate restore-to-scratch-VM on a schedule, emit Prometheus metrics, and page on failure — or you have rumors, not backups.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Proxmox VE 8.x cluster with &lt;code&gt;qemu-guest-agent&lt;/code&gt; installed in every guest you intend to back up.&lt;/li&gt;
&lt;li&gt;Proxmox Backup Server 3.x/4.x with at least one ZFS-backed datastore.&lt;/li&gt;
&lt;li&gt;A dedicated restore-test PVE node (or an isolated bridge/VLAN on an existing node) with scratch VMID range reserved (e.g., 9000–9099).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;proxmox-backup-client&lt;/code&gt;, &lt;code&gt;jq&lt;/code&gt;, and &lt;code&gt;curl&lt;/code&gt; on the restore-test node.&lt;/li&gt;
&lt;li&gt;Prometheus + Alertmanager (or your equivalent) reachable from the PBS host.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why PBS Incremental Is Not Your Old rsync Script
&lt;/h2&gt;

&lt;p&gt;If you think "incremental" means "diff of the VM disk," you will size your datastore wrong and then wonder why GC is rewriting indexes into a full filesystem. PBS incremental is a property of the storage layer, not a delta of the guest.&lt;/p&gt;

&lt;h3&gt;
  
  
  Chunking, Dedup, and What "Incremental" Actually Means Here
&lt;/h3&gt;

&lt;p&gt;PBS splits every backup stream into variable-length chunks using content-defined chunking (a rolling hash, not fixed-size blocks). Each chunk gets hashed, and if the hash already exists in the datastore, the chunk is &lt;em&gt;not written again&lt;/em&gt; — only the new per-snapshot index file references the existing chunk. Dedup is global: across snapshots, across guests, across time. That's the feature.&lt;/p&gt;

&lt;p&gt;It's also a footgun. One corrupted chunk can invalidate every snapshot that references it, which is why verification and ZFS checksums are not optional. The index file per snapshot is small; the chunk store is the thing you protect.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Gets Sent Over the Wire vs. What Lives on Disk
&lt;/h3&gt;

&lt;p&gt;On the PVE side, the dirty bitmap tracks changed extents since the last backup. Those extents get chunked and hashed, and only chunks whose hashes are absent from the datastore are uploaded. First backup of a 500 GB VM is expensive; the second is cheap &lt;em&gt;only&lt;/em&gt; if the guest churns slowly. A database writing 200 GB/day will not be cheap, no matter what the marketing deck said.&lt;/p&gt;

&lt;h3&gt;
  
  
  Datastore Creation With Sensible Defaults
&lt;/h3&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/proxmox/proxmox-backup-server-incremental-backups-restore-testing/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>proxmox</category>
      <category>backup</category>
      <category>devsecops</category>
      <category>zfs</category>
    </item>
    <item>
      <title>ZimaBlade NAS + Router Combo: PCIe Build Guide</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Mon, 09 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/zimablade-nas-router-combo-pcie-build-guide-27ck</link>
      <guid>https://dev.to/hugovalters/zimablade-nas-router-combo-pcie-build-guide-27ck</guid>
      <description>&lt;p&gt;A client called me at 11pm because their "NAS" had been silently corrupting backups for six weeks. The culprit wasn't ZFS, wasn't the drives, and wasn't the filesystem. It was a USB 3.0 enclosure with a UAS controller that reset itself under sustained load, dropped the pool offline, and re-imported it without complaint. They found out only when a restore failed during an actual incident. Forty terabytes of "backups" that were never tested, on a transport layer nobody should trust with a &lt;code&gt;zpool&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That story matters here because the ZimaBlade is exactly the kind of board people buy to do &lt;em&gt;everything&lt;/em&gt; at once — NAS, router, DNS, containers — on a single x86 SBC with a real PCIe slot. Done right, it's a beautiful little combo box. Done the way most forum posts suggest, it's a single point of failure with a cheerful front panel.&lt;/p&gt;

&lt;p&gt;This guide is for sysadmins and security engineers who already know their way around &lt;code&gt;zpool&lt;/code&gt;, &lt;code&gt;iptables&lt;/code&gt;/&lt;code&gt;nft&lt;/code&gt;, and a hypervisor, and want a build that won't embarrass them in six months. By the end you'll have a Proxmox host with PCIe passthrough, a ZFS NAS layer with sanoid snapshots, an OPNsense router VM on its own NIC, VLAN segmentation that doesn't loop, and a backup and monitoring story that actually proves itself.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ZimaBlade's single PCIe lane is real but electrically constrained — verify your board revision before buying a quad-NIC or HBA.&lt;/li&gt;
&lt;li&gt;Run Proxmox VE as the host, OPNsense as a VM, and the NAS as an LXC with a passed-through SATA controller. Never put WAN and LAN on the same bridge.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ashift=12&lt;/code&gt; always, prefer a PCIe SATA controller (ASM1166/JMB585) with external power over USB for any ZFS pool.&lt;/li&gt;
&lt;li&gt;Backups must be off-box, immutable, and &lt;em&gt;restore-tested&lt;/em&gt;. Untested backup is not a backup.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A ZimaBlade board (verify revision and PCIe electrical width before purchase), 16GB RAM minimum, a small NVMe boot drive.&lt;/li&gt;
&lt;li&gt;A PCIe NIC (Intel i210 or i226-v) for the router role, and optionally a PCIe SATA controller for storage.&lt;/li&gt;
&lt;li&gt;A USB stick with the Proxmox VE ISO (grab the current release from the official site — versions move).&lt;/li&gt;
&lt;li&gt;Console access (HDMI + USB keyboard or serial) for first boot.&lt;/li&gt;
&lt;li&gt;A second machine to run &lt;code&gt;ssh&lt;/code&gt;, &lt;code&gt;zfs&lt;/code&gt;, and &lt;code&gt;prometheus&lt;/code&gt; tooling from.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the ZimaBlade Is a Weirdly Good Fit (And Where It Isn't)
&lt;/h2&gt;

&lt;p&gt;This section exists because half the internet treats the ZimaBlade as either a Raspberry Pi killer or a datacenter replacement. It's neither. It's an x86 SBC with one PCIe lane, and that lane is what makes the NAS+router combo viable at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the ZimaBlade Actually Is
&lt;/h3&gt;

&lt;p&gt;The board ships in configurations based on Intel Celeron N-series silicon (N3450/J4125-class parts depending on SKU — check the vendor spec sheet for the exact model you buy). The critical detail is the PCIe slot: physically x4, but on some board revisions it's electrically wired as x1. That distinction is the difference between "a quad-NIC works fine" and "a quad-NIC negotiates down and drops links under load."&lt;/p&gt;

&lt;p&gt;Before you buy anything, confirm what you actually have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Confirm the board revision and slot topology&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;dmidecode &lt;span class="nt"&gt;-t&lt;/span&gt; baseboard | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s2"&gt;"Manufacturer|Product|Version"&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;lspci &lt;span class="nt"&gt;-vvv&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-A2&lt;/span&gt; &lt;span class="s2"&gt;"PCI bridge"&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/zima/zimablade-nas-router-combo-pcie-build-guide/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zimablade</category>
      <category>homelab</category>
      <category>zfs</category>
      <category>opnsense</category>
    </item>
    <item>
      <title>cloudflare.lv: Why I Gave It to Cloudflare for Free</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Sun, 08 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/cloudflarelv-why-i-gave-it-to-cloudflare-for-free-5517</link>
      <guid>https://dev.to/hugovalters/cloudflarelv-why-i-gave-it-to-cloudflare-for-free-5517</guid>
      <description>&lt;p&gt;Liquid syntax error: Variable '{{% raw %}' was not properly terminated with regexp: /\}\}/&lt;/p&gt;
</description>
      <category>cloudflare</category>
      <category>domain</category>
      <category>niclv</category>
      <category>security</category>
    </item>
    <item>
      <title>GL.iNet Slate 7 Pro Review: Wi-Fi 7 Travel Router That Fixed My Homelab Bottleneck</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Fri, 06 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/glinet-slate-7-pro-review-wi-fi-7-travel-router-that-fixed-my-homelab-bottleneck-3o5a</link>
      <guid>https://dev.to/hugovalters/glinet-slate-7-pro-review-wi-fi-7-travel-router-that-fixed-my-homelab-bottleneck-3o5a</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: When Your "Good Enough" Network Isn't
&lt;/h2&gt;

&lt;p&gt;Running self-hosted services on serious hardware means your network bottleneck stands out immediately. Mine was a TP-Link RE550 range extender — a device built for casual web browsing, not 24/7 production workloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The breaking point:&lt;/strong&gt; Moving a 40 GB video project from my editing workstation to the NAS took &lt;strong&gt;2 hours 30 minutes&lt;/strong&gt;. SSH sessions to Proxmox would randomly drop. Jellyfin, Vaultwarden, Uptime Kuma, and Netdata all competed for the same congested airspace on a single chip with no hardware VPN acceleration.&lt;/p&gt;

&lt;p&gt;The GL.iNet team sent over their newest flagship: the &lt;strong&gt;GL.iNet Slate 7 Pro (GL-BE10000)&lt;/strong&gt;. This is a full month of daily homelab use, not a weekend unboxing impression.&lt;/p&gt;

&lt;p&gt;&lt;a href="/deals/glinet/"&gt;&lt;br&gt;
  &lt;/a&gt;&lt;/p&gt;
&lt;a href="/deals/glinet/"&gt;&lt;br&gt;
    &lt;span&gt;🛒&lt;/span&gt;&lt;br&gt;
    &lt;br&gt;
      Exclusive deal for ValtersIT readers — Wi-Fi 7 Flash Sale&lt;br&gt;
      Affiliate link · I earn a commission at no extra cost to you&lt;br&gt;
    &lt;br&gt;
    &lt;span&gt;View Deal →&lt;/span&gt;&lt;br&gt;
  &lt;/a&gt;&lt;a href="/deals/glinet/"&gt;&lt;br&gt;
&lt;/a&gt;







&lt;h2&gt;
  
  
  Hardware: GL-BE10000 Specifications
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Specification&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SoC&lt;/td&gt;
&lt;td&gt;MediaTek MT7988A (Filogic 880), 4× Cortex-A73 @ 2.0 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;1 GB DDR4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flash&lt;/td&gt;
&lt;td&gt;512 MB NAND&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.4 GHz&lt;/td&gt;
&lt;td&gt;802.11be, 2×2 MIMO, up to 688 Mbps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5 GHz&lt;/td&gt;
&lt;td&gt;802.11be, 4×4 MIMO, up to 2882 Mbps (160 MHz)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6 GHz&lt;/td&gt;
&lt;td&gt;802.11be, 4×4 MIMO, up to 5764 Mbps (320 MHz)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MLO&lt;/td&gt;
&lt;td&gt;Multi-Link Operation — bonds all 3 bands simultaneously&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ethernet&lt;/td&gt;
&lt;td&gt;2× 2.5 Gbps (WAN/LAN configurable)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;USB&lt;/td&gt;
&lt;td&gt;USB 3.0 Type-A + USB-C PD power&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Display&lt;/td&gt;
&lt;td&gt;2.8" color IPS touchscreen&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cooling&lt;/td&gt;
&lt;td&gt;Active fan (thermostat-controlled)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WireGuard&lt;/td&gt;
&lt;td&gt;1100 Mbps (hardware-accelerated)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenVPN-DCO&lt;/td&gt;
&lt;td&gt;1000 Mbps (kernel-space acceleration)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;OpenWrt 23.05 + GL.iNet Panel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why the MediaTek MT7988A (Filogic 880) Matters
&lt;/h3&gt;

&lt;p&gt;The Filogic 880 includes dedicated hardware acceleration for both WireGuard and OpenVPN-DCO — the same silicon class used in mid-range enterprise APs. The 1100 Mbps WireGuard figure is real and repeatable under load, not a zero-client theoretical number.&lt;/p&gt;

&lt;p&gt;With 1 GB DDR4, you can comfortably run AdGuard Home with 2M+ blocklist entries (~180 MB resident), a WireGuard server with 10+ clients, and several OpenWrt packages simultaneously. Consumer routers at 256 MB RAM struggle with just one of those tasks.&lt;/p&gt;




&lt;h2&gt;
  
  
  SSH Access and OpenWrt Configuration
&lt;/h2&gt;

&lt;p&gt;Every GL.iNet UI setting maps directly to UCI config files under &lt;code&gt;/etc/config/&lt;/code&gt;. Vendor UIs change; OpenWrt config is stable and fully scriptable.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/glinet-slate-7-pro-review-wifi7-travel-router-homelab/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>homelab</category>
      <category>wireguard</category>
      <category>wifi7</category>
    </item>
    <item>
      <title>IPv6 in Production: Dual-Stack Without Breaking IPv4</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Thu, 05 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/ipv6-in-production-dual-stack-without-breaking-ipv4-e68</link>
      <guid>https://dev.to/hugovalters/ipv6-in-production-dual-stack-without-breaking-ipv4-e68</guid>
      <description>&lt;p&gt;You enabled IPv6 on a Friday afternoon. The change window was clean, the &lt;code&gt;ip -6 addr&lt;/code&gt; output looked right, smoke tests passed. By Monday, half your monitoring was green and lying to you. Your blackbox exporter was happily probing &lt;code&gt;https://10.0.4.12/health&lt;/code&gt; over IPv4 while user traffic from mobile carriers — which are all v6-first now — fell over a cliff on a path your dashboards never touched.&lt;/p&gt;

&lt;p&gt;That is the defining property of dual-stack failure: it doesn't break IPv4 loudly. It breaks it &lt;em&gt;silently&lt;/em&gt;, by making IPv6 preferred (RFC 6724 address selection) and then failing on a path nobody instrumented. A broken v6 route doesn't lose to a working v4 route — it wins, and then it times out.&lt;/p&gt;

&lt;p&gt;This guide is for sysadmins, SREs, and network/security engineers running real infrastructure. By the end you'll have working configs for Linux hosts, nginx, HAProxy, systemd-resolved, and nftables, plus a rollout order that keeps you off the 3am page. The thesis throughout: &lt;strong&gt;dual-stack is a policy problem disguised as a config problem.&lt;/strong&gt; Happy Eyeballs, DNS AAAA leaks, and asymmetric firewall rules are where you actually get burned — not in &lt;code&gt;ip addr add&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IPv6 is preferred by the kernel's address selection; a broken v6 path silently beats a working v4 path. Instrument both or you're blind.&lt;/li&gt;
&lt;li&gt;Write your firewall &lt;strong&gt;once&lt;/strong&gt; in the &lt;code&gt;inet&lt;/code&gt; family. Two parallel rule sets is a drift bug waiting to happen.&lt;/li&gt;
&lt;li&gt;AAAA is a traffic switch. Sequence it: infra → monitoring → internal DNS → canary → full publish.&lt;/li&gt;
&lt;li&gt;Never block ICMPv6 types 1–4 and 128–136. You will break PMTUD and neighbor discovery.&lt;/li&gt;
&lt;li&gt;Have a five-minute AAAA rollback before you publish anything.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Linux host with a v6-capable kernel (any modern distro; check &lt;code&gt;ip -6 addr&lt;/code&gt; returns something).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nftables&lt;/code&gt; (the default on current Debian/Ubuntu/RHEL families; &lt;code&gt;iptables-nft&lt;/code&gt; shim is fine but write native &lt;code&gt;nft&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nginx&lt;/code&gt; and/or &lt;code&gt;haproxy&lt;/code&gt; if you're fronting traffic.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;systemd-resolved&lt;/code&gt; or a resolver you control, for split-horizon testing.&lt;/li&gt;
&lt;li&gt;A lab GUA (global unicast) allocation or a Hurricane Electric tunnel if your uplink has no native v6. Do not test on production first.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Why Dual-Stack Fails Quietly
&lt;/h2&gt;

&lt;p&gt;The failure mode is baked into the standard. When a host resolves both an A and an AAAA record, the kernel's &lt;code&gt;getaddrinfo&lt;/code&gt; ordering (RFC 6724) puts IPv6 first. Applications that don't implement Happy Eyeballs — and plenty don't — connect to the v6 address, wait for the TCP timeout, and never fall back. Even Happy Eyeballs is a client-side heuristic with roughly a 250ms head start, not a contract; servers and middleboxes still lie about reachability.&lt;/p&gt;

&lt;p&gt;The three silent killers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Happy Eyeballs is not a guarantee.&lt;/strong&gt; It's a race with a head start. If your v6 path black-holes packets (as opposed to sending RST), the client may still win the race to a broken socket.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS AAAA asymmetry.&lt;/strong&gt; Your internal resolver hands out AAAA for a host that has no v6 route back. Traffic goes into a hole.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firewall default-deny on v6 only.&lt;/strong&gt; You carried v4 rules over but never wrote v6 equivalents — so v6 is either silently wide open or fully blocked, depending on your default policy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Before anything else, confirm the kernel is actually doing v6 and understand what an address/route looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Confirm v6 is enabled and see the address + route reality&lt;/span&gt;
sysctl net.ipv6.conf.all.disable_ipv6
ip &lt;span class="nt"&gt;-6&lt;/span&gt; addr show dev eth0
ip &lt;span class="nt"&gt;-6&lt;/span&gt; route show default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/ipv6-in-production-dual-stack-without-breaking-ipv4/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ipv6</category>
      <category>networking</category>
      <category>linux</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>ntopng Traffic Analysis: Finding Bandwidth Hogs</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Wed, 04 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/ntopng-traffic-analysis-finding-bandwidth-hogs-pcf</link>
      <guid>https://dev.to/hugovalters/ntopng-traffic-analysis-finding-bandwidth-hogs-pcf</guid>
      <description>&lt;h1&gt;
  
  
  ntopng Traffic Analysis: Finding Bandwidth Hogs Without Losing Your Mind
&lt;/h1&gt;

&lt;p&gt;It's 3:14 AM. PagerDuty fires. The WAN link on your primary DC is pinned at 98% and has been for 40 minutes. You SSH into the edge router, run &lt;code&gt;show interface GigabitEthernet0/0/0&lt;/code&gt;, and see... bytes. Lots of bytes. No idea who. You open a second terminal, run &lt;code&gt;iftop&lt;/code&gt;, watch it scroll for ten minutes, and learn exactly nothing actionable. Meanwhile the on-call Slack channel fills with "is it the network?" from people who should know better.&lt;/p&gt;

&lt;p&gt;This is the failure mode ntopng exists to eliminate. Flow-based analysis tells you &lt;em&gt;who&lt;/em&gt; is talking, &lt;em&gt;to whom&lt;/em&gt;, &lt;em&gt;over what protocol&lt;/em&gt;, and &lt;em&gt;for how long&lt;/em&gt; — in seconds, not after a packet capture marathon. Packet capture has its place (deep forensics, payload inspection, protocol debugging), but for the question "what is eating my bandwidth right now," flows win every time.&lt;/p&gt;

&lt;p&gt;This guide is for sysadmins, NetOps, and SecOps engineers who already know their way around a terminal. By the end you'll have a working ntopng deployment, flow export from your edge, dashboards that answer real questions, alerting that doesn't fire on noise, and a mental model for scaling it. If you're still running &lt;code&gt;show interface&lt;/code&gt; in a loop as your bandwidth strategy, this is for you.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ntopng is an &lt;em&gt;analysis&lt;/em&gt; layer, not a flow store. Pair it with ClickHouse or InfluxDB for anything past a week of retention.&lt;/li&gt;
&lt;li&gt;Flow export (NetFlow/IPFIX/sFlow) scales; direct packet capture does not. Use flows for capacity, packets for forensics.&lt;/li&gt;
&lt;li&gt;Default thresholds are wrong for your environment. Baseline for two weeks, then set alerts at 3σ.&lt;/li&gt;
&lt;li&gt;Never expose port 3000 to the internet. Reverse proxy with auth or don't bother.&lt;/li&gt;
&lt;li&gt;Bandwidth analysis is a security control. The crypto miner you didn't notice is a bandwidth hog you &lt;em&gt;did&lt;/em&gt; notice.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Linux host (Debian 12, Ubuntu 22.04/24.04, or RHEL 9) with at least 4 vCPU, 8 GB RAM, and 100 GB SSD for a small-to-mid deployment.&lt;/li&gt;
&lt;li&gt;Docker and Docker Compose v2 (for the recommended install path).&lt;/li&gt;
&lt;li&gt;A router or switch capable of NetFlow v9, IPFIX, or sFlow export.&lt;/li&gt;
&lt;li&gt;Root or sudo on the collector host, and the ability to open UDP 2055 (NetFlow/IPFIX) and 6343 (sFlow).&lt;/li&gt;
&lt;li&gt;Basic familiarity with Redis and a time-series database — you'll be running both.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why ntopng and Not the Other Twelve Tools
&lt;/h2&gt;

&lt;p&gt;The tooling landscape for traffic analysis is crowded and mostly mediocre. nfdump/nfsen is fast and scriptable but has a UI from 2008 and no real-time view worth using. Elastic with Packetbeat is fine until you discover the ingest cost of doing it at line rate. PRTG and SolarWinds NTA are commercial products priced for enterprises that mostly want a checkbox. Wireshark is a protocol analyzer, not a monitoring platform — using it for capacity analysis is like using a microscope to survey a highway.&lt;/p&gt;

&lt;p&gt;ntopng wins because it does real-time flow analysis with a usable UI, ships with Lua scripting for custom logic, has built-in alerting, and deploys in under ten minutes. It loses because long-term retention is genuinely weak — the built-in timeseries is fine for days, not months. Treat it as the analysis layer and push history somewhere else.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/ntopng-traffic-analysis-finding-bandwidth-hogs/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ntopng</category>
      <category>netflow</category>
      <category>networkmonitoring</category>
      <category>bandwidth</category>
    </item>
    <item>
      <title>ZimaBoard Home Server: Pushing the Celeron N3450</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Mon, 02 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/zimaboard-home-server-pushing-the-celeron-n3450-4f7l</link>
      <guid>https://dev.to/hugovalters/zimaboard-home-server-pushing-the-celeron-n3450-4f7l</guid>
      <description>&lt;h1&gt;
  
  
  ZimaBoard as a Home Server: Pushing the Celeron N3450 to Its Limits
&lt;/h1&gt;

&lt;p&gt;Everyone buys a ZimaBoard, slaps Proxmox on it, and then wonders why the thing falls over at 40°C ambient in a closet with the door shut. I've watched this exact failure mode play out more than once — including the time a ZimaBoard happily ran 14 containers for three months until someone enabled a single Jellyfin transcode and the box went from "fine" to "unresponsive" in about ninety seconds. The iGPU couldn't keep up, the CPU pegged at 100% across all four cores, and the OOM killer started eating services one by one.&lt;/p&gt;

&lt;p&gt;This guide is for the sysadmin or security engineer who already owns a ZimaBoard (or is about to) and wants to know where the actual wall is — not the marketing wall. The N3450 is a 6W TDP, 4-core, no-HyperThreading Apollo Lake chip with 8GB of soldered LPDDR4. It is not a NUC. It's a router-class SoC with delusions of grandeur. Treat it like what it is and it will serve you faithfully for years. Treat it like a mini server and it will teach you about thermal throttling.&lt;/p&gt;

&lt;p&gt;By the end you'll know which workloads fit, how to budget memory, how to boot safely, how to network the thing, and the exact signals that mean it's time to upgrade.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The N3450 is memory-bound at 8GB, not CPU-bound. Plan around RAM first.&lt;/li&gt;
&lt;li&gt;Boot from SATA SSD, never eMMC. eMMC is a landmine with a TBW countdown.&lt;/li&gt;
&lt;li&gt;Bare Docker on Debian beats Proxmox on this box for 90% of use cases.&lt;/li&gt;
&lt;li&gt;The HD 500 iGPU does H.264 QuickSync; HEVC is partial, AV1 is a hard no.&lt;/li&gt;
&lt;li&gt;If you need more than two simultaneous 1080p transcodes, stop reading and buy a used SFF.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A ZimaBoard (model 216 or 832; the 832's dual GbE and SATA are worth the extra)&lt;/li&gt;
&lt;li&gt;A SATA SSD (120GB minimum, 240GB+ recommended) and a SATA data + power cable&lt;/li&gt;
&lt;li&gt;Debian 12 netinst USB stick&lt;/li&gt;
&lt;li&gt;Basic familiarity with &lt;code&gt;systemd&lt;/code&gt;, &lt;code&gt;docker&lt;/code&gt;, and &lt;code&gt;netplan&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A second machine to SSH from — you will lock yourself out at least once&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Know Your Silicon: What the N3450 Actually Is (and Isn't)
&lt;/h2&gt;

&lt;p&gt;The spec sheet lies by omission. Knowing what the silicon can't do saves you from building a workload it will never survive.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Spec Sheet vs. Reality
&lt;/h3&gt;

&lt;p&gt;The Celeron N3450 is a 4-core/4-thread Apollo Lake (Goldmont) part running 1.1GHz base with 2.2GHz burst, 6W TDP, 2MB L2, and an Intel HD 500 iGPU with 12 execution units. There is &lt;strong&gt;no AVX&lt;/strong&gt;, no HyperThreading, and the PCIe lanes are gen 2.0. The 8GB of LPDDR4 is soldered — non-ECC, non-upgradeable. That last point is the one that matters.&lt;/p&gt;

&lt;p&gt;Storage reality: one SATA III port, one eMMC module (usually 32GB), and an M.2 2242 slot that is &lt;em&gt;not&lt;/em&gt; NVMe on all revisions — check your board revision before you buy an M.2 drive, because some ZimaBoards ship with SATA-only M.2.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Memory Ceiling Is the Real Ceiling
&lt;/h3&gt;

&lt;p&gt;8GB is the binding constraint, full stop. The CPU will happily idle at 5% while the OOM killer is murdering your Postgres container because ZFS ARC decided it wanted 4GB of your RAM for cache. If your plan includes ZFS, ARC will eat your RAM and your soul. On a box this size, use ext4 or XFS on the SSD and put your snapshot strategy at the application layer (restic, borg, whatever), not the filesystem layer.&lt;/p&gt;

&lt;p&gt;zram is your friend. Swap-on-ZFS is suicide — it causes write amplification that will kill your SSD and thrash the CPU simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thermals and the Passive-Cooling Lie
&lt;/h3&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/zima/zimaboard-home-server-pushing-the-celeron-n3450/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zimaboard</category>
      <category>homelab</category>
      <category>celeronn3450</category>
      <category>proxmox</category>
    </item>
    <item>
      <title>VLAN Design Patterns: Segmenting IoT, Servers, and Management Traffic</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Sun, 01 Nov 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/vlan-design-patterns-segmenting-iot-servers-and-management-traffic-fl2</link>
      <guid>https://dev.to/hugovalters/vlan-design-patterns-segmenting-iot-servers-and-management-traffic-fl2</guid>
      <description>&lt;p&gt;The printer was on the same Layer 2 segment as the domain controllers. Default admin password, firmware from 2016, web UI reachable from every workstation in the building. When the incident response team pulled the &lt;code&gt;ip neigh&lt;/code&gt; table off the core switch, the "oh no" moment wasn't a single compromised host — it was 340 devices in one broadcast domain, all of them one ARP spoof away from talking to each other. The attacker didn't need a zero-day. They needed the printer, and the printer was already inside the perimeter.&lt;/p&gt;

&lt;p&gt;This guide is for the sysadmin or network engineer who inherited a flat &lt;code&gt;192.168.1.0/24&lt;/code&gt; and a prayer, and now has to explain to leadership why segmentation is not optional. By the end, you'll have a four-zone model you can actually deploy, a VLAN numbering schema that survives a staff turnover, and the firewall and switch configs to enforce it. I've done this migration in regulated environments and in shops that had exactly one switch and no budget. Both are solvable.&lt;/p&gt;

&lt;p&gt;The flat network is a liability, not a convenience. Every device can ARP-spoof every other device. Every broadcast is a blast radius. Ransomware crews know this — lateral movement across a flat L2 is the easiest part of their playbook, and Mirai-style IoT botnets have been turning cameras and DVRs into pivot points since 2016. Segmentation is the cheapest lateral-movement control you're not using.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Four zones cover 95% of orgs: Management, Servers, Clients, IoT/Untrusted. More zones mean firewall rule sprawl and troubleshooting hell.&lt;/li&gt;
&lt;li&gt;Every inter-zone flow goes through a firewall. L3 switch routing is fine &lt;em&gt;within&lt;/em&gt; a zone, never &lt;em&gt;between&lt;/em&gt; zones.&lt;/li&gt;
&lt;li&gt;Management VLAN holds switch mgmt, IPMI, iDRAC, iLO, and PDUs — reachable only from a jump host.&lt;/li&gt;
&lt;li&gt;IoT is hostile. Treat it like the internet: internet egress allowed, RFC1918 denied, log everything.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you touch a switch, have the following ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IPAM tool&lt;/strong&gt; — NetBox, phpIPAM, or even a disciplined spreadsheet. You need a source of truth before you create VLAN 20.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A firewall that can route&lt;/strong&gt; — pfSense/OPNsense, Palo Alto, Fortinet, or an L3 switch with ACLs if that's all you have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Console access to your switches&lt;/strong&gt; — you will lock yourself out at least once. Have the console cable and the serial adapter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A maintenance window&lt;/strong&gt; — yes, even for "just adding a VLAN." You are changing the default gateway for devices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory of every device&lt;/strong&gt; with its current IP, MAC, and what it talks to. &lt;code&gt;nmap -sn&lt;/code&gt; and &lt;code&gt;arp -a&lt;/code&gt; are your friends here.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Flat Networks Keep Getting People Fired
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;192.168.1.0/24&lt;/code&gt; that "just works" works right up until it doesn't. A single broadcast domain means every device can reach every other device at Layer 2 — no firewall, no ACL, no logging, no policy. When the incident response team asks "how did the attacker move from the HVAC controller to the file server," the answer is "they were on the same VLAN."&lt;/p&gt;

&lt;p&gt;The war story I keep coming back to: a mid-sized manufacturer had a networked label printer on the same segment as their ERP servers. The printer's web interface had a default credential that nobody changed because "it's just a printer." An attacker used it as a foothold, dumped the ARP table, and had a map of every internal host within minutes. The printer was the entry point; the flat network was the multiplier.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/vlan-design-patterns-segmenting-iot-servers-and-management-traffic/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>vlan</category>
      <category>security</category>
      <category>iot</category>
    </item>
    <item>
      <title>Consul Connect: Service Discovery and mTLS Without Kubernetes</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Thu, 29 Oct 2026 15:15:07 +0000</pubDate>
      <link>https://dev.to/hugovalters/consul-connect-service-discovery-and-mtls-without-kubernetes-ggf</link>
      <guid>https://dev.to/hugovalters/consul-connect-service-discovery-and-mtls-without-kubernetes-ggf</guid>
      <description>&lt;p&gt;A team I worked with inherited a 40-node VM fleet, three Kubernetes clusters, and a mandate to "adopt a service mesh." They picked Istio because that's what the conference talks said. Six months later they were still debugging sidecar injection edge cases on the VM workloads — workloads that Istio had no clean story for in the first place. The mesh project got cancelled. The underlying problem — services couldn't find each other reliably and everything talked in plaintext — was still there.&lt;/p&gt;

&lt;p&gt;Here's the thing nobody tells you: service discovery and mutual TLS are orthogonal to orchestration. You can do both without a control plane welded to Kubernetes. Consul treats them that way, which is exactly why it fits the "unholy hybrid" environments most of us actually run.&lt;/p&gt;

&lt;p&gt;This guide is for engineers who need a working mesh across VMs, bare metal, and maybe some K8s — and want to know what it takes to run Consul Connect for real. By the end you'll be able to bootstrap a TLS-and-ACL-hardened cluster, register services with honest health checks, enable mTLS with sidecars, and write intentions that survive an audit.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consul Connect gives you service discovery plus mTLS with intentions as the authz layer — no Kubernetes required.&lt;/li&gt;
&lt;li&gt;Harden from day one: gossip encryption, RPC TLS, and ACL bootstrap &lt;em&gt;before&lt;/em&gt; you expose the API. "We'll add ACLs later" is a lie you tell yourself.&lt;/li&gt;
&lt;li&gt;Intentions are identity-based allow rules that work cross-platform; firewalls are still your outer perimeter.&lt;/li&gt;
&lt;li&gt;Transparent proxy mode is powerful and will lock you out of SSH if you don't exclude the lifeline ports.&lt;/li&gt;
&lt;li&gt;Snapshot, restore-drill, and watch Raft — uptime is not the same as health.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Consul 1.16 or newer (check the official docs for the current release; the CLI and config surface described here are stable across recent 1.x).&lt;/li&gt;
&lt;li&gt;Three hosts for servers with reliable clocks and low-latency networking between them.&lt;/li&gt;
&lt;li&gt;Root or sudo on target hosts for transparent proxy mode.&lt;/li&gt;
&lt;li&gt;Optional but recommended: Vault or cert-manager for cert lifecycle, and S3 (or equivalent) for snapshot storage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why You Probably Don't Need Istio
&lt;/h2&gt;

&lt;p&gt;The cargo cult is real: "service mesh" has been quietly redefined to mean "Kubernetes-native service mesh." That framing is a vendor convenience, not a technical truth. Istio and Linkerd are excellent — inside a single, well-behaved K8s cluster. The moment you have workloads Istio can't inject into cleanly (legacy VMs, appliances, cron boxes, that one Java app nobody will touch), you're either excluding them from the mesh or paying a tax in glue code.&lt;/p&gt;

&lt;p&gt;Consul's bet is that discovery and mTLS are platform-agnostic primitives. Agents run anywhere a process runs. Servers form a Raft cluster. Sidecars are just Envoy processes. Nothing in that chain requires a scheduler.&lt;/p&gt;

&lt;p&gt;Be honest about when Consul is the &lt;em&gt;wrong&lt;/em&gt; answer: if you're 100% Kubernetes and happy with Istio or Linkerd, stay there. If you have a small static environment where a config file and a reverse proxy would do, you don't need a mesh at all. Consul's complexity is real; the payoff is cross-platform uniformity. If you don't need that uniformity, don't pay for it.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/service_mesh/consul-connect-service-discovery-and-mtls-without-kubernetes/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>consul</category>
      <category>servicemesh</category>
      <category>mtls</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>Wazuh SIEM: Deploy Open Source Threat Detection</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Wed, 28 Oct 2026 15:15:07 +0000</pubDate>
      <link>https://dev.to/hugovalters/wazuh-siem-deploy-open-source-threat-detection-53g2</link>
      <guid>https://dev.to/hugovalters/wazuh-siem-deploy-open-source-threat-detection-53g2</guid>
      <description>&lt;p&gt;If your threat detection strategy is "wait for the SOC vendor to email us," you don't have one. You have a hope. I've watched a mid-size SaaS company pay six figures a year for a commercial SIEM and still miss a compromised WordPress plugin for eleven days — because the detection rules that would have caught it were behind a premium content pack nobody bought. Meanwhile, a two-node Wazuh cluster on hardware they already owned flagged the same class of behavior in under four minutes. That's the entire pitch: detection coverage is a function of rules and telemetry, not licensing.&lt;/p&gt;

&lt;p&gt;This guide is for engineers who already know what a SIEM is and are tired of the "just use the Docker compose, it's easy" blog posts that fall apart the moment you point 200 production agents at them. By the end you'll be able to size a distributed Wazuh deployment, install it without painting yourself into a corner, write and tune detection rules that don't drown your on-call, scope FIM so it doesn't melt your manager, set retention on day one, and route alerts to humans who will actually act on them.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wazuh is a detection &lt;em&gt;platform&lt;/em&gt; — HIDS, FIM, SCA, log analysis, and vulnerability detection in one stack. It is not a detection &lt;em&gt;strategy&lt;/em&gt;; you still have to tune it.&lt;/li&gt;
&lt;li&gt;Skip the all-in-one VM for anything real. Distributed Manager/Indexer/Dashboard is the only topology that survives contact with production.&lt;/li&gt;
&lt;li&gt;The OpenSearch fork dependency is the biggest operational liability — plan your index lifecycle and upgrade path before you install.&lt;/li&gt;
&lt;li&gt;Tune rules or die. Out-of-the-box Wazuh will happily generate 10k alerts a day and teach your team to ignore all of them.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Two or more Linux hosts (Ubuntu 22.04 LTS or RHEL/Rocky 9 recommended) with static addresses and a management VLAN.&lt;/li&gt;
&lt;li&gt;Root or sudo on all nodes. Wazuh's manager runs privileged daemons that read system logs — treat it accordingly.&lt;/li&gt;
&lt;li&gt;A DNS name for the dashboard and API, plus a decision on TLS (self-signed certs from the installer are fine to start, not fine forever).&lt;/li&gt;
&lt;li&gt;Working knowledge of &lt;code&gt;systemd&lt;/code&gt;, &lt;code&gt;firewalld&lt;/code&gt;/&lt;code&gt;nftables&lt;/code&gt;, and OpenSearch basics. If you've never tuned a JVM heap, read the sizing section twice.&lt;/li&gt;
&lt;li&gt;Roughly 8 GB RAM minimum for a lab; 32 GB+ per indexer node for production. More on that below.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Wazuh Actually Is (And Isn't)
&lt;/h2&gt;

&lt;p&gt;Wazuh is four things bolted together: a &lt;strong&gt;manager&lt;/strong&gt; (the rule engine and agent coordinator), an &lt;strong&gt;indexer&lt;/strong&gt; (an OpenSearch fork that stores alerts), a &lt;strong&gt;dashboard&lt;/strong&gt; (a Kibana fork), and &lt;strong&gt;agents&lt;/strong&gt; (the shippers on your hosts). The data flow is strictly one direction — agents talk to the manager on 1514/tcp, the manager forwards alerts to the indexer via Filebeat, and the dashboard reads from the indexer. If you understand that pipeline, you understand 80% of Wazuh's operational behavior.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  [Agent] --1514/tcp--&amp;gt; [Manager] --Filebeat--&amp;gt; [Indexer] &amp;lt;-- [Dashboard]
     |                     |  (1515 enrollment)      |            (443)
     |                     |                        |
  syscheck,             rules/decoders,        wazuh-alerts-*
  logcollector,         vulnerability feed,    wazuh-archives-*
  SCA, rootcheck        integratord
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/security/wazuh-siem-deploy-open-source-threat-detection/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wazuh</category>
      <category>siem</category>
      <category>threatdetection</category>
      <category>devsecops</category>
    </item>
    <item>
      <title>What Is Tailscale? The VPN That Doesn't Suck</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Tue, 27 Oct 2026 15:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/what-is-tailscale-the-vpn-that-doesnt-suck-4h26</link>
      <guid>https://dev.to/hugovalters/what-is-tailscale-the-vpn-that-doesnt-suck-4h26</guid>
      <description>&lt;h1&gt;
  
  
  What Is Tailscale? The VPN That Doesn't Suck
&lt;/h1&gt;

&lt;p&gt;The last time you configured OpenVPN, you spent three hours debugging a certificate chain, another two fighting &lt;code&gt;tun&lt;/code&gt; vs &lt;code&gt;tap&lt;/code&gt;, and then had to explain to your CTO why the "secure" tunnel was routing all remote traffic through a single t3.micro in us-east-1 that was already at 90% CPU from a runaway log shipper.&lt;/p&gt;

&lt;p&gt;That's not a VPN. That's a distributed denial-of-service attack you're paying for.&lt;/p&gt;

&lt;p&gt;Tailscale is WireGuard with a control plane, an identity layer, and NAT traversal that actually works. It is not magic. It is simply well-engineered, and that's rarer than it should be.&lt;/p&gt;

&lt;p&gt;This guide is for sysadmins, DevOps engineers, and security engineers who've been burned by OpenVPN or IPsec and want to understand what Tailscale actually does under the hood — not the marketing version. By the end, you'll know how the control plane and data plane split works, how to roll it out on real infrastructure with tags and ACLs, where the production footguns live, and when Tailscale is the &lt;em&gt;wrong&lt;/em&gt; tool.&lt;/p&gt;

&lt;p&gt;We're not going deep on DERP internals or enterprise pricing negotiation. Those are separate posts.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tailscale = WireGuard data plane + a coordination server that handles key exchange, NAT traversal, and ACL distribution. Your traffic does not flow through Tailscale's servers except via DERP relays when direct connections fail.&lt;/li&gt;
&lt;li&gt;The value isn't the protocol — WireGuard is ~4000 lines of C. The value is identity, ACLs, and the ops surface.&lt;/li&gt;
&lt;li&gt;Tags are ACLs. Untagged nodes are owned by a user; tagged nodes are owned by the tailnet. Never tag a laptop.&lt;/li&gt;
&lt;li&gt;The default ACL allows every node to reach every node. In prod, that is a security incident waiting for a calendar invite.&lt;/li&gt;
&lt;li&gt;If you're running raw WireGuard at scale, you've rebuilt 60% of Tailscale badly. If you're running OpenVPN in 2026, you're paying an ops tax for no benefit.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Root or sudo on Linux nodes you plan to enroll&lt;/li&gt;
&lt;li&gt;An identity provider you actually control (Google Workspace, Okta, Entra ID, GitHub org) for SSO&lt;/li&gt;
&lt;li&gt;A tailnet — the free tier supports 3 users and 100 devices, which is fine for a homelab and useless for anything else&lt;/li&gt;
&lt;li&gt;Basic familiarity with CIDR notation and firewall rules, because subnet routers will force you to remember&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The VPN Landscape Is a Dumpster Fire (And Why)
&lt;/h2&gt;

&lt;p&gt;Before we talk about what Tailscale does right, we need to be honest about why the previous generation of VPNs is so painful. It's not that IPsec and OpenVPN are bad protocols — it's that they were designed for a world that no longer exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  IPsec — The Protocol That Requires a PhD to Debug
&lt;/h3&gt;

&lt;p&gt;IPsec was designed for site-to-site tunnels between two static endpoints that trusted each other. It was never designed for a laptop that roams between coffee shops, home Wi-Fi, and a hotel captive portal. IKEv2 phase 1 and phase 2 negotiate security associations in a way that makes sense to a cryptographer and is inscrutable to anyone trying to debug why a tunnel won't come up at 2 AM.&lt;/p&gt;

&lt;p&gt;I once spent a full day on a Cisco ASA because someone typed &lt;code&gt;esp-aes&lt;/code&gt; instead of &lt;code&gt;esp-aes-256&lt;/code&gt;. The logs told us nothing useful. The tunnel came up. Traffic didn't flow. The fix was a single token in a config file, and the cost was eight hours of a senior engineer's time.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenVPN — Works Everywhere, Fast Nowhere
&lt;/h3&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
This is an abbreviated cross-post. Full article (all config files, architecture diagrams, images): &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/what-is-tailscale/" rel="noopener noreferrer"&gt;valtersit.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🛠️ Partner Tools for Developers
&lt;/h3&gt;

&lt;p&gt;ValtersIT curates partner deals for developers and sysadmins — VPS hosting, security tools, monitoring platforms and dev productivity gear. No filler, no affiliate spam.&lt;/p&gt;

&lt;p&gt;➜ &lt;a href="https://www.valtersit.com/deals/" rel="noopener noreferrer"&gt;valtersit.com/deals/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>vpn</category>
      <category>tailscale</category>
      <category>wireguard</category>
    </item>
  </channel>
</rss>
