<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
  <title>static.apur.in — notes</title>
  <link>https://static.apur.in/</link>
  <description>Short notes and longer procedures on Linux administration.</description>
  <language>en</language>
  <lastBuildDate>Tue, 03 Nov 2026 09:40:00 +0000</lastBuildDate>
  <item>
    <title>In-place Ubuntu LTS upgrade on a remote box</title>
    <link>https://static.apur.in/docs/debian-upgrade.html</link>
    <guid>https://static.apur.in/docs/debian-upgrade.html</guid>
    <pubDate>Sun, 01 Nov 2026 11:20:00 +0000</pubDate>
    <description>Order of operations for do-release-upgrade where you cannot walk up to the machine, and the four things that break quietly afterwards.</description>
  </item>
  <item>
    <title>systemd timers that quietly stopped firing</title>
    <link>https://static.apur.in/notes.html#timers</link>
    <guid>https://static.apur.in/notes.html#timers</guid>
    <pubDate>Wed, 28 Oct 2026 07:30:00 +0000</pubDate>
    <description>Persistent= is not a detail, and a service that exits 0 while doing nothing is worse than one that fails.</description>
  </item>
  <item>
    <title>restic backups on a timer, and the restore drill</title>
    <link>https://static.apur.in/docs/restic-backups.html</link>
    <guid>https://static.apur.in/docs/restic-backups.html</guid>
    <pubDate>Mon, 19 Oct 2026 16:05:00 +0000</pubDate>
    <description>Two repositories with different failure domains, a prune policy you can defend, and a restore test that is scheduled rather than intended.</description>
  </item>
  <item>
    <title>PostgreSQL backup checklist</title>
    <link>https://static.apur.in/notes.html#backup</link>
    <guid>https://static.apur.in/notes.html#backup</guid>
    <pubDate>Sun, 11 Oct 2026 15:05:00 +0000</pubDate>
    <description>Five things that decide whether the backup is real.</description>
  </item>
  <item>
    <title>Triage for a noisy access log</title>
    <link>https://static.apur.in/notes.html#logs</link>
    <guid>https://static.apur.in/notes.html#logs</guid>
    <pubDate>Wed, 30 Sep 2026 18:40:00 +0000</pubDate>
    <description>Before fail2ban: work out what the traffic actually is.</description>
  </item>
  <item>
    <title>Reading SMART before the disk tells you</title>
    <link>https://static.apur.in/docs/smartd-checks.html</link>
    <guid>https://static.apur.in/docs/smartd-checks.html</guid>
    <pubDate>Mon, 21 Sep 2026 08:15:00 +0000</pubDate>
    <description>PASSED is not a verdict. Four attributes on spinning media, four on NVMe, and the two ways monitoring quietly covers for fewer disks than you own.</description>
  </item>
  <item>
    <title>journalctl recipes I kept re-deriving</title>
    <link>https://static.apur.in/docs/journalctl-cookbook.html</link>
    <guid>https://static.apur.in/docs/journalctl-cookbook.html</guid>
    <pubDate>Sun, 30 Aug 2026 13:45:00 +0000</pubDate>
    <description>Previous boot, exact field filters, cursors for polling scripts, and the storage setting that empties the journal at exactly the wrong moment.</description>
  </item>
  <item>
    <title>apt holds and pins, and how they rot</title>
    <link>https://static.apur.in/docs/apt-holds.html</link>
    <guid>https://static.apur.in/docs/apt-holds.html</guid>
    <pubDate>Tue, 14 Jul 2026 10:00:00 +0000</pubDate>
    <description>A hold stops security updates without saying so, and the reason it was added is usually gone two point-releases later.</description>
  </item>
  <item>
    <title>SPF, DKIM and DMARC for one small domain</title>
    <link>https://static.apur.in/docs/mail-auth.html</link>
    <guid>https://static.apur.in/docs/mail-auth.html</guid>
    <pubDate>Sat, 27 Jun 2026 12:30:00 +0000</pubDate>
    <description>Three records answering three different questions, the ten-lookup limit, and why p=none comes first.</description>
  </item>
</channel>
</rss>
