How We Do It: Self-Hosting a Podcast with Podtrificus Totalus

As a companion piece to my prior post on how we prepare for, record, and edit my Harry Potter podcast Podtrificus Totalus, I wanted to provide a write up on how we host and distribute the show too. My hope is that this will be helpful to a beginner looking to go live with their show or to someone looking to get away from the “big” podcast hosts like Libsyn, Blubrry, Podbean, etc. Instead, I’ll describe a self-hosted approach that combines WordPress, PowerPress, Amazon S3, and S3Stat.

The Argument for Self-Hosting

Those who have done a bit of research into the podcast hosting world are aware of all-in-one services like Libsyn. Libsyn will host your podcast media and even offer a barebones but functional website for you. It’s important to me, however, that I am in full control of my content, that I own my feed, and I can post whatever I want without restriction. If Libsyn goes down, a user has to go out and find a new host; most established providers make that a fairly easy process, but it’s still a headache most wouldn’t want to deal with. Likewise, many podcast hosts set restrictions on your uploads and functionality unless you pony up for their expensive plans. Let’s take a look at Blubrry’s plans, for example.

Blubrry’s podcast hosting plans as of 02/18/2021.

Take a look at that first bullet point on the Small plan: 100MB of monthly storage. I distribute my podcast episodes as 96kbps CBR mono MP3s. If I really wanted to, I could probably kick down that bit rate, but I don’t want to. I’ve published three episodes so far in the month of February, each around the one hour mark in run time (give or take — some shorter, some longer). They clocked in at 48.1MB, 57.1MB, and 26.7MB, meaning I’ve already passed the limits of Blubrry’s small plan. I release weekly episodes, so as long as I keep my runtimes under control, the Medium plan would probably be fine for me, which clocks in at $20/mo.

Looking at Libsyn’s offerings, they similarly offer 250MB per month for $15/mo, but charge an additional $2/mo on top of that for the ability to use your own domain name — meaning your website and RSS feed will be found at yourpodcastname.libsyn.com, not yourpodcastname.com. That might not seem like a big deal to you at first, but imagine you spend five years building your audience and directing them to yourpodcastname.libsyn.com — then, suddenly, Libsyn hikes up their prices, you move services, and suddenly, your listeners can’t find your website anymore, because it doesn’t exist at yourpodcastname.libsyn.com anymore.

Podbean offers unlimited storage and bandwidth on their cheapest paid plan ($9/mo), but their included website offering is pretty limited. They do however allow you to use your own domain name for no additional cost. Buzzsprout has unlimited storage, but they limit you to three hours of audio per month on their $12/mo plan. Anchor is of course attractive in that they offer unlimited storage and uploads for free on top of connecting you with monetization opportunities, and I have a lot more confidence in their longevity now that Spotify owns them. Still, I’ve been burned by way too many free services suddenly shutting down because they can’t keep the lights on or severely limiting their free plans to get people to pony up money (ahem every Google product eventually).

I could go on and on comparing services; there are detailed write ups out there that pit these services against one another, and I want to be clear in saying that I don’t think these services are bad by any means. They make starting up a podcast very easy, and I often recommend that folks start with Anchor and podcast for a few months there to make sure they’re serious before investing any serious money. But I want the option to record and post a 15 hour episode whenever I want and not have to worry about whether that’s permissible under my plan — especially when I can make my own plan for much cheaper than what the podcast hosts have to offer. I want my data to be independent. I want to direct my listeners to podtrificustotalus.com, because I own that domain and will always be able to control what they see on that page.


Part One: The Website

The first and most important decision I made when setting up the online presence for my podcast was to use WordPress for my website’s backend. I’ve been tinkering around with WordPress for years now — I think my first forays with it were in 2010 or 2011, around the early 3.x release branch. WordPress has obviously evolved quite a bit since then, and I think it strikes a fantastic balance of being beginner friendly enough for someone who has never made a website before while also offering flexibility for those who don’t mind getting their hands dirty, like me. I did briefly considering going the Jekyll + Octopod route, but I like the familiarity of WordPress, and development of Octopod has since been abandoned.

