← back to all writeups
$ ssh -i ~/.ssh/id_ed25519 mbrown@apps-ubuntu-01

Linux — Ubuntu Server, Pop!_OS, and automation

LIVE Ubuntu Server Pop!_OS nginx Ansible SSH

Linux shows up in two places in the lab: server workloads running as Ubuntu Server VMs on the Hyper-V host, and Pop!_OS as a desktop I actually use day to day. Between the two, most of my hands-on Linux time is in the terminal — SSH, systemd, and a bit of automation to keep it all patched.

servers Ubuntu Server 22.04 LTS (Hyper-V guests)
desktop Pop!_OS
hosts apps-ubuntu-01, web-ubuntu-01
access SSH, key-based auth only

Ubuntu Server workloads

The Ubuntu Server VMs handle specific jobs rather than being general-purpose boxes. apps-ubuntu-01 runs the TP-Link Omada wireless controller in Docker. web-ubuntu-01 runs nginx as a reverse proxy in front of it, so the controller is reachable over HTTPS at a clean internal hostname instead of an IP and a raw port.

Keeping servers updated with Ansible

Rather than SSHing into each VM individually to run updates, I use an Ansible script to patch the Linux servers consistently. It's a small thing, but it's the difference between "I'll get to it eventually" and actually staying current — one command touches every server instead of it depending on me remembering to log into each one.

SSH access

All the Linux servers are locked down to key-based SSH authentication — password login is disabled. It's a basic hardening step, but it's also just the right habit to build since it's exactly what's expected managing servers professionally.

Pop!_OS on the desktop

Alongside the servers, I run Pop!_OS as a daily-driver desktop — it keeps me comfortable in a Linux GUI environment, not just the server-side terminal, which rounds out the Linux side of the lab.

What's next