Self-Hosting Your Podcast For Fun and Profit

When I started the Anglotopia Podcast back in 2018, we followed the advice from our research that told us to get good podcast hosting. Many people recommended LibSyn to us, so that’s what we went with.

What they don’t tell you, though, is that when you start hosting a podcast, you have to pay for that hosting forever, or the podcast dies.

I’ve been paying a monthly fee to LibSyn for all that time – and that included when we had years-long hiatuses between episodes. That cost a lot of money! If you cancel the service, your podcast disappears from the internet, and thus from all the apps where people subscribed to it. It’s a sort of ransom I don’t really appreciate.

First, let me say that I don’t have any issue with LibSyn, they provided a wonderful service. But I had a realization a few months ago. Anglotopia (and Londontopia) requires robust, dedicated hosting. In fact, we have our own dedicated server in a data center to run all of Anglotopia’s websites. This server is rarely at capacity, except when there are traffic spikes. So, that got me thinking, if I have this server over here with unused capacity, couldn’t I just use that to host my podcast?

The answer is absolutely yes, but there are some caveats that you need to think of.

Forwarding Your Feed

The first thing you need to think about is forwarding your podcast’s RSS feed. The fundamental thing that makes a podcast a podcast is its RSS feed. It’s what all the podcast apps use to parse podcast feeds. If the address for your podcast ever changes, it will break your podcast, and you will disappear from all the podcasting apps and directories. So, it’s super important that when your feed changes, like if you’re switching hosting, that you have forwarding set up for your original podcast feed. Thankfully, LibSyn supports this and will forward your podcast feed. However, they will only forward it as long as you continue to pay them. Most podcast networks and apps will update the feed within a few days. We paid for forwarding for a few months until we were sure that all downloads were coming from our new hosting.

Traffic and Data Storage

Podcast MP3 files take up a lot of space; an hour of spoken word content takes about 100mb. So, make sure you will have enough storage to store your entire podcast and future episodes. Your server will need a lot of space, or you’ll have to use a third-party for storage like Amazon S3 or Backblaze B2. I have a 1 TB server, so space isn’t an issue for me right now. But in a few years, it could be. If you’re hosting your own video Podcast (which I don’t think I’d recommend), you’ll be filling server space much faster!

Software

There are several WordPress plugins that let you host the podcast yourself (there are also podcast hosting PHP scripts you can install for free). I opted to use WordPress since it’s easy to customize and has a lot of the functionality hosting a feed needs already built in. I chose to use Seriously Simple Podcasting by Castos to manage the podcast on my WordPress backend. They have their own service they’re trying to sell, but the free version of their plugin does everything you will need it to do. They will even import your existing feed content (more on this later). They also have their own basic stats plugin to keep track of how your podcast is doing (downloads are your key metric if you didn’t already know that). It also has a player built-in.

On the front-end side, I purchased a premium theme called Podcasty from Envato, and customized it to my needs, which created a slick website for the podcast. My biggest complaint about LibSyn was that they’re website builder was just terrible, stuck in 2003. With this, I now have a fully functional website dedicated to the podcast (so it’s not lost in the shuffle on my main website). You can interact with the podcast, listen to the podcast right on the site, and also link to all the places it can be listened to, which is everywhere.

Losing Old Data and Analytics

You’re not going to want to lose all your existing analytics data; you will need this if you’re trying to sell sponsorships. But as soon as you cancel your podcast hosting account, you will lose this data. Thankfully, Libsyn has a data export function that dumps all its data into CSV files. You can do lots of things with this data. I had Claude AI parse the data into a report that I can reference whenever I need to.

The stats that Castos collects are different, but it’s also not as fully featured as the other podcast services. This annoyed me, so I had Claude AI write me some custom plugins that give me more of the data I needed, but also put key Podcast Stats on my WordPress Dashboard. I may release these plugins at some point, but I don’t really plan to be a plugin developer or have to support them. All I’ll say on the matter is that if you need these functions, Claude will code them for you.

Hiccups in the transition

There were a couple of hiccups in transition. One, there were a few ghost downloads from Podcast services that hadn’t updated their feeds. Unfortunately, I never figured out where, and by the time I cancelled, they had trickled to a few a month. There will be some attrition in a move like this. I could handle that.

