Setup Jekyll from Scratch on a New Linux System

2022-09-19

Special Note: Credit needs to be given to user Achraf JEDAY for putting these instructions together on Stack Overflow (although his comments were targeting an older version of Ruby). This post is more for my own personal notes than anything else.

I find myself constantly running into small issues when trying to setup existing Jekyll projects on new Linux systems. I could use something like Docker, but that just seems so beefy and slow to me. So here is a step-by-step way (and foolproof from my own testing) to get Jekyll running smoothly in no time!

Figuring out Ruby First

The first item of business is removing the default Ruby that ships with most Linux distros:

sudo apt-get remove ruby

Then we check for updates and install everything we need:

sudo apt update
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev

Now we can install rbenv and ruby-build:

curl -sL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-installer | bash -

After both of those install, you will want to add those to your system PATH:

Bash

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

ZSH

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

With that complete, we can now install the version of Ruby we wish to use and set it globally (at this time of writing it is 3.1.2):

rbenv install 3.1.2
rbenv global 3.1.2

And rehash so our changes take:

rbenv rehash

Now you should see the properly set Ruby version when you run the following:

ruby -v

Getting Ruby Gems

In case you don't have it installed already, be sure to grab rubygems:

sudo apt install rubygems

Running Jekyll

We are almost done! Navigate to your Jekyll project's directory and run:

gem install jekyll bundler
bundle install

That's it! Now if you run bundle exec jekyll serve you'll find your Jekyll project running locally! Hopefully this helps others when needing to port any Jekyll projects over to a new Linux system. I know it will save me time!

Alpine Linux on Wayland

Save yourself a world of trouble: just use docker. The docker image below (jekyll-serve) works out-of-the-box:

https://github.com/BretFisher/jekyll-serve

Then run the following inside your project:

docker run -p 4000:4000 -v $(pwd):/site bretfisher/jekyll-serve