When I got tired of the fan noise and electricity bill of an old i5 server I had, I bought an Intel N100 processor mini-PC with a 6-watt TDP rating and set it up at home. Homelab Setup with N100 Mini-PC is the most cost-effective way to run Docker containers, network services, and media servers in a home environment with a balance of low power consumption and high performance. Thanks to its Alder Lake-N architecture, this tiny hardware easily takes over the workloads of older-generation enterprise servers while consuming only a few watts of electricity.
Don't let the fact that it only has 4 cores fool you; its single-core performance and hardware video decoding (QuickSync) capabilities make this device a true home server beast. In this guide, I share step-by-step how to turn this fanless or low-fan little box into a full-fledged home laboratory using Proxmox VE.
What is a Homelab Setup with N100 Mini-PC and Why Do We Choose This Hardware?
A Homelab Setup with N100 Mini-PC is the process of hosting services that will run 24/7 in your home or small office with a minimal electricity bill and zero noise. The Intel N100 is a chip that contains only 4 "E-cores" (efficiency cores), lacks hyper-threading support, but outperforms older-generation i5 or i7 mobile processors thanks to its architectural advantages.
+--------------------------------------------------------+
| Intel N100 Mini-PC |
| [4 Cores / 4 Threads] [6W TDP] [Intel QuickSync GPU] |
+--------------------------------------------------------+
|
+------------------+------------------+
| |
[Proxmox VE (Debian)] [PCIe Gen3 NVMe SSD]
| |
+-----+-----+ +-----+-----+
| LXC / VM | | ZFS / LVM|
+-----------+ +-----------+
When compared to ARM-based alternatives like the Raspberry Pi, the advantage of the x86-64 architecture is massive. While almost all images in the Docker ecosystem natively support the x86 architecture, we can experience compatibility issues on the ARM side. Additionally, true PCIe NVMe support, gigabit or 2.5G ethernet ports, and support for up to 32 GB of DDR5 RAM (although the official limit appears to be 16 GB, I ran it smoothly with a single Crucial 32 GB module) put this device leagues ahead of the Raspberry Pi.
For those who want to set up a media server (Plex/Jellyfin), the built-in Intel UHD graphics unit inside can decode almost all modern codecs, including AV1, in hardware. This means you can perform multiple 4K transcode operations simultaneously with almost no load on the CPU.
Step 1 - BIOS Settings and Proxmox VE Installation
The first thing to do after unboxing the hardware is to connect a keyboard and monitor and enter the BIOS screen. The BIOS interfaces of cheap Chinese-made mini-PCs are usually very detailed and confusing. Here, there are three critical settings for us.
- Virtualization Technology (VT-x / VT-d): Since we will be virtualizing, this option must absolutely be set to "Enabled".
- Restore on AC Power Loss: To ensure the device turns itself back on when power is restored after an outage, we should set this to "Power On".
- ASPM (Active State Power Management): Enable PCIe power management so the device consumes minimum power while idling.
After saving the BIOS settings and exiting, we plug in the USB flash drive containing our prepared Proxmox VE ISO and begin the installation. The default options in the installation steps are usually sufficient. However, we must be careful on the disk configuration screen.
⚠️ Boot Drive Selection
Do not install Proxmox VE on cheap, low-quality USB flash drives. By design, Proxmox constantly writes logs and queries disk health. This will ruin low-quality flash drives within a few months. Install it directly onto your main NVMe SSD.
Once the installation is complete, you can access the Proxmox interface by going to https://<your-ip-address>:8006 in your browser. To remove the subscription warning for non-enterprise home use and receive free package updates, you can activate the "no-subscription" repository with the following command:
# Let's disable the enterprise repository
rm -f /etc/apt/sources.list.d/pve-enterprise.list
# Let's add the no-subscription repository
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# Update the package list and upgrade the system
apt update && apt dist-upgrade -y
Step 2 - Storage and ZFS Configuration
N100 mini-PCs usually have a single M.2 NVMe slot and sometimes an additional 2.5-inch SATA slot. If you are using a single NVMe SSD, you need to balance disk reliability and performance carefully.
The ZFS file system is wonderful with its data integrity protection and snapshot capabilities; however, it is quite greedy when it comes to memory consumption. If your N100 system has 8 GB or 16 GB of RAM, I recommend using ext4 + LVM-Thin instead of ZFS. If you installed 32 GB of RAM like I did, you can use ZFS with peace of mind, but you must definitely limit the memory usage.
ℹ️ ZFS ARC Memory Limitation
By default, ZFS can reserve up to half of the system RAM for the ARC (cache). If you have 32 GB of RAM, this means 16 GB, leaving no room for virtual machines. To limit this, follow the steps below.
To limit the ZFS ARC limit to 2 GB, create or edit the /etc/modprobe.d/zfs.conf file:
# Let's edit the file
nano /etc/modprobe.d/zfs.conf
# Let's add this line inside (2147483648 bytes = 2 GB)
options zfs zfs_arc_max=2147483648
To apply the changes, update the initramfs and reboot the system:
update-initramfs -u -k all
reboot
After this process, Proxmox will not waste all your memory on the ZFS cache while idling, leaving you plenty of space for your virtual machines and LXC containers.
Step 3 - How to Configure Virtual Network (VLAN) Segmentation
For the security of the services in your home lab, putting all devices on the same network is a big mistake. Especially the services you expose to the outside world (for example, a web server or media server) should be isolated from your smart home devices (IoT) and personal computers.
N100 devices usually have a single physical ethernet port. We will use VLANs (Virtual LANs) to carry different networks over this single port. On Proxmox, we need to turn our network card into a "VLAN-aware" bridge that can read VLAN tags.
In the Proxmox interface, go to the System -> Network tab, double-click the vmbr0 bridge, check the VLAN Aware option, and save. Alternatively, you can configure your /etc/network/interfaces file as follows:
auto lo
iface lo inet loopback
iface enp1s0 inet manual
# Our physical network card, we do not assign an IP address
auto vmbr0
iface vmbr0 inet static
address 192.168.1.100/24
gateway 192.168.1.1
bridge-ports enp1s0
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
# Main bridge with VLAN-aware enabled
Thanks to this configuration, you will only need to go to the network card settings of each virtual machine or LXC container you create and write the relevant VLAN number (for example, 20 for Docker services) in the VLAN Tag section. Even though the devices physically connect through the same cable, they will not be able to see each other at the network level.
Step 4 - Deploying Services with Docker and LXC
There are two popular approaches to running Docker on Proxmox: The first is to run Docker directly inside an LXC (Linux Container), and the second is to set up a lightweight Debian/Alpine virtual machine (VM) and install Docker inside it.
I always prefer the lightweight virtual machine (VM) method. Running Docker inside LXC can sometimes cause headaches regarding file system permissions (storage drivers) and nested virtualization. Creating a clean Debian 12 virtual machine and installing Docker and Docker Compose inside it is the most stable solution.
Inside our created Docker VM, we can first spin up basic management tools and a reverse proxy service. Here is an example docker-compose.yml file that will allow you to securely expose all your services to the outside world:
version: '3.8'
services:
nginx-proxy-manager:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./npm/data:/data
- ./npm/letsencrypt:/etc/letsencrypt
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
restart: unless-stopped
ports:
- '3000:3000'
volumes:
- ./homepage/config:/app/config
With this compose file, we set up both a reverse proxy (Nginx Proxy Manager) that automatically manages your SSL certificates and a dashboard (Homepage) that gathers all your services in a stylish interface. The N100 processor will not consume even 1% CPU while running these two services.
Step 5 - Power Management and CPU Limitation
The biggest selling point of the N100 is its low power consumption. However, the default Debian/Proxmox kernel can sometimes lock the CPU in "performance" mode, which can cause the device to run hotter than normal even at idle and draw around 15-20 watts.
To optimize the power consumption of the device and ensure it truly runs at the 6-8 watt levels, we should check the CPU "governor" settings. First, let's write the following command in the terminal to see the current status:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
If you see performance in the output, it means the processor is constantly running at its highest frequency. To pull this down to powersave or ondemand modes, which are dynamically adjusted based on load, we can install and configure the cpufrequtils tool:
# Let's install the necessary tool
apt install cpufrequtils -y
# Let's change the default governor setting
echo 'GOVERNOR="powersave"' > /etc/default/cpufrequtils
# Restart the service and check the status
systemctl restart cpufrequtils
After this simple setting, when there is no load on your homelab server, the core frequencies will drop to the minimum level and your device will remain cool to the touch. Since the heating issue is resolved, the fan life will be extended and its effect on your electricity bill will become almost invisible.
Wrapping Up
Setting up a Homelab with an N100 Mini-PC is the most logical way to build a professional network laboratory without spending high budgets and without creating noise pollution at home. Thanks to the infrastructure we built in this guide, we have a robust system that is energy-efficient, secured with VLAN segmentation, and equipped with Proxmox flexibility.
| Component / Setting | Recommended Configuration | Why? |
|---|---|---|
| Operating System | Proxmox VE (No-Subscription) | Flexible virtualization and backup |
| RAM Module | 1x32 GB DDR5 (Single Channel) | Maximum capacity and low power consumption |
| File System | LVM-Thin or Limited ZFS | To optimize RAM consumption |
| CPU Governor | powersave |
Minimum electricity and heat generation at idle |
| Network Structure | VLAN-Aware Bridge | Secure service isolation |
As a next step, I recommend connecting an external USB disk to your system and setting up Proxmox's built-in backup mechanism. This way, if you break any virtual machine while experimenting, you can restore it to its last working state in seconds.
Top comments (0)