The only thing that didn’t go smoothly was that, first, I forgot to change the default feed item limit in WordPress from 10 posts. This meant only 10 episodes of my podcast were available when all the feeds updated. That was an easy fix, I upped the number to like 1000 and all the feeds updated (which created an artificial bump in episode downloads as everyone’s app caught up.

Another minor problem was that when Castos imported the old episodes of the podcast, it didn’t actually import the podcast episode MP3 files. It continued to link to the LibSyn links, which were going to break eventually. So, before I cancelled LibSyn, I had to update all the file links to my own links. This was time-consuming and required an extra step.

Downloading all your Episodes

Since Castos didn’t import all the episodes, I needed to have all the files in one place. I have good file organization, but tracking down 60+ MP3 files on my computer was going to take unnecessary time. So, I built a simple tool that parses an RSS feed and gives you a single download file with all the MP3 files.

Then, all I had to do was upload them all at once to the website media library, and then go into each episode and manually update it. It only took about an hour to do it.

I find a tool that lets you download every episode of a podcast at once pretty useful, so I may release it as a micro-SaaS product in due course once I figure out the business model.

Watch out for server abuse

Hosting your podcast also opens up your server for abuse, so I would recommend keeping the server and your domains for the podcast behind Cloudflare, so you can let them deal with the abuse, rather than your server. It’s important for your server and thus podcast to have good uptime, because there will, quite literally, be requests to download episodes at all hours of the day at any time. The last thing you want is someone’s podcasting app telling them your podcast is broken.

Setting Up a Private Feed

About 18 months ago, we launched a membership club for Anglotopia using the Memberful platform. It’s been a success. One of the features was the ability to have a private podcast where we can share early episodes and special episodes not part of the main feed. So, to accommodate this, I set up a ‘secret’ podcast website that duplicated my podcast and created a private feed that’s only accessible to members. The Castos plugin did this perfectly as well. So, technically, I now have to maintain two self-hosted podcasts, but since they’re using the same software, on the same server, it only adds a few extra steps to my podcast release workflow. Memberful creates the private RSS feeds that switch on/off for members, but I host it.

If you have questions or suggestions about hosting your own podcast, leave a comment below!

Rolling Your Own Link Shortener With the .IM Domain and Automating it With WordPress Jetpack

Link shorteners were very in vogue in the early 2010s but they seem to have fallen out of favor somewhat since most social networks now automatically shorten links (and don’t count links against your character count) and popular networks like Instagram don’t really even allow links at all. Bitly was the elephant in the room for link shortening and they do offer a white-label service. But it’s expensive. A link shortener is a ‘nice to have’ for a business but frankly, it’s not worth paying $29 a month.

As always, I was keen to find my own solution, to fit my own specific needs, and pay as little as possible for it.

At the most fundamental level, a link shortener takes a long link, and shortens it and redirects it to the long link when it’s clicked. It’s basically a fancy .htaccess redirect script.

Jealous of my boss’s very, very short link shortener (mj.ie). I set out to have my own for my business brand, Anglotopia.

I tried lots and lots of combinations. I wanted the shortest version possible that had at least the word ‘anglo’ in it. The problem was that since it’s a common word, there wasn’t a lot of TLD’s still available using anglo. Eventually, I settled on Anglo.top. It seemed ideal as it had most of my company name in it and it was still relatively short. I registered it and then set up a link shortener. I was informed shortly after that .TOP is actually not a very good domain to use for something like this – because it’s has a heavy association with SPAMMERS – so if you use the links in email or social media, it is more likely to get blocked or filtered out.

So, back to the drawing board.

After some digging, I found that anglo.im was available directly from the Isle of Man Domain Registry (but strangely not through my register of choice these days – Blacknight). It was a bit pricey – £40 a year – but that was still cheap enough to be useful for this project. I could also use it for other things. Short domains are great! And versatile – I may even use it for email one day. I was able to secure ‘anglo.im.’

So, how do you go about setting up a link shortener?

First, you need a server. Any Linux server will do. I happen to have my own dedicated server with Blacknight, so I can put whatever I want on it. I used Softaculous to install YOURLS in seconds, which is an open-source PHP URL shortener. While the tool is pretty basic, with a very dated interface, it works really, really well. It makes the links and tracks the links so you can get stats on how many times something was clicked.

You can set up bookmarklets and Google Chrome extensions to make short links without even having to log in to the service because it has a handy little API.

I’m a fan of automation. With a full-time job and a side-business that takes a lot of spare time, I really didn’t want to have another thing to do – that being creating short links every time I publish or share something. Thankfully, YOURLS integrates easily with WordPress. If you install the BetterYOURLS plugin, you can then automatically create a short link when you publish a post (and customize it if you wish).

When I publish an article on Anglotopia or Londontopia, it’s automatically shared to Twitter and Facebook, so I wanted the links that were shared there to also be the short link. This proved a bit trickier. But I found a workaround.

How to use YOURLS with Jetpack URL Shortener

  1. Download and install Jetpack
  2. Enable the Jetpack URL shortener under the sharing settings.
  3. Install BetterYOURLS, activate and setup with your API key
  4. Then, this is the key part, now go to Jetpack and then deactivate the Jetpack URL shortener
  5. Then, when you publish an article it’ll use your own custom short URL on Twitter and Facebook. If you don’t do this, it won’t work. It took me a few hours to work this out…

Initially, I ran into issues that when these posts were published to Facebook or Twitter, it was not pulling the right Open Graph image, or none at all and when you tried to ‘refresh share attachment’ on Facebook, it still wouldn’t work. I never found a solution to this problem, but a while ago the problem seemed to fix itself.

So, for minimal investment – just £40 (about $50), I was able to set up my own branded URL shortener for all my links that I publish and when people share links from Anglotopia, it uses the short links as well. There’s really no reason to do this, other than to have another way to be branded on the internet. But as we know, links are the currency of the internet and if they’re something you can control, you absolutely should.

I also recently registered jwt.im, which are my initials, to have the shortest possible URL for when I share links personally or on this personal blog. It’s not 4 letters, but five is close enough! I also found this really short domain useful for setting up a 1 letter email address for registering for things quickly or logging into accounts on smart tv’s – a painful process when you have to type in a long email address.