<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Lxc on homelab</title>
    <link>https://homelab.nbkelley.com/tags/lxc/</link>
    <description>Recent content in Lxc 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/lxc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>GPU Passthrough for Proxmox LXCs</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/gpu-passthrough-lxc/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/gpu-passthrough-lxc/</guid>
      <description>&lt;h1 id=&#34;gpu-passthrough-for-proxmox-lxcs&#34;&gt;GPU Passthrough for Proxmox LXCs&lt;a class=&#34;anchor&#34; href=&#34;#gpu-passthrough-for-proxmox-lxcs&#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;Intel GPU passthrough to Proxmox LXCs requires both host-side module loading and specific LXC device mounts.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;vainfo&lt;/code&gt; frequently fails with X11/X server errors in headless containers; this is expected and does not indicate a broken passthrough.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;intel_gpu_top&lt;/code&gt; requires &lt;code&gt;i915&lt;/code&gt; module loaded on the host and accessible debugfs/sysfs paths inside the container.&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;Headless VA-API Testing&lt;/strong&gt;: When &lt;code&gt;vainfo&lt;/code&gt; reports &lt;code&gt;error: can&#39;t connect to X server!&lt;/code&gt;, set environment variables to bypass X11:&#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;export XDG_RUNTIME_DIR&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/tmp/runtime-root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export LIBVA_DRIVER_NAME&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;iHD&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vainfo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Module Verification&lt;/strong&gt;: &lt;code&gt;lsmod | grep i915&lt;/code&gt; confirms the driver is loaded inside the container. Presence of &lt;code&gt;i915&lt;/code&gt;, &lt;code&gt;drm_buddy&lt;/code&gt;, &lt;code&gt;ttm&lt;/code&gt;, and &lt;code&gt;drm_display_helper&lt;/code&gt; indicates successful module injection.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Device Access&lt;/strong&gt;: &lt;code&gt;intel_gpu_top&lt;/code&gt; failing with &lt;code&gt;No device filter specified...&lt;/code&gt; typically points to missing debugfs mounts or host-side &lt;code&gt;i915&lt;/code&gt; parameters, not necessarily a broken &lt;code&gt;/dev/dri/&lt;/code&gt; passthrough.&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;p&gt;&lt;strong&gt;Proxmox LXC Config (&lt;code&gt;/etc/pve/lxc/&amp;lt;container-id&amp;gt;.conf&lt;/code&gt;)&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Jellyfin LXC GPU Passthrough &amp; Hardware Acceleration</title>
      <link>https://homelab.nbkelley.com/docs/services/jellyfin-gpu-passthrough/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/jellyfin-gpu-passthrough/</guid>
      <description>&lt;h1 id=&#34;jellyfin-lxc-gpu-passthrough--hardware-acceleration&#34;&gt;Jellyfin LXC GPU Passthrough &amp;amp; Hardware Acceleration&lt;a class=&#34;anchor&#34; href=&#34;#jellyfin-lxc-gpu-passthrough--hardware-acceleration&#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;Successfully configured Intel UHD Graphics 630 GPU passthrough to a Jellyfin LXC container on Proxmox for hardware-accelerated transcoding via Intel QuickSync (QSV).&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;GPU Passthrough Method&lt;/strong&gt;: LXC container-level GPU device mapping (not full VM passthrough)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hardware Acceleration&lt;/strong&gt;: Intel QuickSync (QSV) selected over VAAPI for Jellyfin&amp;rsquo;s native support&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Monitoring Constraints&lt;/strong&gt;: Accepted that LXC container restrictions prevent full GPU monitoring tools (dmesg, intel_gpu_top) from functioning; validated functionality through actual transcoding tests instead&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;host-gpu-details&#34;&gt;Host GPU Details&lt;a class=&#34;anchor&#34; href=&#34;#host-gpu-details&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;GPU&lt;/strong&gt;: Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630]&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PCI Address&lt;/strong&gt;: 00:02.0&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Driver&lt;/strong&gt;: i915 (loaded)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Related Modules&lt;/strong&gt;: drm_buddy, ttm, drm_display_helper, cec, i2c_algo_bit, video&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;lxc-container-gpu-devices&#34;&gt;LXC Container GPU Devices&lt;a class=&#34;anchor&#34; href=&#34;#lxc-container-gpu-devices&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;/dev/dri/card0&lt;/code&gt; — character special (major 226, minor 0)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/dev/dri/renderD128&lt;/code&gt; — character special (major 226, minor 128)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Permissions&lt;/strong&gt;: &lt;code&gt;crw-rw---- root:video&lt;/code&gt; (226/0 and 226/128)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;jellyfin-configuration&#34;&gt;Jellyfin Configuration&lt;a class=&#34;anchor&#34; href=&#34;#jellyfin-configuration&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;User Group Assignment&lt;/strong&gt;: &lt;code&gt;jellyfin&lt;/code&gt; user added to &lt;code&gt;video&lt;/code&gt; group (&lt;code&gt;usermod -a -G video jellyfin&lt;/code&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Dashboard → Playback Settings&lt;/strong&gt;:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Hardware Acceleration: &lt;code&gt;Intel QuickSync (QSV)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enable hardware encoding: &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enable hardware decoding: &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Enable tone mapping: &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Allow encoding in HEVC: &lt;code&gt;Yes&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Allow encoding in AV1: &lt;code&gt;Yes&lt;/code&gt; (if supported)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;validation-commands&#34;&gt;Validation Commands&lt;a class=&#34;anchor&#34; href=&#34;#validation-commands&#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;&lt;span style=&#34;color:#75715e&#34;&gt;# Verify GPU device accessibility&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls -la /dev/dri/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&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:#75715e&#34;&gt;# Check if processes are using GPU during playback&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lsof /dev/dri/renderD128&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&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:#75715e&#34;&gt;# Monitor Jellyfin logs for hardware acceleration&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo journalctl -u jellyfin -f | grep -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hardware\|qsv\|quicksync\|vaapi&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&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:#75715e&#34;&gt;# Check active transcoding sessions in Jellyfin UI&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:#75715e&#34;&gt;# Dashboard → Active Devices → look for (HW) indicator&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&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;&lt;strong&gt;dmesg restriction&lt;/strong&gt;: &lt;code&gt;dmesg: read kernel buffer failed: Operation not permitted&lt;/code&gt; — expected in LXC containers without full device access&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;intel_gpu_top limitation&lt;/strong&gt;: GPU monitoring tools that require kernel debugfs access will not work inside the LXC; validated via actual transcoding performance and log inspection instead&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;i915 driver loaded&lt;/strong&gt;: Confirmed via &lt;code&gt;lsmod | grep i915&lt;/code&gt; showing 3,928,064 bytes loaded&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;No GPU debug info&lt;/strong&gt;: &lt;code&gt;/sys/kernel/debug/dri&lt;/code&gt; not available in container — accepted limitation&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Does AV1 hardware encoding actually work on Coffee Lake-S (Gen 9.5) — typically limited to H.264/H.265&lt;/li&gt;&#xA;&lt;li&gt;Performance baseline: what CPU load reduction is observed with QSV vs software transcoding?&lt;/li&gt;&#xA;&lt;li&gt;Can GPU passthrough be extended to other LXC containers (e.g., Plex, if migrated)&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;Plex Transcoding LXC — similar GPU passthrough patterns for Plex&lt;/li&gt;&#xA;&lt;li&gt;Proxmox LXC Configuration — LXC container setup patterns&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/servarr/&#34;&gt;Servarr - Media Automation Stack&lt;/a&gt; — media server ecosystem&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/gluetun-vpn/&#34;&gt;Gluetun VPN Service&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Proxmox LXC Storage Mounts</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/proxmox-lxc-mounts/</link>
      <pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/proxmox-lxc-mounts/</guid>
      <description>&lt;h1 id=&#34;proxmox-lxc-storage-mounts&#34;&gt;Proxmox LXC Storage Mounts&lt;a class=&#34;anchor&#34; href=&#34;#proxmox-lxc-storage-mounts&#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;SMB/CIFS shares can be integrated into Proxmox via CLI or the Web GUI.&lt;/li&gt;&#xA;&lt;li&gt;GUI integration is recommended for Proxmox-native features (backups, ISOs, templates) and automatic retention management.&lt;/li&gt;&#xA;&lt;li&gt;LXC containers can directly mount Proxmox storage paths using &lt;code&gt;mp0&lt;/code&gt;/&lt;code&gt;mp1&lt;/code&gt; directives in the container config file.&lt;/li&gt;&#xA;&lt;li&gt;Separate CIFS storages should be used for media vs. backups to maintain clean separation of concerns.&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;Storage Content Types&lt;/strong&gt;: For media-only CIFS shares, select &lt;code&gt;Container templates&lt;/code&gt;, &lt;code&gt;ISO images&lt;/code&gt;, or &lt;code&gt;Disk image&lt;/code&gt;. Explicitly avoid &lt;code&gt;Containers&lt;/code&gt; and &lt;code&gt;VZDump backup file&lt;/code&gt; to prevent Proxmox from treating the media share as a system storage.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Subdirectory Configuration&lt;/strong&gt;: Leave the Proxmox storage subdirectory field blank to mount the root of the SMB share, enabling flexible navigation to specific subfolders (e.g., &lt;code&gt;Documents/Movies&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Jellyfin Path Targeting&lt;/strong&gt;: Point Jellyfin directly to the specific media subfolder (e.g., &lt;code&gt;/media/synology/Documents/Movies&lt;/code&gt;) rather than the mount root.&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;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;LXC Config Path&lt;/strong&gt;: &lt;code&gt;/etc/pve/lxc/&amp;lt;CT-ID&amp;gt;.conf&lt;/code&gt; (e.g., &lt;code&gt;/etc/pve/lxc/100.conf&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mount Syntax&lt;/strong&gt;: &lt;code&gt;mp0: /mnt/pve/&amp;lt;Storage-ID&amp;gt;,mp=/media/&amp;lt;mount-name&amp;gt;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Permission Mapping&lt;/strong&gt; (for unprivileged containers):&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;lxc.idmap: u 0 100000 65536&#xA;lxc.idmap: g 0 100000 65536&#xA;lxc.idmap: u 1000 1000 1&#xA;lxc.idmap: g 1000 1000 1&#xA;lxc.idmap: u 1001 101001 64535&#xA;lxc.idmap: g 1001 101001 64535&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Jellyfin Setup&lt;/strong&gt;: Dashboard → Libraries → Add Media Library → Folders: &lt;code&gt;/media/synology/Documents/Movies&lt;/code&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-07.&lt;/li&gt;&#xA;&lt;li&gt;Focuses on resolving LXC mount visibility and permission issues for Jellyfin on a Synology NAS.&lt;/li&gt;&#xA;&lt;li&gt;No major infrastructure changes flagged; patterns remain valid for Proxmox 8.x.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;None.&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/servarr/&#34;&gt;Servarr - Media Automation Stack&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/machines/vair%C3%AB/&#34;&gt;TrueNAS (Vairë) - Storage &amp;amp; Backup Server&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/092-Mount NAS Storage to LXC Containers.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/091-Mount Synology SMB to Proxmox Guide.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/090-Mount SMB Share on Proxmox Guide.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;DeepSeek conversation: Mount NAS Storage to LXC Containers (2025-11-07)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;sources-1&#34;&gt;Sources&lt;a class=&#34;anchor&#34; href=&#34;#sources-1&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/092-Mount NAS Storage to LXC Containers.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/091-Mount Synology SMB to Proxmox Guide.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;ingested/chats/090-Mount SMB Share on Proxmox Guide.md&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Historical DeepSeek conversation: &amp;ldquo;Mount SMB Share on Proxmox Guide&amp;rdquo; (2025-11-07)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages-1&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages-1&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/proxmox-storage/&#34;&gt;Proxmox Storage Management&lt;/a&gt;, &lt;a href=&#34;https://homelab.nbkelley.com/docs/infrastructure/proxmox-systemd-mounts/&#34;&gt;Proxmox Systemd Mounts&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Web Server Architecture on Proxmox</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/web_server_architecture/</link>
      <pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/web_server_architecture/</guid>
      <description>&lt;h1 id=&#34;web-server-architecture-on-proxmox&#34;&gt;Web Server Architecture on Proxmox&lt;a class=&#34;anchor&#34; href=&#34;#web-server-architecture-on-proxmox&#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;High-level architectural strategies for deploying web development environments on Proxmox, focusing on balancing isolation with resource efficiency.&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;LXC for Services&lt;/strong&gt;: Use LXC containers for lightweight, single-purpose services (e.g., Nginx, Databases) to minimize overhead.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;VM for Complex Workloads&lt;/strong&gt;: Use full VMs when running Docker, Kubernetes, or when custom kernel modules are required.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reverse Proxy Pattern&lt;/strong&gt;: Always use a reverse proxy (Nginx Proxy Manager, Traefik, or C/Caddy) to handle SSL termination and route traffic to multiple internal services.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Database Isolation&lt;/strong&gt;: Separate databases into their own containers/VMs to improve security and facilitate independent backups.&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;networking-patterns&#34;&gt;Networking Patterns&lt;a class=&#34;anchor&#34; href=&#34;#networking-patterns&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Bridge Mode&lt;/strong&gt;: Default &lt;code&gt;vmbr0&lt;/code&gt; for services requiring LAN access.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Internal Network&lt;/strong&gt;: Use secondary bridges (e.g., &lt;code&gt;vmbr1&lt;/code&gt;) for isolated communication between web servers and databases.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;storage-patterns&#34;&gt;Storage Patterns&lt;a class=&#34;anchor&#34; href=&#34;#storage-patterns&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Local-LVM&lt;/strong&gt;: Preferred for high-performance VM/container disks.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Directory Storage&lt;/strong&gt;: Suitable for container volumes and simpler storage needs.&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;p&gt;This architecture plan was established in March 2025. The preference for LXCs over VMs for simple web services was a primary driver.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
