DNS resolution failed on a fresh Proxmox install during apt updates because /etc/resolv.conf pointed at 127.0.0.1 instead of the router’s DNS server. After comparing configs on other machines and swapping the network cable, I reinstalled Proxmox from scratch, verified the network settings during setup, and everything worked. This was the third networking issue with this machine, following a DHCP address conflict and a misbehaving managed switch...
My attempt to set up a Jellyfin media server on a mini PC turns into a networking detour: after installing Proxmox, an IP address conflict with a Wi-Fi light bulb leaves the host unreachable over SSH, and reserving a new address doesn’t help because Proxmox hardcodes the IP it picks up via DHCP during installation. It ends with the unresolved problem of deploying the machine to a network with unknown configuration, where Proxmox’s expectation of a static IP is inconvenient...
While planning to move my applications from the cloud to self-hosting, I evaluate Synology NAS options for a roughly 12TB storage target, weighing RAID levels, second-hand versus new drives, cost per terabyte, and power consumption. I ultimately choose a new DS420j with four used 6TB drives in RAID 6 for production, plus a single-drive NAS for local backup and my existing unit with 14TB drives for remote backup...
After migrating a media library from an external USB drive to a NAS and reorganising it, I needed a way to verify no files were missed in the move. I walk through building a Linux command-line pipeline using find, grep with regex, and cut to recursively list media files while filtering out directories, metadata, and unwanted filenames. I then feed the resulting clean listing into a spreadsheet for comparison against the original drive...
After adding my user to the sudo group, which worked on Ubuntu, I tried the same approach on a fresh Debian install and found it didn’t take. Despite the sudoers file and group membership looking correct, the fix turned out to be simply logging out and back in for the change to take effect...
After mounting a network share on a Linux Jellyfin server, I find Jellyfin can’t add the media path as a library even though root can access it. Using ls, ps, and getent, I trace the problem to a group mismatch: the share was mounted with gid=1000, but the Jellyfin process runs as user jellyfin in group 115. Remounting the share with the correct gid resolves the issue...
I set up a secondhand Synology DS216j NAS as homelab storage with RAID 1 and a Samba share, intended for VM backups and eventually a media library. I then mount the share on a privileged Debian LXC container in Proxmox via a cifs entry in /etc/fstab, with a breakdown of the mount options and a note that the setup persists across reboots...
I wrote a short how-to for fixing the 401 Unauthorized error that apt update throws on a freshly installed Proxmox server because the enterprise repository requires a paid license. The fix involves commenting out the pve-enterprise.list entry and switching sources.list over to the no-subscription Proxmox repository alongside standard Debian Bullseye repos...
After upgrading my homelab with a new HP 800 G2 to run production Docker containers, I migrate my existing VM from an old Proxmox host to the new one. I walk through backing up the VM to a single file, transferring the backup between servers via FileZilla, and restoring it, with everything working after just nine minutes of downtime...
I walk through setting up Uptime Kuma, a self-hosted monitoring tool, in a Docker container to watch network devices and web services, with notifications pushed to a phone via NTFY. I cover basic monitor types like ping and HTTP checks, how NTFY’s topic-based subscriptions work, and the security trade-offs of its open public topics...
A newly installed Netgear GS108E managed switch became unreachable a day after going into service, failing to respond to pings and dropping its management interface even though traffic through it still worked. I describe the setup, the symptoms, and why existing search results about VLAN lockouts don’t match this failure on a default configuration...
A short guide to using Pi-hole’s Local DNS Records feature to assign friendly hostnames to devices on a home network, so tools like SSH can be used with names instead of IP addresses. I also briefly mention using Pi-hole’s domain blocking to discourage late-night Reddit browsing...
I walk through moving a server from password-based SSH logins to key-based authentication as a defence against brute force attacks. I cover generating an SSH key pair on a Mac, installing the public key on the target machine with ssh-copy-id, and disabling password authentication on Ubuntu 22 by adding PasswordAuthentication no to a config file in sshd_config.d and reloading the ssh daemon. I also note console login still works if something goes wrong...
How I got Chrome to offer saving the Proxmox root password, which it won’t do while the web UI’s self-signed certificate is untrusted. I cover grabbing the Proxmox root CA, importing it into the macOS Keychain and trusting it, allowing insecure content for the site, and clearing the cache to finally get the save prompt...
A copy of the system sudoers file that I placed into /etc/sudoers.d created an infinite include loop that broke sudo, and with no root login the VM seemed locked out. The qemu guest agent I covered in the previous post, accessed through Proxmox, provided a way to edit the protected file and undo the mistake...
I walk through installing and enabling the Qemu Guest Agent in an Ubuntu Server VM under Proxmox, including the gotcha that the agent should be activated by enabling the option in Proxmox and shutting down the VM, not by running systemctl or rebooting. I also cover verifying the agent from both the guest and host sides, and note the security trade-off that anyone with Proxmox access can run commands as root inside VMs running the daemon...
When a rebuilt or cloned virtual machine reuses the IP address of a previously connected host, SSH rejects the connection with a “remote host identification has changed” warning. I explain why SSH behaves this way and show how to remove the stale entry from the known_hosts file using ssh-keygen -R so the host can be connected to again...
A step-by-step walkthrough of creating my first virtual machine in Proxmox 7.3, using Ubuntu Server as the example guest OS. I cover uploading an ISO to local storage, working through the Create VM wizard’s choices for VM ID, name, disk size, CPU cores, and memory, then starting the VM and installing the operating system via the console...
I take a look at why leaving SSH password authentication enabled is risky, and why key-based auth with passwords disabled is a sensible setup for any internet-facing server. While reviewing server logs, I noticed sshd timeouts and suspicious kex_exchange_identification messages, and traced the IP address to a host in China flagged by others for brute force attacks...
Frustrated by the lack of cheap Australian VPS options compared to US providers, I tried Binary Lane, a low-priced developer-focused service from Australian host Mammoth. An Ubuntu server in Sydney was live within a minute of signing up, with Docker and a website running soon after. I also touch on the web panel, switching to SSH, and my plans to use the server for learning domains, SSL, and testing...