<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Posts on Christian LeFlore</title>
    <link>https://christianleflore.com/posts/</link>
    <description>Recent content in Posts on Christian LeFlore</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 20 Nov 2025 12:47:15 -0600</lastBuildDate><atom:link href="https://christianleflore.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Creating an Isolated Network Inside Proxmox</title>
      <link>https://christianleflore.com/posts/homelab-proxmox-creating-isolated-network/</link>
      <pubDate>Thu, 20 Nov 2025 12:47:15 -0600</pubDate>
      
      <guid>https://christianleflore.com/posts/homelab-proxmox-creating-isolated-network/</guid>
      
      <description>&lt;h1 id=&#34;creating-an-isolated-network-in-proxmox&#34;&gt;Creating an Isolated Network in Proxmox&lt;/h1&gt;
&lt;p&gt;There are many tutorials online about creating a separate subnet for your VM, but very little about creating an isolated network.&lt;/p&gt;
&lt;p&gt;This network needs to be completely isolated from the &amp;ldquo;main&amp;rdquo; or default network of proxmox.&lt;/p&gt;
&lt;p&gt;I have a web server that I really didn&amp;rsquo;t want being able to access my other VMs.&lt;/p&gt;
&lt;h3 id=&#34;steps-taken&#34;&gt;Steps Taken&lt;/h3&gt;
&lt;h5 id=&#34;in-proxmox&#34;&gt;In Proxmox:&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Open the Shell for your Datacenter&lt;/li&gt;
&lt;li&gt;Install dependencies &lt;code&gt;apt update &amp;amp;&amp;amp; apt install libpve-network-perl ifupdown2 dnsmasq -y&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Disable dnsmasq, it&amp;rsquo;s just needed for proxmox to create the interfaces &lt;code&gt;systemctl disable --now dnsmasq&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click on Datacenter &amp;gt; SDN &amp;gt; Zones&lt;/li&gt;
&lt;li&gt;Create one with the ID isol (for isolation)&lt;/li&gt;
&lt;li&gt;Click on the isol zone, check the &lt;strong&gt;Advanced&lt;/strong&gt; checkbox, enable &lt;strong&gt;automatic DHCP&lt;/strong&gt;, and click OK&lt;/li&gt;
&lt;li&gt;Click SDN &amp;gt; VNets &amp;gt; Create&lt;/li&gt;
&lt;li&gt;Name it isonet with the isol zone and click Create&lt;/li&gt;
&lt;li&gt;Click on isonet &amp;gt; Subnets (on the right hand side) &amp;gt; Create
&lt;ul&gt;
&lt;li&gt;Subnet - Give it a private IP subnet like 10.0.5.0/24&lt;/li&gt;
&lt;li&gt;Gateway - 10.0.5.1&lt;/li&gt;
&lt;li&gt;SNAT - Enabled&lt;/li&gt;
&lt;li&gt;DNS Prefix - Leave blank&lt;/li&gt;
&lt;li&gt;Hit the DHCP Ranges tab and put in your usable addresses, ie 10.0.5.2 - 10.0.5.254&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click OK&lt;/li&gt;
&lt;li&gt;Go back to the SDN menu option and hit Apply&lt;/li&gt;
&lt;li&gt;Go to a VM&amp;rsquo;s Hardware Settings &amp;gt; Network Device&lt;/li&gt;
&lt;li&gt;Add isonet as the bridge&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, we have a network in place and your VM should have gotten an IP via DHCP. However, it&amp;rsquo;s wide open. It&amp;rsquo;s bridged so it can see any network proxmox can see. We need iptables to sort the rest out.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Running a Self Hosted Mastodon Instance Through Cloudflare</title>
      <link>https://christianleflore.com/posts/homelab-mastodon-cloudflare-tunnels/</link>
      <pubDate>Fri, 14 Nov 2025 09:00:07 -0600</pubDate>
      
      <guid>https://christianleflore.com/posts/homelab-mastodon-cloudflare-tunnels/</guid>
      
      <description>&lt;h1 id=&#34;migrating-mastodon-server-to-homelab-using-cloudflare-tunnels&#34;&gt;Migrating Mastodon server to Homelab using Cloudflare Tunnels&lt;/h1&gt;
