<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>S3 on Mad Blog</title><link>/tags/s3/</link><description>Recent content in S3 on Mad Blog</description><generator>Hugo -- gohugo.io</generator><language>en-gb</language><managingEditor>madking.direct@gmail.com (Mad King)</managingEditor><webMaster>madking.direct@gmail.com (Mad King)</webMaster><lastBuildDate>Sun, 22 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="/tags/s3/index.xml" rel="self" type="application/rss+xml"/><item><title>Setting Up a Hugo Blog on AWS S3 with Custom Domain</title><link>/posts/setting-up-s3-web-server/</link><pubDate>Sun, 22 Feb 2026 00:00:00 +0000</pubDate><author>madking.direct@gmail.com (Mad King)</author><guid>/posts/setting-up-s3-web-server/</guid><description>&lt;p&gt;This guide walks through setting up a Hugo blog on AWS S3 with a custom domain — perfect for your personal blog or portfolio.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s the pipeline we&amp;rsquo;ll set up:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Markdown → Hugo Build → S3 Static Host → CloudFront CDN → blog.example.com
&lt;/code&gt;&lt;/pre&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hugo&lt;/strong&gt; generates static HTML from markdown&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S3&lt;/strong&gt; hosts the files as a static website&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CloudFront&lt;/strong&gt; provides caching, HTTPS, and better performance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ionos DNS&lt;/strong&gt; routes your subdomain to CloudFront&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hugo installed&lt;/li&gt;
&lt;li&gt;AWS account with access to S3 and CloudFront&lt;/li&gt;
&lt;li&gt;Domain/subdomain in Ionos (e.g., &lt;code&gt;blog.example.com&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="step-1-build-your-hugo-site"&gt;Step 1: Build Your Hugo Site&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /workspace/hugo-blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo --minify
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This generates a &lt;code&gt;public/&lt;/code&gt; directory with all static files.&lt;/p&gt;</description></item></channel></rss>