Lesson 17 — Using the Homelab Services¶
How to actually use the web services running on your self-hosted stack. Server setup is already done on stronghold — this is about operating them as a user. All services are accessed via https://*.wilsoz.com (public endpoints, SSL, Authentik SSO). Source: vendor/nixproject/modules/home/webapps.nix.
Authentik SSO — logging in everywhere¶
Most services don't have their own login form — they redirect you to Authentik for single sign-on. You log in once and the session carries across all services.
If a service asks you to log in and shows an Authentik-branded page: enter your username and password there. After that, clicking between services usually doesn't require logging in again.
Forgejo — git hosting¶
Forgejo at https://git.wilsoz.com is your self-hosted GitHub replacement.
Creating a repository¶
- Click + (top right) → New Repository
- Set name, description, visibility (Private / Public)
- Initialise with a README if starting fresh
- Click Create Repository
Pushing an existing project¶
# Add your Forgejo instance as a remote
git remote add origin https://git.wilsoz.com/marcus/your-repo.git
# Push
git push -u origin main
For SSH access (so you don't type your password every push):
1. Settings → SSH / GPG Keys → Manage SSH Keys → Add Key
2. Paste your public key (~/.ssh/id_ed25519.pub)
3. Then use the SSH URL: git@git.wilsoz.com:marcus/your-repo.git
Using it like GitHub¶
- Issues — task tracking per repo
- Pull Requests — code review workflow (even for solo projects, useful for reviewing your own changes before merging)
- Actions — CI/CD pipelines (Forgejo has its own Actions compatible with GitHub Actions syntax)
- Releases — tagged version releases with attached files
- Wiki — per-repo documentation
Moving nixlessons here¶
When you're ready to host nixlessons on your own git server instead of (or alongside) GitHub:
cd ~/Developer/nixlessons
git remote add forgejo git@git.wilsoz.com:marcus/nixlessons.git
git push forgejo main
Grafana — dashboards and metrics¶
Grafana at https://lens.wilsoz.com is your monitoring dashboard — it shows metrics from your servers (CPU, memory, disk, network) and any other data sources you've connected.
Navigating dashboards¶
- Home → Dashboards — browse all available dashboards
- Click a dashboard to open it
- Top-right time picker — change the time range (Last 1h, Last 24h, Last 7d, custom)
- Refresh interval — dropdown next to the time picker (auto-refresh every 30s, 1m, etc.)
Reading a dashboard¶
- Each panel is a visualisation (graph, gauge, stat, table)
- Hover over a graph line to see values at a point in time
- Click a panel title → View to see it full-screen
- Click a panel title → Inspect to see the raw data/query
Useful built-in dashboards to look for¶
If your Prometheus/Node Exporter data is flowing in, look for: - Node Exporter Full — CPU, memory, disk, network per host - Docker overview — container stats (if Docker is being scraped)
Creating a simple panel¶
- Home → Dashboards → New → New Dashboard
- Click Add visualisation
- Select your data source (Prometheus)
- In the query field, enter a PromQL metric (e.g.
node_cpu_seconds_total) - Choose a visualisation type (Time series, Gauge, Stat)
- Click Save
Uptime Kuma — service monitoring¶
Uptime Kuma at https://pulse.wilsoz.com checks whether your services are up and alerts you when they're not.
Reading the status page¶
- Green = up, Red = down, Yellow = degraded
- Each monitor shows current status and recent uptime percentage
- Click a monitor to see its history and response time graph
Adding a monitor¶
- Add New Monitor
- Choose type:
- HTTP(S) — checks a URL for a 2xx response (most common)
- TCP Port — checks if a port is open
- Ping — ICMP ping
- DNS — checks DNS resolution
- Set URL, check interval (e.g. every 60 seconds)
- Set up notifications (see below)
Notifications¶
- Settings → Notifications → Setup Notification
- Options: email (SMTP), Matrix, Telegram, Slack, webhook, and more
- After creating a notification channel, assign it to monitors
n8n — workflow automation¶
n8n at https://agent.wilsoz.com is a visual automation tool — like Zapier or Make but self-hosted. It connects services together with automated workflows.
The concepts¶
- Workflow — a sequence of steps that run automatically
- Node — a single step (trigger, action, or transformation)
- Trigger node — what starts the workflow (schedule, webhook, email received, etc.)
- Action node — what happens (send message, create file, call an API, etc.)
Creating a simple workflow¶
Example: send a Matrix message every morning with a weather summary.
- New Workflow
- Add a Schedule Trigger node → set to "Every day at 8:00am"
- Add an HTTP Request node → GET a weather API URL
- Add a Matrix node → send a message to your homeserver with the data
Each node connects to the next with an arrow. Click between nodes to see the data flowing through.
The node editor¶
- Left panel → node types (search for what you need)
- Click a node → configure its settings on the right
- The middle canvas → your workflow diagram
- Execute workflow button → test it manually
- Activate toggle (top right) → turn the workflow on so it runs automatically
Useful trigger types¶
| Trigger | Use case |
|---|---|
| Schedule | Run something on a timer |
| Webhook | Run when an external service sends a POST request |
| Run when an email arrives matching a filter | |
| File changed | Run when a file in a folder changes |
Home Assistant — smart home¶
Home Assistant at http://homeassistant.tail56e05.ts.net:8123 is only reachable over Tailscale (not the public internet). Connect Tailscale first:
Then open the Home Assistant PWA from your app menu (or navigate to the URL in a browser).
The dashboard¶
The default dashboard shows all your devices. You can: - Click a light to toggle it - Click a switch to turn it on/off - Click a sensor to see its current value and history
Areas and devices¶
Settings → Areas & Zones — rooms your devices are organised into. Settings → Devices & Services — all integrations and the devices they expose.
Automations¶
Settings → Automations & Scenes → Create Automation
Automations have three parts: 1. Trigger — what starts it (time, device state change, sunrise/sunset, etc.) 2. Condition (optional) — a check that must be true for the automation to run 3. Action — what happens (turn on a light, send a notification, run a script)
Scenes¶
Scenes save a snapshot of device states. E.g. a "Movie" scene might dim the lights to 20% and turn off certain switches.
Settings → Automations & Scenes → Scenes → Create Scene → set the devices and their states → save.
Then trigger a scene from the dashboard, an automation, or a button.
Mealie — recipe management¶
Mealie at https://CHANGEME-mealie (fill in your server's URL) is your self-hosted recipe box and meal planner.
Adding a recipe¶
Option A — import from URL (easiest): 1. Click + → Import from URL 2. Paste any recipe URL (from a cooking website) 3. Mealie scrapes the page and pulls out the ingredients and instructions automatically 4. Review and save
Option B — create manually: 1. Click + → Create Recipe 2. Fill in name, description, ingredients, instructions
Cooking mode¶
Click a recipe → Start Cooking — the screen stays on, text is larger, and you can check off steps as you complete them. Useful if you're following a recipe at the stove.
Meal planning¶
Planner tab → drag recipes onto days of the week. Use this to plan the week and generate a shopping list.
Shopping List → Create Shopping List from Plan — Mealie combines all ingredients from planned meals into a single list, grouping by ingredient type. Add it to your phone (the Mealie mobile app can access your shopping list).
Collections¶
Organise recipes into collections (e.g. "Quick dinners", "BBQ", "HPR show food"). Click a recipe → Add to Collection → create or pick a collection.