<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ubuntu on homelab</title>
    <link>https://homelab.nbkelley.com/tags/ubuntu/</link>
    <description>Recent content in Ubuntu on homelab</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://homelab.nbkelley.com/tags/ubuntu/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Self-Hosted CMS Options &amp; Landscape</title>
      <link>https://homelab.nbkelley.com/docs/services/cms-options/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/cms-options/</guid>
      <description>&lt;h1 id=&#34;self-hosted-cms-options--landscape&#34;&gt;Self-Hosted CMS Options &amp;amp; Landscape&lt;a class=&#34;anchor&#34; href=&#34;#self-hosted-cms-options--landscape&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;User seeks a self-hosted CMS for an Ubuntu VM, explicitly rejecting WordPress due to business practices.&lt;/li&gt;&#xA;&lt;li&gt;Preference for tools respected by the web development and self-hosting communities.&lt;/li&gt;&#xA;&lt;li&gt;Exploration of CMS categories: Monolithic, Flat-file, Static Site Generators (SSG), Headless CMS, and Custom.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rejected WordPress&lt;/strong&gt;: Cited business practices as a dealbreaker.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Favoring Developer-Respected Alternatives&lt;/strong&gt;: Leaned towards headless or modern flat-file CMS options.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Top Contenders Identified&lt;/strong&gt;: Directus (Headless), Strapi (Headless), Kirby (Flat-file), Payload CMS (Headless/TS), Ghost (Blogging).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;cms-landscape--options&#34;&gt;CMS Landscape &amp;amp; Options&lt;a class=&#34;anchor&#34; href=&#34;#cms-landscape--options&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;monolithic-cms&#34;&gt;Monolithic CMS&lt;a class=&#34;anchor&#34; href=&#34;#monolithic-cms&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;WordPress&lt;/strong&gt;: Dominant (60% market), huge ecosystem, but rejected by user.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Drupal&lt;/strong&gt;: Flexible, steep learning curve.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Joomla&lt;/strong&gt;: Balanced ease/power, smaller community.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;flat-file-cms-no-database&#34;&gt;Flat-file CMS (No Database)&lt;a class=&#34;anchor&#34; href=&#34;#flat-file-cms-no-database&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Grav&lt;/strong&gt;: Fast, simple, file-based.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Kirby&lt;/strong&gt;: Beautiful UI, file-based, commercial license (~$129), highly respected by designers/devs.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;static-site-generators-ssg&#34;&gt;Static Site Generators (SSG)&lt;a class=&#34;anchor&#34; href=&#34;#static-site-generators-ssg&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Jekyll&lt;/strong&gt;: GitHub Pages compatible.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hugo&lt;/strong&gt;: Blazing fast, Go-based.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Eleventy&lt;/strong&gt;: Flexible, JS-based.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Next.js&lt;/strong&gt;: React-based, hybrid.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;headless-cms-api-driven&#34;&gt;Headless CMS (API-Driven)&lt;a class=&#34;anchor&#34; href=&#34;#headless-cms-api-driven&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Directus&lt;/strong&gt;: Community favorite. Node.js/Vue.js. Provides REST/GraphQL APIs, beautiful admin UI. Excellent for full frontend control.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Strapi&lt;/strong&gt;: Most popular headless. Node.js/React. Strong plugin ecosystem.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Payload CMS&lt;/strong&gt;: Rising star. TypeScript-first, excellent DX.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ghost&lt;/strong&gt;: Primarily for blogging/publishing. Markdown-native.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Contentful/Sanity&lt;/strong&gt;: Enterprise/Developer friendly, but often cloud-hosted (though self-hostable options exist).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;custom--build-your-own&#34;&gt;Custom / Build-Your-Own&lt;a class=&#34;anchor&#34; href=&#34;#custom--build-your-own&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;The Guardian&amp;rsquo;s &amp;ldquo;Composer&amp;rdquo;&lt;/strong&gt;: Fully custom-built in Scala/Play Framework. Not recommended for small projects.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Server-Side&lt;/strong&gt;: PHP includes, Python (Django/Flask), Node.js (Express).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;recommended-stack-for-ubuntu&#34;&gt;Recommended Stack for Ubuntu&lt;a class=&#34;anchor&#34; href=&#34;#recommended-stack-for-ubuntu&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;For Maximum Control &amp;amp; Flexibility&lt;/strong&gt;: Directus or Payload CMS.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;For Content-Focused Sites&lt;/strong&gt;: Kirby or Statamic.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;For API-Driven Projects&lt;/strong&gt;: Strapi.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Quick Start (Directus on Ubuntu)&lt;/strong&gt;:&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-get install -y nodejs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm create directus-project@latest my-cms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd my-cms&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npm install&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;npx directus start&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historical-notes&#34;&gt;Historical Notes&lt;a class=&#34;anchor&#34; href=&#34;#historical-notes&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Conversation date: 2025-11-17.&lt;/li&gt;&#xA;&lt;li&gt;User explicitly stated a preference against WordPress due to business practices.&lt;/li&gt;&#xA;&lt;li&gt;Focus remains on self-hosted, developer-respected tools.&lt;/li&gt;&#xA;&lt;li&gt;Note: Directus and Strapi have evolved significantly since late 2025; verify current self-hosting requirements, licensing, and Docker compatibility for homelab deployment.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;hugo-specific-configuration&#34;&gt;Hugo-Specific Configuration&lt;a class=&#34;anchor&#34; href=&#34;#hugo-specific-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;project-structure&#34;&gt;Project Structure&lt;a class=&#34;anchor&#34; href=&#34;#project-structure&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;myblog/&#xA;├── config.toml   -- Main configuration (baseURL, languageCode, title, theme)&#xA;├── content/      -- Blog posts in Markdown&#xA;├── themes/       -- Installed themes (git submodules)&#xA;├── static/       -- Static assets (images, JS, CSS)&#xA;└── public/       -- Generated static files (deployed to Nginx)&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;key-configtoml-settings&#34;&gt;Key config.toml Settings&lt;a class=&#34;anchor&#34; href=&#34;#key-configtoml-settings&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;baseURL&lt;/code&gt; — Domain URL (e.g., &lt;code&gt;https://blog.nbkelley.com&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;theme&lt;/code&gt; — Must match theme folder name in &lt;code&gt;themes/&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;buildDrafts&lt;/code&gt; — &lt;code&gt;true&lt;/code&gt; during development, &lt;code&gt;false&lt;/code&gt; for production&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;paginate&lt;/code&gt; — Posts per page&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;creating-posts&#34;&gt;Creating Posts&lt;a class=&#34;anchor&#34; href=&#34;#creating-posts&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo new posts/my-post.md  &lt;span style=&#34;color:#75715e&#34;&gt;# Draft in content/posts/&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo -D                     &lt;span style=&#34;color:#75715e&#34;&gt;# Build including drafts&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo                        &lt;span style=&#34;color:#75715e&#34;&gt;# Production build to public/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;deployment-options&#34;&gt;Deployment Options&lt;a class=&#34;anchor&#34; href=&#34;#deployment-options&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Manual rsync&lt;/strong&gt;: &lt;code&gt;rsync -avz --delete public/ user@server:/var/www/html/blog&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Git webhook&lt;/strong&gt;: Server-side script that &lt;code&gt;git pull &amp;amp;&amp;amp; hugo &amp;amp;&amp;amp; cp -r public /var/www/html/blog&lt;/code&gt; on push&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt;: Push Hugo source to GitHub, Cloudflare builds and deploys automatically&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;comments-for-static-sites&#34;&gt;Comments for Static Sites&lt;a class=&#34;anchor&#34; href=&#34;#comments-for-static-sites&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Utterances&lt;/strong&gt; — GitHub issues-based, no backend&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Disqus&lt;/strong&gt; — Traditional, JS-based&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hyvor Talk&lt;/strong&gt; — Self-hostable alternative&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/hugo-cloudflare-pages/&#34;&gt;Hugo Deployment to Cloudflare Pages - Troubleshooting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/development/hugo-git-submodule-pattern/&#34;&gt;Hugo Git Submodule Extraction Pattern&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/web-server-stack/&#34;&gt;Web Server Stack (Nginx + Apache)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/106-Beginner Guide to Building Websites with Ubuntu.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/036-Setting Up Self-Hosted Blogs with Nginx.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek conversation: &amp;ldquo;Self-Hosted Websites on Ubuntu Server&amp;rdquo; (historical)&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek conversation: &amp;ldquo;Setting Up Self-Hosted Blogs with Nginx&amp;rdquo; (chat 036)&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Varda Server (Ubuntu)</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/varda-server/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/varda-server/</guid>
      <description>&lt;h1 id=&#34;varda-server-ubuntu&#34;&gt;Varda Server (Ubuntu)&lt;a class=&#34;anchor&#34; href=&#34;#varda-server-ubuntu&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Varda is an Ubuntu Server VM at &lt;code&gt;192.168.1.131&lt;/code&gt; used for web hosting and development. It serves as the primary host for the &lt;code&gt;ilmare.nbkelley.com&lt;/code&gt; website.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Varda is a different VM from &lt;code&gt;servarr&lt;/code&gt; (&lt;code&gt;192.168.1.112&lt;/code&gt;), which runs the media automation stack. These were previously conflated in some wiki pages.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-details&#34;&gt;Key Details&lt;a class=&#34;anchor&#34; href=&#34;#key-details&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hypervisor&lt;/strong&gt;: Proxmox (Minas Tirith)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Management&lt;/strong&gt;: Cockpit GUI (Port 9090)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Web Server&lt;/strong&gt;: Nginx for static content&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Firewall&lt;/strong&gt;: UFW enabled (ports 22, 80, 443)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Development&lt;/strong&gt;: VS Code Remote-SSH&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;nginx-site-structure&#34;&gt;Nginx Site Structure&lt;a class=&#34;anchor&#34; href=&#34;#nginx-site-structure&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/var/www/ilmare.nbkelley.com/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── Assets/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── Images/  (Case-sensitive: capital I)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── html/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── index.html&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;├── Scripts/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│   └── scripts.js&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;└── Styles/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    └── styles.css&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;nginx-server-block&#34;&gt;Nginx Server Block&lt;a class=&#34;anchor&#34; href=&#34;#nginx-server-block&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;/etc/nginx/sites-available/ilmare.nbkelley.com&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Server Optimization</title>
      <link>https://homelab.nbkelley.com/docs/maintenance/linux_server_optimization/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/maintenance/linux_server_optimization/</guid>
      <description>&lt;h1 id=&#34;linux-server-optimization&#34;&gt;Linux Server Optimization&lt;a class=&#34;anchor&#34; href=&#34;#linux-server-optimization&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Optimizations for headless Ubuntu servers (specifically HP Pavilion and Thinkpad T480) to prevent sleep/suspend when the lid is closed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Modify &lt;code&gt;systemd-logind&lt;/code&gt; to ignore lid switch events to ensure the server remains active when the laptop lid is closed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;prevent-sleep-on-lid-close&#34;&gt;Prevent Sleep on Lid Close&lt;a class=&#34;anchor&#34; href=&#34;#prevent-sleep-on-lid-close&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Edit &lt;code&gt;/etc/systemd/logind.conf&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo nano /etc/systemd/logind.conf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ensure the following lines are uncommented and set to &lt;code&gt;ignore&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;HandleLidSwitch&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;ignore&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;HandleLidSwitchExternalPower&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;ignore&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;HandleLidSwitchDocked&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;ignore&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apply the changes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Server Stack (Nginx &#43; Apache)</title>
      <link>https://homelab.nbkelley.com/docs/services/web-server-stack/</link>
      <pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/web-server-stack/</guid>
      <description>&lt;h1 id=&#34;web-server-stack-nginx--apache&#34;&gt;Web Server Stack (Nginx + Apache)&lt;a class=&#34;anchor&#34; href=&#34;#web-server-stack-nginx--apache&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;In this setup, Nginx is utilized as a high-performance reverse proxy to handle incoming traffic and static content, while Apache serves as the backend for dynamic content (e.g., PHP/WordPress) due to its flexible &lt;code&gt;.htaccess&lt;/code&gt; support.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Architecture&lt;/strong&gt;: Nginx acts as the entry point (Port 80/443) and proxies requests to Apache running on a non-standard port (e.g., 8080).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Rationale&lt;/strong&gt;: Leverages Nginx&amp;rsquo;s superior concurrency and static content handling with Apache&amp;rsquo;s ease of use for per-directory configuration.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;apache-backend-configuration&#34;&gt;Apache Backend Configuration&lt;a class=&#34;anchor&#34; href=&#34;#apache-backend-configuration&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Modify &lt;code&gt;/etc/apache2/ports.conf&lt;/code&gt; to listen on a different port to avoid conflict with Nginx:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Server Deployment Pattern (Beginner)</title>
      <link>https://homelab.nbkelley.com/docs/services/web-server-setup/</link>
      <pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/web-server-setup/</guid>
      <description>&lt;h1 id=&#34;web-server-deployment-pattern-beginner&#34;&gt;Web Server Deployment Pattern (Beginner)&lt;a class=&#34;anchor&#34; href=&#34;#web-server-deployment-pattern-beginner&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;For a beginner-friendly, lightweight, and scalable homelab setup, a stack consisting of Ubuntu Server LTS and Nginx is the recommended standard. This provides a balance of ease of use, extensive documentation, and low resource overhead.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Operating System&lt;/strong&gt;: Ubuntu Server LTS (chosen for stability, community support, and ease of management).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Web Server&lt;/strong&gt;: Nginx (chosen over Apache for being lightweight, faster for static content, and better suited for future use as a reverse proxy).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Resource Allocation (Small Site)&lt;/strong&gt;: 1-2 CPU cores, 1-2 GB RAM, 10-2/GB Disk.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;nginx-site-configuration&#34;&gt;Nginx Site Configuration&lt;a class=&#34;anchor&#34; href=&#34;#nginx-site-configuration&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Default root directory: &lt;code&gt;/var/www/html&lt;/code&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
