The homelab guide: smart home, media, Tesla, and going off-grid
Nathan Chadwick · · 27 min read
TLDRRead the short version
- Start with the problem, not the rack. A homelab is just a small always-on server plus good habits. One quiet Intel N100 or N150 mini PC idles at roughly 5 to 10 watts, which is about £23 a year at the current UK price cap if it averages 10 watts.
- Proxmox as the base, Home Assistant OS in a VM, everything else in containers, and backups from day one. Treat RAID as uptime, not backup.
- Smart home: keep it local. Home Assistant plus Zigbee or Thread/Matter, Frigate for cameras, and a Zigbee or Thread dongle passed through to the VM. Cloud-only gear is a liability.
- Media: Jellyfin is free including hardware transcoding. Plex now charges for remote streaming. Either way, use Intel Quick Sync, keep files in formats your TVs direct play, and reach it over Tailscale rather than port forwarding.
- Tesla: the car, Wall Connector, and Powerwall all have Home Assistant paths, but they differ in how local they are. Tesla blocked a major third-party energy API for days in April 2026, so never make safety-critical automations depend on one cloud API.
- Off-grid: design for December, not the annual average. In UK winter, solar gives roughly 1.1 to 1.4 kWh per kWp per day, so true off-grid needs a big array, a big battery, and a generator. A grid-tied hybrid with a battery is the sensible first step, and the lab becomes the energy brain.
- Roadmap: weekend one is Proxmox, DNS, and a password manager. Then Home Assistant, backups, monitoring, media, energy data, and only then the off-grid build.
Why build a homelab at all#
A homelab is a small set of computers at home that you run like a miniature data centre. That sounds grand. In practice it is one quiet box in a cupboard that does a lot of boring, useful things all day.
The reasons people end up with one tend to fall into four buckets:
- Learning. You get to break things safely. Virtualisation, networking, identity, backups, monitoring. If you work in IT, this is the cheapest lab you will ever own.
- Privacy and ownership. Your photos, passwords, documents, camera footage, and home automation stay in your house instead of in somebody else's subscription.
- Resilience. When the internet drops, your lights, heating, and media still work, because the brain is local.
- Cost control. Self-hosting can replace a stack of subscriptions, though be honest about your own time, because that is the real cost.
This post is a long one. It covers hardware, the platform, networking and security, smart home, home media, Tesla integration, going off-grid, backups, and a phased plan. I wrote it for my own use as much as anyone else's, because the three things I care about (a smart home, a media setup, and eventually leaving the grid) all end up depending on the same small server.
I have already written about parts of this. If you want the network design, read UniFi segmentation for Main, Guest, IoT and casting. For the platform side, see containers versus VMs and Sophos Firewall on Proxmox. For DNS, DNS hygiene and zero trust.
Start with the problem, not the rack#
The classic homelab mistake is buying a rack, a used enterprise server, and a 10 gigabit switch before deciding what any of it is for. Then it idles at 150 watts, sounds like a hair dryer, and runs three containers.
Write down what you actually want, in three tiers:
- Tier 1, must work every day. DNS, password manager, Home Assistant, backups. If these break, the household notices.
- Tier 2, nice to have. Media server, photo library, documents, camera recording.
- Tier 3, experiments. Anything you are learning. This can break whenever it likes.
That tiering matters later. Tier 1 should live on the most reliable box, on a UPS, with tested backups. Tier 3 should be disposable.
Hardware: boring, quiet, efficient#
The one-box start#
For most people the best first homelab is a small Intel mini PC. The Intel N100 and N150 class machines are cheap, silent or nearly so, and they have Intel Quick Sync for video transcoding, which matters for media and cameras.
Published wall-power measurements for these are consistent enough to plan around:
- Idle, headless, running Proxmox: around 5 to 10 watts. One Beelink EQ14 (N150) measured 6.2 W in one test and 8.91 W in another with different configuration, so treat the range as honest.
- A handful of light containers: roughly 8 to 12 watts.
- One 1080p transcode: one source measured about 16 W on an N100 box.
- Full CPU load: roughly 18 to 25 watts.
Do your own measurement with a cheap plug-in power meter after ten minutes of stable idle. Disable Wi-Fi and Bluetooth in the BIOS if you do not need them, and run powertop --auto-tune. People report shaving a watt or two that way, and on an always-on box that adds up.
What it costs to run#
The current Ofgem default tariff cap for October to December 2026 is 26.32p per kWh for electricity, with no VAT on electricity until 31 March 2027. Your rate may differ, and this excludes the standing charge, which you pay regardless. Using that unit rate and running 24/7:
- 10 W average: about 88 kWh a year, roughly £23.
- 25 W average: about 219 kWh, roughly £58.
- 50 W average: about 438 kWh, roughly £115.
- 150 W average: about 1,314 kWh, roughly £346.
That last number is the old-server problem. A used rack server at 80 to 100 W idle costs several times more to run than a small cluster of mini PCs, and the main reasons to want one are RAM capacity, drive bays, and expansion cards. It is not power efficiency.
If you are heading off-grid, this is not trivia. Every always-on watt becomes a watt your battery has to cover through the worst week of winter. We will come back to that.
When to step up#
The mini PC stops being enough when you need one of these:
- Lots of storage. Media libraries get large fast. A single 4K remux can be 50 to 80 GB. Plan a proper NAS, or a Proxmox host with a few big disks.
- GPU work. Local AI models and heavy transcoding want a real GPU.
- High availability. A second node means you can reboot one without taking the house down.
A sensible middle path is a mini PC for the always-on Tier 1 services and a separate storage box that you can wake or maintain without touching the house automation.
Storage notes#
- RAID is not backup. It protects against a disk dying. It does not protect against deletion, ransomware, fire, or a bad upgrade.
- ZFS is excellent for a storage pool, and it is built into Proxmox. Proxmox VE 9 ships ZFS 2.3.x, which allows adding a disk to an existing RAIDZ pool with minimal downtime.
- Use SSDs for the VM and container disks, and spinning disks for bulk media. Logs and databases hate slow disks.
- Buy high-endurance SSDs if the box will run databases, Frigate recordings, or Home Assistant history for years.
Network and power gear#
- Wired beats Wi-Fi for the server, access points, cameras, and streaming boxes. PoE for cameras and access points keeps cabling tidy.
- Gigabit is plenty for most households. A 1 GbE link carries several high-bitrate streams. Go 2.5 GbE if large backups run while people watch things.
- A UPS on the router, switch, and server turns a power blip into a non-event. Pair it with NUT so the server shuts down cleanly if the outage is long.
- Label cables and ports. You will thank yourself in a year.
The platform: Proxmox, containers, and what goes where#
My default recommendation is Proxmox VE as the base, because it lets you mix full virtual machines and lightweight containers on one box, with snapshots and backups built in.
Some current facts worth knowing: Proxmox VE 9.0 is based on Debian 13, and 9.1 added the ability to create LXC containers from OCI images, which blurs the line between Proxmox containers and Docker-style application containers. Proxmox Backup Server 4.0 added native S3-compatible storage as a backup target.
A simple placement rule#
- Home Assistant OS goes in its own VM. Home Assistant recommends HAOS as the install type for most people. It gives you apps (what used to be called add-ons), one-click updates, and built-in backups, and Thread and Z-Wave support are handled through those apps. HA Container does not get that. Give the VM at least 2 vCPUs and 2 GB of RAM.
- Everything else goes in containers. One Docker Compose file per stack, data on named volumes or bind mounts, and the Compose files in Git.
- VMs for things that need a full OS or stronger isolation. Firewalls, Windows test machines, anything you do not trust.
If you are choosing between Docker and Podman, or between containers and VMs, I covered the trade-offs in the containers post. The short version: containers for apps, VMs for operating systems, and write down which is which.
Habits that keep a lab healthy#
- Pin image versions.
latestwill eventually walk you across a breaking change. Read release notes before upgrading anything that holds data. - Keep the Compose files and configs in Git, and secrets out of Git.
- Use one naming scheme and one IP scheme. Reserve DHCP leases for infrastructure.
- Write a one-page runbook: what runs where, how to restore it, and where the passwords live.
Networking and security first#
Most homelab security failures are not clever attacks. They are an exposed admin page, a default password, or a cloud-connected camera on the same network as the laptop that holds your tax return.
Segment the network#
Put things on separate networks: Main for trusted devices, Guest for visitors, IoT for smart gear, and a lab or server network for the stuff that hosts services. Deny IoT-to-Main by default and allow only what you need. My full walkthrough, including why Cast and AirPlay break across VLANs and how to fix it with mDNS reflection, is here.
Run your own DNS filtering#
A local resolver such as Pi-hole or AdGuard Home gives you network-wide ad and tracker blocking, local hostnames, and visibility into what your IoT devices are phoning home to. It is also the easiest "Tier 1" service to start with. See DNS hygiene for the zero-trust angle.
Remote access without opening ports#
This is where people get hurt. The simple rules:
- Never port-forward an admin page, or a media server login, straight to the internet. For Jellyfin in particular, do not expose port 8096 directly. Use a VPN or a properly configured reverse proxy.
- Use a private mesh VPN for you and your family. Tailscale is the lowest-effort route, works behind carrier-grade NAT, and needs no inbound ports. Plain WireGuard gives you full control but needs a reachable endpoint, so it struggles behind CGNAT without a relay.
- Use Cloudflare Tunnel only to publish specific web apps, with Cloudflare Access in front. It publishes a service to the internet, so the app's own authentication has to be solid. Do not put your password manager or admin panels behind it, and read the terms before streaming media through it.
- Many labs end up running two: a private VPN for admin and a tunnel for the one or two services that need a public address.
Passwords and identity#
Run Vaultwarden if you are going to self-host one thing. It is a Bitwarden-compatible server, tiny, and every official Bitwarden client works with it. Because it holds every password you own, set a hashed admin token, put it behind HTTPS, restrict access to your LAN or VPN, and back it up encrypted. Do not make it your first publicly exposed experiment.
Updates and monthly checks#
A short monthly routine goes a long way:
- Update the router, access points, and NAS firmware.
- Review listening ports and any UPnP mappings. Turn UPnP off if you can.
- Check VPN accounts, admin accounts, and MFA.
- Look for unknown DHCP clients.
- Confirm a backup restore works.
The smart home: local first#
Home Assistant is the centre of this. It is open source, it runs locally, and it talks to thousands of devices without needing a vendor cloud.
Why local control matters#
When a vendor cloud goes down, cloud-only gear stops working. When a vendor changes pricing or shuts a product down, you lose features. Local integrations also poll faster. A cloud API might refresh every 5 to 15 minutes, while a local one can update every few seconds, which matters for automations that react to solar generation or a door opening.
My rule: prefer local protocols, then local APIs, then cloud APIs as a last resort, and for anything that matters (locks, heating, alarms, power) have a manual fallback.
Radios and protocols#
- Zigbee is mature, cheap, and has a huge device range. Home Assistant's built-in ZHA integration got a full-page device management UI in 2026.7. Zigbee2MQTT is the other popular route and talks to HA through MQTT.
- Thread and Matter are the newer standard. Home Assistant moved its Matter server to a matter.js-based Matter Server 9.0 in June 2026, with faster start-up and recovery, more reliable over-the-air updates, and Thread 1.4 support through an updated OpenThread Border Router app. 2026.9 added a Matter network map, so you can see which devices are on Thread and which on Wi-Fi.
- The USB radio. Nabu Casa's Home Assistant Connect ZBT-2 is the current recommended adapter for new Zigbee networks and also does Thread. Choose one role for it, Zigbee or Thread, rather than expecting it to do both at once.
- Proxmox gotcha: if you pass a USB radio through to a Home Assistant VM and it does not appear, shut the VM down before adding the passthrough device. This has bitten a few people.
Cameras: Frigate#
Frigate is a local NVR with AI object detection and deep Home Assistant integration. It tells you "a person is at the front door" rather than "something moved".
Current guidance:
- Use an Intel iGPU with the OpenVINO detector. The Coral TPU is no longer recommended for new installs unless you have very specific low-power needs.
- Intel N100 and N150 are fine for modest setups. The docs list roughly 15 ms inference for a small model on N100, and note an N100 can only run one detector instance.
- Use a low-resolution substream for detection and the full-resolution main stream for recording.
- Use wired PoE cameras and keep them on the IoT or camera VLAN, with no internet access.
- Home Assistant needs MQTT set up first. That is the step most first-time installs miss.
Voice, without the cloud#
Home Assistant's Assist can run entirely locally using wake word detection, Whisper or Speech-to-Phrase for speech to text, and Piper for text to speech. For command-only use, Speech-to-Phrase is fast even on a Raspberry Pi 4. For open-ended conversation, add an Ollama server, and give it a GPU if you want it to feel snappy. A used RTX 3060-class card is a common starting point for a small model. You do not need a GPU just to say "turn on the kitchen lights".
Automations that earn their keep#
- Lights and heating based on presence and time.
- Notifications through your own channel when a door is left open, a freezer warms up, or the washing machine finishes.
- A leak sensor under every sink and behind the washing machine.
- Energy-aware automations (the section on Tesla and off-grid below).
- A dashboard that shows household energy, so everyone can see what is going on.
Home media: Jellyfin, Plex, and a library you control#
Jellyfin or Plex#
This changed recently, so it is worth being precise.
- Plex now needs a paid pass for remote streaming of your own media. The reporting I found puts a Plex Pass at $6.99 a month or $69.99 a year, and a Remote Watch Pass at $2.99 a month or $29.99 a year (US pricing, so check your region). Hardware transcoding is a Plex Pass feature. Local streaming on your own network stays free. If the server owner has Plex Pass, the people they share with can stream remotely.
- Jellyfin is free and open source, with no account, no relay, and hardware transcoding included. The trade-off is that you handle remote access yourself, and some TV apps are less polished.
If you care about ownership and privacy, Jellyfin is the natural fit for a homelab. If your family wants "it just works on every TV" and you are happy to pay, Plex is still smoother.
Hardware transcoding#
Intel Quick Sync handles this nicely on N-series chips. Jellyfin supports QSV and VA-API on Linux, there is no concurrent session limit on Intel iGPUs, and it works headless. Passing the render device into a container looks like this:
services:
jellyfin:
image: jellyfin/jellyfin:latest
restart: unless-stopped
devices:
- /dev/dri:/dev/dri
volumes:
- ./config:/config
- ./cache:/cache
- /srv/media:/media:ro
ports:
- 8096:8096Pin the image to a version you have tested, and bind the port to your LAN or Tailscale address rather than exposing it. Then turn on hardware acceleration in the Jellyfin dashboard under Playback.
The best transcode is the one that never happens. Keep files in codecs and containers your TVs direct play, and you will barely use the GPU.
Networking for streaming#
- Wire the server. A stream at home only crosses your own network.
- The slow link is often the player. Some streaming boxes have 100 Mbps Ethernet, which tops out around 95 Mbps, and that is below the peaks of a full-quality 4K disc rip.
- Away from home, your upload speed is the limit. A 20 Mbps upload carries one 20 Mbps stream, at most.
- Check you are not behind CGNAT if you want inbound connections. If you are, a mesh VPN is the answer.
Beyond movies#
- Immich is the self-hosted Google Photos replacement, with phone auto-upload, face and object search, and shared albums. It wants real RAM (the docs say 6 GB minimum for the machine learning features, 8 GB comfortable), and it ships frequent releases, so pin versions and read the notes before upgrading.
- Audiobookshelf and Navidrome are popular for audiobooks and music.
- Library automation tools such as the *arr family help organise media you already own or have the right to use. Keep within the law and your licences.
Storage sizing#
Estimate by hours, not titles. A 1080p film is a few gigabytes, a 4K remux is 50 to 80 GB, and a full 1080p series can pass 100 GB. Plan for what you will own in three years, and put the media on disks you can expand, not on the same SSD as your VMs.
The Tesla angle#
Here is where a homelab gets genuinely fun, because a Tesla is a networked battery on wheels, and if you also have a Wall Connector or Powerwall, the house and car become one energy system.
The honest summary is that there are several integration paths, and they differ a lot in how local and how stable they are.
Vehicle: the options#
- Tesla Fleet integration (official API, free for light use). Home Assistant has a Tesla Fleet integration that talks to Tesla's Fleet API. You create your own developer application, host a public key file on a domain you control, and authorise. Tesla gives each developer account a $10 monthly usage credit for personal use. Home Assistant polls each awake vehicle every 10 minutes, which is designed to stay inside that credit for most people. Energy product APIs are free. Beyond the credit you need a payment method and a limit, and apps that exceed the limit or have no payment method are disabled.
- Teslemetry (paid third-party service). It sits in front of the Fleet API and handles much of the setup. As of Home Assistant 2026.10, the core Teslemetry integration added Bluetooth vehicle control and local Powerwall control. For Bluetooth you need an adapter or Bluetooth proxy in range of the car, and you approve the virtual key by tapping your key card on the centre console.
- Tessie (paid third-party service). Also supported by Home Assistant, covering vehicles, Powerwall, and solar inverters.
- TeslaMate (self-hosted data logger). A Docker stack of TeslaMate, PostgreSQL, Grafana, and Mosquitto that records drives, charging, efficiency, and battery degradation, with MQTT for Home Assistant. It needs an always-on machine and at least 1 GB of RAM, with 2 GB recommended. By default it uses Tesla's unofficial Owner API, which individual accounts can still use, while Tesla business fleet accounts are being moved to the official APIs. Its own docs point out that the official Fleet and Telemetry APIs have drawbacks for personal users, so check the current docs before you build around either. Release 4.3.0 landed on 29 September 2026. Do not expose it to the internet without a VPN or authenticated proxy, because it holds your Tesla tokens.
For a homelab that values local control, Bluetooth is the interesting direction. Commands go straight from a nearby Bluetooth proxy to the car with no cloud round trip.
Wall Connector: read-only locally#
The Gen 3 Wall Connector exposes a local, unauthenticated HTTP API. Home Assistant's official integration reads it for status, session energy, lifetime energy, power, voltages, and temperatures. It is monitor-only: it cannot start or stop a charge or set the current. That is a local-first win for visibility, but it means smart charging has to go through the car.
For solar-surplus charging, the usual pattern is to use the Tesla Fleet integration's charging switch and charge-current number on the vehicle, triggered by "car is plugged in at home" and "export or surplus above X watts".
Also note that the unauthenticated local API means anything on the same network can read it. Keep it on the IoT VLAN.
Powerwall: useful, with caveats#
- Powerwall 2 and 3 are both supported by Home Assistant, but Powerwall 3 exposes a more restricted local API. The integration lacks off-grid operation, backup reserve, and per-battery sensors on PW3, though aggregate power flow, charge, and lifetime energy sensors work.
- Energy dashboard gotcha: Fleet API energy data gives instantaneous power in kW, not kWh. To feed Home Assistant's Energy dashboard, convert it with template sensors and Riemann sum helpers.
- In the UK, Powerwall 3 is available, and backup power needs the Backup Gateway 2. Without it you have a battery that saves money but does nothing in a power cut. Tesla does not publish a UK price. One installer quotes from £8,500 installed, which is their number, not Tesla's. Battery storage in homes currently qualifies for 0% VAT until 31 March 2027, according to HMRC guidance quoted by that installer.
- Vehicle to home. Tesla announced Powershare Home Backup on 6 October 2026 for new Model 3 and Model Y with Powerwall 3, using the car to extend backup. The reporting I found did not confirm UK or European availability, so do not plan around it yet.
A warning about cloud APIs#
In April 2026, Tesla blocked a third-party integrator's access to the Powergate energy backend. Teslemetry reported roughly 36 hours of disruption before it re-routed requests through a second application. Tesla later said the block followed a roughly doubled volume of energy commands, and added stronger rate limiting. Access was restored.
The lesson is not "avoid third-party integrations". It is: do not make anything safety-critical depend on a vendor cloud. Your house should keep working when the API does not. That is also why local Powerwall control and Bluetooth vehicle control are exciting. They remove the internet from the loop.
Two more Tesla projects#
- Archive TeslaCam and Sentry footage to your NAS. A Raspberry Pi acting as the car's USB drive, running TeslaUSB or the newer Glovebox project, copies Sentry and saved clips over Wi-Fi when the car gets home. By default only Sentry and saved clips are archived, not the rolling RecentClips folder. A sleeping Tesla cuts USB power, so these tools can keep the car awake over Bluetooth during the copy.
- Charge cheaply and automatically. On a UK time-of-use tariff, schedule charging into the cheap window, use Home Assistant to confirm the car is plugged in and the target is sensible, and alert you if it did not start.
Going off-grid, honestly#
I want to go off-grid one day, so I am going to be the sceptic here first. It is a fantastic goal, and the maths in the UK is harsh.
Design for December#
Solar output swings enormously across the year. PVGIS data cited by UK installers puts London around 1.1 to 1.4 kWh per kWp per day in December, compared with roughly 4.5 to 5.5 in June. Scotland can be below 0.8 in December.
A worked example, with deliberately round numbers:
- Winter household use of 10 kWh a day.
- December yield of 1.25 kWh per kWp per day.
- Array needed: 10 divided by 1.25 is 8 kWp before losses. After charge controller, battery, and inverter losses, think more like 9 to 10 kWp.
- Battery for three days of autonomy: 10 kWh times 3 days, divided by 0.90 usable depth of discharge (typical for LiFePO4), divided by 0.92 inverter efficiency, is about 36 kWh.
A summer-sized grid-tied array of 4 kWp would make only a third of that. And a battery cannot carry June into December. It only moves energy from afternoon to evening.
A generator is part of the design#
UK off-grid designs almost always include a 3 to 5 kW generator. Cloudy stretches in the dark months can leave batteries empty for days even with an oversized array. Sizing the array for November or February instead of December and letting a generator cover a few winter weeks can save a large share of the panels. That is a real design lever, not a failure.
The stepping stone: a grid-tied hybrid#
For most UK homes, the realistic route is:
- Solar plus battery, still grid-connected. You get resilience and savings, and you learn your real load.
- A smart tariff. Intelligent Octopus Go suits homes with an EV and a battery. Agile Octopus is half-hourly pricing and rewards active optimisation. From March 2026 the flat Outgoing Octopus export rate was cut from 15p to 12p per kWh, so the best choice depends on whether you can shift exports into higher-value periods.
- Optimise with software. Predbat, an open-source Home Assistant add-on, uses tariff prices and solar forecasts to schedule battery charging and discharging. Installers claim it adds a few hundred pounds a year over a battery without it. Treat vendor savings claims as marketing until your own meter shows it.
- Then cut the cable if you still want to. By then you will know your loads, your winter yield, and how much you actually want a generator.
Real-world results vary. One published case study of a 5 kWp array with an 11.52 kWh battery on Intelligent Octopus Go and Agile Outgoing earned about £89.69 over two months in summer, and September turned negative. Another study across 20 UK homes found a battery left to itself saved the average home about £3.75 in December, but about £29.42 when planned every half hour. The software matters.
The monitoring and control stack#
This is where the lab pays for itself.
- Victron GX devices (Cerbo GX and similar) run Venus OS. Enable MQTT in the settings and Home Assistant's Victron GX integration gets sensors, alarms, and writable controls automatically. For a custom setup, the Large image adds Node-RED and Signal K, and some people publish a cleaned-up state to MQTT from Node-RED inside the Cerbo itself.
- LiFePO4 batteries with a BMS can often be read over Bluetooth by an ESP32 and bridged to MQTT and Venus OS, so you see cell voltages and state of charge.
- Home Assistant's Energy dashboard brings in solar, battery, grid, and car charging so you can see where every kWh went.
- Keep the controller independent. The inverter and charge controller must keep protecting the battery without Home Assistant. Treat the homelab as the optimiser and dashboard, never as the only thing between a battery and a fault.
- Keep your Tier 1 services on the protected supply. DNS, Home Assistant, and the router should survive an outage on battery.
Power budget the lab itself#
Off-grid thinking changes how you buy gear:
- Idle watts matter more than peak watts.
- A 3 kW inverter can draw 25 to 40 W doing nothing, up to about a kilowatt-hour a day. Add it to your load list.
- A fridge-freezer averages 25 to 40 W and is usually the largest steady load.
- A tilt that suits winter, and no shading on the December sun path, can matter more than extra panels.
- Consider moving critical low-power devices (router, Home Assistant box, Zigbee/Thread radios) onto DC or a small dedicated UPS so they survive anything.
Connectivity and the car#
Off-grid still needs a way to reach the internet, and a plan for when it fails. Local-first services help here, because the house keeps running without a link. Treat the car as a bonus battery rather than a plan, because bidirectional charging for Model 3 and Y owners outside the US is not something I would design around yet.
Other tools worth running#
A short list of things that tend to earn their place:
- Uptime Kuma. Checks that services respond and alerts you. Run it early, because otherwise you find out something broke days later when you try to use it.
- Beszel, or Grafana with Prometheus. Graphs CPU, memory, disk, and per-container use over time.
- Homepage. A start page with live widgets for your services.
- ntfy or similar. A self-hosted push notification channel for alerts.
- Paperless-ngx. OCR and searchable archive for receipts, manuals, and statements. OCR uses CPU, so tune it before bulk-importing ten years of paper.
- Nextcloud or Syncthing. Nextcloud for a web UI, sharing links, calendar and contacts. Syncthing when you only want files to sync. If you run Nextcloud, put it on PostgreSQL from day one.
- Forgejo or Gitea. Private Git, issues, and CI. Back up repositories and the database together.
- Actual Budget. Local, private budgeting.
- FreshRSS. A feed reader that does not vanish.
- Ollama. Local language models, ideally with a GPU, for Home Assistant or your own experiments.
- Monitoring dashboards for energy. Grafana with TeslaMate dashboards, plus your solar and battery data in one place.
A few of these are also good career practice. A homelab with identity, logging, backup, and alerting is a reasonable scale model of a work environment, and I have written about PowerShell guardrails and Azure backup restore drills for the production versions of the same ideas.
Backups: the part that decides whether it is a hobby or a risk#
The 3-2-1 rule still works at home: three copies, on two different kinds of storage, with one offsite.
A practical layout:
- Copy 1: live data on the Proxmox host.
- Copy 2: Proxmox Backup Server on a separate disk or machine, scheduled nightly.
- Copy 3: an encrypted offsite copy, either a PBS sync to a trusted remote box or restic pushing to object storage such as Backblaze B2.
Some details that matter:
- PBS handles VMs and containers. Use restic or similar for Docker app data and NAS shares.
- Keep configs, Compose files, and notes in Git and a second encrypted location.
- Prefer pull-based backups where the backup server fetches from the host, so a compromised host cannot delete every generation.
- A green backup job is not proof. Verification jobs prove chunks are intact. Only a restore proves it works.
A sensible test schedule:
- Weekly: automated verification.
- Monthly: restore a few files and compare them.
- Quarterly: restore a whole VM to a new, isolated VM ID, boot it, and check the service.
- Yearly: rebuild from scratch on a fresh install using only your notes.
Your real recovery time is usually two to three times what you assume, so measure it.
A phased plan#
Weekend one#
- Install Proxmox on a mini PC.
- Set a static address, create the VLANs you want, and label everything.
- Run AdGuard Home or Pi-hole and Vaultwarden.
- Install Tailscale.
- Buy a plug-in power meter and note your idle watts.
Month one#
- Home Assistant OS in a VM, USB radio passed through, first few Zigbee or Thread devices.
- Proxmox Backup Server, offsite copy, and one real restore test.
- Uptime Kuma and a notification channel.
- UPS and NUT.
Quarter one#
- Jellyfin on a storage pool, with hardware transcoding working.
- Immich for photos.
- Tesla integration: choose Fleet or Teslemetry, add the Wall Connector, add the Powerwall if you have one, and build the Energy dashboard.
- Frigate on a couple of wired cameras.
Year one and beyond#
- Add smart-tariff automation, then a solar and battery system with a monitored controller.
- Log everything: yield, load, battery state, car charging.
- Work out your real December numbers before you buy for off-grid.
- Decide whether you want true off-grid or a very resilient grid-tied home with a generator.
Mistakes to avoid#
- Buying big first. Idle watts and noise decide whether a lab stays on.
- Exposing things to the internet. Use a VPN.
- Skipping backups. Then skipping restore tests.
- Cloud-dependent automations for important things. Local first.
- Using
latesteverywhere. Pin and read release notes. - Putting everything on one box with no plan to rebuild it. Write the runbook while it still works.
- Treating the lab as a second job. If it needs constant attention, it is too complicated. Remove things.
- Forgetting the household. If anyone else in the house cannot turn on a light when the server is down, you have built something fragile.
What this post is not#
This is a planning guide. Prices, release numbers, and API terms change quickly, and I have noted where a figure comes from a single source or an installer rather than the vendor. Check the current documentation before you buy hardware or build automations around a particular API. If you are doing electrical work, an off-grid install, or anything involving mains and large batteries, use a qualified installer and follow your local regulations. A homelab can fail gracefully. A badly installed battery bank cannot.
References#
Sources and further reading for the claims above.
- Mini PC Power Consumption 2026, real data and costs
- 24/7 homelab power costs, idle watts and annual cost
- Low-power homelab: Intel N100 and N150 power consumption measurements
- Ofgem, changes to the energy price cap 1 October to 31 December 2026
- Proxmox VE 9.0 release
- Proxmox VE 9.1 release (OCI images for LXC)
- Proxmox Backup Server 4.0 release
- Home Assistant installation types
- Home Assistant, the Matter upgrade (Matter Server 9.0, matter.js)
- Home Assistant 2026.9 release notes (Matter network map)
- Home Assistant 2026.7 release notes (ZHA device UI)
- Home Assistant Connect ZBT-2
- Zigbee Home Automation (ZHA)
- Frigate recommended hardware
- Frigate object detectors
- Home Assistant, set up a fully local voice assistant
- Home Assistant Ollama integration
- Jellyfin hardware acceleration on Intel GPUs
- Plex vs Jellyfin comparison, Build a Homelab
- Plex and Jellyfin network setup, speed and remote access
- Tailscale vs WireGuard vs Cloudflare Tunnel for homelabs
- Secure remote access, Home Network Lab
- Tesla Fleet API, developer portal and pricing
- Tesla Fleet API billing and limits
- Home Assistant Tesla Fleet integration
- Home Assistant Teslemetry integration
- Teslemetry, local control in Home Assistant 2026.10
- Teslemetry, Tesla blocked Teslemetry (April 2026)
- Home Assistant Tessie integration
- Home Assistant Tesla Powerwall integration
- Home Assistant Tesla Wall Connector integration
- TeslaMate documentation, Docker install
- TeslaMate documentation, Fleet API and Telemetry
- TeslaMate changelog
- Tesla UK Powerwall
- Backup Gateway 2 explained, Alps Electrical
- TeslaUSB
- Glovebox, TeslaCam backup to your NAS
- Victron GX integration, Home Assistant
- Victron Cerbo GX configuration manual
- Victron MQTT with Node-RED, The Lazy Engineer
- Off-grid solar panels in the UK, Smart Solar Homes
- Off-grid solar calculator and sizing method
- Off-grid system sizing, Wind and Sun
- Do solar batteries work in winter? UK figures, Orza
- Best Octopus tariffs for solar and battery in 2026
- Octopus smart tariffs
- Predbat, solar battery optimisation
- A summer of real solar and battery bills, My Energy Expert
- What to self-host in 2026, SSD Nodes
- Best self-hosted apps in 2026, Homeio
- Homelab backup strategy, 3-2-1
- Proxmox Backup Server restore testing and DR drills
- Backing up a home lab with PBS and offsite sync