Module 6 · Self-Hosting
Now everything converges. You have a hardened server (Module 2), a segmented network (Module 3), tested backups and a hypervisor (Module 4), and secure remote access (Module 5). This module turns that foundation into running services — and, crucially, the two that make this curriculum’s signature real: your own blog and your own git server, hosted on your own hardware, reachable from the internet through the tunnels you built.
From here on, your portfolio lives on infrastructure you built and secured. When an employer visits your site, the fact that the page loads at all is your résumé.
The closed loop, completed
Section titled “The closed loop, completed”This is the module where the curriculum’s central idea becomes literal:
graph TD
You[Your work in every module] -->|committed to| Git[Your self-hosted git server<br/>Forgejo/Gitea]
Git -->|source for| Site[Your docs/blog site]
Site -->|deployed behind| Proxy[Reverse proxy + TLS]
Proxy -->|reachable via| Tunnel[Cloudflare Tunnel / Tailscale · Module 5]
Tunnel --> Public([The internet / an employer])
Public -.reads & verifies.-> You
classDef loop fill:#1f6feb22,stroke:#1f6feb;
class Git,Site,Proxy,Tunnel loop;
Your homelab hosts your portfolio; your portfolio documents your homelab. That loop — the work and its proof in one self-hosted place — is this curriculum’s signature, and Module 6 is where it closes.
What you need
Section titled “What you need”- Your Proxmox host from Module 4 (or the bare Module 2 server), on your network with backups running.
- A domain (the ~$10/yr from the hardware guide) — needed for real TLS and for publishing.
- The overlay access from Module 5 (Cloudflare Tunnel for public publishing, Tailscale for private services).
The lessons
Section titled “The lessons”| Lesson | Topic | Time |
|---|---|---|
| 6.1 · Docker & Compose | Images, containers, volumes, and declarative stacks | 5–7 hrs |
| 6.2 · The Reverse Proxy | One front door for many services | 4–5 hrs |
| 6.3 · TLS Certificates You Own | Let’s Encrypt, ACME, and the DNS-01 challenge | 3–5 hrs |
| 6.4 · The Services That Close the Loop | Your blog, your git server, and the supporting cast | 5–7 hrs |
| Labs | The five graded exercises | 8–12 hrs |
Total: roughly 30–40 hours, or 3–4 weeks part-time.
Checkpoint
Section titled “Checkpoint”- I deploy services declaratively with Compose files kept in git
- All my services sit behind one reverse proxy with valid TLS
- I can obtain and auto-renew certificates, including via DNS-01
- My blog is live at a real domain on my own hardware
- My code lives on a git server I host myself
- Every service is backed up and reachable through my overlay network
Deliverable
Section titled “Deliverable”Your live, self-hosted portfolio site and git server — publicly reachable, TLS-valid, hosting all your writeups to date. This is the closed loop. Submit the URL to the showcase. Full spec in Lab 5.
Resources
Section titled “Resources”- Awesome-Selfhosted — the catalog of what you can run
- Docker docs and Compose docs
- Caddy documentation — automatic HTTPS that feels like magic
- Forgejo / Gitea — self-hosted git
- r/selfhosted — a large, friendly community for the 2am moments