Post

We All Start Somewhere

Welcome to this comprehensive guide designed for experienced system administrators and DevOps engineers looking to set up a self-hosted environment using Pro....

# We All Start Somewhere: Building a HomeLab Proxmox VE Server with 3TB HDDs

Welcome to this comprehensive guide designed for experienced system administrators and DevOps engineers looking to set up a self-hosted environment using Proxmox Virtual Environment (VE). This tutorial will walk you through the installation, configuration, and management of a Proxmox host with multiple 3TB HDDs.

Introduction

Starting from scratch can be daunting, but it’s essential for growth in our field. Today, we’ll tackle a common homelab setup: a Proxmox VE server with a modest N150 CPU, 16GB RAM, and 3TB HDD storage. This guide will provide a practical, hands-on experience, teaching you how to effectively manage infrastructure, optimize performance, secure your environment, and troubleshoot common issues.

Prerequisites

System Requirements

  • CPU: N150 or equivalent (2 cores recommended)
  • RAM: 16GB DDR4 minimum
  • Storage:
    • M.2 SSD for the system drive (500GB minimum)
    • 3 x 2.5” HDDs with a total capacity of 3TB or more
  • Network Interface: At least one Ethernet port
  • Bootable USB stick or DVD with the Proxmox VE ISO image

Software Requirements

  • Proxmox VE version 6.4 or higher

Network Requirements

  • Static IP address within your local network (e.g., 192.168.0.X)
  • Port 8006 for web interface access (optional, but recommended)
  • Firewall rules to allow SSH, HTTP/HTTPS, and VM traffic

User Permissions

As a homelab environment, it’s assumed you have root or sudo access.

Installation & Setup

Install Proxmox VE following the official documentation. After installation, configure your network settings using nmcli or your preferred networking tool.

Configuration

ZFS Storage Pool Creation

Create a ZFS storage pool for your HDDs:

1
zpool create poolname mirror /dev/sdX plex ashift=12

Replace poolname with a suitable name, and /dev/sdX with the first available drive (e.g., /dev/sda). Repeat this command for each additional drive, replacing /dev/sdX accordingly. Set the ashift value based on your drives’ sector size (12 for 4K sectors).

ZFS Datasets Creation

Create a root dataset and an LVM logical volume within it:

1
2
3
4
5
6
7
8
9
10
zfs create poolname/root
zpool set failmode=2 poolname
zfs set mountpoint=/ poolname/root
zfs set compression=lz4 poolname/root

pvcreate /dev/zvol/poolname/root
vgcreate vg0 /dev/zvol/poolname/root
lvcreate -L 100%FREE -n lv-data vg0
mkfs.ext4 /dev/mapper/vg0-lv-data
mount /dev/mapper/vg0-lv-data /mnt/datastore

Configure LVM and Ext4 parameters as needed for your use case, such as setting up snapshots or RAID configurations.

Usage & Operations

Common Commands

  • pvecm: Proxmox command line interface
  • zpool list/status: Check your storage pool status
  • zfs list: List ZFS datasets and their properties
  • vmqm create: Create a new VM using the QEMU/KVM hypervisor

Monitoring & Maintenance

  • Use the Proxmox VE web interface for monitoring VMs, storage, and network settings.
  • Use tools like top, iostat, and vmstat to monitor system performance.

Backup & Recovery

Create regular ZFS snapshots and back up your data using rsync or other backup solutions.

Troubleshooting

Common Issues

  • Insufficient resources: Ensure your system meets the minimum requirements for running multiple VMs.
  • Disk issues: Check the storage pool status, correct any errors with zpool repair, and replace faulty disks if necessary.

Conclusion

By following this guide, you’ve learned how to set up a Proxmox VE server with 3TB HDDs, manage storage using ZFS, and create virtual machines. With the foundational knowledge gained, explore more advanced topics such as network configuration, containerization, and automation tools.

Continue your journey in DevOps and systems administration with these resources:

This post is licensed under CC BY 4.0 by the author.