Nick Janetakis goes over building a podcast site with Jekyll and Ruby. It's hosted on DigitalOcean and has been up and running since 2019.

In this episode of Running in Production, Nick Janetakis goes over building a
podcast site with Jekyll and Ruby. It’s hosted on a single DigitalOcean server
and has been running in production since October 2019.

Nick talks about what it takes to release an episode, keeping things simple,
developing a custom audio player, hosting a bunch of sites on a single
DigitalOcean server with nginx, using shell scripts to help reduce human errors
and more.

Topics Include

2:06 – The podcast is not sponsored and it’s done in Nick’s spare time after hours
2:30 – What’s involved end to end to put together an episode
8:50 – Each episode gets about 400 downloads or listens but it’s hard to track
10:41 – Motivation for using Jekyll and Ruby
13:03 – A couple of custom Jekyll plugins to help building a podcast site
16:55 – So many static generators to choose from, just pick one
18:09 – Use the tools that you like and don’t constantly second guess yourself
19:34 – What is Liquid (Jekyll’s templating language)?
21:01 – The custom audio player is the only real amount of JavaScript on the site
25:42 – Jekyll-Assets is being used to MD5 tag static file names for cache busting
26:34 – nginx is serving the site with Let’s Encrypt handling the SSL certificates
28:12 – The only SAAS tool being used is Google Analytics but I don’t use it for much
29:20 – A few static sites are all hosted on a $5 / month DigitalOcean server
32:06 – The server load is at 2-3% CPU with 60,000+ monthly visitors
33:06 – Debian Bullseye is running on the server
34:38 – Ansible is used to provision the server
38:47 – Deploying a new podcast episode to the site
41:59 – Making sure all tags are properly filled out
43:46 – Another shell script to auto-inject an episode’s length and file size in bytes
46:55 – There’s no secret management because there’s no secrets
47:29 – The code is backed up on GitHub and an external USB HDD
49:54 – DigitalOcean’s built in monitoring and alerting as well as Uptime Robot is being used
52:34 – Best tips? Find tools that you’re genuinely happy using and stick with them
54:39 – You can find Nick on his site, @nickjanetakis on Twitter and nickjj on GitHub

Links

📄 References

https://buildasaasappwithflask.com
https://diveintodocker.com
https://www.youtube.com/c/NickJanetakis
https://www.audacityteam.org/
https://www.blackmagicdesign.com/products/davinciresolve/
https://github.com/nickjj/runninginproduction.com
https://github.com/nickjj/runninginproduction.com/issues/1
https://nickjanetakis.com/blog/displaying-database-results-across-multiple-columns-with-1-line-of-css
https://nickjanetakis.com/blog/using-ffmpeg-to-get-an-mp3s-duration-and-4-ways-to-get-the-file-size
https://nickjanetakis.com/blog/transform-a-toshiba-chromebook-cb35-into-a-linux-development-environment-with-galliumos

⚙️ Tech Stack











































































































































































































































































































































































































































jekyll →

































































































































































































ruby →





















































































































































































































































































































































































































































ansible →

























































































































































































































































































































































































































































































































bash →



























































































































































































































































































































































































































































































































debian →

















































































































































































































































































































































































































































































































































































































































































































































































digitalocean →































































































































































































































































































































































lets-encrypt →















































































































































































































































































































































































































































































































































































nginx →

















































































































































































































































































open-source →





























































































































































































































































































































































































































































































































































































































































































































turbolinks →















































































































uptime-robot →



























































































































































































































































































































































































































































































🛠 Libraries Used

https://github.com/sparklemotion/nokogiri
https://github.com/envygeeks/jekyll-assets
https://github.com/postmodern/chruby
https://github.com/acmesh-official/acme.sh

Support the Show

This episode does not have a sponsor and this podcast is a labor of love. If
you want to support the show, the best way to do it is to purchase one of my
courses or suggest one to a friend.


Dive into Docker is a video course that takes you from not knowing what Docker is
to being able to confidently use Docker and Docker Compose for your own apps.
Long gone are the days of "but it works on my machine!". A bunch of follow
along labs are included.


Build a SAAS App with Flask is a video course where we build a real
world SAAS app that accepts payments, has a custom admin, includes high test
coverage and goes over how to implement and apply 50+ common web app features.
There's over 20+ hours of video.

Twitter Mentions