<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Basement Uptime</title><link>https://uptime.zer0contextlost.net/</link><description>Recent content on Basement Uptime</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 06 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://uptime.zer0contextlost.net/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://uptime.zer0contextlost.net/about/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://uptime.zer0contextlost.net/about/</guid><description>&lt;p&gt;Basement Uptime is a small, focused set of notes on self-hosting and
homelab operations — Proxmox, LXC, DNS, backups, and the specific,
often-undocumented gotchas that show up when you actually run this stuff
long-term rather than just following a setup tutorial once.&lt;/p&gt;
&lt;p&gt;Posts here come from real operational work: things that broke, why they
broke, and what fixed them. No sponsored placement, no product seeded by a
PR firm — where a link to a specific piece of hardware or software is
useful, it&amp;rsquo;s linked because it&amp;rsquo;s genuinely what was used, and some of
those links may be affiliate links (see the note in the footer).&lt;/p&gt;</description></item><item><title>Fixing UID/GID Permission Hell When Bind-Mounting Host Storage Into Unprivileged LXC</title><link>https://uptime.zer0contextlost.net/posts/fixing-uid-gid-permission-hell-when-bind-mounting-host-stora/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://uptime.zer0contextlost.net/posts/fixing-uid-gid-permission-hell-when-bind-mounting-host-stora/</guid><description>&lt;p&gt;If you&amp;rsquo;ve ever bind-mounted a host directory into an unprivileged LXC container and watched every file inside turn into &lt;code&gt;nobody:nogroup&lt;/code&gt; (or worse, &lt;code&gt;65534:65534&lt;/code&gt;), you&amp;rsquo;ve run into the UID mapping problem. It&amp;rsquo;s one of those things that seems like a bug the first time you hit it, but it&amp;rsquo;s actually the container isolation working exactly as designed — just not the way most people expect.&lt;/p&gt;
&lt;h2 id="why-this-happens"&gt;Why this happens&lt;/h2&gt;
&lt;p&gt;Unprivileged LXC containers remap UIDs/GIDs so that root inside the container (UID 0) is &lt;em&gt;not&lt;/em&gt; root on the host. Instead, container UID 0 maps to some high UID on the host — by default something like 100000. The whole UID range inside the container (0-65535) gets shifted up by that offset on the host side.&lt;/p&gt;</description></item><item><title>ip neigh show Lies: Always arping Before You Assign a Static LAN IP</title><link>https://uptime.zer0contextlost.net/posts/arping-before-static-ip/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://uptime.zer0contextlost.net/posts/arping-before-static-ip/</guid><description>&lt;p&gt;You&amp;rsquo;re spinning up a new container or VM and you need a free static IP. The
instinctive check is:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ip neigh show
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the candidate address isn&amp;rsquo;t in the table, it looks free. It isn&amp;rsquo;t
necessarily. The neighbor table (ARP cache) only holds entries for hosts your
machine has actually exchanged traffic with recently — usually within the
last few minutes to a few hours, depending on the kernel&amp;rsquo;s &lt;code&gt;gc_stale_time&lt;/code&gt;
and related sysctls. A device that&amp;rsquo;s been quietly sitting on the network
without talking to &lt;em&gt;this particular host&lt;/em&gt; simply won&amp;rsquo;t show up, stale entry
or not.&lt;/p&gt;</description></item><item><title>Passing a USB Serial or Webcam Device Into an Unprivileged Proxmox LXC</title><link>https://uptime.zer0contextlost.net/posts/usb-serial-into-unprivileged-lxc/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://uptime.zer0contextlost.net/posts/usb-serial-into-unprivileged-lxc/</guid><description>&lt;p&gt;Unprivileged LXC containers are the right default on Proxmox — root inside
the container isn&amp;rsquo;t root on the host. But that same UID remapping breaks the
instinct most people have for granting device access: &amp;ldquo;just add the service
user to &lt;code&gt;dialout&lt;/code&gt;/&lt;code&gt;video&lt;/code&gt;/whatever group.&amp;rdquo; It won&amp;rsquo;t work the way you expect,
and it&amp;rsquo;s worth understanding why before you spend an hour staring at a
permission-denied error.&lt;/p&gt;
&lt;h2 id="why-group-membership-fails"&gt;Why group membership fails&lt;/h2&gt;
&lt;p&gt;When an unprivileged container bind-mounts a host device node, the
container&amp;rsquo;s view of that device&amp;rsquo;s ownership goes through the same UID/GID
remapping as everything else. A device owned by &lt;code&gt;root:dialout&lt;/code&gt; on the host
shows up inside the container as owned by some remapped, meaningless
UID:GID pair — typically rendered as &lt;code&gt;nobody:nogroup&lt;/code&gt;. Adding your service
user to a group inside the container does nothing, because the group the
device actually belongs to (from the container&amp;rsquo;s point of view) isn&amp;rsquo;t a
group that exists in any meaningful sense inside that namespace.&lt;/p&gt;</description></item><item><title>The Stale Search-Domain Bug That Silently Breaks DNS in Fresh LXC Containers</title><link>https://uptime.zer0contextlost.net/posts/stale-tailscale-search-domain-lxc-dns/</link><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid>https://uptime.zer0contextlost.net/posts/stale-tailscale-search-domain-lxc-dns/</guid><description>&lt;p&gt;Symptom: a brand-new container fails a &lt;code&gt;apt-get install&lt;/code&gt; with a resolution
error, or some app inside it can&amp;rsquo;t reach the outside world, even though the
container clearly has a route out and &lt;code&gt;ping &amp;lt;ip&amp;gt;&lt;/code&gt; to a raw address works
fine. The instinct is to blame the app. Check &lt;code&gt;/etc/resolv.conf&lt;/code&gt; first.&lt;/p&gt;
&lt;h2 id="what-was-actually-happening"&gt;What was actually happening&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;ve ever run Tailscale on a Proxmox host or one of its containers —
even briefly, even just to test something — and then removed it, it can
leave behind a stale &lt;code&gt;search&lt;/code&gt; directive in the resolver config:&lt;/p&gt;</description></item></channel></rss>