0-2: Setup
Since this course relies on a few specialized tools, it’s worth taking the time to get them set up properly.
Podman
We use Podman instead of Docker as our container runtime to create ad-hoc networks for our labs.
Follow Podman’s Installation Instructions for macOS and Linux.
For Windows, we will take advantage of Windows Subsystem for Linux. Make sure it’s installed and ready to go, and use a WSL instance as the base for our work.
just
just is a command runner. We use it to simplify complex shell commands and create a unified tool for all the tasks in the lab.
There are myriad ways to install just. Use whichever one suits your environment best. For Linux, I recommend grabbing the pre-packaged binaries—unless you’re a Rust/Cargo user, in which case cargo is best. For Windows, just is available via winget, and that’s probably best for that platform.
Zellij
Because we’re going to be running so many containers at one time, Zellij will help corral them into a single view. Zellij splits a single terminal window into several, allowing easy switching between shells. Install it from the releases page.
Cloud VPS Provider
The last section of the course involves setting up a cloud server as the “hub” for a Wireguard-powered network. Our design requires a public server that all network nodes can see at all times, hence the cloud service. This will cost some money, although what we’re doing can be accomplished at a minimum of expense.
We will be demonstrating the process with Digital Ocean, but the concepts will map onto any provider of your choosing.
For now, make sure you have an account ready to go.
Clone the Repository
The Codeberg Repository has all the code you’ll need to perform the labs in this course. If you’re comfortable with Git on the command line, run the following command:
git clone https://codeberg.org/The-Taggart-Institute/wireguard-from-scratch
Otherwise, use the “download ZIP” option available from the repository homepage.

Initial Setup
Once downloaded, navigate to the repository folder. Make sure just is working by running:
just help
You should see “available recipes.” If so, then complete the repo setup by running:
just setup
That’s it for setup. Let’s get into the course material.