It is important to note the distinction between the two variants of WordPress. WordPress itself is a content management software (CMS) that is free and open source, commonly used to power blog-style websites (though it is certainly not limited to that). Anyone can download WordPress for free from WordPress.org, then install it and set it up on their web host of choice (though many web hosts offer automated installers these days too). WordPress’s parent company, Automattic, also has a WordPress hosting service called WordPress.com, which offers both free and paid WordPress sites. These plans have limitations on them unless you get into the higher price tiers, and while they may be a good option for some beginners, I do not recommend them for the means of this guide.

But why not use a website builder like Squarespace or Wix?

Squarespace and Wix are, like the podcast hosts I’ve previously discussed, great options for some people. The process of setting up a website through them is arguably much easier than doing it with WordPress (though WordPress isn’t too hard). The problem is that you are then locked into using Squarespace or Wix. So if Squarespace suddenly raises their prices or decides they don’t want to do business with you or their service otherwise goes down the toilet, you can’t bring your Squarespace website to another host. You have to start over and recreate your website elsewhere. With WordPress, even if your host shuts down, you can pick up and move your WordPress site wherever you want with relative ease.

So with a CMS selected, the next step is finding a host. I’ve bounced around a fair amount over the years; PodtrificusTotalus.com started on a Vultr server managed by ServerPilot, then an OpenLiteSpeed server on Digital Ocean. Those were my dives into Linux server administration, which I found fun and valuable experiences, but it can be a real headache, too. Services like Vultr and Digital Ocean offer a lot for a little (I was paying $2.50/mo then $5/mo respectively), but they are unmanaged. You’re responsible for setting up, securing, and maintaining the server yourself, and while services like ServerPilot or Runcloud can automate a lot of that for you, it’s more time and effort than most people want to invest.

Now that I’m working full-time, I wanted to shift things over and pay someone else to do that work for me. In November, I took advantage of Veerotech‘s Cyber Monday sale (on the recommendation of /r/webhosting) and moved both this site and my podcast site over to their Startup Shared Hosting plan, which is typically ~$10/mo when billed monthly, though I pay less with a coupon. So far, I’ve been pleased with their offerings and, especially, their support team; they performed the site migrations for me and have been super fast in responding to the tickets I’ve opened. I wholeheartedly recommend them to anyone new or old to web hosting. For the newbies, though, they do offer automated WordPress installation through Softaculous if you don’t want to do it yourself. I host both this website and Podtrificus Totalus on that shared hosting plan with no issue — they’re not exactly high traffic sites, and I can easily move up to one of their beefier plans down the line. Another benefit of a managed webhost like Veerotech is they offer email hosting (which can be a nightmare on a self-managed plan), so I point my listeners to [email protected], not [email protected].

A word of caution: while just about any web host will do when starting up your podcast website, stay away from any EIG-owned web hosts. That includes GoDaddy, HostGator, Bluehost, etc. See a full list of EIG-owned companies and an explanation of why they’re terrible here.

Lastly, you’ll of course want a domain name for your website (like yourpodcast.com). In my case, it wasn’t hard to secure a .com name for mine, since no one else out there is using the name Podtrificus Totalus. If you’re having difficulty coming up with a domain for your show, though, I like Domainr’s search tool, though I’d caution against selecting a name for your show that is already in use or is too common. You want your listeners to be able to find you easily through a Google search! Web hosts like Veerotech will often offer a domain name with a web hosting plan (sometimes for free, sometimes for an additional cost), but I highly recommend purchasing your domain through a separate service like Google Domains or Porkbun. That way, if your relationship ever goes sour with your web host, they can’t hold your website hostage.

So, if you scrolled past everything I just said, here’s the summary so far:

  • Find a web hosting plan through a reputable provider. I use Veerotech.
  • Purchase a domain name (yourwebsite.com) through a separate provider. I use Google Domains.
  • Install WordPress on your web hosting plan

Making it a Podcast Website

Okay, so that’s a website host, a software picked out and installed, and a domain name. Now how do we repurpose WordPress for hosting a podcast-oriented website? WordPress does offer a lot of flexibility, but out of the box, it still looks like a blog for the most part.

Here’s where WordPress really shines: because it’s so popular, there are thousands of great themes out there that can transform the look and feel of your website. On WordPress.org alone, there are several themes designed specifically for podcasters, and really, many themes can simply be repurposed for a podcast. I opted to create a custom theme for my podcast’s website using the Underscores base theme, though I’m currently rebuilding it on JointsWP as I teach myself SASS.

A screenshot of the homepage for Podtrificus Totalus.

