Because WordPress is just too darn complicated.
If you're okay doing everything on Github, and using Github Pages, this script is the fastest way to start.
curl https://raw.githubusercontent.com/Siilikuin/rabbitholer/master/rabbitholer.sh | bash
This script does everything locally, except for actually hosting the repos/Pages, and has 3 notable dependencies: git, Hugo, and gh
, the Github CLI. (If you haven't used it before, you will need to gh auth login
with it first)
If you have Vagrant and Virtualbox, we can also go through this from scratch using the tutorial-in-a-box approach. First get a fresh Debian 12 VM up by running e.g.
mkdir tutorial/
cd tutorial/
vagrant init debian/bookworm64
vagrant up
vagrant ssh
Once you're inside, you'll need to install some dependencies. We'll use the official Debian repo for gh
.
# While in the Debian 12 VM - ripped straight from the Github docs.
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh git curl -y
Debian, as usual, lags behind in software versions somewhat, so we will need to get the latest Hugo from elsewhere:
sudo apt update
sudo apt install wget tar
wget https://github.com/gohugoio/hugo/releases/download/v0.126.0/hugo_0.126.0_Linux-64bit.tar.gz
tar -xzf hugo_0.126.0_Linux-64bit.tar.gz
sudo mv hugo /usr/bin/
hugo version
Log in to Github with your credentials. (The web browser will fail to open, but you can just paste the key in in your non-VM's browser at the given address.)
# While in the Debian 12 VM - ripped straight from the Github docs.
gh auth login
If gh auth status
shows you are logged in, then you are ready to go, my friend. Since we're experimenting, we will save the setup script locally and run it with a couple options.
curl -o rabbitholer.sh https://raw.githubusercontent.com/Siilikuin/rabbitholer/master/rabbitholer.sh
chmod +x rabbitholer.sh
./rabbitholer.sh --help
You will likely get that *** Please tell me who you are.
message the first time you try to actually run this script.
Running rabbitholer.sh --force
will delete your earlier forks and set up new ones, so use with caution. If you don't have any content except the example content in your rabbitholer
repo anyway, though, that shouldn't be an issue!
From here you've got a couple options. The flow is always going to be the same:
- Add to your
rabbitholer-content
repo, git submodule --update
yourrabbitholer
repo, and- Build and push the new changes to your
rabbitholer-pages
repo, however you wish.
In the near future I will write a separate rabbitholer-update.sh
script which automates these steps, too. Stay tuned!