Hands-on learning · Personal infrastructure lab

Build it. Operate it.
Learn from the real issues.

My home lab is an ongoing practical environment for building and operating infrastructure services. It helps me test configurations, understand dependencies, troubleshoot failures and steadily deepen my systems, networking, container and automation skills.

The projects below represent personal lab work and learning—not a claim that these systems are enterprise production deployments.

01 / Systems

What I have built

The lab combines a Linux server, local storage, containerised applications, private and external access paths, and monitoring. It is maintained as a practical learning environment that evolves as I test and improve it.

Technologies running in or used by the lab
Fedora ServerDocker ComposeNextcloudImmichCloudflare TunnelTailscaleNetdataCockpit
Running / maintained

Linux server & storage administration

Operate a Fedora Server environment, organise storage mounts and directories, check disk health, and troubleshoot host-level and storage-related issues.

Fedora ServerLinux CLIMounts & filesystemsSMART checks
Running / maintained

Self-hosted cloud & photo services

Deploy and maintain Nextcloud and Immich using Docker Compose, with supporting services and persistent storage. Work through volume mappings, application data and sync behaviour.

Docker ComposeNextcloudImmichPostgreSQLRedis
Configured / in use

Remote access & network services

Use Cloudflare Tunnel and Tailscale for remote access, maintain local DNS with Bind9, and investigate the differences between local access and access through a tunnel.

Cloudflare TunnelTailscaleBind9 DNSNetwork troubleshooting
Running / maintained

Monitoring & server management

Use Netdata and Cockpit for visibility into host health and services, while practising log review, resource checks and structured troubleshooting.

NetdataCockpitLogsService health
Lab / learning

Kubernetes with K3s

Explore lightweight Kubernetes concepts and cluster operations in a constrained home-lab environment, building familiarity with orchestration and workload management.

K3sKubernetes fundamentalsWorkloads
Lab / learning

DNS and mail services

Practise service configuration with Bind9, Postfix and Dovecot, including SMTP/IMAP concepts, DNS dependencies and the connectivity limitations of a residential ISP.

Bind9PostfixDovecotSMTP / IMAP
Learning in progress

Automation & scripting practice

Continue building skills with Git, Ansible, Bash and Python through small exercises and infrastructure-oriented practice. The goal is repeatable, understandable operations rather than automation for its own sake.

GitAnsibleBashPython
02 / Architecture

How the lab fits together

A high-level view of the components used in the lab. This is a conceptual overview, not a live network map; exact routes and exposure can change as the environment evolves.

Security note: public reachability and access controls are configured per service. Do not publish secrets, private IP maps, or administrative configuration details.

03 / Operating approach

How I work through problems

The value of a lab is not just the number of tools installed. It is the practice of understanding dependencies, making controlled changes, and verifying the result.

01 · Establish the facts

Check the symptom, scope, logs, service status, network path and available resources before changing configuration.

02 · Isolate and test

Separate host, storage, application, DNS, routing and remote-access possibilities; change one thing at a time where practical.

03 · Validate and document

Confirm the service works from the intended access path, record what changed, and note remaining limitations or follow-up work.

Continuous improvement: this lab is not “finished.” I keep extending it as time, hardware and learning priorities allow. Project status is intentionally labelled so visitors can distinguish maintained services from experiments.
04 / Next improvements

What I am developing next

Planned improvements will be added as they are implemented and validated, rather than presented as completed work in advance.

Better documentation

Publish clean architecture diagrams, service maps, operational notes and selected troubleshooting write-ups with sensitive information removed.

Repeatable deployment

Strengthen Git-based configuration management and use Ansible or scripts for repeatable, reviewable administrative tasks.

Security & resilience

Review access boundaries, secrets handling, backup and restore procedures, patching, and service recovery as the lab evolves.

Cloud & platform fundamentals

Continue structured learning across OCI, cloud networking, identity, containers and infrastructure automation without overstating hands-on depth.

Keep in touch

Practical work, ongoing learning.

For infrastructure operations, systems administration, cloud support and technical leadership opportunities, connect with me through email or LinkedIn.