&lt;p&gt;I was getting charged around $3 a day to host my mastodon server on Azure. I read up on Cloudflare Tunnels. Here are the benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You don&amp;rsquo;t have to open any ports, just install a client on your web server&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s proxied behind cloudflare so my home IP isn&amp;rsquo;t exposed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Steps I followed:&lt;/p&gt;
&lt;h5 id=&#34;migrating-mastodon&#34;&gt;Migrating Mastodon&lt;/h5&gt;
&lt;ul&gt;
&lt;li&gt;Spin up a Ubuntu Server in Proxmox&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&#34;https://docs.joinmastodon.org/admin/migrating/&#34;&gt;this guide&lt;/a&gt; to build, but read through this documentation first for important steps.&lt;/li&gt;
&lt;li&gt;IMPORTANT - Make sure your mastodon versions match. If they don&amp;rsquo;t, run a &lt;code&gt;git checkout&lt;/code&gt; to the right version. I was running 4.4.7, so I had to run &lt;code&gt;git checkout v4.4.7&lt;/code&gt; and you can list versions by running &lt;code&gt;git fetch --tags &amp;amp;&amp;amp; git tag -l&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;After you install everything, make sure the &lt;strong&gt;mastodon&lt;/strong&gt; user has access to &lt;strong&gt;www-data&lt;/strong&gt; group and vice versa.&lt;/li&gt;
&lt;li&gt;Change the ownership of your mastodon home folder so www-data can see by running &lt;code&gt;sudo chown mastodon:www-data /home/mastodon&lt;/code&gt; and &lt;code&gt;sudo chmod 0710 -v /home/mastodon&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If everything went well, you should see an error 400 or 403 when visiting locally.&lt;/li&gt;
&lt;li&gt;Now we need to get mastodon ready to accept connections from Cloudflare, add this to your mastodon user&amp;rsquo;s &lt;code&gt;~/.bashrc&lt;/code&gt; file at the end:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;export TRUSTED_PROXY_IP=&amp;#34;103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,104.16.0.0/13,104.24.0.0/14,108.162.192.0/18,131.0.72.0/22,141.101.64.0/18,162.158.0.0/15,172.64.0.0/13,173.245.48.0/20,188.114.96.0/20,190.93.240.0/20,197.234.240.0/22,198.41.128.0/17,127.0.0.1/8,::1/128,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,fc00::/7&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;h5 id=&#34;cloudflare-tunnel-setup&#34;&gt;Cloudflare Tunnel Setup&lt;/h5&gt;
&lt;p&gt;We will need to set up an SSL cert from cloudflare on our mastodon server:&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>Building a Homelab Mastodon Instance</title>
      <link>https://christianleflore.com/posts/homelab-mastodon-instance/</link>
      <pubDate>Thu, 23 Oct 2025 16:59:46 +0000</pubDate>
      
      <guid>https://christianleflore.com/posts/homelab-mastodon-instance/</guid>
      
      <description>&lt;h2 id=&#34;the-why&#34;&gt;The why&lt;/h2&gt;
&lt;p&gt;Mastodon is cool. Really cool in fact. It feels like the last bastion of the old social media experience I grew up with. Bots are labeled as bots, AI content scrapers are discouraged, people are real, admins open their instances from the kindness of their heart and wallet. It has no algorithm to tailor your experience to, it&amp;rsquo;s just people posting things they want to post. That&amp;rsquo;s something I can get behind.&lt;/p&gt;</description>
      
    </item>
    
    <item>
      <title>DNS Server Bind</title>
      <link>https://christianleflore.com/posts/dns-server-bind/</link>
      <pubDate>Thu, 22 Aug 2024 17:27:44 +0000</pubDate>
      
      <guid>https://christianleflore.com/posts/dns-server-bind/</guid>
      
      <description>&lt;h1 id=&#34;bind-server-for-rhel-9&#34;&gt;Bind Server for RHEL 9&lt;/h1&gt;
&lt;p&gt;Making a DNS server based on bind is fairly straightforward. The setup can be a little heavy but maintaining the DNS records is easy.&lt;/p&gt;
&lt;p&gt;Because the setup is so heavy, I created this documentation to help me or others in the process. You can see example files on my &lt;a href=&#34;https://gitlab.com/ironluux/scripts/-/tree/master/documentation/dns-server-bind&#34;&gt;GitLab&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This tutorial doesn&amp;rsquo;t cover having two or more DNS servers. That&amp;rsquo;s pretty important for redundancy. This is mostly a tutorial on how to set this up at home or in a lab environment.&lt;/p&gt;</description>
      
    </item>
    
  </channel>
</rss>
