<?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: Richard Chamberlain</title>
    <description>The latest articles on DEV Community by Richard Chamberlain (@sebos).</description>
    <link>https://dev.to/sebos</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1924667%2Feaf96626-d810-445a-a7ac-29a0b585d247.png</url>
      <title>DEV Community: Richard Chamberlain</title>
      <link>https://dev.to/sebos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sebos"/>
    <language>en</language>
    <item>
      <title>Grafana Log Dashboards — From Fleet Overview to Per-Host Detail</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 05 Apr 2026 18:19:58 +0000</pubDate>
      <link>https://dev.to/sebos/grafana-log-dashboards-from-fleet-overview-to-per-host-detail-2gmf</link>
      <guid>https://dev.to/sebos/grafana-log-dashboards-from-fleet-overview-to-per-host-detail-2gmf</guid>
      <description>&lt;p&gt;Grafana Log Dashboards — From Fleet Overview to Per-Host Detail&lt;/p&gt;

&lt;p&gt;Email-based monitoring has a failure mode: the inbox fills up, mail rules get created, and eventually something critical gets missed.&lt;/p&gt;

&lt;p&gt;Two Grafana dashboards break that pattern.&lt;br&gt;
The three-screen flow:&lt;/p&gt;

&lt;p&gt;→ Network Overview: error count column, red when problems exist, click to investigate → Log Summary: errors, warnings, failed logins, invalid users, sudo events, total log lines → Host Logs: log volume time series + three pre-filtered log panels&lt;br&gt;
What's new on Host Logs:&lt;/p&gt;

&lt;p&gt;✓ All Logs — full unfiltered stream for context ✓ Errors &amp;amp; Warnings — pre-filtered, first stop when stat panels are red ✓ Auth &amp;amp; Security — raw auth log with user, IP, and timestamp ✓ Annotations on the time series for marking events during investigation&lt;br&gt;
The design principle:&lt;/p&gt;

&lt;p&gt;Each screen narrows the scope. Two clicks from signal to log lines.&lt;/p&gt;

&lt;h1&gt;
  
  
  grafana #loki #linux #observability #logmonitoring #promtail #dashboard #sysadmin
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Linux-Log-Dashboards/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Linux-Log-Dashboards/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>grafana</category>
      <category>loki</category>
      <category>linux</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Grafana Network Overview — Every Device, One Screen</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 29 Mar 2026 14:20:40 +0000</pubDate>
      <link>https://dev.to/sebos/grafana-network-overview-every-device-one-screen-243l</link>
      <guid>https://dev.to/sebos/grafana-network-overview-every-device-one-screen-243l</guid>
      <description>&lt;p&gt;Most monitoring setups have the data. What they are missing is a way to see all of it at once.&lt;br&gt;
What this dashboard does:&lt;/p&gt;

&lt;p&gt;→ Groups every monitored host by subnet → Shows status, CPU, memory, and disk — one row per device → Uses threshold colouring — plain for healthy, yellow/red for problems → Links each hostname to Node Exporter Full for per-host detail → Powered entirely by Prometheus and Node Exporter — no extra agents&lt;br&gt;
The design principle:&lt;/p&gt;

&lt;p&gt;A healthy environment should look quiet. Colour only appears when something needs attention. If every cell is lit up, nothing stands out.&lt;br&gt;
The two-screen workflow:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Overview — scan it, identify which host needs attention&lt;br&gt;
Node Exporter Full — click the hostname, find the cause&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  grafana #prometheus #linux #observability #nodexporter #dashboard #sysadmin&lt;br&gt;
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Grafana-Network-Overview/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Grafana-Network-Overview/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>grafana</category>
      <category>linux</category>
      <category>dashboard</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Grafana — The Single Pane of Glass</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 22 Mar 2026 19:20:12 +0000</pubDate>
      <link>https://dev.to/sebos/grafana-the-single-pane-of-glass-228n</link>
      <guid>https://dev.to/sebos/grafana-the-single-pane-of-glass-228n</guid>
      <description>&lt;p&gt;Prometheus tells you how your systems are behaving. Loki tells you what happened. OpenSCAP tells you whether you are compliant. But three tools means three places to look.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Grafana adds:
