A HacKSU workshop deck on the basics of homelabbing, using a real homelab as the running example. Built on the HacKSU presentation template.
.github/workflows/
pages.yml builds and deploys to GitHub Pages
static/
app.js slide navigation and particle background
style.css HacKSU deck design
HacKSU.png logo
images/ slide images
templates/
slides/ template layouts to copy from
homelab/ homelab half (Ian)
ai/ local AI half (Meheraj)
closing.html shared Q&A slide
base.html page shell, nav bar, logo
index.html slide order
notes.html speaker notes and run of show
app.py base app, two routes: deck, notes
build.py renders the deck to static HTML in dist/
OUTLINE.md slide-by-slide content outline
pyproject.toml project metadata and dependencies (uv)
README.md documentation
A Flask app on port 5174, managed with uv.
Run the commands below from a Linux shell (WSL on Windows, or macOS/Linux). If uv isn't installed yet:
curl -LsSf https://astral.sh/uv/install.sh | sh
Install dependencies:
uv sync
To run the app:
uv run app.py
/ is the deck, navigated with arrows, space, or the dots.
/notes is the speaker notes with a minute-by-minute run of show.
To add a dependency, use uv add <package> rather than editing pyproject.toml by hand, so uv.lock stays in sync.
To change the order of slides, navigate to templates/index.html, and reorder using {% include %}
Use relative paths (static/..., no leading slash) for images and other files, so the deck also works on GitHub Pages.
Every push to the default branch builds the deck and publishes it to GitHub Pages. After forking, do this once:
- Actions tab: enable workflows (GitHub disables them on forks).
- Settings → Pages: set Source to GitHub Actions.
- Actions tab: run Deploy to GitHub Pages manually, or push a commit.
The deck is published at https://<username>.github.io/<repo-name>/ and the notes at .../notes.html.
To build locally: uv run build.py, then open dist/index.html.
Design and plumbing lifted from the polyglot programming deck.
Run a small language model on your Mac or Windows PC and turn homelab notes into a quiz. Choose Ollama for a terminal demo that matches the homelab presentation, or LM Studio for a graphical chat window. You only need one app.
The model generates answers on your computer. Download the app and model while online, then try them offline. The local Ollama commands below require no account or subscription. Ollama Cloud documentation · LM Studio offline operation
-
Open Apple menu → About This Mac. Ollama requires macOS 14 Sonoma or newer. Apple Silicon Macs can use GPU acceleration. Supported Intel Macs use the CPU. Mac requirements
-
Download Ollama from the Mac download page. In Finder, open Downloads, double-click the downloaded
.dmg, and drag Ollama into Applications. -
Open Ollama from Applications. Allow it to install the command-line tool if prompted. Leave the app running.
-
Press Command + Space, type Terminal, and press Return.
-
Paste the following command, press Return, and wait for the model download to finish. The file is about 986 MB. Model page
ollama pull qwen2.5:1.5b
-
Start a chat. When you see
>>>, paste the first prompt from Demo prompts. Type/byeto exit.ollama run qwen2.5:1.5b
If Terminal says command not found, reopen Ollama, check for the command-line installation prompt, and try again in a fresh Terminal window. CLI reference
- Check Apple menu → About This Mac. LM Studio requires Apple Silicon and macOS 14 or newer. It recommends 16 GB of RAM. For an Intel Mac, use Ollama. LM Studio requirements
- Download the Mac installer from LM Studio. Open the download, install the app, and launch it from Applications.
- Open Discover, search for
Qwen2.5-1.5B-Instruct, and choose a GGUF variant labeled Q4_K_M if available. This variant stores the model weights at lower precision to reduce memory use. - Click Download, then go to Chat and select the downloaded model from the model loader. Once it loads, paste the first prompt below. LM Studio setup guide
-
Press Windows + R, type
winver, and press Enter. Ollama requires Windows 10 22H2 or newer. Allow at least 4 GB of disk space for the app plus about 1 GB for the model. Windows requirements · Model download size -
Download Ollama for Windows. Open Downloads, double-click
OllamaSetup.exe, and follow the installer. Ollama runs directly on Windows, so you can use PowerShell. -
Open Ollama from the Start menu if it hasn’t already started. Leave it running.
-
Open Start, search for PowerShell, and open a new window.
-
Paste this command, press Enter, and wait for the download to finish.
ollama pull qwen2.5:1.5b
-
Start a chat. When you see
>>>, paste the first prompt below. Type/byeto exit.ollama run qwen2.5:1.5b
If PowerShell says ollama isn’t recognized, close it and open a fresh window after installation. If the command can’t connect, launch Ollama from Start and try again. CLI reference
- Check Settings → System → About → System type. LM Studio supports x64 PCs with AVX2 and supported Snapdragon ARM systems. It recommends 16 GB of RAM and 4 GB of dedicated GPU memory. LM Studio requirements
- Get the Windows installer that matches your system from LM Studio. Run it, follow the prompts, and open LM Studio from Start.
- In Discover, search for
Qwen2.5-1.5B-Instruct. Download a GGUF variant labeled Q4_K_M if available. - Open Chat, select the downloaded model from the model loader, and wait for it to load. Paste the first prompt below. LM Studio setup guide
Paste this in the Ollama terminal after >>> or in the LM Studio chat box.
Using only these notes, write three short study questions and an answer key. DHCP assigns IP addresses. DNS maps names to IP addresses. A UPS provides temporary backup power.
Ask the room whether the notes say how long the UPS will last. Then send this in the same chat.
Based only on the notes, how long will the UPS power the server?
The notes give no runtime. If the model gives a number, ask someone to find it in the source. If the model says it needs more information, ask the room what would help, such as the UPS model and the server’s power draw.
Before the talk, rehearse both prompts offline on the machine you’ll present from. Save a screenshot of the actual output as a fallback and open a fresh chat for the live demo. Attendees can vote on the answer from their seats.