<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Homelab on isoul.uk</title>
    <link>https://isoul.uk/tags/homelab/</link>
    <description>Recent content in Homelab on isoul.uk</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Mon, 14 Sep 2026 10:05:00 +0100</lastBuildDate>
    <atom:link href="https://isoul.uk/tags/homelab/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Backup, synchronisation or preservation?</title>
      <link>https://isoul.uk/posts/backup-synchronisation-or-preservation/</link>
      <pubDate>Mon, 14 Sep 2026 10:05:00 +0100</pubDate>
      <guid>https://isoul.uk/posts/backup-synchronisation-or-preservation/</guid>
      <description>Three different jobs that are often confused in self-hosted setups.</description>
      <content:encoded><![CDATA[<p>A copy of a file is not automatically a backup, and a backup is not automatically a preservation system. Self-hosting becomes much easier to reason about when these three jobs are kept separate.</p>
<h2 id="synchronisation-keeps-copies-convenient">Synchronisation keeps copies convenient</h2>
<p>Synchronisation keeps data available on more than one device. Syncthing is useful for this kind of direct device synchronisation, and it makes working files available where I need them.</p>
<p>But synchronisation also copies mistakes. If a file is deleted, corrupted or encrypted, that change may travel to the other copy. Synchronisation improves availability; it does not replace a backup.</p>
<h2 id="a-backup-gives-you-a-recovery-point">A backup gives you a recovery point</h2>
<p>A backup is a separate copy that can take you back to an earlier state. It should be protected from the normal failure of the source and should be possible to restore without relying on memory.</p>
<p>For my homelab, that means thinking about:</p>
<ul>
<li>what data is included;</li>
<li>how often it is copied;</li>
<li>how long old versions are retained;</li>
<li>whether credentials are protected;</li>
<li>whether the backup is encrypted;</li>
<li>whether the restore procedure has been tested.</li>
</ul>
<p>Restic is useful for encrypted, verifiable backup jobs, but the tool alone does not create a complete backup strategy. The source paths, schedule, retention and restore test matter just as much.</p>
<h2 id="preservation-keeps-meaning-and-access">Preservation keeps meaning and access</h2>
<p>Preservation is a longer-term job. It is not only about keeping bytes. It also means retaining enough context to understand what the files are, checking that they have not silently changed, using formats that remain practical to read, and keeping more than one recovery path.</p>
<p>For web material, a saved URL is not preservation. The page may change or disappear. Tools such as <a href="https://github.com/ArchiveBox/ArchiveBox">ArchiveBox</a> can create local captures, while larger institutional workflows such as <a href="https://www.archivematica.org/en/">Archivematica</a> show how preservation involves ingest, processing, metadata and access.</p>
<h2 id="a-simple-test">A simple test</h2>
<p>For each important item, ask three questions:</p>
<ol>
<li><strong>Do I need it available on another device?</strong> That is synchronisation.</li>
<li><strong>Do I need to recover an older version after loss or damage?</strong> That is backup.</li>
<li><strong>Do I need to understand and access it years from now?</strong> That is preservation.</li>
</ol>
<p>The same file may need all three, but the design is different for each job.</p>
<h2 id="how-this-applies-to-my-lab">How this applies to my lab</h2>
<p>The live data on TrueNAS-Normandy is the working copy. Replication to another system can provide another local recovery path, but it should not be treated as the only backup. Restic configuration backups protect the information needed to rebuild services, while service data and databases need their own explicit inclusion and restore plans.</p>
<p>The most important question is not “Where is the copy?” It is:</p>
<blockquote>
<p>Can I prove that I can find, understand and restore the thing I care about?</p></blockquote>
<p>That is the difference between having copies and having a recovery system.</p>
]]></content:encoded>
    </item>
    <item>
      <title>What I choose not to self-host</title>
      <link>https://isoul.uk/posts/what-i-choose-not-to-self-host/</link>
      <pubDate>Mon, 14 Sep 2026 10:00:00 +0100</pubDate>
      <guid>https://isoul.uk/posts/what-i-choose-not-to-self-host/</guid>
      <description>Self-hosting is useful, but it is not the right answer for every service.</description>
      <content:encoded><![CDATA[<p>Self-hosting is often presented as an answer to every problem. I do not think it is.</p>
<p>A service can be open source, privacy-friendly and technically interesting while still being the wrong thing for me to operate. Every service adds updates, storage, monitoring, backups, permissions and another failure mode. The aim is not to recreate every cloud product at home. The aim is to keep control where control is valuable without turning the homelab into a second job.</p>
<h2 id="i-do-not-self-host-everything">I do not self-host everything</h2>
<p>I am cautious about services that handle especially sensitive information, need constant availability or have a large operational burden. A hosted provider can be the more sensible choice when it offers better security, accessibility or recovery than I could realistically provide myself.</p>
<p>That is not a failure of self-hosting. It is the point of making a deliberate choice instead of following a slogan.</p>
<h2 id="email-is-where-i-draw-the-line">Email is where I draw the line</h2>
<p>I deliberately do not self-host email. Reliable delivery requires reputation management, filtering, authentication, security, storage, backups and recovery. AI-powered filtering and mailbox automation add another layer of risk because sensitive messages may be processed by systems that can be manipulated by malicious content or given too much access.</p>
<p>For me, hosted email with my own domain, clear export options and independent backups is the more sensible choice. That is not giving up on digital ownership; it is choosing not to operate a difficult and security-sensitive service when the benefit is not worth the work.</p>
<h2 id="questions-i-ask-first">Questions I ask first</h2>
<p>Before adding a service, I ask:</p>
<ul>
<li>What problem does it solve for me?</li>
<li>Can I export the data in a useful format?</li>
<li>Can I back up and restore it without guesswork?</li>
<li>What happens if the project stops being maintained?</li>
<li>Does it need internet exposure or privileged access?</li>
<li>How often will it need attention?</li>
<li>Would I still want to operate it after the novelty disappears?</li>
<li>Is a hosted alternative cheaper in time and risk?</li>
</ul>
<p>If the answers are weak, I do not add it simply because it is popular.</p>
<h2 id="what-i-prefer-to-self-host">What I prefer to self-host</h2>
<p>Self-hosting makes the most sense to me for services where local control has an obvious benefit:</p>
<ul>
<li>personal photos and media;</li>
<li>documents and bookmarks;</li>
<li>local DNS and network services;</li>
<li>monitoring and notifications;</li>
<li>backups and recovery tooling;</li>
<li>services where a provider could change access, pricing or availability;</li>
<li>data that I want available on my own network even when the internet is unavailable.</li>
</ul>
<p>These still need sensible backups and security. Local does not mean indestructible.</p>
<h2 id="the-practical-answer">The practical answer</h2>
<p>The right question is not “Can I self-host this?” Almost anything can be made to run somewhere.</p>
<p>The better questions are:</p>
<blockquote>
<p>Does operating this service improve my control, resilience or privacy enough to justify the work?</p></blockquote>
<blockquote>
<p>Can I leave it later without losing the data?</p></blockquote>
<p>If the answer is no, I would rather use a hosted service, keep a local export, or not use the service at all.</p>
<p>That is a more useful form of digital ownership than collecting dashboards.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Projects worth testing in a practical homelab</title>
      <link>https://isoul.uk/posts/projects-worth-testing-in-a-practical-homelab/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://isoul.uk/posts/projects-worth-testing-in-a-practical-homelab/</guid>
      <description>A short list of self-hosted projects that fit a practical homelab, beyond the tools already in use.</description>
      <content:encoded><![CDATA[<p>A useful project is not automatically worth adding just because it is new, popular or active on GitHub. I look for a clear problem, sensible deployment, useful documentation, a workable backup path and enough maintenance history to justify the time spent learning it.</p>
<p>This list deliberately excludes tools already used here, including Beszel, Dockhand and <code>youtube-dl</code> workflows. Karakeep is also excluded as a recommendation because it is already in use and has proved to be good in practice.</p>
<h2 id="homelable--worth-testing">Homelable — worth testing</h2>
<p><a href="https://github.com/Pouzor/homelable">Homelable</a> is a self-hosted homelab infrastructure visualiser with an interactive network diagram and live status monitoring.<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<p>This is interesting because a homelab eventually becomes difficult to explain. A diagram that reflects service status could be useful for documenting hosts, networks and dependencies without maintaining a completely separate diagram by hand.</p>
<p>The project is still a watch-and-test item rather than a recommendation. Check authentication, how stale or missing services are represented, whether the diagram can be backed up or exported, and whether the licence is clear before relying on it as the authoritative record of a network.</p>
<p><strong>Status:</strong> Worth testing.</p>
<p><strong>Open questions:</strong> maturity, licence, authentication and accuracy of live discovery.</p>
<h2 id="pangolin--worth-testing-cautiously">Pangolin — worth testing cautiously</h2>
<p><a href="https://github.com/fosrl/pangolin">Pangolin</a> is a self-hosted networking and security platform built around WireGuard, with zero-trust VPN access, reverse proxying, identity-aware access and a dashboard.<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup></p>
<p>It is not an obvious replacement for Tailscale when Tailscale is already working well. Its interest is different: it may give a self-hoster more control over the access and publishing layer, particularly when private services need to be reached through a central gateway.</p>
<p>Pangolin is security-sensitive and appears to be moving quickly. The Community Edition is reported as AGPL-3.0, while additional enterprise functionality uses a commercial licence, so the current boundaries need to be checked carefully.<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> Client compatibility, identity-provider integration, failure recovery and upgrade procedures should all be tested before putting it in front of important services.</p>
<p><strong>Status:</strong> Watching, with a possible controlled test.</p>
<p><strong>Flags:</strong> security-sensitive; licence boundaries need checking; not a casual Tailscale replacement.</p>
<h2 id="youtube-dl-nas--useful-idea-but-already-tested-here">youtube-dl-nas — useful idea, but already tested here</h2>
<p><a href="https://github.com/hyeonsangjeon/youtube-dl-nas">youtube-dl-nas</a> provides an authenticated <code>yt-dlp</code> queue for NAS use, including video, audio, subtitles, mobile sharing, restart-safe downloads and Docker.<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p>
<p>The project matches a real self-hosting need: turning downloads into a controlled queue rather than relying on a desktop session. It is also a good example of a narrowly focused tool solving one practical problem.</p>
<p>It is not a new recommendation here because it has already been used. Anyone evaluating it should still check authentication storage, cookie handling, download legality, update behaviour when <code>yt-dlp</code> changes and whether the project has enough maintenance depth for their collection.</p>
<p><strong>Status:</strong> Previously tested; not a new candidate.</p>
<h2 id="dockhand--already-useful-here">Dockhand — already useful here</h2>
<p><a href="https://github.com/Finsys/dockhand">Dockhand</a> is a Docker management application with container management, Compose stack support, remote-host features, logs and an in-browser shell.<sup id="fnref:5"><a href="#fn:5" class="footnote-ref" role="doc-noteref">5</a></sup></p>
<p>Its practical value here is not replacing manually written Docker Compose files. It is useful for checking containers and managing updates while keeping the Compose definition as the source of truth. That separation matters: a UI should make routine operations easier without hiding how the service is actually deployed.</p>
<p>Docker management interfaces deserve careful treatment because they can have host-level privileges. Authentication, remote-agent security, secret handling and audit behaviour should be checked before exposing one outside the local network.</p>
<p><strong>Status:</strong> Used here; positive practical experience.</p>
<h2 id="beszel--already-used-here">Beszel — already used here</h2>
<p><a href="https://github.com/henrygd/beszel">Beszel</a> is a lightweight monitoring system with historical data, Docker statistics and alerts.<sup id="fnref:6"><a href="#fn:6" class="footnote-ref" role="doc-noteref">6</a></sup> A <code>0.19.0</code> release was published on 3 September 2026.<sup id="fnref:7"><a href="#fn:7" class="footnote-ref" role="doc-noteref">7</a></sup></p>
<p>It is already used here, so it belongs on the app shelf rather than this list of new things to try. Its continued release activity is worth tracking, but repeating the recommendation would add little value.</p>
<p><strong>Status:</strong> Used here; report updates rather than recommend again.</p>
<h2 id="what-i-would-test-first">What I would test first</h2>
<p>If I were starting a small evaluation, I would begin with Homelable because it fills a documentation and visibility gap rather than duplicating an existing service. Pangolin would come next, but only in an isolated test path with a rollback plan. The other projects are either already used or already tested here.</p>
<p>That is the useful distinction: a project can be interesting without being a new recommendation for a particular homelab.</p>
<h2 id="sources">Sources</h2>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://github.com/Pouzor/homelable">Homelable on GitHub</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p><a href="https://github.com/fosrl/pangolin">Pangolin on GitHub</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p><a href="https://linuxdork.com/self-hosted-apps/pangolin/">Pangolin licensing discussion</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p><a href="https://github.com/hyeonsangjeon/youtube-dl-nas">youtube-dl-nas on GitHub</a>&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:5">
<p><a href="https://github.com/Finsys/dockhand">Dockhand on GitHub</a>&#160;<a href="#fnref:5" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:6">
<p><a href="https://github.com/henrygd/beszel">Beszel on GitHub</a>&#160;<a href="#fnref:6" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:7">
<p><a href="https://github.com/henrygd/beszel/releases">Beszel releases</a>&#160;<a href="#fnref:7" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>