&lt;/h2&gt;

&lt;p&gt;→ One dashboard connecting all three data sources&lt;br&gt;
→ Correlation by time — metrics and logs from the same incident in one view&lt;br&gt;
→ Compliance status alongside operational health&lt;br&gt;
→ Unified alerting regardless of which source triggers&lt;/p&gt;

&lt;h2&gt;
  
  
  What Grafana is (and is not):
&lt;/h2&gt;

&lt;p&gt;✓ A visualization and alerting platform&lt;br&gt;
✓ A connector to Prometheus, Loki, and SCAPinoculars&lt;br&gt;
✗ Not a data collector — it reads what already exists&lt;br&gt;
✗ Not a replacement for Prometheus, Loki, or OpenSCAP&lt;/p&gt;

&lt;p&gt;The best security posture is not the one with the most tools. It is the one where you can see everything clearly enough to act on it.&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #grafana #observability #prometheus #loki #openscap #singleglassofpane #sysadmin
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Grafana/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Grafana/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>grafana</category>
      <category>observability</category>
      <category>security</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>OpenSCAP: Compliance Scanning for the Linux Corporate Desktop</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 08 Mar 2026 13:08:27 +0000</pubDate>
      <link>https://dev.to/sebos/openscap-compliance-scanning-for-the-linux-corporate-desktop-5f7f</link>
      <guid>https://dev.to/sebos/openscap-compliance-scanning-for-the-linux-corporate-desktop-5f7f</guid>
      <description>&lt;p&gt;Compliance audits used to mean a person with a clipboard. OpenSCAP automates the entire process.&lt;br&gt;
What I built:&lt;/p&gt;

&lt;p&gt;→ OpenSCAP on Rocky Linux (SSG from dnf), Ubuntu 24.04 (SSG from upstream GitHub), and Fedora Kinoite (baked into OSTree image) → CIS profile auto-discovery handling Rocky vs Oracle Linux profile ID differences → SCAPinoculars exposing ARF XML results as Prometheus metrics on port 2112 → Compliance metrics alongside CPU, memory, and logs in Grafana → Custom RPM packaging for SCAPinoculars and OSTree Kinoite integration&lt;br&gt;
What it solves:&lt;/p&gt;

&lt;p&gt;✓ Cross-distribution compliance scanning with one consistent workflow &lt;br&gt;
✓ Compliance results visible continuously — not just at audit time &lt;br&gt;
✓ Configuration drift detected immediately via Grafana alerts &lt;br&gt;
✓ Prometheus + Loki + OpenSCAP unified in one Grafana dashboard&lt;/p&gt;

&lt;p&gt;Quirks documented:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SCAPinoculars v0.0.3 ignores --report-dir and --port flags&lt;/li&gt;
&lt;li&gt;Ubuntu ssg-base package has no datastream XML — use upstream ZIP&lt;/li&gt;
&lt;li&gt;Rocky + Fedora repos enabled: use --disablerepo="fedora*" at install&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  linux #openscap #compliance #cis #prometheus #grafana #kinoite #ansible #sysadmin
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/OpenSCAP/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/OpenSCAP/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>prometheus</category>
      <category>grafana</category>
      <category>kinoite</category>
      <category>compliance</category>
    </item>
    <item>
      <title>Loki: From Naming Servers After Gods to Monitoring Them</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 01 Mar 2026 14:27:11 +0000</pubDate>
      <link>https://dev.to/sebos/loki-from-naming-servers-after-gods-to-monitoring-them-2h25</link>
      <guid>https://dev.to/sebos/loki-from-naming-servers-after-gods-to-monitoring-them-2h25</guid>
      <description>&lt;p&gt;Prometheus tells you how your systems behave. Loki tells you what happened.&lt;br&gt;
What I built:&lt;/p&gt;

&lt;p&gt;→ Grafana Loki server with systemd (Rocky Linux) &lt;br&gt;
→ Custom Promtail RPM for Kinoite OSTree compatibility &lt;br&gt;
→ systemd-journal log shipping from servers and desktops &lt;br&gt;
→ SELinux file contexts for GitHub-sourced binaries &lt;br&gt;
→ Label-based log organization matching Prometheus scheme&lt;/p&gt;

