<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Static Site on Raghunath Gopinath</title>
    <link>https://raghu.io/tags/static-site/</link>
    <description>Recent content in Static Site on Raghunath Gopinath</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 08 Aug 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://raghu.io/tags/static-site/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Migration from Ghost to Zola SSG</title>
      <link>https://raghu.io/migration-from-ghost-to-zola-ssg/</link>
      <pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://raghu.io/migration-from-ghost-to-zola-ssg/</guid>
      <description>Notes from migrating a site from Ghost to a static site generator, including lessons learned and things to check before moving.</description>
      <content:encoded><![CDATA[<h1 id="overview">Overview</h1>
<p>This post is to provide an idea about what all things needed to be taken
care while migrating from Ghost CMS to Zola SSG, what to expect</p>
<blockquote>
<p>Note: Based on my current requirements, hugo seems best match for me.</p>
</blockquote>
<h1 id="about-my-usage">About my usage</h1>
<p>Over time, managing updates, security, and backups for various platforms
became a significant overhead. I want a simpler approach with a minimal
maintenance efforts.</p>
<p>As part of it, I have been experimenting static site generators (SSG)
from a couple of years, started with Hugo. Lately, came across zola,
which meets most of my requirements and is more stable.</p>
<p>After trying out the different platforms my requirements do have changed
for personal blogs.</p>
<ul>
<li>Ability to focus more on content writing</li>
<li>It should be done quickly with less overhead.</li>
<li>Stability</li>
<li>Minimal Maintenance</li>
<li>less coding :)</li>
<li>Using own domain</li>
</ul>
<p>Additionally, finding the right theme, choosing the hosting platform and
also it should be under budjet.</p>
<h1 id="why-zola-ssg">Why Zola SSG?</h1>
<p>Earlier my security blog was hosted on the Ghost platform (Self Hosted),
where i didn&rsquo;t have much touble with Ghost, rarely i get any issues
related to platform itself. It was easily upgradable and can take
backups quickly. I also have an automation script in place which will do
the job for me in frequent intervals.</p>
<p>The difficulty in finding a theme that perfectly matched my needs
prompted me to explore other options.</p>
<p>As, i write most of my notes in org-mode, markdown for reporting
purposes, which convinced me to move to Zola as it uses Markdown. Hugo
was also an option, as it even allows me to write the posts in org-mode
file format. The content structure, configuration, and deployment were
so easy to follow in Zola.</p>
<p>This post was intially written in Markdown and built with Zola, deployed
on Cloudflare pages. Currently i moved to <strong>Hugo</strong> with <strong>Org-Mode</strong> and
still deployed on Cloudflare Pages.</p>
<h1 id="migration-process">Migration Process</h1>
<p>&gt; If you are starting from scratch, you can skip the below section.</p>
<p>After exploring over the net for some time, found a few old projects
which have been written for ghost to Zola migration. Later realized
that, those were written for older version of ghost platform.</p>
<ul>
<li>Found this one <a href="https://github.com/yesjinu/ghost-to-md/">ghost-to-md</a>,
which is close to my needs. It helps in converting the ghost exported
content i.e. <strong>JSON</strong> to <strong>Markdown</strong>. With a minor tweak to
the output template, allowed me to complete the conversion
successfully.</li>
</ul>
<p>Example:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kd">func</span><span class="w"> </span><span class="nf">mdFormat</span><span class="p">()</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="s">`+++
</span></span></span><span class="line"><span class="cl"><span class="s">title = &#34;%s&#34;
</span></span></span><span class="line"><span class="cl"><span class="s">slug = &#34;%s&#34;
</span></span></span><span class="line"><span class="cl"><span class="s">date = %s
</span></span></span><span class="line"><span class="cl"><span class="s">updated = %s
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s">[extra]
</span></span></span><span class="line"><span class="cl"><span class="s">social_media_card = &#34;%s&#34;
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s">+++
</span></span></span><span class="line"><span class="cl"><span class="s">%s
</span></span></span><span class="line"><span class="cl"><span class="s">`</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span></code></pre></div><ul>
<li>
<p>Next, I copied all the `images` folder from ghost content directory
directly into the Zola `static` directory and updated the image
paths in the Markdown files accordingly.</p>
</li>
<li>
<p>Later, I used <strong>search and replace</strong> and added few of the following:</p>
<ul>
<li>Updated broken URL&rsquo;s, bookmarks and references</li>
<li>Updated post&rsquo;s metadata</li>
<li>Added `draft = true` to tag draft posts.</li>
<li>Missing Tags</li>
</ul>
</li>
<li>
<p>Using the GitHub, finally deployed all the content onto Cloudflare
pages.</p>
</li>
</ul>
<h1 id="conclusion">Conclusion</h1>
<p>Overall, migrating to Zola has been a positive experience so far. It&rsquo;s
given me a lot more control over my blog and simplified my workflow
considerably. While there were some hiccups along the way, but i was
able to get it work. I wouldn&rsquo;t necessarily recommend my exact migration
process to everyone, as it was tailored to my specific setup. But if
you&rsquo;re feeling overwhelmed by any CMS or looking for a more minimalist
approach, I&rsquo;d definitely encourage you to explore Zola. For me, it seemd
to be a good fit, and will provide an update after using it for a while
longer.</p>
<h1 id="updates">Updates:</h1>
<h2 id="2025-08-08">2025-08-08</h2>
<ul>
<li>The subscription managment, Analytics feature seemed to be much needed
for my usecases. It became challenging with integrations and need to
move back to Ghost again.</li>
<li>Themes for Zola is growing. Currently, i spent good amount of time in
tweaking it to match my preferences. Which i felt like its more
efforts than on focusing on content.</li>
<li>Overall Zola SSG is still good for minimal and markdown friendly
users.</li>
</ul>
<h2 id="2025-08-12">2025-08-12</h2>
<ul>
<li>The following posts are hosted on hugo using the emacs org-mode.</li>
</ul>
<h2 id="2026-02-01">2026-02-01</h2>
<ul>
<li>Based on my requirements, the hugo seems to be better option.
Therefore migrated the portal to hugo.</li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
