Skip to content

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é.

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.

  • 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).
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.

  • 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

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.