Where I forge my DevOps and infrastructure skills through hands-on projects.
A personal lab for building, breaking, and learning infrastructure — starting on a single real VPS.
OpsForge has two layers:
| Layer | Where | What it is |
|---|---|---|
| Journal | labs/ |
One folder per lab: knowledge.md (concepts to learn first) and README.md (goal, steps, what broke, what I learned). |
| Infrastructure | ansible/, terraform/, stacks/, k8s/, apps/, scripts/ |
The real, reusable code that runs my server. Labs produce this code; later labs replace earlier manual work with it. |
Rule of thumb: if I'd want to run it again next month, it belongs in an infrastructure folder, and the lab links to it. See docs/conventions.md.
Status: ⬜ todo · 🟨 in progress · ✅ done
| # | Lab | Status |
|---|---|---|
| 01 | VPS hardening | 🟨 |
| 02 | Nginx, SSL & reverse proxy | 🟨 |
| 03 | Automated backup & restore | ⬜ |
| # | Lab | Status |
|---|---|---|
| 04 | Dockerize an app | 🟨 |
| 05 | Multi-service reverse proxy | 🟨 |
| 06 | Self-hosted tools | ⬜ |
| # | Lab | Status |
|---|---|---|
| 07 | CI/CD pipeline | ⬜ |
| 08 | Zero-downtime deployment | ⬜ |
| # | Lab | Status |
|---|---|---|
| 09 | Ansible: rebuild the server in one command | ⬜ |
| 10 | Terraform: provision VPS, DNS, firewall | ⬜ |
| # | Lab | Status |
|---|---|---|
| 11 | Observability stack | ⬜ |
| 12 | K3s, Helm & GitOps | ⬜ |
New labs get the next number (13, 14, …) and a new phase heading if needed — security, cloud, databases, whatever comes next.
OpsForge/
├── labs/ # one folder per lab: knowledge.md (learn) + README.md (practice)
├── apps/ # sample applications deployed during the labs
├── stacks/ # Docker Compose stacks (proxy, self-hosted tools, monitoring)
├── scripts/ # standalone shell scripts (backup, helpers)
├── ansible/ # server configuration as code
├── terraform/ # cloud resources as code
├── k8s/ # Kubernetes manifests, Helm charts, GitOps apps
├── .github/workflows/ # CI/CD pipelines
└── docs/
├── architecture.md # what currently runs on the server
├── conventions.md # naming, secrets, workflow rules
└── decisions/ # why I chose X over Y (ADRs)
- Server: 1 VPS, 2 vCPU / 4 GB RAM (enough for every lab, including K3s)
- Provider / OS / domain: see docs/architecture.md