How to deploy your site and episodes
Deploying your site
You can deploy your podcast site — along with its feed — the same way you would host any Eleventy site — using either a Jamstack provider linked to your source control repository or a classic web host that allows you to upload the contents of your output directory.
Where to store your episodes online
Audio files can get big, and a long-running podcast will consist of quite a few of them, so you should probably host your episode files separately from your website. You can do this by using a service that provides S3-compatible object storage — a kind of online bucket where you can put a number of media files, which can be served from various points across the network.
There are many S3-compatible object storage services, including Digital Ocean Spaces, Linode Object Storage, Backblaze B2 Cloud Storage and Cloudflare R2. (Or even Amazon S3 itself, if you have a lot of money lying around.)
Your storage service will assign URLs to each of your podcast episodes: you will tell Podcaster about these URLs by specifying the base URL of your episodes as podcast.episodeUrlBase, like this:
podcast.json
{
"title": "Untitled Star Trek Project",
"siteUrl": "https://untitledstartrekproject.com",
"description": "A random Star Trek commentary podcast. With Joe and Nathan.",
"language": "en-GB",
"category": "TV & Film",
"author": "Joe and Nathan",
+ "episodeUrlBase": "https://ustp.example-cdn.com"
}
You will specify the filename for each individual episode as episode.filename.
Deploying your episodes
To deploy your episodes to your CDN host, you can write a script using rclone, rsync or s3cmd, depending on your setup. rclone is particularly quick and versatile for this purpose.
Here’s the script that I use to deploy the episodes for one of my podcasts to a DigitalOcean Space.
rclone sync episodes/ digitalocean:ustp -P
Tip
The -P flag in that script gets rclone to print out detailed and helpful
information about its progress.
How will your host know about your episode files?
If your site is being built on a machine that doesn’t have access to your episode audio files, Podcaster won’t be able to work out those files’ sizes, durations or filenames for you. Or will it?
There are two ways to give Podcaster the information it needs:
- Give Podcaster access to your S3 storage. That way, it can go to the S3 bucket and get the information from there.
- First build your site locally, giving Podcaster access to your episode files in the
episode-filesdirectory. When Podcaster builds the site, it will store its results in a file calledcachedEpisodeData.jsonin your project’s source directory. Commit that file to your repostory or upload it to the remote machine that’s building your site, and Podcaster will use it to work out the files’ sizes, durations and filenames.