Tutorials
Step-by-step homelab and self-hosting tutorials — Proxmox, Docker, VPNs, backups, monitoring — from your first VM to a full self-hosted stack.
What state is your system in?
Choose the guide that starts where you are. A blank machine, a working host and a failed container need different first steps.
Install, upgrade or recover
- Install Proxmox on a new host
Verify the ISO before writing a USB installer. Confirm the target disk is expendable; the first success check is reaching the web interface.
- Upgrade an existing Proxmox 8 host to 9
Check restore readiness and console access before package changes. Work through the preflight warnings before upgrading.
- Investigate Docker exit 137 after a restart
Match the failed run to its container ID, event time and saved logs. The healthy replacement's current state cannot establish why the previous run stopped.
About these tutorials
Tutorials
Step-by-step setup guides — Proxmox on a mini PC, self-hosted LLMs on a budget GPU, photo libraries that aren’t Google Photos — plus evidence-first diagnostics. Setup tutorials cover hardware picks, install commands, configuration choices, and the gotchas recorded during verification.
Check the version and scope recorded on the guide you use. A command checked against documentation and an operation observed on a running host are different evidence. For a standalone Proxmox VM move, plan how to verify the restored guest on the destination; a host upgrade is a different job.
Proxmox
Image: Proxmox Server SolutionsProxmox Upgrade 8 to 9: Preflight Checks and Gotchas
Upgrade Proxmox 8 to 9 with a preflight checklist covering backups, pve8to9, repositories, LVM autoactivation, NIC renames and cluster order.
Move a Proxmox VM to a New Host Without a Cluster (2026)
Move a Proxmox VE 9 VM or LXC between standalone hosts with qm remote-migrate, a vzdump or PBS restore, or ZFS send: commands, storage rules and errors.
LXC vs VM in Proxmox: When to Use Each
LXC or VM in Proxmox VE 9.2 for Docker, Home Assistant, Jellyfin, a NAS, Windows and a firewall: service choices, backups, storage and migration.
HomelabProxmox Cluster Management: Build a 2-Node Cluster or 3-Node HA (2026)
Set up and manage a Proxmox cluster: a 2-node cluster with a QDevice vs 3-node, corosync quorum, shared storage, live migration, HA, and removing nodes.
ZFS on Proxmox: Pool Setup, ARC Tuning, and Scrubs (2026)
Practical ZFS guide for Proxmox VE 8 and 9: preview RAIDZ1/mirror pool creation, tune ARC, set compression, and check scrubs, snapshots and remote replication.
GPU Passthrough to a Proxmox VM (2026 Setup Guide)
Pass an NVIDIA or AMD GPU to a Proxmox VE 9.2 VM: a sourced pre-flight checklist by CPU, board and GPU, the VFIO steps, and the reset bugs.
Home Assistant
Photo: Goovaeh8fot6yugh, Wikimedia Commons (CC0)Proxmox Home Assistant: Install HAOS as a VM, No ISO (2026)
Home Assistant OS has no ISO. Import the qcow2 image into a Proxmox VM, then set up USB passthrough, external backups and a documented restore path.
Home Assistant Zigbee and Z-Wave Integration (2026)
Home Assistant Zigbee2MQTT and Z-Wave JS UI setup: USB coordinator choice, Proxmox VM passthrough, device pairing, and fully local automations, no cloud.
Home Assistant Automations: A Practical Guide (2026)
Write real Home Assistant automations in YAML. Triggers, conditions, and actions with working examples for lighting, presence, notifications, and schedules.
Self-Hosting
Docker Exit Code 137: Prove OOMKilled Before Raising Memory
Docker exit code 137 is not proof of OOM. Capture inspect state, events, limits, kernel evidence, and cgroup counters before changing the container.
Self-Hosted Password Manager: Vaultwarden on Proxmox (2026)
Install Vaultwarden on a Proxmox LXC, set up an nginx reverse proxy with HTTPS, configure automatic backups, and connect all your devices in under an hour.
Nextcloud AIO Mastercontainer: Docker Setup Guide (2026)
Deploy Nextcloud All-in-One in Docker: Postgres, Redis, Nextcloud Office, Talk, and auto backup. Replace Dropbox, Google Drive, and Docs with a stack you own.
Paperless-ngx Docker Setup with OCR and Auto-Tagging (2026)
Full Paperless-ngx Docker Compose setup with PostgreSQL, Redis, Tika, and Gotenberg. OCR every document, auto-tag by rule, and search your whole paper history.
AudioBookshelf Docker Setup: Self-Hosted Audiobooks (2026)
Complete AudioBookshelf Docker setup: install, organize your library, set up mobile apps for progress sync, and add podcasts. Replace Audible in under 30 min.
Networking & Remote Access
Tailscale Remote Access for the Homelab (2026 Setup Guide)
Set up Tailscale on your homelab fast: install on Proxmox, configure subnet routing, enable MagicDNS, and reach every LAN device without port forwarding.
AdGuard Home + Local DNS on Proxmox (2026 Setup Guide)
AdGuard Home in an unprivileged Debian 13 LXC on Proxmox VE 9.2: port 53 with no config edits, *.lan rewrites, DHCP, optional Unbound, and a check table.
Proxmox WireGuard in an LXC: Self-Hosted VPN Setup Guide (2026)
Run your own WireGuard VPN in a Proxmox LXC: server setup, phone and laptop client configs, split vs full tunnel, and a comparison to Tailscale.
OPNsense on a Mini PC: Firewall Router Setup Guide (2026)
Replace your ISP router with OPNsense on a cheap mini PC: install, set up WAN/LAN, DHCP and DNS, enable IDS/IPS with Suricata, and connect your homelab.
VLANs for the Homelab: Network Segmentation Guide (2026)
How to set up VLANs in your homelab: isolate IoT, separate a guest network, add a management VLAN. Covers OPNsense, MikroTik, and Proxmox VLAN-aware bridges.
Self-Hosting (Media & AI)
Jellyfin Docker Install: Compose Setup, Ports and GPU Transcoding (2026)
Install Jellyfin in Docker with hardware transcoding (Quick Sync, NVIDIA CUDA, AMD VAAPI), Nginx Proxy Manager HTTPS, and Tailscale remote access.
Self-Hosted Photo Library 2026: Immich vs PhotoPrism vs Ente
Immich vs PhotoPrism vs Ente in 2026: current versions, each project's hardware minimums, self-hosting and hosted costs, and how to get your library out.
Immich Setup and Google Photos Migration Guide (2026)
Move Google Photos to Immich with Takeout. Check dates, originals and albums on a small sample, then verify a restore before retiring the old library.
How to Self-Host a Local LLM on a Single RTX 5060 in 2026
Run a private LLM on a $300 RTX 5060. VRAM tradeoffs, software stack picks, Windows + Linux setup, real tokens/sec numbers, and a verdict.
Storage Planning
Photo: TaurusEmerald, Wikimedia Commons (CC BY-SA 4.0)Proxmox vs TrueNAS vs Unraid: ZFS, btrfs, and Homelab IOPS
Unraid vs TrueNAS vs Proxmox in 2026: which storage platform to pick, how their ZFS and btrfs backends really differ, and the IOPS and rebuild tradeoffs.
HomelabUnraid vs TrueNAS vs OMV vs Proxmox: NAS OS Pick (2026)
The August 2026 state of the four NAS-thread names: real prices, RAM floors, storage models, and why Proxmox in this list is a category error.
More from this section
Glance Dashboard Setup on Windows 11 Without Docker
Set up the Glance dashboard as a native Windows app, keep it on loopback, and use measured v0.8.6 behavior to fix config and widget errors.
Home Assistant + llama.cpp: Fully Local LLM Voice, Measured (2026)
Home Assistant's llama.cpp integration for fully local LLM voice: measured STT/LLM/TTS latency per model, RTX 5080 vs CPU, and a 24-command accuracy test.
Jellyfin Remote Access: Pick the Right Path for Your Situation (2026)
Jellyfin remote access routed by situation: Tailscale, reverse proxy, VPS relay, or Cloudflare Tunnel - which works on TVs, behind CGNAT, and for family.
Uptime Kuma Docker Setup, and Where to Actually Run It (2026)
Uptime Kuma in Docker Compose, plus the part most guides skip: a monitor that lives inside the network it watches cannot tell you that network went down.
Ollama in Docker with GPU: Stop Installing CUDA Inside WSL2 (2026)
Ollama with NVIDIA acceleration in Docker, on native Linux and WSL2, plus Open WebUI. Why the CUDA install everyone does inside WSL is unnecessary.
Dockge Setup: The Compose Manager That Does Less On Purpose (2026)
Install Dockge with Docker Compose, and the one mistake its own README warns about: mismatched stacks paths that write your data somewhere else.
Docker Compose Environment Variables: .env Is Not env_file (2026)
The .env file next to compose.yaml puts nothing in your container. What each mechanism does, the exact precedence order, and why unset vars fail silently.
Docker Cleanup: Which Prune Command Eats Your Data (2026)
Reclaim Docker disk space without losing a database: what system prune removes, why --volumes is narrower than its reputation, and the one to fear.
Adding a User to the Docker Group Is Not a Convenience Setting (2026)
The command every tutorial gives you to stop typing sudo. What Docker's docs say it actually grants, why re-login is required, and when to use rootless.