<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Caddy on Cat in a Shell</title>
		<link>https://catinashell.de/tags/caddy/</link>
		<description>Recent content in Caddy 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/caddy/index.xml" rel="self" type="application/rss+xml" />
			<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>
