<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Self-Hosting on Cat in a Shell</title>
		<link>https://catinashell.de/tags/self-hosting/</link>
		<description>Recent content in Self-Hosting on Cat in a Shell</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Tue, 14 Jul 2026 18:06:17 +0200</lastBuildDate>
		
			<atom:link href="https://catinashell.de/tags/self-hosting/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Stalwart Mail Alias Creation Script</title>
				<link>https://catinashell.de/posts/stalwart-mail-alias-creation-script/</link>
				<pubDate>Fri, 03 Jul 2026 22:18:38 +0200</pubDate>
				<guid>https://catinashell.de/posts/stalwart-mail-alias-creation-script/</guid>
				<description>&lt;p&gt;I just run: &lt;code&gt;al &amp;lt;name for the alias&amp;gt;&lt;/code&gt; and get a new mail redirecting all mails to my main inbox.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;preview.webp&#34; alt=&#34;how it looks later&#34;&gt;&lt;/p&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#why&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h3 id=&#34;why&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Why?&#xA;&#xA;&lt;/h3&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;You might want to hide your mail from websites where you register, as they might sell your mail address (which is then used to profile or spam you), they might get hacked and you get tons of spam, or they just spam you right away. An alias mail can be easily disabled and tada, finished, no more wories, no more mails from that address (and the site you gave it to) without having to change your whole mailbox &amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Setting Up My Own Mailserver (Stalwart)</title>
				<link>https://catinashell.de/posts/setting-up-my-own-mailserver/</link>
				<pubDate>Thu, 02 Jul 2026 15:19:27 +0200</pubDate>
				<guid>https://catinashell.de/posts/setting-up-my-own-mailserver/</guid>
				<description>&lt;p&gt;&lt;em&gt;TLDR; Me renting about mail, you can skip to &lt;a href=&#34;#options&#34;&gt;Options&lt;/a&gt;, if you don&amp;rsquo;t wanna read it, because you already know&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mail usually totally sucks, you register somewhere for free, like gmail or whatever, and need to provide tons of personal data + have them scan your mails (not sure if they openly admit it tbh, but I believe they do even if claimed otherwise&amp;hellip;). Mails are horrible for privacy &amp;hellip; They are often unencrypted (except if you set up PGP and your communication partner also uses it, but almost no one except in the privacy corner does so &amp;hellip;). There are some providers who don&amp;rsquo;t ask you for as much, like Proton. Still it sucks, you can&amp;rsquo;t easily move provider etc. Lets say they decide to charge everyone one day &amp;hellip; Or change their privacy policy, or make some controversal tweets &amp;hellip; and you want to distance yourself from them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Secure a Caddy Server &amp; Best Practices</title>
				<link>https://catinashell.de/posts/secure-a-caddy-server-and-best-practices/</link>
				<pubDate>Sun, 28 Jun 2026 11:14:58 +0200</pubDate>
				<guid>https://catinashell.de/posts/secure-a-caddy-server-and-best-practices/</guid>
				<description>&lt;p&gt;I currently use &lt;a href=&#34;https://caddyserver.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Caddy&lt;/a&gt; for the statically generated Hugo Blog, since Caddy seems like a robust webserver written in go (so memory safe) and rather fast. Also it handles https automatically, requesting certificates etc. so no longer having to run anything manually.&#xA;Also its pretty easy to configure for this use case&lt;/p&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#minimal-caddy-config&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h4 id=&#34;minimal-caddy-config&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Minimal Caddy Config&#xA;&#xA;&lt;/h4&gt;&#xA;&lt;/a&gt;&#xA;&lt;style&gt;&#xA;    .codeblock {&#xA;        position: relative;&#xA;        margin: 1.4em 0;&#xA;        border: 1px solid rgba(255, 255, 255, 0.1);&#xA;        border-radius: 8px;&#xA;        background: #272822;  &#xA;    }&#xA;    .codeblock-label {&#xA;        display: flex;&#xA;        align-items: center;&#xA;        gap: 8px;&#xA;        padding: 8px 12px;&#xA;        border-bottom: 1px solid rgba(255, 255, 255, 0.1);&#xA;        font-size: 0.8rem;&#xA;        color: rgba(255, 255, 255, 0.7);&#xA;    }&#xA;    .codeblock-icon {&#xA;        align-items: center;&#xA;        width: 14px;&#xA;        height: 14px;&#xA;        flex-shrink: 0;&#xA;        opacity: 0.85;&#xA;        fill: rgba(255, 255, 255, 0.7);&#xA;    }&#xA;    .codeblock-copybtn {&#xA;        position: absolute;&#xA;        top: 0px;&#xA;        right: 0px;&#xA;        background: transparent;&#xA;        color: rgba(255, 255, 255, 0.5);&#xA;        cursor: pointer;&#xA;    }&#xA;    .codeblock-copybtn:hover {&#xA;        color: rgba(255, 255, 255, 0.9);&#xA;        background: rgba(255, 255, 255, 0.08);&#xA;    }&#xA;    .codeblock-copybtn-icon {&#xA;        margin-right: 4px;&#xA;    }&#xA;&lt;/style&gt;&#xA;&#xA;&lt;div class=&#34;codeblock&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;codeblock-body&#34;&gt;&#xA;        &lt;button class=&#34;codeblock-copybtn&#34;&gt;&#xA;            &lt;span class=&#34;codeblock-copybtn-icon&#34;&gt;&#xA;                &lt;svg&#xA;                    xmlns=&#34;http://www.w3.org/2000/svg&#34;&#xA;                    fill=&#34;none&#34;&#xA;                    viewBox=&#34;0 0 24 24&#34;&#xA;                    stroke-width=&#34;1.5&#34;&#xA;                    stroke=&#34;currentColor&#34;&#xA;                    width=&#34;16&#34;&#xA;                &gt;&#xA;                    &lt;path&#xA;                        stroke-linecap=&#34;round&#34;&#xA;                        stroke-linejoin=&#34;round&#34;&#xA;                        d=&#34;M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184&#34;&#xA;                    /&gt;&#xA;                &lt;/svg&gt;&#xA;            &lt;/span&gt;&#xA;            &lt;span class=&#34;codeblock-copybtn-label&#34;&gt;copy&lt;/span&gt;&#xA;        &lt;/button&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-caddyfile&#34; data-lang=&#34;caddyfile&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;catinashell.de {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/var/www/blog/public&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;file_server&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;this is a pretty basic working example, you generate the content via &lt;code&gt;hugo&lt;/code&gt; inside &lt;code&gt;/var/www/blog&lt;/code&gt;, move ownership to caddy &lt;code&gt;chown -R caddy:caddy /var/www/blog&lt;/code&gt; and done.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