&lt;p&gt;What it solves:&lt;/p&gt;

&lt;p&gt;✓ Centralized logs from servers and immutable desktops &lt;br&gt;
✓ LogQL queries across all systems without SSH &lt;br&gt;
✓ Historical log context for incident investigation &lt;br&gt;
✓ Foundation for Grafana alerting and OnCall integration&lt;/p&gt;

&lt;p&gt;Prometheus + Loki + Grafana = full observability stack.&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #loki #grafana #logaggregation #promtail #observability #kinoite
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Loki/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Loki/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>loki</category>
      <category>grafana</category>
      <category>logaggregation</category>
    </item>
    <item>
      <title>Bringing Prometheus Monitoring to the Linux Corporate Desktop</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 22 Feb 2026 15:40:34 +0000</pubDate>
      <link>https://dev.to/sebos/bringing-prometheus-monitoring-to-the-linux-corporate-desktop-8oe</link>
      <guid>https://dev.to/sebos/bringing-prometheus-monitoring-to-the-linux-corporate-desktop-8oe</guid>
      <description>&lt;p&gt;Enterprises monitor servers. Desktops? Usually ignored—until something breaks.&lt;br&gt;
What I built:&lt;br&gt;
→ Prometheus server with Ansible deployment &lt;br&gt;
→ node_exporter on Kinoite desktops (OSTree builds) &lt;br&gt;
→ Service discovery with environment/role labels &lt;br&gt;
→ Firewall security (restricted metric access) &lt;br&gt;
→ Historical time-series metrics for trend analysis&lt;/p&gt;

&lt;p&gt;What it solves:&lt;/p&gt;

&lt;p&gt;✓ Blind spots in desktop infrastructure &lt;br&gt;
✓ Reactive troubleshooting &lt;br&gt;
✓ No historical metrics &lt;br&gt;
✓ Capacity planning guesswork &lt;br&gt;
✓ Inconsistent monitoring approaches&lt;/p&gt;

&lt;p&gt;If desktops are infrastructure, monitor them like infrastructure.&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #prometheus #monitoring #observability #desktopmanagement
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Prometheus/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Prometheus/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>prometheus</category>
      <category>monitoring</category>
      <category>kinoite</category>
      <category>enterpriselinux</category>
    </item>
    <item>
      <title>Enterprise Desktop Update Lifecycle with Kinoite</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 15 Feb 2026 13:38:15 +0000</pubDate>
      <link>https://dev.to/sebos/enterprise-desktop-update-lifecycle-with-kinoite-7h4</link>
      <guid>https://dev.to/sebos/enterprise-desktop-update-lifecycle-with-kinoite-7h4</guid>
      <description>&lt;p&gt;Enterprise Desktop Update Lifecycle with Kinoite&lt;/p&gt;

&lt;p&gt;Remember Knoppix? That safe feeling—boot from CD, use Linux, nothing breaks, nothing permanent?&lt;/p&gt;

&lt;p&gt;Now scale that to enterprise desktops.&lt;br&gt;
What I built:&lt;/p&gt;

&lt;p&gt;→ Custom OS images per department (JSON-defined) → Ansible automation for builds and deployments → Dev-test-prod pipeline with promotion → Atomic updates with instant rollback → Zero configuration drift across hundreds of desktops&lt;br&gt;
What it solves:&lt;/p&gt;

&lt;p&gt;✓ Manual desktop configuration eliminated ✓ Update failures can't break systems ✓ Testing before production deployment ✓ Rollback in seconds, not hours ✓ Department-specific customization at scale&lt;/p&gt;

&lt;p&gt;From Knoppix safety to enterprise reliability.&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #kinoite #automation #desktopmanagement #ostree
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Lifecycle-with-Kinoite/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Lifecycle-with-Kinoite/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kinoite</category>
      <category>enterpriselinux</category>
      <category>automation</category>
      <category>desktopmanagement</category>
    </item>
    <item>
      <title>OS Updates on the Corporate Linux Desktop</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 01 Feb 2026 17:19:37 +0000</pubDate>
      <link>https://dev.to/sebos/os-updates-on-the-corporate-linux-desktop-1gca</link>
      <guid>https://dev.to/sebos/os-updates-on-the-corporate-linux-desktop-1gca</guid>
      <description>&lt;p&gt;OS Updates on the Corporate Linux Desktop&lt;/p&gt;

