Nazeem.Me

A blog about technology, football and all the other random stuff in my life

What my homelab costs to run: 337 W and S$76 a month

Written by

in

,

·

I priced my homelab in a spreadsheet, then checked each row against what was actually running.

The number

The homelab’s devices draw about 337 W across 21 rows. After UPS losses that’s about 377 W at the wall, or 276 kWh a month. My rate is 25.39 c/kWh before GST, 27.68 c with 9% GST, so the homelab costs S$76.25 a month, about S$915 a year.

The sheet gives every device a low and a high estimate. Using all lows, then all highs, the range is 229–322 kWh, or S$63–89 a month.

For scale, the average private apartment or condo in Singapore used 522 kWh a month in 2024, according to a written parliamentary reply from MSE in September 2025. The homelab alone uses 53% of that.

How the estimate works

Each device gets one row with a low and a high wattage. These are typical draw at light load, not spec-sheet maximums. The sheet uses the midpoint unless I enter a metered reading, and every row is tagged with how much I trust it:

  • Certain: measured.
  • Likely: model known, typical figures.
  • Guessing: model partly known, or the figure is a guess.

Three assumptions sit on their own sheet: 730 hours a month, the tariff, and a UPS overhead percentage.

After the check, two rows are Certain, nine are Likely and ten are Guessing. The guessed rows carry 129 W, or 38% of the device load.

Checking it against what’s running

The first version had 17 rows and came to 298.5 W, 218 kWh and S$75.80 a month at the SP regulated tariff (34.78 c/kWh including GST). Then I checked each row.

What’s actually on

I checked pings, Tailscale’s last-seen times and the Proxmox cluster status. Two things had changed since I built the sheet:

  • Thorin is gone. One of my two Lenovo M90q Gen 3s left the cluster on 17 October and Balin took its place (the full story). It’s the same model, so the row stayed.
  • The Unraid box stays off. It holds my cold copy and Tailscale last saw it 24 days ago. Its row is standby draw only, 1 W.

CPU package power

I read the RAPL energy counters on the three cluster nodes over 15–20 seconds:

NodeHardwareGuestsPackage power
ser9Beelink SER9, Ryzen 7 25514 CT, 1 VM7 W
nucboxGMKtec K12, Ryzen 7 25513 CT, 1 VM9 W
balinLenovo M90q Gen 3, i5-12500T4 CT, including Frigate8.9 W

Load average was 0.4–0.6 on all three. The AMD driver exposes the same intel-rapl path as Intel:

f=/sys/class/powercap/intel-rapl:0/energy_uj
a=$(cat $f); sleep 15; b=$(cat $f)
echo "$(( (b-a)/15000000 )) W"

Package power leaves out RAM, NVMe, NICs and the power brick’s own losses, so I put each node at 15–20 W at the wall. That fits the sheet’s existing ranges, so those rows didn’t change.

The two metered devices

Gollum is my secondary Proxmox Backup Server, an i5-7500 desktop with a 10G NIC. It reads 20 W on a plug-in meter. The sheet labelled it “PBS server”, and I first read that as my primary PBS. That one is a VM on the DS1621+ and is already counted in the NAS row.

The other is the TP-Link TL-SX1008 in my study, an 8-port 10GBASE-T switch that links the desk and the DS1621+ to the rack. I’d guessed it at 15–30 W. On the meter, plugged straight into the wall rather than its UPS, it reads 26 W. That’s 3.5 W above the midpoint, or 79 cents a month once UPS losses are added.

What the first version missed

Devices

Five things run 24/7 that the sheet didn’t count:

DeviceLow–high WConfidence
StarHub 10G ONT8–12Guessing
10G SFP+ to RJ45 media converter, router to core switch4–8Guessing
Mac mini M4 and a 2×4 TB NVMe enclosure (Plex, Tailscale exit node)8–12Likely
Raspberry Pi 1B with a PiTFT display2–3Likely
Reolink P327 PoE camera5–8Likely

The camera row already existed, at 0 W and marked unknown. The P327 is 802.3af class 3, so it can’t draw more than 12.95 W. With IR on at night it’s likely 5–8 W. Together these five add 35 W at the midpoint.

UPS losses

UPS overhead was set to 0. Every device here runs through one of four UPSs. The main one is a 1000 VA online double-conversion unit at about 26% load, and at that load these units typically run at 85–90% efficiency. I set the overhead to 12%, which adds about 40 W at the wall. It’s an estimate, not a measurement.

The main UPS reading

The main UPS reports over NUT. Bash can query it without a NUT client:

exec 3<>/dev/tcp/<nas>/3493
printf "LIST VAR ups\nLOGOUT\n" >&3
cat <&3

It returned ups.load 26% and output.current 1.0 A at 230 V, which works out to roughly 200–260 VA.

My notes listed four devices on that UPS: the DS920+ and the three cluster nodes. The sheet puts those at about 84 W. Two things explain the difference:

  1. Four switches were plugged in but missing from my notes: the 5-port 10G, the 8-port 2.5G, the 8-port 1G and a 5-port 2.5G managed switch. Adding them brings the load to about 117 W.
  2. VA isn’t watts. The mini PCs, the DS920+ and the small switches all run on external bricks without power factor correction. At light load those typically run a power factor of 0.6–0.7, so 117 W shows up as about 170–195 VA.

The rest is within the resolution of a UPS that reports load in whole percent and current in whole amps. Past this point the UPS can’t tell me more. A meter on its input would replace the estimates for eight devices and the overhead figure with one measurement.

Where the money goes

CategoryMidpoint WkWh / monthS$ / month
Switches108.088.324.44
Storage88.071.919.91
Compute67.555.215.27
Routers and WAN53.543.712.11
Backup20.016.44.53
Total337.0275.576.25

kWh and cost include the 12% UPS overhead.

Switches cost more than storage. The three 10GBASE-T switches (DXS-F108T, TL-SX1008, TL-SX105) account for 72.5 W of the 108 W, about S$16 a month. Only the TL-SX1008 is metered, and its 26 W landed in the upper half of its guessed range, so the other two guesses are more likely low than high.

The corrected total is within 45 cents of the first version: S$76.25 against S$75.80. Energy went up 26% and the rate went down 20%.

Next

  • Meter the other two 10GBASE-T switches, the DXS-F108T and TL-SX105. They carry 46.5 W of guesswork, the largest group of guessed rows.
  • Meter the main UPS input to replace the estimates for eight devices with one reading.
  • Meter the two RT-BE88U routers, which carry 37.5 W of guesswork.