Ubuntu on KVM
Current host evidence shows Ubuntu 26.04.1 LTS on x86_64, 4 logical CPUs and 11 GiB of RAM. The virtual disk sits at 260 GiB after expansion.
A factual operating note on my self-hosted environment: the services, the request path, resource boundaries, monitoring, and the storage-expansion incident that exposed an incomplete disk resize.
A home lab turns infrastructure into something you can actually see: virtualization, Linux, containers, DNS, reverse proxies, storage, monitoring and backups all meeting at the same boundary. Collecting software isn't the hard part. The hard part is knowing which layer failed: a request that never arrives, a service that won't start, or a disk that looks bigger on paper while the filesystem underneath is still the old size.
I describe this environment as a learning and operating system on purpose, not enterprise infrastructure. Its value comes from being able to build something, break it, trace what went wrong, and improve it on a path that's real.
The edge path is conceptual; the host and service facts below are verified on the current server.
Current host evidence shows Ubuntu 26.04.1 LTS on x86_64, 4 logical CPUs and 11 GiB of RAM. The virtual disk sits at 260 GiB after expansion.
Nginx serves the ayron.in portfolio and preserves the independent pc.ayron.in dashboard and news.ayron.in service.
Uptime checks verify the portfolio, robots, sitemap and preserved subdomains. Umami, Uptime Kuma and SEOnaut remain on loopback/private bindings.
Current SEO services use persistent databases, restart policies, resource controls, scheduled reports and local backups. Database ports are not public.
The server reported a 260 GiB virtual disk. Inspection told a different story: a 62 GiB root partition, a 31 GiB root logical volume, and an ext4 root filesystem sitting at about 4.2 GiB free.
The partition table was GPT, and `/dev/sda3` turned out to be the LVM physical volume, confirmed rather than assumed. The volume group had roughly 31 GiB free before any resize took place. I backed up the GPT and LVM metadata first, then expanded only the path I'd identified: partition 3, the PV, the root LV, and ext4 on top.
No partition was shrunk or deleted. The expansion was verified with `lsblk`, `findmnt`, LVM inspection and `df`.
Check availability and response paths at bounded intervals.
Run SiteOne and SEOnaut as sensors, not as automatic change engines.
Use Lighthouse history to detect regressions, not to chase a perfect score.
Keep database dumps, configuration, reports and restoration metadata.
Keep dashboards private, secrets local and capabilities narrow.
Separate application, localhost, port, proxy, DNS and upstream failures.
The lab shows how a request travels through boundaries, but it doesn't claim fixed enterprise topology, production-scale traffic, guaranteed uptime, or public exposure for every service documented here. Some of the portfolio diagrams are still conceptual, and they're labelled that way.
The improvements worth making next aren't more containers for their own sake. They're an external backup copy, private admin access over VPN/SSH, measured real-user data, and case studies tied to actual project evidence.
The documentation behind the infrastructure layers and operating practices used in this case study.