&lt;p&gt;Remember when "please update your systems ASAP" emails meant crossing your fingers? There's a better way.&lt;br&gt;
What I built:&lt;/p&gt;

&lt;p&gt;→ Self-hosted OSTree repository for Kinoite deployments → Dev/prod pipeline for testing before production → Image-based updates with instant rollback → Complete control over update timing and content&lt;br&gt;
What it solves:&lt;/p&gt;

&lt;p&gt;✓ Test updates before deploying to users ✓ Deploy exact tested images (not "similar" ones) ✓ Instant rollback if anything breaks ✓ No dependency on external update servers&lt;/p&gt;

&lt;p&gt;Full configuration walkthrough with examples and explanations.&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #ostree #rpmostree #updates #kinoite #enterprise
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/OSTree/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/OSTree/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ostree</category>
      <category>updates</category>
      <category>kinoite</category>
    </item>
    <item>
      <title>Controlling Software on the Corporate Linux Desktop</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Mon, 26 Jan 2026 11:10:59 +0000</pubDate>
      <link>https://dev.to/sebos/controlling-software-on-the-corporate-linux-desktop-1bfg</link>
      <guid>https://dev.to/sebos/controlling-software-on-the-corporate-linux-desktop-1bfg</guid>
      <description>&lt;p&gt;Ever worked somewhere that did software audits? Remember the scrambling to uninstall unapproved tools right before the review—only to reinstall them the next week?&lt;/p&gt;

&lt;p&gt;Yeah, I lived that too. Here's the better way.&lt;br&gt;
What I built:&lt;/p&gt;

&lt;p&gt;→ Internal Flatpak repository on Rocky Linux 9.7 &lt;br&gt;
→ GPG-signed applications for trust and integrity &lt;br&gt;
→ Apache HTTPS distribution with network-level controls&lt;br&gt;
→ Automated client configuration&lt;/p&gt;

&lt;p&gt;What it solves:&lt;/p&gt;

&lt;p&gt;✓ Audit compliance without the panic &lt;br&gt;
✓ Controlled software distribution without blocking productivity &lt;br&gt;
✓ Clear provenance for every application&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #flatpak #enterprise #devops #security
&lt;/h1&gt;

&lt;p&gt;[Read the full article] → &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Flatpak-Repo/" rel="noopener noreferrer"&gt;https://richard-sebos.github.io/sebostechnology/posts/Flatpak-Repo/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>flatpak</category>
      <category>enterprise</category>
      <category>devops</category>
    </item>
    <item>
      <title>Making Linux Work as a Corporate Desktop</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 18 Jan 2026 21:08:55 +0000</pubDate>
      <link>https://dev.to/sebos/making-linux-work-as-a-corporate-desktop-2ji8</link>
      <guid>https://dev.to/sebos/making-linux-work-as-a-corporate-desktop-2ji8</guid>
      <description>&lt;h1&gt;
  
  
  🔒 Corporate Linux Desktop Security: The Immutable Advantage
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Quick take:&lt;/strong&gt; Traditional Linux desktops are mutable—attackers can modify system files and persist malware. Immutable distros like &lt;strong&gt;Fedora Silverblue&lt;/strong&gt; flip that model: the base system is read-only, updates are atomic, and rollback is instant.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Traditional Desktops
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Configuration drift:&lt;/strong&gt; Every system becomes unique over time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update failures:&lt;/strong&gt; Partial installations leave broken states&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Malware persistence:&lt;/strong&gt; Attackers modify &lt;code&gt;/usr/bin&lt;/code&gt;, install rootkits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovery time:&lt;/strong&gt; Hours to restore from backup&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Immutable Solution
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fedora Silverblue&lt;/strong&gt; uses OSTree for atomic, versioned filesystem management:&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;# Current deployment&lt;/span&gt;
rpm-ostree status
● fedora:fedora/40/x86_64/silverblue
  Version: 40.20241215.0
  Commit: a3f5b8c7d9e6...

