Homeio
⌘KHome server lab

Build a home server lab you can actually manage

A homelab is where you learn; a home server is what the house depends on. This guide shows how to have both on modest hardware: what to buy, which OS to run, a worked Proxmox setup with commands, and the first projects worth doing.

Updated

Homeio
Homeio dashboard managing apps in a home server lab

Homelab or home server: what is the difference?

A home server is there to be used: it stores the photos, streams the films, blocks the ads, and the household notices when it is down. A homelab is there to learn and experiment: virtual machines, networks, clusters, things you build and break on purpose.

Most people end up with both on the same hardware, and that is where trouble starts: an experiment takes down the photo backup. The fix is separation. Run the services people depend on in one place you leave alone, and experiment somewhere else, which is exactly what a hypervisor such as Proxmox is good at.

Hardware tiers

You do not need a rack. Power draw matters more than raw speed, because the machine runs all day, every day.

Home server lab hardware by budget, with idle power and what it can do
TierTypical hardwareIdle powerGood for
StarterRaspberry Pi 5, 8 GB, NVMe hat3 to 5 WDocker apps, DNS, Home Assistant; no VMs
Sweet spotIntel N100 or N150 mini PC, 16 GB, NVMe6 to 10 WDocker apps, Jellyfin transcoding, a few LXC containers
LabUsed business mini PC (i5, 32 to 64 GB)10 to 20 WProxmox with several VMs and containers
Storage-heavyTower with 4+ drive bays30 W and upNAS, media library, ZFS

Buy RAM before CPU. Containers and VMs are limited by memory long before a modern CPU becomes the bottleneck.

Which homelab OS: Proxmox or plain Linux?

Homelab operating systems compared
ChoiceWhat you getPick it when
Debian or Ubuntu Server + DockerOne system, every app in a container, least overheadOne machine, mostly apps, you want it simple
Proxmox VEA hypervisor: VMs and LXC containers, snapshots, backups of whole guestsYou want to experiment without risking the services the house uses
TrueNAS or UnraidStorage first, apps and VMs on topThe machine is mainly a NAS
umbrelOS, ZimaOSAn appliance with an app storeYou do not want a lab at all, just apps

A common, sensible layout: Proxmox on the metal, one LXC container running Docker and a dashboard for the everyday apps, and VMs next to it for whatever you are learning this month. A broken experiment never touches the photo backup, and Proxmox can snapshot the app container before every upgrade.

Worked example: Homeio in a Proxmox LXC container

This is how the Homeio team runs its own server. On the Proxmox host shell, fetch a Debian template and create an unprivileged container with nesting turned on, which Docker needs:

pveam update
pveam available --section system | grep debian-12
pveam download local debian-12-standard_12.7-1_amd64.tar.zst   # use the name the list shows

pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname homeio --cores 2 --memory 4096 --swap 1024 \
  --rootfs local-lvm:32 --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --unprivileged 1 --features nesting=1,keyctl=1 --onboot 1
pct start 200

Open a shell inside the container and install Homeio. It brings Docker, PostgreSQL and Nginx with it:

pct enter 200
apt update && apt install -y curl
curl -fsSL https://get.homeio.app | bash

Give the container a DHCP reservation on your router, open its address in a browser, and create your account. Before each big change, take a snapshot from the Proxmox host so you can roll back in seconds:

pct snapshot 200 before-upgrade
# and if it goes wrong:
pct rollback 200 before-upgrade

Inside an LXC container some host features are limited: SMART data and disk partitioning belong to the Proxmox host, not to the container. Pass storage in as a mount point (pct set 200 -mp0 /tank/media,mp=/DATA/Media) rather than trying to manage disks from inside.

First homelab projects, from easy to ambitious

  1. 1.Network-wide ad blocking with AdGuard Home or Pi-hole. Useful on day one, and it teaches DNS.
  2. 2.Deploy a web server. Run one container, reach it on the LAN, then reach it from your phone over Tailscale (example below).
  3. 3.Monitoring: Uptime Kuma for services and Beszel for machines, with notifications to your phone.
  4. 4.A reverse proxy with HTTPS (Caddy or Nginx Proxy Manager) in front of your apps, with a local domain such as home.lan.
  5. 5.Backups that you have restored: Proxmox Backup Server for guests, restic for data, one copy off-site.
  6. 6.Infrastructure as code: move your compose files into a git repository and redeploy the whole stack from it.

Project 2 in practice. Start a web server on port 8080, check it from the server itself, then from your laptop:

mkdir -p ~/site && echo '<h1>Hello from my homelab</h1>' > ~/site/index.html
docker run -d --name site --restart unless-stopped -p 8080:80 -v ~/site:/usr/share/nginx/html:ro nginx:alpine
curl -s http://localhost:8080

Then open http://server-ip:8080 from another machine on the network. With Tailscale on the server and on your phone, the same page opens at http://server-name:8080 from anywhere, with no port forwarded on the router. In Homeio the container shows up on the desktop, where you can name it, give it an icon and a link.

Keep the lab manageable

  • Write down what you set up and why, in a wiki such as BookStack or a plain git repository. Six months later you will not remember.
  • Keep compose files and configuration in one folder (/DATA/AppData or a git repo), so a rebuild is a copy and a docker compose up.
  • Update on a schedule, not when you remember: weekly image pulls, monthly OS updates, after a snapshot.
  • Never forward ports for the dashboard or SSH. Use Tailscale or WireGuard for yourself, and a tunnel for the one app you share.
⌘HWhere Homeio fits

What Homeio does in a home lab.

Homeio is the stable side of the lab: the everyday apps, their files and the machine they run on, in one browser window, with a full terminal when you need it. It runs directly on Debian, Ubuntu or Raspberry Pi OS, or inside a Proxmox LXC container as above, and it does not stand in the way of learning Docker, since every app is a compose file you can read and edit.

⌘?FAQ

Home server lab questions.

What is a home server lab?

A small environment at home where you run services, storage, networking tools and experiments on hardware you control. It can start with one mini PC or a Raspberry Pi and grow into several machines running Proxmox.

What is the difference between a homelab and a home server?

A home server runs services people use every day, so it should be stable. A homelab is for learning and experimenting, so things break on purpose. Many people run both on one machine with Proxmox: a stable container for the everyday apps, and VMs for experiments.

What is the best OS for a homelab?

Proxmox VE if you want virtual machines, containers and snapshots to experiment safely. Debian or Ubuntu Server with Docker if you mainly run apps on one machine. TrueNAS or Unraid if the machine is mostly storage.

Can I run Docker inside a Proxmox LXC container?

Yes, in an unprivileged container with the nesting and keyctl features turned on, as in the example above. It uses less memory than a VM. Use a VM instead if an app needs its own kernel modules or full hardware access.

How do I deploy a web server in a homelab?

Run a web server container such as nginx:alpine with a folder of HTML mounted into it, publish a port, and open it from another machine. To reach it from outside, use Tailscale for yourself or a tunnel such as Cloudflare Tunnel for a public site, rather than forwarding a port on your router.

What is the best beginner home lab server?

An Intel N100 mini PC with 16 GB of RAM and an NVMe SSD: quiet, around 6 to 10 W at idle, and enough for a dozen Docker apps and a couple of containers. A used business mini PC with 32 GB or more is the step up for Proxmox with several VMs.