Erik.
~/home/projects/infrastructure
$cat README.md01 / OVERVIEW

Infrastructure

Linux host nodes, Docker containers, reverse proxying, and the setup used for running self-hosted personal services.

TYPEHomelab
ROLEInfrastructure
PERIOD2025–2026
LINKS
TECHNOLOGY STACK
Linux (Debian)DockerWireGuardNginxSystemd
~/home/projects/infrastructure[ 01 / 04 ]infra / systempreview
Infrastructure - image 1
ASSETS / SCREENSHOTS
02 / CONTEXT

The context

This setup is a personal homelab and small cloud server environment used for hosting development tools, staging sites, and lightweight background utilities.

The goal was to gain practical hands-on experience with operating systems, container lifecycle management, reverse proxying, and private network tunnels.

03 / WHAT I DID

What I did

/infrastructure
Configured Debian Linux base installations, user permissions, SSH key access, and firewall rules.
/containers
Set up and supervised Docker Compose services with persistent bind mounts and volume backup scripts.
/networking
Configured a WireGuard VPN tunnel for encrypted administrative access and Nginx for internal domain routing.
04 / UNDER THE HOOD

Under the hood.

01 / BASE OS

Debian Linux

Minimal installation with automated security updates, systemd unit files, and log rotation.

02 / CONTAINER RUNTIME

Docker Compose stacks

Services run in isolated bridge networks with resource limits to prevent runaway memory usage.

03 / EDGE ROUTING

Nginx reverse proxy

Routes incoming requests to container ports and manages automated TLS certificate renewals via Let's Encrypt.

04 / NETWORK ACCESS

WireGuard tunnel

Point-to-point WireGuard configuration that allows remote management without exposing administrative ports to the public internet.

05 / NOTES

Notes

What changed

Switched from port forwarding to an internal WireGuard mesh to reduce public attack surface.

What I learned

Setting up automated daily backup scripts for Docker volumes before applying system updates prevents service downtime.

What I'd do differently

Document configuration steps in version-controlled Ansible playbooks earlier instead of relying on shell scripts.