&lt;span class="c"&gt;# Update failed? Instant rollback&lt;/span&gt;
rpm-ostree rollback
systemctl reboot
&lt;span class="c"&gt;# 30 seconds to recovery&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Benefits:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔐 Immutable &lt;code&gt;/usr&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System files read-only during operation&lt;/li&gt;
&lt;li&gt;Malware can't persist in system directories&lt;/li&gt;
&lt;li&gt;Unauthorized changes don't stick&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;⚛️ Atomic Updates&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All-or-nothing deployments&lt;/li&gt;
&lt;li&gt;No partial failure states&lt;/li&gt;
&lt;li&gt;Boot menu fallback automatic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;📦 Flatpak Sandboxing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications isolated from base OS&lt;/li&gt;
&lt;li&gt;Granular permission controls&lt;/li&gt;
&lt;li&gt;IT maintains approved app repositories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🛡️ SELinux Enforcement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mandatory access control at kernel level&lt;/li&gt;
&lt;li&gt;Default-deny security model&lt;/li&gt;
&lt;li&gt;Even root processes constrained&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Real-World Security Scenario
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Attack: Browser exploit gains code execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traditional Desktop:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full filesystem access&lt;/li&gt;
&lt;li&gt;Can modify system binaries&lt;/li&gt;
&lt;li&gt;Establish persistence in startup scripts&lt;/li&gt;
&lt;li&gt;Install rootkit in &lt;code&gt;/usr&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Silverblue:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flatpak sandbox limits filesystem access&lt;/li&gt;
&lt;li&gt;Can't write to read-only &lt;code&gt;/usr&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;SELinux constrains even if sandbox escaped&lt;/li&gt;
&lt;li&gt;Rollback removes any user-space changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who Should Care?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise IT:&lt;/strong&gt; Deploying hundreds of consistent, secure workstations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DevOps:&lt;/strong&gt; Treating desktops like immutable infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security teams:&lt;/strong&gt; Reducing attack surface and incident response time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homelabbers:&lt;/strong&gt; Learning enterprise tech, stable personal systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn More
&lt;/h2&gt;

&lt;p&gt;Deep dive into architecture, deployment strategies, and real-world use cases:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Linux-Corporate-Desktop-Usability-Security/" rel="noopener noreferrer"&gt;Making Linux Work as a Corporate Desktop&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #cybersecurity #silverblue #immutableos #devops #selinux #flatpak #ostree #infosec
&lt;/h1&gt;

</description>
      <category>cybersecurity</category>
      <category>flatpak</category>
      <category>ostree</category>
      <category>infosec</category>
    </item>
    <item>
      <title>Prototyping Enterprise Infrastructure in Proxmox: 11+ VMs, 8 VLANs, and Ansible Automation</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 04 Jan 2026 17:53:10 +0000</pubDate>
      <link>https://dev.to/sebos/prototyping-enterprise-infrastructure-in-proxmox-11-vms-8-vlans-and-ansible-automation-5bkg</link>
      <guid>https://dev.to/sebos/prototyping-enterprise-infrastructure-in-proxmox-11-vms-8-vlans-and-ansible-automation-5bkg</guid>
      <description>&lt;p&gt;After seven years running Proxmox in my homelab, I'm tackling my most complex project yet—prototyping a complete SMB infrastructure with 11+ VMs, 8 network segments, and comprehensive automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Prototype Virtually?
&lt;/h2&gt;

&lt;p&gt;Testing infrastructure in VMs before production deployment catches problems early:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Network misconfigurations&lt;/strong&gt; discovered in VLANs before buying physical switches&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource constraints&lt;/strong&gt; identified before ordering hardware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backup failures&lt;/strong&gt; found during testing instead of disasters&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation issues&lt;/strong&gt; debugged in isolated environments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disaster recovery&lt;/strong&gt; practiced without actual disasters&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Infrastructure
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Network Design (8 VLANs)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10.0.100.0/24 – Management and monitoring
10.0.110.0/24 – Base infrastructure servers
10.0.120.0/24 – Application servers
10.0.130.0/24 – General workstations
10.0.131.0/24 – Manager workstations
10.0.132.0/24 – IT workstations
10.0.140.0/24 – Guest Wi-Fi and IoT
10.0.150.0/24 – Public-facing services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All inter-VLAN routing handled by an OPNSense VM. This lets me test firewall rules, routing policies, and network segmentation before deploying to physical infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  User Management
&lt;/h3&gt;

