<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mastodon on Tod's Homelab</title><link>https://homelab.tod.net/tags/mastodon/</link><description>Recent content in Mastodon on Tod's Homelab</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 04 Jul 2026 13:30:14 -0400</lastBuildDate><atom:link href="https://homelab.tod.net/tags/mastodon/feed.xml" rel="self" type="application/rss+xml"/><item><title>The Mastodon Migration</title><link>https://homelab.tod.net/posts/downsizing-the-homelab/the-mastodon-migration/</link><pubDate>Sat, 04 Jul 2026 13:30:14 -0400</pubDate><guid>https://homelab.tod.net/posts/downsizing-the-homelab/the-mastodon-migration/</guid><description>&lt;p&gt;The &lt;a href="https://homelab.tod.net/posts/downsizing-the-homelab/the-pki-detour/"&gt;previous post&lt;/a&gt; ended with two weeks of wrong turns and an honest need for something to just work. The same day FreeIPA got shelved — June 19 — I got it: Mastodon came off a dedicated Ubuntu VM running a source-checked-out install and onto official Docker images running in a Proxmox LXC, and every part of it went the way infrastructure work is supposed to.&lt;/p&gt;
&lt;h2 id="what-was-there-before"&gt;What was there before&lt;/h2&gt;
&lt;p&gt;Mastodon had been running on a dedicated Ubuntu 24.04 VM (&lt;code&gt;mastodon.tod.net&lt;/code&gt;) since long before this rebuild started — a source-checked-out Ruby/Node install managed by rbenv and nvm, the deployment model the Mastodon project&amp;rsquo;s own install guide walks you through. &lt;code&gt;mastodon.tod.net&lt;/code&gt; reaches the public internet the same way every other externally reachable service here does: a &lt;a href="https://github.com/cloudflare/cloudflared"&gt;cloudflared&lt;/a&gt; tunnel, so nothing about the host itself — old VM or new LXC — needs an inbound firewall rule. It worked, but every version bump meant babysitting Ruby and Node versions by hand, and the data volume was 71 of 95 GB used, with roughly 64 GB of that being nothing but a remote-media cache — other servers&amp;rsquo; avatars and post images, fetched and stored locally the first time anyone here saw them, then never cleaned up automatically enough to keep pace.&lt;/p&gt;</description></item></channel></rss>