<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>blog on seraph</title>
    <link>https://seraph.ws/posts/</link>
    <description>Recent content in blog on seraph</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://seraph.ws/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Infrastructure updates, a new machine, and the usual suffering</title>
      <link>https://seraph.ws/posts/seraph-update-post/</link>
      <pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://seraph.ws/posts/seraph-update-post/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a while since I&amp;rsquo;ve written anything up. A lot has happened. Let me try to cover it without this turning into a novel.&lt;/p&gt;&#xA;&lt;h2 id=&#34;vaultwarden&#34;&gt;Vaultwarden&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been meaning to self-host a password manager for a long time. Vaultwarden is a lightweight, Bitwarden-compatible server — same clients, same browser extensions, your data stays on your own hardware. It&amp;rsquo;s running in Docker at vault.seraph.ws, behind nginx with a Let&amp;rsquo;s Encrypt cert. Signups are disabled after account creation. fail2ban watches the log for bad auth attempts. Honestly the easiest thing I&amp;rsquo;ve set up in months, which I&amp;rsquo;m choosing to read as a sign that I&amp;rsquo;m getting better at this.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Self-Hosted Pastebin in Rust</title>
      <link>https://seraph.ws/posts/building-a-rust-pastebin/</link>
      <pubDate>Wed, 11 Mar 2026 21:00:00 +0000</pubDate>
      <guid>https://seraph.ws/posts/building-a-rust-pastebin/</guid>
      <description>&lt;p&gt;At this point I&amp;rsquo;m just building every classic web utility from scratch in Rust. Last week it was a link shortener. This week: pastebin.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why&#34;&gt;Why&lt;/h2&gt;&#xA;&lt;p&gt;Same reason as everything else on this server — I want it to be mine. Pastebin.com is fine but it&amp;rsquo;s ad-ridden, has a size limit, and I don&amp;rsquo;t control what happens to the content. Running my own means I can paste whatever I want, set my own limits, and know exactly where the data lives.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Self-Hosted Mail Stack (And Everything Else)</title>
      <link>https://seraph.ws/posts/email-and-more/</link>
      <pubDate>Wed, 11 Mar 2026 00:58:44 +0000</pubDate>
      <guid>https://seraph.ws/posts/email-and-more/</guid>
      <description>&lt;p&gt;This one got away from me a little bit.&lt;/p&gt;&#xA;&lt;p&gt;What started as &amp;ldquo;I want to host my own email&amp;rdquo; turned into two days of infrastructure work that I am genuinely proud of, and which I am now going to document before I forget what I actually did.&lt;/p&gt;&#xA;&lt;h2 id=&#34;email-or-how-hard-could-it-be&#34;&gt;Email, Or: How Hard Could It Be&lt;/h2&gt;&#xA;&lt;p&gt;Famously, the answer is: pretty hard. Email is one of those things that looks simple from the outside — you send a message, it arrives somewhere — and reveals itself to be an absolutely cursed protocol the moment you try to run your own server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building a Self-Hosted Link Shortener in Rust with Axum and PostgreSQL</title>
      <link>https://seraph.ws/posts/building-a-rust-link-shortener/</link>
      <pubDate>Sat, 07 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://seraph.ws/posts/building-a-rust-link-shortener/</guid>
      <description>How I built and deployed a self-hosted link shortener in Rust using Axum, PostgreSQL, and SQLx — with input sanitization, URL validation, click analytics, and a token-protected admin interface.</description>
    </item>
    <item>
      <title>Self-Hosting a Hugo Site with a Git Push Deploy Pipeline</title>
      <link>https://seraph.ws/posts/self-hosting-a-hugo-site/</link>
      <pubDate>Fri, 06 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://seraph.ws/posts/self-hosting-a-hugo-site/</guid>
      <description>&lt;p&gt;I recently set up this site on a self-managed VPS instance rather than using a managed platform like GitHub Pages or Vercel. This post is a writeup of everything involved — partly as documentation for my future self, partly because I couldn&amp;rsquo;t find a single resource that covered all of it end to end.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-self-host&#34;&gt;Why Self-Host?&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been using Linux for most of my adult life but truth be told, I am an absolute novice when it comes to system administration. My Arch installation is an absolute mess full of deprecated packages, broken symlinks, and the SSD isn&amp;rsquo;t even living in its original machine since my desktop started failing. This project is first and foremost a way to teach myself proper system administration, development pipelines, get some familiarity with the tools I&amp;rsquo;ve just never fully bothered to learn, let alone master, and eventually be a cute little portfolio I can stick on my resume ^.^&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