&lt;p&gt;Proxmox supports PAM and Proxmox VE users. I use both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PAM admin&lt;/strong&gt;: SSH access + web UI (root disabled)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PVE users&lt;/strong&gt;: Limited permissions, no shell access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ansible user&lt;/strong&gt;: API-only access for automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pro tip: Shut down pveproxy when not using the web UI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;systemctl stop pveproxy   &lt;span class="c"&gt;# Stop when not needed&lt;/span&gt;
systemctl start pveproxy  &lt;span class="c"&gt;# Start when needed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resource Pools (Used Correctly)
&lt;/h3&gt;

&lt;p&gt;I previously misused resource pools as tags. They're actually for &lt;strong&gt;delegation and access control&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;smb-servers&lt;/code&gt;: Core infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;smb-workstations&lt;/code&gt;: Desktop/laptop VMs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;smb-project-admin@pve&lt;/code&gt;: Full access across pools&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;smb-admin@pve&lt;/code&gt;: Server pool only&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Backup Strategy
&lt;/h3&gt;

&lt;p&gt;Dual-layer backups for redundancy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local (10TB):&lt;/strong&gt; 7 daily, 4 weekly, 2 monthly&lt;br&gt;
&lt;strong&gt;External (4TB):&lt;/strong&gt; 1 daily, 2 weekly, 1 monthly&lt;/p&gt;

&lt;p&gt;And I actually test restore procedures. Backups are worthless if you've never validated them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automation
&lt;/h3&gt;

&lt;p&gt;Ansible user with Proxmox API access enables infrastructure as code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VM provisioning from templates&lt;/li&gt;
&lt;li&gt;Network configuration (VLAN assignments)&lt;/li&gt;
&lt;li&gt;Resource management&lt;/li&gt;
&lt;li&gt;Backup scheduling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Configurations stored in GitHub—destroy everything and rebuild from source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is This Overkill?
&lt;/h2&gt;

&lt;p&gt;For a homelab? Yes. For learning? Absolutely not.&lt;/p&gt;

&lt;p&gt;Overengineering in the lab teaches enterprise concepts (VLANs, RBAC, disaster recovery, automation) without production risk. When something breaks, fixing it builds troubleshooting skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hardware
&lt;/h2&gt;

&lt;p&gt;Dual-socket Lenovo D20 (24 cores) with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU host passthrough for VMs&lt;/li&gt;
&lt;li&gt;Memory ballooning across VMs&lt;/li&gt;
&lt;li&gt;Initial allocation: 4GB servers, 8GB workstations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm documenting the full build over 3-6 months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SMB infrastructure planning&lt;/li&gt;
&lt;li&gt;Ansible automation setup&lt;/li&gt;
&lt;li&gt;Samba Active Directory deployment&lt;/li&gt;
&lt;li&gt;File and print services&lt;/li&gt;
&lt;li&gt;Linux workstation configuration&lt;/li&gt;
&lt;li&gt;SELinux hardening&lt;/li&gt;
&lt;li&gt;Monitoring and backup automation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Read the Full Article
&lt;/h2&gt;

&lt;p&gt;Complete details on my Proxmox prototyping methodology: &lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Proxmox-Prototype/" rel="noopener noreferrer"&gt;Prototyping a Larger Project with Proxmox&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  proxmox #virtualization #infrastructure #linux #devops #networking #ansible
&lt;/h1&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
      <category>proxmox</category>
      <category>opnsense</category>
    </item>
    <item>
      <title>Building Enterprise Security for Small Business with Linux and Open Source</title>
      <dc:creator>Richard Chamberlain</dc:creator>
      <pubDate>Sun, 28 Dec 2025 19:11:09 +0000</pubDate>
      <link>https://dev.to/sebos/building-enterprise-security-for-small-business-with-linux-and-open-source-2aoe</link>
      <guid>https://dev.to/sebos/building-enterprise-security-for-small-business-with-linux-and-open-source-2aoe</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The most dangerous phrase in the language is, 'We've always done it this way.'" — Grace Hopper&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For small businesses, "doing it the Windows way" might be the dangerous default.&lt;br&gt;
