A documented homelab project demonstrating Linux server administration, networking, service deployment, security, troubleshooting, and operational support.
This project configures a small computer as a self-hosted Ubuntu Server platform. The server provides:
- Samba network file sharing
- Gitea Git hosting
- Pi-hole DNS filtering
- Docker-based service isolation
- SSH administration
- Tailscale remote access
- Network-level firewall and DNS configuration
The documentation is written as both a rebuildable technical reference and a portfolio of entry-level IT support skills.
- Install and administer Ubuntu Server.
- Configure secure remote administration with SSH.
- Apply updates, firewall rules, users, permissions, and service management.
- Design and document a small IPv4 network.
- Configure DHCP reservations, DNS, routing, and NAT considerations.
- Deploy and maintain services with Docker Compose.
- Diagnose service, connectivity, authentication, and name-resolution problems.
- Document changes, verification steps, limitations, and recovery procedures.
Internet
|
Home gateway/router
|
LAN: 192.168.1.0/24
|
+-- Server: <SERVER_LAN_IP>
| +-- Samba file service
| +-- Gitea Git service
| +-- Pi-hole DNS service
| +-- Docker
| +-- SSH
|
+-- Client devices
Remote clients
|
Tailscale encrypted network
|
Server: <SERVER_TAILSCALE_IP>
The documentation uses placeholders instead of real addresses, credentials, device IDs, or other sensitive infrastructure details.
| Area | Demonstrated skills |
|---|---|
| Linux administration | Ubuntu installation, packages, users, permissions, systemd, storage, logs, and SSH |
| Networking | IPv4 addressing, DHCP, DNS, routing, NAT, ports, firewall rules, and VPN connectivity |
| Service support | Samba, Gitea, Pi-hole, Docker Compose, health checks, and logs |
| Security | Least-privilege access, SSH keys, UFW, restricted service exposure, and secret handling |
| Troubleshooting | Reproducing symptoms, testing hypotheses, reading logs, applying fixes, and verifying results |
| Operations | Updates, backups, recovery procedures, maintenance, documentation, and escalation boundaries |
Read the core modules in this order:
- Project Overview
- Architecture and Network Plan
- Ubuntu Server Installation
- Linux Baseline, Access, and Firewall
- Networking, DNS, and Router Configuration
- SSH and Tailscale
- Docker Host
- Samba File Service
- Gitea Git Service
- Pi-hole DNS Service
- Validation and Acceptance Tests
- Operations, Backups, and Recovery
- Troubleshooting Playbooks
Optional home-lab extensions are documented separately:
Each module records:
- The problem or support scenario.
- The technical objective.
- The implementation decisions.
- The commands or configuration used.
- The expected verification results.
- Common failure modes and diagnostic steps.
- Security and recovery considerations.
- Sanitized evidence suitable for a public portfolio.
This is a single-server homelab project, not a production environment. It does not provide high availability, enterprise monitoring, redundant storage, or a production service-level agreement.
The documentation will identify these limitations and explain possible future improvements rather than presenting the lab as production-ready.
This project is maintained as a modular documentation set. Core procedures are validated and updated as each module is completed.