December 22, 2023
PupperPost Now Supports Custom Domains

One of the biggest challenges in implementing PupperPost has been the concept of custom domains. By default, your PupperPost blog will be hosted at yourname.pupper.blog. But maybe you’re not interested in your blog being tied to dogs? To make your blog truly your own, you should be able to point your own domain to your hosted blog.

That’s not just my crazy idea: as a part of the open web, I believe strongly in the concept of owning your content, on your own domain. Ultimately, if you want to move away from PupperPost, you should be able to take your content with you, and point the domain to another host!

Content export is still coming, but today, you can now point your own domain to your blog. Here’s a quick overview of how it works.

1. You must be subscribed, as custom domains are restricted to paid accounts. If you’re on the beta test, subscriptions are free, so feel free to try it out!

2. Visit your blog settings, where you can add the domain for your blog. Enter a domain name and hit Save. PupperPost blog settings 3. Update your domain to point to PupperPost! This is the hard part: visit your domain’s DNS settings, and create a new CNAME record. Enter your domain name, and point it to the existing domain for your blog. For my account, I point to aaron-vegh.pupper.blog. Substitute your own blog domain value.

That’s it! You can now visit your own blog at your domain. If you have any problems, let me know!

It was hard

So this turned out to be really complicated! I’ve been building web applications for a long time, but this is the first time I’ve had to figure out an easy way to support… like, any domain? With a valid TLS certificate?

The answer came in the form of a fairly recent HTTP server called Caddy. Oh, thank goodness for Caddy! It very simply handles everything I was previously using nginx for, including acting as a reverse proxy (handling all incoming network requests, and forwarding to my application servers). But Caddy’s superpower is automatic TLS. For any domain you explicitly specify in the configuration, Caddy will talk to Let’s Encrypt, and just handle the certificate. And it’ll renew them too!

I knew about all that, but there’s another feature that I just learned about, and that totally blew my damn mind. Turns out, Caddy has a feature called on-demand TLS, and it does exactly what you think: even without specifying an explicit domain in the configuration, it’ll perform the same TLS magic!

Once that piece of the puzzle fell into place, I knew I could implement custom domains for PupperPost! And I couldn’t be more happy.

PupperPost remains in public beta, including this feature! I’m always looking for more users and more feedback. Head over to the PupperPost site to sign up. Thanks for reading!

Brought to you by PupperPost
   RSS | JSON