You can spend hours tinkering with themes and switching them up — that’s up to your design sensibilities and how you want to brand your podcast. I try to adapt a “keep it simple” approach — find something you’re happy with then move on. You can always switch it up later.

The last piece in the WordPress puzzle is PowerPress, a plugin by Blubrry, one of the biggest and oldest podcast hosts in the game. PowerPress basically latches onto your WordPress install and adds functionality specifically for podcasting, like RSS feed generation, basic statistics, and migration if you’re currently using a different podcast host.

Once installed as a WordPress plugin, PowerPress will walk you through the basics of setting up your show. They have drastically simplified this process since I started with the plugin; it’s really beginner friendly. They’ll take you through basic site identity all the way to submitting to directories like Apple Podcasts and Spotify.

The Get Started page for PowerPress.

After you’ve configured the basics — the name of your show, the description, the art — anytime you make a new post, you can attach a podcast episode by pasting a Media URL (more on that later). The body of your post then becomes your episode’s show notes, and Blubrry publishes that episode to your RSS feed (and therefore, Apple and Spotify and Google Podcasts and so on).

This field appears below the post editor once PowerPress is installed.

PowerPress does offer some basic audio players to go along with your post as well, but I prefer something a little more fully featured. Previously I used the Podigee Player, which I bolted onto WordPress in an admittedly hacky way, but lately I’ve been playing around with the Podlove player, which offers some features Podigee lacks and a WordPress plugin that integrates well with PowerPress.

And that’s really it as far as the website goes. There’s endless customization you can do with WordPress, and I really recommend the tinkering approach: click around. See what you can do. Google things. Chances are, you’re not the first person to want to tweak something in a certain way or the first person to encounter a certain error. You’ll learn a lot very quickly by taking on small projects, and WordPress makes it easy to create something presentable (and prevent you from making any irreparable changes). While PowerPress (and perhaps PodLove Player) are arguably the only plugins you need to make WordPress a podcast site, here are a few others I personally use and would recommend:


Part Two: Hosting Your Media

Okay, so now we have our website all set up and ready to be a podcast. But PowerPress asks for a Media URL to create an episode, and this is where things get a little complicated.

Hosting and distributing media is invisible to consumers but adds up quickly when you crunch the numbers. Let’s say your episode is 50MB, and 100 people download it. That’s a pretty modest audience in the scope of podcasting, but still respectable. That means your host needs to serve 5000MB, or around 5GB (50 x 100). Then let’s say you release an episode every week — in a month with four episodes, that’s 20GB of bandwidth eaten just for those four episodes episodes. Theoretically, new listeners are downloading from your back catalogue too.

Now, most web hosts will offer “unlimited” or “unmetered” bandwidth, so you might think that hosting your media (your episode MP3s) on the same host as your WordPress site is no problem. The thing is, unlimited rarely ever is truly unlimited, and most web hosts have something in their terms of service that restricts you from using them primarily as a file host. Additionally, if your web server is getting slammed with media downloads, your website and RSS feed might slow down or, even worse, be unresponsive, meaning listeners can’t access your show. Best practice is to host your website in one place, then offload your media to a cloud storage provider.

There are a lot of options out there for object storage: Amazon S3 is the big name, along with Google’s offering, Digital Ocean Spaces, Backblaze B2, and so on. Here‘s a good breakdown of some of the more popular providers.

I started out by using Digital Ocean Spaces, which charges $5/mo for 250GB of storage (which would be around 5000 of my average episodes) and 1TB of bandwidth. This was mostly a convenience option, since I was, at the time, also hosting my websites with Digital Ocean. This worked fine for me, but I didn’t have a convenient way of gathering download stats (beyond the free stats that PowerPress provides), and I knew I wasn’t using anywhere near 1TB of transfer per month (spoiler alert: I am not a famous podcaster). So when I moved my websites to Veerotech, I also moved my media to Amazon S3.

S3 is fairly straightforward: you create a storage “bucket,” where you can then upload your MP3s (make sure to set them to public!). They give you a Object URL, which you can then use with PowerPress. When listeners access your RSS feed through their podcast app, S3 serves them the file and charges you a nominal egress (outbound transfer) fee. All of this is fairly invisible to your listener — they’re none the wiser about where the media comes from, though I’m vain and mapped my downloads to a subdomain. So instead of something like…