The Challenge&lt;/p&gt;

&lt;p&gt;Small businesses face enterprise-level security threats but rarely have enterprise budgets. They need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized user management&lt;/li&gt;
&lt;li&gt;Access control and permissions&lt;/li&gt;
&lt;li&gt;Audit logging for compliance&lt;/li&gt;
&lt;li&gt;Secure remote administration&lt;/li&gt;
&lt;li&gt;Consistent configuration management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditional answer: Windows Server, Active Directory, third-party security tools. Cost: thousands per year in licensing.&lt;br&gt;
The Alternative&lt;/p&gt;

&lt;p&gt;Linux provides enterprise security capabilities without licensing costs:&lt;/p&gt;

&lt;p&gt;Authentication: Samba AD (Linux-based domain controller) Authorization: DAC/ACL (file permissions) Protection: SELinux/AppArmor (mandatory access control) Monitoring: Auditd (security event logging) Management: Ansible (infrastructure-as-code) Services: CUPS (printing), SSH (remote access)&lt;br&gt;
The Project&lt;/p&gt;

&lt;p&gt;I'm building this as a complete proof-of-concept over 3-6 months:&lt;/p&gt;

&lt;p&gt;Environment: 11-VM Proxmox setup Target: Small business (10-50 employees) Goal: Enterprise-grade security at SMB budget&lt;/p&gt;

&lt;p&gt;Components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Samba AD domain controller&lt;/li&gt;
&lt;li&gt;File servers with centralized auth&lt;/li&gt;
&lt;li&gt;Print server (CUPS)&lt;/li&gt;
&lt;li&gt;Ansible control node for automation&lt;/li&gt;
&lt;li&gt;Domain-joined Linux desktops&lt;/li&gt;
&lt;li&gt;Monitoring and backup systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why This Matters&lt;/p&gt;

&lt;p&gt;For business owners: Understand there are alternatives to expensive licensing For IT professionals: See what Linux can deliver in real-world business environments For Linux enthusiasts: Practical guide to enterprise infrastructure&lt;br&gt;
The Series&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://richard-sebos.github.io/sebostechnology/posts/Exploring-Enterprise-Security/" rel="noopener noreferrer"&gt;Article 1: Introduction (this one)&lt;/a&gt; - Why this project matters &lt;/li&gt;
&lt;li&gt;Article 2: Proxmox virtualization best practices &lt;/li&gt;
&lt;li&gt;Article 3: SMB infrastructure planning &lt;/li&gt;
&lt;li&gt;Article 4: Ansible automation setup &lt;/li&gt;
&lt;li&gt;Articles 5-8: Core services deployment &lt;/li&gt;
&lt;li&gt;Articles 9-10: Desktop environment configuration &lt;/li&gt;
&lt;li&gt;Articles 11-12: Security hardening and monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Question&lt;/p&gt;

&lt;p&gt;Does business actually need this?&lt;/p&gt;

&lt;p&gt;Given:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SaaS moving apps to browsers (less OS dependency)&lt;/li&gt;
&lt;li&gt;Cost pressures to reduce licensing&lt;/li&gt;
&lt;li&gt;Security requirements increasing&lt;/li&gt;
&lt;li&gt;Mature Linux tools available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maybe the question is: Why aren't more small businesses considering this?&lt;/p&gt;

&lt;p&gt;What would you want to see in this series? What concerns or questions should I address?&lt;/p&gt;

&lt;h1&gt;
  
  
  linux #security #opensource #devops #sysadmin #business
&lt;/h1&gt;

</description>
      <category>security</category>
      <category>opensource</category>
      <category>sysadmin</category>
      <category>business</category>
    </item>
  </channel>
</rss>
