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.