https://podtrificus.s3.us-east-2.amazonaws.com/prisoner/301OwlPost.mp3

I have a “clean” URL like this:

https://files.podtrificustotalus.com/prisoner/301OwlPost.mp3

It’s a minor and completely unnecessary change, but it gives me some piece of mind: if I ever want to move to something like Wasabi, which charges a base price for storage but has unlimited egress (if my show grows and makes my S3 bills expensive, for example), I can keep the same URL structure, move my files, and not have to manually update all those URLs (although PowerPress offers a great batch update tool for media!).

As for the pricing, it’s really quite reasonable: I’ll offer a detailed cost breakdown for everything at the end of the post, but S3 charges $0.023 per GB of storage, then pennies for transfer per month. Again, if my show ever blows up, I might have to re-evaluate, but for the time being, I’m happy.

A word of caution: check Amazon S3’s pricing calculator before moving your show, particularly if your show is fairly popular. Other services that don’t charge for egress may be more reasonable if this is the case for you. Even if your show is not currently popular, make sure to set billing notifications with S3 in the event your show blows up — that way, you can make a last minute switch and avoid any excessive bills.


Part Three: Statistics

Alright! So now we have a functional website, an RSS feed, and media. We can start up our podcast, go live, distribute it, you name it. We’re ready to go. You can easily stop reading here, but there’s one last piece to the puzzle for me that makes my self-hosted solution comparable to services like Libsyn: stats.

Now, I don’t host my podcast with any delusions of fame or grandeur. I have fun researching, recording, and producing it. It’s a hobby for me. But it can be useful to know that you’re not shouting into the void, and if you ever want to start courting advertisers, they’re going to want to know how many downloads you’re getting per month. PowerPress by default sets you up with Blubrry’s free stats plan, which is better than nothing, but it’s fairly barebones. Enter in S3Stat.

S3Stat offers detailed monthly reporting beyond what S3 itself or Blubrry’s free plan gives you, along with regular summary emails. It’s also some piece of mind for me: those weekly summary emails include an update on your monthly billing, so if I’m suddenly slammed with downloads, I can step in before the costs balloon too much. (I also have a billing alert set up with S3 directly.) It’s super easy to link your S3 account with S3Stat, and after that initial setup, it’s a “set it and forget it” type deal.

Here’s a preview of some stats from S3. You can drill down in much more detail, but this is a good snapshot of how your show (or latest episode) is performing.

Click for full size.

S3Stat ordinarily charges $10/mo for the service, but they generously offer a Cheap Bastard Plan for folks like me that will blog about how much they like the service. While that is part of my motivation in recommending them, I’m genuinely impressed by the service and think it’s well worth the extra cost if you want detailed statistics.


Cost Breakdown (per month)

ServiceCostNotes
Domain Name (Google Domains)$12/yr = $1/mo
Website Hosting (Veerotech Startup Plan)$6.96/moI host both my websites on this plan (this blog and my podcast website). Arguably, I could get by on a cheaper plan if it was just the podcast site.
Media Hosting (Amazon S3)$1.33/mo (forecasted for February 2021)Will vary depending on the size of your files and the popularity of your show
Statistics (S3Stat)Cheap Bastard Plan (free!)Ordinarily $10/mo, but a theoretically optional add-on

All told, come out at $9.29 per month. To return to some of my comparisons early in the post, the cheapest plan with Blubrry that would allow me enough monthly uploads for my weekly show would cost $20/mo; Libsyn’s $15/mo plan would be enough for me, but I would want the $2/mo add-on to use my own domain name, which brings us to $17/mo; Podbean’s $9/mo plan is attractive because it’s unlimited, but I’d want my own, separate website, which would be an added monthly cost.

Now again: these plans have their place for people who want something easy, something simple, something that’s an all-in-one solution. But if you want to maintain independent control, avoid arbitrary limitations, save a few dollars, and get your hands dirty, you can come out ahead.

Have some recommendations for a tool or service that might augment my setup? Sound off in the comments! I’m not an expert, by any means. And if this guide was helpful to you, please let me know!


This post is free from any affiliate links and is not paid or sponsored content. I have disclosed that this blog post will, hopefully, allow me to use S3Stat’s Cheap Bastard Plan, but I receive no other kickbacks or rewards. The thoughts and opinions in this post are entirely my own.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.