<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security on DiyMediaServer</title><link>https://diymediaserver.com/tags/security/</link><description>Recent content in Security on DiyMediaServer</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Thu, 27 Aug 2026 18:34:09 -0600</lastBuildDate><atom:link href="https://diymediaserver.com/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>Systemd 257 Detected: Enable Nesting in Proxmox LXC?</title><link>https://diymediaserver.com/post/2026/proxmox-lxc-nesting-systemd-warning/</link><pubDate>Thu, 27 Aug 2026 18:34:09 -0600</pubDate><guid>https://diymediaserver.com/post/2026/proxmox-lxc-nesting-systemd-warning/</guid><description>&lt;img src="https://diymediaserver.com/post/2026/proxmox-lxc-nesting-systemd-warning/featured_hu_45ba81c4c318a23e.webp" alt="Featured image of post Systemd 257 Detected: Enable Nesting in Proxmox LXC?" /&gt;&lt;p&gt;Create a Debian 13 container on Proxmox 9, watch the task log scroll past, and there it is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;WARN: Systemd 257 detected. You may need to enable nesting.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Search that string and you get two answers. &amp;ldquo;It&amp;rsquo;s harmless, ignore it.&amp;rdquo; &amp;ldquo;Turn nesting on and move along.&amp;rdquo; Both are answers, but neither answers the why. Nobody tells you what the flag switches, what it hands the container that the container didn&amp;rsquo;t already have, or why the warning fires in exactly the same words on a guest that booted perfectly and on a guest whose console is a black box.&lt;/p&gt;
&lt;p&gt;So I stripped the flag off eight of my nine containers to find out, measured what changed, and put it back a day later. Two days of work, one real leak, and much better notes. Here&amp;rsquo;s what &lt;code&gt;Systemd 257 detected. You may need to enable nesting.&lt;/code&gt; actually means, what &lt;code&gt;nesting=1&lt;/code&gt; costs you, and how to decide.&lt;/p&gt;
&lt;div class="alert alert-tldr"&gt;
&lt;span class="alert-icon"&gt;💭&lt;/span&gt;
&lt;div class="alert-content"&gt;
&lt;strong&gt;TL;DR:&lt;/strong&gt;
The warning is a version check on the container&amp;rsquo;s systemd and never inspects whether anything is broken. Enabling nesting lets container root create mounts inside the container&amp;rsquo;s own root mount namespace, which is what modern systemd wants for service isolation and also what lets a fresh procfs read the host&amp;rsquo;s real RAM, CPU count, and uptime.
&lt;/div&gt;
&lt;/div&gt;
&lt;aside class="tested-on" aria-label="Tested configuration"&gt;
&lt;div class="tested-on-label"&gt;Tested on&lt;/div&gt;
&lt;dl class="tested-on-list"&gt;&lt;dt&gt;Proxmox VE&lt;/dt&gt;&lt;dd&gt;9.2.5&lt;/dd&gt;&lt;dt&gt;OS&lt;/dt&gt;&lt;dd&gt;Debian 13 (Trixie) and Ubuntu 26.04 LXC guests&lt;/dd&gt;&lt;dt&gt;Kernel&lt;/dt&gt;&lt;dd&gt;7.0.14-6-pve&lt;/dd&gt;&lt;dt&gt;Hardware&lt;/dt&gt;&lt;dd&gt;i5-13500 node (20 threads, 64GB DDR4)&lt;/dd&gt;&lt;dt&gt;Systemd&lt;/dt&gt;&lt;dd&gt;257&lt;/dd&gt;&lt;dt&gt;Date&lt;/dt&gt;&lt;dd&gt;2026-08-27&lt;/dd&gt;&lt;/dl&gt;
&lt;/aside&gt;
&lt;p&gt;Everything below is measured on that stack. I ran the de-nesting experiment across nine unprivileged containers on a three-node Proxmox 9.2.5 cluster (kernel 7.0.14-6-pve), eight of them Debian 13 with systemd 257 and one of them Ubuntu 26.04, and the numbers in the tables are readings from my own guests rather than anything I read on the internet.&lt;/p&gt;
&lt;h2 id="what-systemd-257-detected-means-a-version-check-and-thats-it"&gt;What &amp;ldquo;Systemd 257 detected&amp;rdquo; means: a version check, and that&amp;rsquo;s it
&lt;/h2&gt;&lt;p&gt;Three terms are about to do a lot of work in this post.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;mount namespace&lt;/strong&gt; is a container&amp;rsquo;s own private view of what is mounted where. Your guest sees one filesystem tree, the node sees a different one, and neither pollutes the other. &lt;strong&gt;procfs&lt;/strong&gt; is the pretend filesystem at &lt;code&gt;/proc&lt;/code&gt; that the kernel fills with live facts about the machine: total RAM, CPU count, how long it&amp;rsquo;s been up. &lt;strong&gt;lxcfs&lt;/strong&gt; is the Proxmox piece that stands in front of a few of those &lt;code&gt;/proc&lt;/code&gt; files inside a container and rewrites them, so the guest reads the limits you configured instead of the node&amp;rsquo;s real hardware.&lt;/p&gt;
&lt;p&gt;Nesting controls exactly one thing: whether container root can create new mounts in the first of those three.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s look at the logic. The check is a function called &lt;code&gt;check_systemd_nesting&lt;/code&gt;, living in &lt;code&gt;src/PVE/LXC/Setup/Base.pm&lt;/code&gt; and added to &lt;code&gt;pve-container&lt;/code&gt; by a Proxmox patch series. It stays quiet if any one of four conditions holds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;code&gt;features&lt;/code&gt; line contains &lt;code&gt;nesting=1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;the container&amp;rsquo;s init isn&amp;rsquo;t systemd&lt;/li&gt;
&lt;li&gt;the systemd version can&amp;rsquo;t be read&lt;/li&gt;
&lt;li&gt;that version is 241 or older&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In every other case it prints &lt;code&gt;Systemd $sdver detected. You may need to enable nesting.&lt;/code&gt;, with your guest&amp;rsquo;s version number pasted into the middle.&lt;/p&gt;
&lt;p&gt;Every one of those four conditions is a configuration fact or a version number. Not one of them looks at whether your container is healthy, whether its console works, whether a single unit failed, or whether anything at all went wrong. If the guest runs systemd, if that systemd is newer than 241, and if the &lt;code&gt;features&lt;/code&gt; line has no &lt;code&gt;nesting=1&lt;/code&gt;, you get the warning. That&amp;rsquo;s it.&lt;/p&gt;
&lt;p&gt;Which is why the number in the message means less than people think. &lt;code&gt;WARN: Systemd 252 detected. You may need to enable nesting.&lt;/code&gt; and &lt;code&gt;WARN: Systemd 249 detected. You may need to enable nesting.&lt;/code&gt; are the same warning about the same behavior; the digits are the systemd version your container distro happens to ship. Debian 12 reports 252, Ubuntu 22.04 reports 249, Debian 13 and recent Ubuntu report 257. People go hunting for &amp;ldquo;the systemd 255 nesting bug&amp;rdquo; and find nothing, because there isn&amp;rsquo;t one. That fruitless search is probably what brought you here.&lt;/p&gt;
&lt;p&gt;The consequence that actually hit me: during my de-nesting run the warning fired on all eight Debian guests where it meant nothing whatsoever, and on the one Ubuntu guest where it turned out to be dead right. On the Ubuntu LXC I lost a working console from within Proxmox. Identical text, both times. So the warning can&amp;rsquo;t tell you whether anything is broken, in either direction. Only a console check told the two apart.&lt;/p&gt;
&lt;h2 id="so-should-you-turn-nesting-on"&gt;So should you turn nesting on?
&lt;/h2&gt;&lt;p&gt;Four cases. Find yours, and if a decision is all you came for, you can stop after the list. Everything below it is the measurement the list is standing on.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;You&amp;rsquo;re running Docker, Podman, k3s, or nested LXC inside the container.&lt;/strong&gt; Yes. &lt;code&gt;features: nesting=1,keyctl=1&lt;/code&gt;, both of them. Non-negotiable. Nesting alone gets you &amp;ldquo;operation not permitted&amp;rdquo; from Docker even though the systemd warning has helpfully disappeared, because the keyring operations are a separate permission.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;It&amp;rsquo;s an Ubuntu container.&lt;/strong&gt; Leave nesting on, and here is my evidence up front: one Ubuntu 26.04 guest, one release, the only Ubuntu box in my lab. That is not a survey of every Ubuntu LTS and I&amp;rsquo;m not going to pretend it is one. What I have is a guest that lost its console as soon as I flipped the flag off, running a systemd that has diverged from Debian&amp;rsquo;s before. Treat Ubuntu as its own platform whenever a change touches systemd, and if you want to know how your Ubuntu release behaves, find out on a container you don&amp;rsquo;t care about.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;It&amp;rsquo;s Debian 13, and you&amp;rsquo;re not running nested container runtimes.&lt;/strong&gt; You can leave nesting off. Jellyfin, Sonarr, Radarr and the rest of a normal media stack don&amp;rsquo;t need nested namespaces or a cgroup tree of their own, so they&amp;rsquo;re fine either way; running them in Docker &lt;em&gt;inside&lt;/em&gt; the container is the case that changes the answer. De-nesting is the tighter configuration and it&amp;rsquo;s genuinely viable, which most guides won&amp;rsquo;t tell you. Accept two things going in. The warning appears forever. And &lt;code&gt;running&lt;/code&gt; turns into &lt;code&gt;degraded&lt;/code&gt; the moment you de-nest, because three mount units start failing. From then on you judge the guest by the unit names &lt;code&gt;systemctl --failed&lt;/code&gt; prints, never by the summary word.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;You have a mixed fleet and no strong feelings.&lt;/strong&gt; Pick one shape and apply it everywhere.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The rest of this post is what&amp;rsquo;s behind those four lines: what the flag switches, what it exposes when you switch it on, and what breaks when you leave it off.&lt;/p&gt;
&lt;h2 id="what-nesting1-actually-turns-on"&gt;What &lt;code&gt;nesting=1&lt;/code&gt; actually turns on
&lt;/h2&gt;&lt;p&gt;Proxmox describes the feature as exposing procfs and sysfs &amp;ldquo;to allow nested containers&amp;rdquo;, and notes that &amp;ldquo;systemd also uses this to isolate services&amp;rdquo;. True, and vague enough to be useless when you&amp;rsquo;re trying to decide.&lt;/p&gt;
&lt;p&gt;Measured on my own guests, the single practical difference is one sentence long: with nesting, container root may create mounts in the container&amp;rsquo;s own root mount namespace, and without it those mounts are denied. Every downstream effect in this post flows from that one rule.&lt;/p&gt;
&lt;p&gt;It is worth being equally clear about what the flag does &lt;em&gt;not&lt;/em&gt; do, because the security writeups tend to leave this fuzzy. I probed a de-nested guest against a still-nested control and found no difference in cgroup writability, &lt;code&gt;/proc/sched_debug&lt;/code&gt;, &lt;code&gt;/sys/kernel/security&lt;/code&gt;, &lt;code&gt;/proc/sys&lt;/code&gt; writability, or &lt;code&gt;/sys/class/net&lt;/code&gt;. Nesting doesn&amp;rsquo;t grant ambient access to host state. Reaching the extra visibility takes a deliberate mount. And it doesn&amp;rsquo;t turn an unprivileged container into a privileged one, whatever the flag&amp;rsquo;s reputation suggests. Your UID mappings are untouched.&lt;/p&gt;
&lt;div class="product-box" data-asin="B0CLTNC6V6"&gt;
&lt;div class="product-box-image"&gt;&lt;picture&gt;&lt;source type="image/avif" srcset="https://diymediaserver.com/images/products/minidesktop_hu_1c4084a4918a496e.avif"&gt;
&lt;img src="https://diymediaserver.com/images/products/minidesktop_hu_b96e82c2c0dfa5d0.webp" width="600" height="470" alt="ASRock DeskMini B760 Barebone Mini PC" loading="lazy" decoding="async"&gt;&lt;/picture&gt;&lt;/div&gt;
&lt;div class="product-box-content"&gt;
&lt;div class="product-box-description"&gt;
&lt;strong&gt;ASRock DeskMini B760 Barebone Mini PC.&lt;/strong&gt;
A 1.92L barebone that takes any 65W LGA1700 Intel chip from 12th through 14th Gen, so you choose the CPU rather than accepting whatever a vendor soldered down. Two DDR4-3200 SO-DIMM slots reach 64GB, and storage runs to a PCIe Gen5 x4 M.2, a Gen4 x4 M.2, and two 2.5&amp;quot; bays with RAID 0/1. It&amp;rsquo;s a barebone, so the CPU, RAM, cooler and drives are on you.
&lt;/div&gt;
&lt;div class="product-meta-row"&gt;
&lt;div class="product-price"&gt;
&lt;strong&gt;Amazon Price:&lt;/strong&gt;
&lt;span class="price-loading"&gt;Loading...&lt;/span&gt;
&lt;span class="price-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="product-availability"&gt;
&lt;strong&gt;Availability:&lt;/strong&gt;
&lt;span class="availability-loading"&gt;Checking...&lt;/span&gt;
&lt;span class="availability-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-box-links"&gt;
&lt;a href="https://amzn.to/4kVe2jP" class="affiliate-button" target="_blank" rel="noopener nofollow sponsored"&gt;Amazon&lt;/a&gt;
&lt;/div&gt;
&lt;div class="product-affiliate-disclaimer"&gt;
&lt;small&gt;&lt;em&gt;Contains affiliate links. I may earn a commission at no cost to you.&lt;/em&gt;&lt;/small&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="the-measured-cost-one-mount-and-lxcfs-is-gone"&gt;The measured cost: one mount and lxcfs is gone
&lt;/h2&gt;&lt;p&gt;Now the part that made a security reviewer flag this as a medium finding in my lab, and the part almost nobody quantifies.&lt;/p&gt;
&lt;p&gt;Inside a Proxmox container, &lt;code&gt;/proc/meminfo&lt;/code&gt; and &lt;code&gt;/proc/cpuinfo&lt;/code&gt; are lies told by lxcfs, and they&amp;rsquo;re lies you asked for: they report the limits you configured rather than the node&amp;rsquo;s real hardware. With nesting on, container root can mount a fresh procfs somewhere else and read straight around that masking.&lt;/p&gt;
&lt;p&gt;I measured it on my &lt;code&gt;hugo&lt;/code&gt; builder, a container I&amp;rsquo;d configured with 8 GB of RAM and 4 CPUs. Reproduce it on any nested guest of your own, as root inside the container:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p /mnt/realproc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -t proc proc /mnt/realproc
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;head -1 /mnt/realproc/meminfo &lt;span class="c1"&gt;# reports the node&amp;#39;s real MemTotal&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /mnt/realproc/uptime
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;umount /mnt/realproc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Normal &lt;code&gt;/proc&lt;/code&gt; on the left, that freshly mounted one on the right:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Guest view (lxcfs)&lt;/th&gt;
&lt;th&gt;Fresh &lt;code&gt;mount -t proc&lt;/code&gt;&lt;/th&gt;
&lt;th&gt;Truth&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;MemTotal&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8,388,608 kB&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;65,607,300 kB&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;the node&amp;rsquo;s real RAM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;processors&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;the node&amp;rsquo;s real CPU count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;uptime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;52,681 s&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2,365,585 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;the node&amp;rsquo;s real uptime (~27 days)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Twenty-seven days of node uptime, sixty-five gigabytes of node RAM, and a CPU count that has nothing to do with the four cores you allocated. That is a real information leak and I&amp;rsquo;m not going to pretend otherwise.&lt;/p&gt;
&lt;p&gt;I am also not going to inflate it. This is host information disclosure and not a container escape. The PID namespace still holds, so &lt;code&gt;/proc/&amp;lt;pid&amp;gt;&lt;/code&gt; shows only the container&amp;rsquo;s own processes, and getting to any of it requires &lt;strong&gt;container root in the first place&lt;/strong&gt;. If an attacker already has root inside your Jellyfin container, learning how much RAM the node has is not the worst thing happening to you that day.&lt;/p&gt;
&lt;div class="alert alert-warning"&gt;
&lt;span class="alert-icon"&gt;⚠️&lt;/span&gt;
&lt;div class="alert-content"&gt;
&lt;strong&gt;Warning:&lt;/strong&gt;
The exposure applies to any container carrying &lt;code&gt;nesting=1&lt;/code&gt;, including the internet-facing ones. If you expose a container through a reverse proxy, the honest statement is that a compromise which reaches container root also reveals your node&amp;rsquo;s hardware profile and uptime. Weigh that against needing the flag, and don&amp;rsquo;t let anyone tell you the leak isn&amp;rsquo;t real.
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="why-modern-systemd-cares-about-any-of-this"&gt;Why modern systemd cares about any of this
&lt;/h2&gt;&lt;p&gt;Systemd stopped being an init system a while ago and became something closer to a tiny container orchestrator. It wants cgroup v2 delegation, which means the kernel handing systemd its own branch of the resource-control tree to carve up as it likes, and it wants namespaces so it can isolate individual services from each other.&lt;/p&gt;
&lt;p&gt;Proxmox staff put the boundary plainly in a forum thread: &amp;ldquo;systemd versions &amp;gt;= 242 requires nesting to be able to create Linux namespaces, which is used to isolate services&amp;rdquo;. When those operations get refused, systemd doesn&amp;rsquo;t print a tidy error and carry on. It fails units, drops into &lt;code&gt;degraded&lt;/code&gt;, and in the worst case never gets you a login prompt at all.&lt;/p&gt;
&lt;p&gt;The specific failure documented upstream is &lt;code&gt;Failed to set up credentials: Protocol error&lt;/code&gt;, repeating in &lt;code&gt;container-getty@N.service&lt;/code&gt; and &lt;code&gt;console-getty.service&lt;/code&gt;. The getty never reaches a login prompt. noVNC and &lt;code&gt;pct console&lt;/code&gt; both look dead while the container is otherwise running perfectly: answering SSH, serving its app, completely fine. That&amp;rsquo;s the scenario Proxmox added the warning for, and &lt;code&gt;pve-container 6.0.19&lt;/code&gt; put the matching note in the UI that nesting &amp;ldquo;may be required for systemd.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="debian-13-keeps-its-console-ubuntu-doesnt"&gt;Debian 13 keeps its console. Ubuntu doesn&amp;rsquo;t.
&lt;/h2&gt;&lt;p&gt;This is the most useful thing the whole experiment produced, and it contradicts a lot of what the internet will tell you.&lt;/p&gt;
&lt;p&gt;I de-nested one container at a time, working up in importance, ready to stop at the first real failure. First, a small unimportant Debian 13 LXC, because nothing depends on it. Then my &lt;code&gt;hugo&lt;/code&gt; builder. Then my &lt;code&gt;audiobookshelf&lt;/code&gt; LXC, which has a read-only NFS bind mount from my storage server and would tell me quickly if host-side mounts broke. All three came back with working consoles.&lt;/p&gt;
&lt;p&gt;With three holding, I did the rest in one pass, including the two guests I actually cared about: &lt;code&gt;caddy&lt;/code&gt; at startup order 1 and &lt;code&gt;pihole01&lt;/code&gt; at startup order 0, the containers the entire lab depends on for TLS and DNS. Both came through. Eight Debian 13 guests, all on systemd 257, all de-nested, and every one of them started &lt;code&gt;container-getty@1.service&lt;/code&gt; and &lt;code&gt;console-getty.service&lt;/code&gt; normally, put its credential tmpfs under &lt;code&gt;/run/credentials/&amp;lt;unit&amp;gt;&lt;/code&gt;, and logged not a single &lt;code&gt;Protocol error&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then &lt;code&gt;jellyfin&lt;/code&gt;, the lab&amp;rsquo;s only Ubuntu container (soon to be Debian too), lost its console exactly as the forum thread describes. I reverted the change.&lt;/p&gt;
&lt;p&gt;So the boundary is not &amp;ldquo;systemd 257 needs nesting&amp;rdquo;. The boundary runs between distributions. Debian 13 in an LXC ships with enough LXC awareness to keep a console without the flag. Ubuntu leans on unrestricted systemd behavior and falls over. If you want the Debian side prepared before an upgrade, the &lt;code&gt;lxc.generator&lt;/code&gt; sequence is covered in my &lt;a class="link" href="https://diymediaserver.com/post/upgrade-debian-12-to-13-proxmox-lxc-243-credentials-fix/" target="_blank" rel="noopener"
&gt;Debian 12 to 13 LXC upgrade guide&lt;/a&gt;, and it&amp;rsquo;s the piece that makes running de-nested realistic at all.&lt;/p&gt;
&lt;p&gt;One recovery detail is worth memorizing before you need it, because you will otherwise spend twenty minutes rediscovering it. &lt;strong&gt;A dead console does not mean a dead container.&lt;/strong&gt; &lt;code&gt;pct enter&lt;/code&gt; uses &lt;code&gt;lxc-attach&lt;/code&gt; and is completely unaffected by nesting. You will open noVNC, get nothing, open it again, conclude the guest is hosed, and start planning a restore. Don&amp;rsquo;t. &lt;code&gt;pct enter &amp;lt;VMID&amp;gt;&lt;/code&gt; from the node still works, which is exactly how I recovered Jellyfin.&lt;/p&gt;
&lt;div class="product-box" data-asin="B0D454DQSP"&gt;
&lt;div class="product-box-image"&gt;&lt;picture&gt;&lt;source type="image/avif" srcset="https://diymediaserver.com/images/products/ms-01_hu_ab59b734919ebff7.avif"&gt;
&lt;img src="https://diymediaserver.com/images/products/ms-01_hu_828a8b73ed5a92f5.webp" width="600" height="265" alt="MINISFORUM MS-01 Mini Workstation" loading="lazy" decoding="async"&gt;&lt;/picture&gt;&lt;/div&gt;
&lt;div class="product-box-content"&gt;
&lt;div class="product-box-description"&gt;
&lt;strong&gt;MINISFORUM MS-01 Mini Workstation.&lt;/strong&gt;
The MS-01 i5 is a tiny mini PC with plenty of cores, multiple NVMe slots, and real homelab networking (dual 10G SFP+ plus 2.5 GbE), which makes it perfect for a Proxmox compute node. It has more than enough power for Jellyfin, the *arr stack, downloads, and a few VMs or LXCs, without turning your closet into a jet engine or space heater.
&lt;/div&gt;
&lt;div class="product-meta-row"&gt;
&lt;div class="product-price"&gt;
&lt;strong&gt;Amazon Price:&lt;/strong&gt;
&lt;span class="price-loading"&gt;Loading...&lt;/span&gt;
&lt;span class="price-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="product-availability"&gt;
&lt;strong&gt;Availability:&lt;/strong&gt;
&lt;span class="availability-loading"&gt;Checking...&lt;/span&gt;
&lt;span class="availability-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-box-links"&gt;
&lt;a href="https://amzn.to/4p3HhTI" class="affiliate-button" target="_blank" rel="noopener nofollow sponsored"&gt;Amazon&lt;/a&gt;
&lt;/div&gt;
&lt;div class="product-affiliate-disclaimer"&gt;
&lt;small&gt;&lt;em&gt;Contains affiliate links. I may earn a commission at no cost to you.&lt;/em&gt;&lt;/small&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="why-you-cant-make-the-warning-go-away"&gt;Why you can&amp;rsquo;t make the warning go away
&lt;/h2&gt;&lt;p&gt;You can&amp;rsquo;t. There is no supported way to do it, and I checked properly before accepting that. Here are the three things I tried, all rejected:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set &lt;code&gt;features: nesting=0&lt;/code&gt;.&lt;/strong&gt; Look at the first of those four conditions again. Only &lt;code&gt;nesting=1&lt;/code&gt; buys silence, so an explicit zero warns exactly like no features line at all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Set &lt;code&gt;ostype: unmanaged&lt;/code&gt;.&lt;/strong&gt; This works, in the sense that a guillotine cures a headache. PVE then writes nothing into the guest: no &lt;code&gt;/etc/hostname&lt;/code&gt;, no &lt;code&gt;/etc/hosts&lt;/code&gt;, no &lt;code&gt;/etc/resolv.conf&lt;/code&gt;, no network configuration. You&amp;rsquo;ve traded one cosmetic warning for hand-managing every container&amp;rsquo;s identity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patch &lt;code&gt;Base.pm&lt;/code&gt; on the node.&lt;/strong&gt; apt reverts the file on the next &lt;code&gt;pve-container&lt;/code&gt; update, you now own a local diff on a hypervisor, and Jellyfin proved the warning is occasionally right. No.&lt;/p&gt;
&lt;p&gt;While we&amp;rsquo;re here: &lt;code&gt;/etc/.pve-ignore.&amp;lt;file&amp;gt;&lt;/code&gt; is unrelated, but people reach for it anyway. It stops PVE overwriting files &lt;em&gt;inside&lt;/em&gt; the guest. It has nothing to do with the task-log warning.&lt;/p&gt;
&lt;p&gt;The one place this genuinely hurts is automation. Several Proxmox Terraform providers treat any task with a non-zero warning count as a failure, so the container gets created successfully and then the provider refuses to save it to state. The task said &amp;ldquo;success with warnings&amp;rdquo; and the tooling only read the second word. Enabling nesting removes the warning and therefore the false failure, which is a genuinely irritating reason to change a security-relevant flag.&lt;/p&gt;
&lt;h2 id="check-the-flag-before-you-change-the-flag"&gt;Check the flag before you change the flag
&lt;/h2&gt;&lt;p&gt;Every command from here on uses &lt;code&gt;&amp;lt;VMID&amp;gt;&lt;/code&gt; as a placeholder. Swap in your own container&amp;rsquo;s ID, which &lt;code&gt;pct list&lt;/code&gt; prints on the node next to each container&amp;rsquo;s name and status. Copying an example ID verbatim is how you reboot somebody else&amp;rsquo;s database at the wrong moment.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pct list &lt;span class="c1"&gt;# find your container&amp;#39;s ID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pct config &amp;lt;VMID&amp;gt; &lt;span class="c1"&gt;# read its current features line&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Look for the &lt;code&gt;features:&lt;/code&gt; line. You&amp;rsquo;ll see one of three states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No &lt;code&gt;features:&lt;/code&gt; line at all, which means defaults, which means nesting is off.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;features: nesting=1&lt;/code&gt;, nesting on.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;features: nesting=1,keyctl=1&lt;/code&gt;, nesting plus kernel keyring, the usual shape for a container running Docker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Changing it is one command plus a reboot:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pct config &amp;lt;VMID&amp;gt; &lt;span class="c1"&gt;# capture this first, it is your rollback reference&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pct &lt;span class="nb"&gt;set&lt;/span&gt; &amp;lt;VMID&amp;gt; --features &lt;span class="nv"&gt;nesting&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;# or --delete features to remove it&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pct reboot &amp;lt;VMID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;--features&lt;/code&gt; rewrites that whole line rather than adding to it. If &lt;code&gt;pct config&lt;/code&gt; showed you &lt;code&gt;nesting=1,keyctl=1&lt;/code&gt;, then passing &lt;code&gt;--features nesting=1&lt;/code&gt; silently drops keyctl, and Docker inside that guest breaks for a reason that looks nothing like this post. Pass every flag you want to keep, every time. &lt;code&gt;--delete features&lt;/code&gt; has the same sharp edge, and it takes all of them at once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Make the first change on a container you would be happy to lose.&lt;/strong&gt; I walked the dependency chain a guest at a time and put DNS and TLS last, and the same order applies going the other way. If you are turning nesting &lt;em&gt;on&lt;/em&gt; across a fleet, prove the full stop and start cycle on one throwaway guest before you touch the container everything else resolves through. A container you can rebuild in five minutes is worth more as a test subject than any amount of reading, this post included.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features only apply on a full stop and start.&lt;/strong&gt; This is where people lose an hour. You set the flag, nothing changes, you set it again, still nothing, and you start doubting the command. Proxmox rewrites and reapplies the LXC configuration only at container start, so anything short of tearing down and recreating the init process leaves the old namespaces in place. &lt;code&gt;pct reboot&lt;/code&gt; does the full cycle. Rebooting from &lt;em&gt;inside&lt;/em&gt; the container is not the same operation and shouldn&amp;rsquo;t be trusted here.&lt;/p&gt;
&lt;p&gt;Then confirm with &lt;code&gt;pct config &amp;lt;VMID&amp;gt;&lt;/code&gt; again, and open the console with &lt;code&gt;pct console &amp;lt;VMID&amp;gt;&lt;/code&gt; or noVNC. Not because the console is important, but because the console is the exact thing that fails. If you get a black rectangle, get in with &lt;code&gt;pct enter &amp;lt;VMID&amp;gt;&lt;/code&gt; and run &lt;code&gt;journalctl -b -u console-getty.service&lt;/code&gt;. A repeating &lt;code&gt;Failed to set up credentials: Protocol error&lt;/code&gt; is the nesting failure. Anything else is a different problem wearing the same costume.&lt;/p&gt;
&lt;div class="product-box" data-asin="B0C96FR8YC"&gt;
&lt;div class="product-box-image"&gt;&lt;picture&gt;&lt;source type="image/avif" srcset="https://diymediaserver.com/images/products/minidesktop_hu_1c4084a4918a496e.avif"&gt;
&lt;img src="https://diymediaserver.com/images/products/minidesktop_hu_b96e82c2c0dfa5d0.webp" width="600" height="470" alt="GMKtec Mini PC i7-1185G7" loading="lazy" decoding="async"&gt;&lt;/picture&gt;&lt;/div&gt;
&lt;div class="product-box-content"&gt;
&lt;div class="product-box-description"&gt;
&lt;strong&gt;GMKtec Mini PC i7-1185G7.&lt;/strong&gt;
A compact quad-core mini PC built on the Intel Core i7-1185G7, shipping with 16 GB of DDR4 and a 1 TB SSD. Iris Xe graphics bring Quick Sync along for hardware transcoding, and the small footprint suits a Proxmox node running a handful of VMs and LXC containers rather than a dense cluster.
&lt;/div&gt;
&lt;div class="product-meta-row"&gt;
&lt;div class="product-price"&gt;
&lt;strong&gt;Amazon Price:&lt;/strong&gt;
&lt;span class="price-loading"&gt;Loading...&lt;/span&gt;
&lt;span class="price-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="product-availability"&gt;
&lt;strong&gt;Availability:&lt;/strong&gt;
&lt;span class="availability-loading"&gt;Checking...&lt;/span&gt;
&lt;span class="availability-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-box-links"&gt;
&lt;a href="https://amzn.to/454pyTM" class="affiliate-button" target="_blank" rel="noopener nofollow sponsored"&gt;Amazon&lt;/a&gt;
&lt;/div&gt;
&lt;div class="product-affiliate-disclaimer"&gt;
&lt;small&gt;&lt;em&gt;Contains affiliate links. I may earn a commission at no cost to you.&lt;/em&gt;&lt;/small&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="why-i-put-the-flag-back-the-next-day"&gt;Why I put the flag back the next day
&lt;/h2&gt;&lt;p&gt;My own answer is case 4, and I landed on nesting everywhere. Two reasons, one better than the other.&lt;/p&gt;
&lt;p&gt;The good reason is uniformity. Running eight de-nested containers next to one nested container means every future question (&amp;ldquo;is this a nesting symptom?&amp;rdquo;) has to be answered twice, and every new container inherits whichever shape I happened to copy from. A split fleet is a tax you pay on every unrelated problem for as long as the fleet exists.&lt;/p&gt;
&lt;p&gt;The weaker reason is my automation controller, which sandboxes the tooling it runs and stopped working de-nested. Sandboxing needs to create mounts in the container&amp;rsquo;s root mount namespace, which is the exact thing de-nesting forbids. The mechanism is at least coherent. But I&amp;rsquo;ll be honest: I never isolated the specific failing operation before I reverted, so what I have is a strong correlation and a judgment call, not a proof. If I ever want the leak closed on the guests that don&amp;rsquo;t run that tooling, step one is reproducing that failure on a throwaway container rather than another fleet-wide pass.&lt;/p&gt;
&lt;p&gt;Two days, one confirmed leak, and I ended up exactly where I started with far better notes. Worth it anyway.&lt;/p&gt;
&lt;div class="product-box" data-asin="B0F8JG2SHN"&gt;
&lt;div class="product-box-image"&gt;&lt;picture&gt;&lt;source type="image/avif" srcset="https://diymediaserver.com/images/products/MS-A2_hu_5f3f821db0ff8b82.avif"&gt;
&lt;img src="https://diymediaserver.com/images/products/MS-A2_hu_129e8b92a5c2d003.webp" width="600" height="354" alt="MINISFORUM MS-A2" loading="lazy" decoding="async"&gt;&lt;/picture&gt;&lt;/div&gt;
&lt;div class="product-box-content"&gt;
&lt;div class="product-box-description"&gt;
&lt;strong&gt;MINISFORUM MS-A2.&lt;/strong&gt;
A compact mini-workstation built around up to a 16-core Ryzen 9 9955HX, with dual 10GbE SFP+ plus dual 2.5GbE, flexible storage (U.2 + M.2 including 22110), and triple 8K display outputs. It works well as a homelab node or small server with serious I/O.
&lt;/div&gt;
&lt;div class="product-meta-row"&gt;
&lt;div class="product-price"&gt;
&lt;strong&gt;Amazon Price:&lt;/strong&gt;
&lt;span class="price-loading"&gt;Loading...&lt;/span&gt;
&lt;span class="price-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="product-availability"&gt;
&lt;strong&gt;Availability:&lt;/strong&gt;
&lt;span class="availability-loading"&gt;Checking...&lt;/span&gt;
&lt;span class="availability-value" style="display:none;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="product-box-links"&gt;
&lt;a href="https://amzn.to/4o0suZN" class="affiliate-button" target="_blank" rel="noopener nofollow sponsored"&gt;Amazon&lt;/a&gt;
&lt;/div&gt;
&lt;div class="product-affiliate-disclaimer"&gt;
&lt;small&gt;&lt;em&gt;Contains affiliate links. I may earn a commission at no cost to you.&lt;/em&gt;&lt;/small&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="what-running-de-nested-actually-costs-day-to-day"&gt;What running de-nested actually costs, day to day
&lt;/h2&gt;&lt;p&gt;If you go the other way, here&amp;rsquo;s the price list. Three systemd units cannot mount on a de-nested guest, and they fail on every boot:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Unit&lt;/th&gt;
&lt;th&gt;Consequence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tmp.mount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/tmp&lt;/code&gt; is a plain directory on the rootfs instead of a tmpfs. It eats guest disk and survives reboots. Debian&amp;rsquo;s &lt;code&gt;tmpfiles.d&lt;/code&gt; still ages files out on the standard 10-day rule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;run-lock.mount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cosmetic. &lt;code&gt;/run/lock&lt;/code&gt; still exists as &lt;code&gt;drwxrwxrwt&lt;/code&gt; inside the &lt;code&gt;/run&lt;/code&gt; tmpfs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dev-mqueue.mount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;POSIX message queues unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Those three failures are why &lt;code&gt;systemctl is-system-running&lt;/code&gt; reports &lt;code&gt;degraded&lt;/code&gt; on every de-nested guest. That&amp;rsquo;s expected output. Nothing is wrong with the guest. &lt;code&gt;findmnt /tmp&lt;/code&gt; settles which side you&amp;rsquo;re on: a &lt;code&gt;tmpfs&lt;/code&gt; line means the mount landed, and no output at all means &lt;code&gt;/tmp&lt;/code&gt; is a plain directory on the root disk.&lt;/p&gt;
&lt;p&gt;The journal reports them as &lt;code&gt;mount: /tmp: tmpfs already mounted on /dev/shm&lt;/code&gt;, which is util-linux misdiagnosing a refused mount by naming a completely unrelated tmpfs that happens to exist. Nothing was double-mounted. Nothing is wrong with &lt;code&gt;/dev/shm&lt;/code&gt;. You&amp;rsquo;ll grep that string, find people with genuine double-mount problems, and chase the wrong thing for an afternoon.&lt;/p&gt;
&lt;p&gt;One knock-on effect that matters specifically for media servers: with nesting on, &lt;code&gt;/tmp&lt;/code&gt; is a tmpfs, which means RAM. If your transcoder writes scratch files to &lt;code&gt;/tmp&lt;/code&gt; you&amp;rsquo;re transcoding into memory. Jellyfin&amp;rsquo;s &lt;code&gt;TranscodingTempPath&lt;/code&gt; defaults to &lt;code&gt;/var/cache/jellyfin/transcodes&lt;/code&gt;, so it dodges this by default, but check yours rather than assuming. Dashboard &amp;gt; Playback shows the current value, and &lt;code&gt;grep TranscodingTempPath&lt;/code&gt; against Jellyfin&amp;rsquo;s &lt;code&gt;encoding.xml&lt;/code&gt; gets the same answer without opening a browser. The same check catches the opposite failure when you&amp;rsquo;re de-nested, where scratch I/O lands on the container&amp;rsquo;s root disk.&lt;/p&gt;
&lt;p&gt;Two things I explicitly confirmed do &lt;strong&gt;not&lt;/strong&gt; break without nesting, because both get claimed as reasons to keep the flag:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Per-unit systemd sandboxing still works.&lt;/strong&gt; I exercised &lt;code&gt;PrivateTmp=yes&lt;/code&gt;, &lt;code&gt;ProtectSystem=strict&lt;/code&gt;, &lt;code&gt;ProtectHome=yes&lt;/code&gt; and &lt;code&gt;PrivateNetwork=yes&lt;/code&gt; with &lt;code&gt;systemd-run&lt;/code&gt; on a de-nested guest and every one succeeded. Only the container&amp;rsquo;s &lt;em&gt;root&lt;/em&gt; mount namespace is restricted; per-unit namespaces are unaffected. Your service hardening is intact either way.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Host-side bind mounts still work.&lt;/strong&gt; My audiobook container&amp;rsquo;s &lt;code&gt;lxc.mount.entry&lt;/code&gt; for its NFS media directory is set up by LXC from the host rather than by the container, so it re-attached normally: read-only enforced, all libraries present. Bind mounts are not a nesting feature.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when-it-doesnt-work"&gt;When it doesn&amp;rsquo;t work
&lt;/h2&gt;&lt;p&gt;The warning still appears on a container you&amp;rsquo;re certain you set the flag on. Then the flag didn&amp;rsquo;t take. Run &lt;code&gt;pct config &amp;lt;VMID&amp;gt;&lt;/code&gt; and read the &lt;code&gt;features:&lt;/code&gt; line with your own eyes, and if it&amp;rsquo;s there, you skipped the full stop and start. This is the single most common version of this problem and it&amp;rsquo;s always one of those two things.&lt;/p&gt;
&lt;p&gt;You enabled nesting, the warning went away, and &lt;code&gt;systemctl is-system-running&lt;/code&gt; still says &lt;code&gt;degraded&lt;/code&gt;. Fine, now find out which unit. Run &lt;code&gt;systemctl --failed&lt;/code&gt; inside the container and judge it by name. On my automation controller, &lt;code&gt;sys-kernel-config.mount&lt;/code&gt; fails and always has, nested or not, because configfs isn&amp;rsquo;t usable in an unprivileged LXC in either configuration. On my Ubuntu guest, &lt;code&gt;netplan-configure.service&lt;/code&gt; fails for reasons that have nothing to do with containment. Both are cosmetic, and both would have sent me chasing nesting if I&amp;rsquo;d trusted the summary word instead of the unit list.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;journalctl -b -p err&lt;/code&gt; isn&amp;rsquo;t empty on a healthy de-nested container either, because refused mounts log at error priority. Judge such a guest by &lt;em&gt;which&lt;/em&gt; errors it has, not by whether it has any. With nesting restored, an empty priority-error journal goes back to being the normal expectation.&lt;/p&gt;
&lt;p&gt;Your Terraform apply fails while the Proxmox UI cheerfully shows the container running. Read the actual task log. If the only entry is the systemd nesting warning, the create succeeded and your provider is counting warnings as errors. Enable nesting or use a provider version that doesn&amp;rsquo;t do that.&lt;/p&gt;
&lt;p&gt;And if you&amp;rsquo;ve enabled nesting, done a proper stop and start, and systemd is &lt;em&gt;still&lt;/em&gt; degraded with real failures, stop tuning flags. The container template may ship stale or incompatible systemd configuration, and rebuilding from a current Debian 13 or Ubuntu template with &lt;code&gt;nesting=1&lt;/code&gt; set from creation is usually faster than the archaeology.&lt;/p&gt;
&lt;h2 id="where-that-leaves-you"&gt;Where that leaves you
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;WARN: Systemd 257 detected. You may need to enable nesting.&lt;/code&gt; is a version check with no health check behind it. Treat it as a prompt to look, not a defect to fix. The flag it points at controls exactly one thing: whether container root can create mounts in the container&amp;rsquo;s own root mount namespace. The cost of granting that is a real, measurable procfs leak of your node&amp;rsquo;s hardware profile, reachable only by an attacker who already has root inside the guest.&lt;/p&gt;
&lt;p&gt;Check &lt;code&gt;pct config&lt;/code&gt; before you change anything. Test the change on one container you can afford to break. Reboot fully afterward. And decide once, for the whole fleet, then write down why. A split fleet makes you re-answer this question every time something unrelated breaks.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re arriving here from a Debian 12 to 13 upgrade that went sideways, the credential errors and the &lt;code&gt;lxc.generator&lt;/code&gt; fix are covered in the &lt;a class="link" href="https://diymediaserver.com/post/upgrade-debian-12-to-13-proxmox-lxc-243-credentials-fix/" target="_blank" rel="noopener"
&gt;Debian 12 to 13 LXC upgrade guide&lt;/a&gt;. If you&amp;rsquo;re still deciding between privileged and unprivileged containers underneath all this, I wrote about &lt;a class="link" href="https://diymediaserver.com/post/unprivileged_lxc_regret/" target="_blank" rel="noopener"
&gt;the unprivileged LXC decision&lt;/a&gt; and about &lt;a class="link" href="https://diymediaserver.com/post/mastering-uid-gid-mapping-proxmox-lxc/" target="_blank" rel="noopener"
&gt;UID and GID mapping for bind mounts&lt;/a&gt;, which is the next wall you hit after this one.&lt;/p&gt;
&lt;h2 id="sources"&gt;Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Proxmox VE documentation, Linux Container: &lt;a class="link" href="https://pve.proxmox.com/wiki/Linux_Container" target="_blank" rel="noopener"
&gt;https://pve.proxmox.com/wiki/Linux_Container&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>