<?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>Ghost on Geoff Corey&#39;s Blog</title>
    <link>https://blog.geoffcorey.com/tags/ghost/</link>
    <description>Recent content in Ghost on Geoff Corey&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sun, 05 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.geoffcorey.com/tags/ghost/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Migrating from Ghost to Hugo using Claude</title>
      <link>https://blog.geoffcorey.com/posts/migrating-from-ghost-to-hugo-using-claude/</link>
      <pubDate>Sun, 05 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.geoffcorey.com/posts/migrating-from-ghost-to-hugo-using-claude/</guid>
      <description>&lt;p&gt;Decided to move my blogs from Ghost to using Hugo and generate a static website
for the content. The reason for this was I don&amp;rsquo;t use all the fancy features of
Ghost. I don&amp;rsquo;t do newsletters and Ghost requires an email account if people
want to sign up for notifications. Plus I have to run a database for the content.&lt;/p&gt;
&lt;p&gt;I started with creating an new directory and fired up Claude and started with
this initial prompt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup a Self-Hosted Ghost Blog with Docker and Caddy</title>
      <link>https://blog.geoffcorey.com/posts/setup-a-self-hosted-ghost-blog-with-docker-and-caddy/</link>
      <pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.geoffcorey.com/posts/setup-a-self-hosted-ghost-blog-with-docker-and-caddy/</guid>
      <description>&lt;p&gt;Ghost blogging platform offers simplicity, but email configuration presents challenges. This guide demonstrates deploying Ghost via docker-compose with Caddy as a reverse proxy.&lt;/p&gt;
&lt;h2 id=&#34;core-setup&#34;&gt;Core Setup&lt;/h2&gt;
&lt;p&gt;The Ghost documentation provides foundational installation steps. Caddy can handle wildcard domain certificates through Let&amp;rsquo;s Encrypt for HTTPS security.&lt;/p&gt;
&lt;h2 id=&#34;email-configuration-options&#34;&gt;Email Configuration Options&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Transactional Emails&lt;/strong&gt; (signup/subscriptions):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mailtrap free tier maintains your domain reputation&lt;/li&gt;
&lt;li&gt;Gmail alternative available if you accept third-party domain indicators&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Newsletters&lt;/strong&gt; (bulk messages):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mailgun offers a free tier suitable for low-volume blogs&lt;/li&gt;
&lt;li&gt;Configuration requires editing &lt;code&gt;config.production.json&lt;/code&gt; with SMTP credentials&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;gmail-smtp-configuration&#34;&gt;Gmail SMTP Configuration&lt;/h2&gt;
&lt;p&gt;Generate a dedicated app password via Google Account security settings, then configure Ghost with these credentials in the mail section of your production configuration file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Caddy, Wildcard Certs and Ghost</title>
      <link>https://blog.geoffcorey.com/posts/caddy-wildcard-certs-and-ghost/</link>
      <pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.geoffcorey.com/posts/caddy-wildcard-certs-and-ghost/</guid>
      <description>&lt;h2 id=&#34;the-problem&#34;&gt;The Problem&lt;/h2&gt;
&lt;p&gt;Hosting multiple applications on subdomains requires a strategy for SSL certificates. The specific example involves deploying Ghost blogging software to &lt;code&gt;blog.geoffcorey.com&lt;/code&gt; while redirecting the root domain to this subdomain. The setup uses wildcard Let&amp;rsquo;s Encrypt certificates to avoid generating separate certificates for each subdomain.&lt;/p&gt;
&lt;h2 id=&#34;cloudflare-api-token&#34;&gt;Cloudflare API Token&lt;/h2&gt;
&lt;p&gt;DNS configuration requires Cloudflare. The &lt;a href=&#34;https://github.com/caddybuilds/caddy-cloudflare&#34;&gt;CaddyBuilds/caddy-cloudflare&lt;/a&gt; Docker image provides DNS challenge support for obtaining wildcard certificates.&lt;/p&gt;
&lt;h2 id=&#34;setup-docker-compose--caddy-configuration&#34;&gt;Setup: Docker Compose &amp;amp; Caddy Configuration&lt;/h2&gt;
&lt;h3 id=&#34;docker-composeyml&#34;&gt;docker-compose.yml&lt;/h3&gt;
&lt;p&gt;The configuration includes three services:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
