Домашний сервер на Proxmox: практический гайд

homelabproxmoxvirtualization

Обзор инфраструктуры Proxmox VE: виртуальные машины и LXC-контейнеры

Полтора года назад я собрал из старых серверных запчастей домашний сервер и установил на него Proxmox VE. С тех пор он работает без перерывов, крутит десяток виртуальных машин и контейнеров, и я ни разу не пожалел о выборе гипервизора. Расскажу, как всё настроить с нуля.

Почему именно Proxmox?

На рынке гипервизоров для домашних лабораторий есть несколько вариантов: VMware ESXi (который Broadcom фактически убил для бесплатного использования), XCP-ng, Hyper-V и Proxmox VE. Я выбрал Proxmox по нескольким причинам:

  • Открытый исходный код и бесплатное использование без ограничений по функциональности
  • Поддержка KVM и LXC из коробки — полноценные виртуальные машины и лёгкие контейнеры
  • ZFS встроен в установщик, не нужно танцевать с бубном
  • Веб-интерфейс покрывает 95% задач администрирования
  • Активное сообщество и отличная документация на wiki.proxmox.com

Единственный минус — навязчивое окно подписки при логине, но оно убирается одной строчкой в конфиге (или просто игнорируется).

Подготовка железа

Мой сервер — это бывший Dell Optiplex 7050 с барахолки:

  • Intel i7-7700 (4 ядра, 8 потоков)
  • 32 ГБ DDR4 ECC (докуплены отдельно)
  • 256 ГБ NVMe SSD для системы
  • 2x 2 ТБ HDD в ZFS mirror для данных
  • Два гигабитных сетевых порта

Минимальные требования у Proxmox скромные — 2 ГБ RAM и любой 64-bit процессор с поддержкой виртуализации. Но для комфортной работы рекомендую минимум 16 ГБ RAM и SSD для системного диска.

Перед установкой убедитесь, что в BIOS включена виртуализация:

  • Intel: VT-x и VT-d
  • AMD: AMD-V и IOMMU

Установка Proxmox VE

Скачиваем ISO с официального сайта и записываем на USB-флешку:

# На Linux/macOS
wget https://enterprise.proxmox.com/iso/proxmox-ve_8.3-1.iso
sudo dd if=proxmox-ve_8.3-1.iso of=/dev/sdX bs=4M status=progress

Установщик графический и интуитивный. Ключевые моменты:

  1. Файловая система — на этапе выбора диска нажмите Options и выберите zfs (RAID1) если у вас два диска, или ext4/xfs для одного диска
  2. Сеть — укажите статический IP, который выделите на роутере за пределами DHCP-пула
  3. Hostname — используйте FQDN, например pve.home.local

После установки и перезагрузки веб-интерфейс доступен по адресу https://<IP>:8006.

Первоначальная настройка

Первым делом отключаем enterprise-репозиторий (если нет подписки) и добавляем community:

# Отключаем enterprise-репозиторий
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak

# Добавляем no-subscription репозиторий
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > 
  /etc/apt/sources.list.d/pve-no-subscription.list

# Обновляемся
apt update && apt full-upgrade -y

Настроим почту для уведомлений (Proxmox умеет слать алерты о состоянии дисков, бэкапах и т.д.):

apt install -y libsasl2-modules
cat >> /etc/postfix/main.cf <<EOF
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
EOF

echo "[smtp.gmail.com]:587 your@gmail.com:app-password" > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
postmap /etc/postfix/sasl_passwd
systemctl restart postfix

Хранилище: ZFS vs LVM

Это ключевой выбор, который нужно сделать в начале.

ZFS

ZFS — моя рекомендация для homelabbing. Преимущества:

  • Контрольные суммы данных (защита от bitrot)
  • Встроенные снапшоты и репликация
  • Сжатие на лету (lz4 почти бесплатно по CPU)
  • Понятная модель пулов и датасетов

Создаём пул из двух дисков в зеркале:

# Смотрим доступные диски
lsblk

# Создаём зеркальный пул
zpool create -f -o ashift=12 tank mirror /dev/sda /dev/sdb

# Включаем сжатие
zfs set compression=lz4 tank

# Создаём датасеты
zfs create tank/vms
zfs create tank/backups
zfs create tank/isos

В веб-интерфейсе Proxmox этот пул добавляется через Datacenter -> Storage -> Add -> ZFS.

LVM-Thin

Если ZFS вам кажется избыточным или мало оперативной памяти (ZFS любит RAM), используйте LVM-Thin:

# Создаём Physical Volume
pvcreate /dev/sdb

# Создаём Volume Group
vgcreate vg_data /dev/sdb

# Создаём Thin Pool (90% от объёма VG)
lvcreate -l 90%VG --type thin-pool -n tp_data vg_data

LVM-Thin поддерживает снапшоты и thin provisioning, но без контрольных сумм и сжатия.

Сетевой мост (Bridge)

По умолчанию Proxmox создаёт vmbr0 — Linux bridge, привязанный к вашему физическому интерфейсу. Все виртуальные машины и контейнеры подключаются к нему и получают IP из вашей домашней сети.

Конфигурация сети хранится в /etc/network/interfaces:

auto lo
iface lo inet loopback

auto enp0s31f6
iface enp0s31f6 inet manual

auto vmbr0
iface vmbr0 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1
    bridge-ports enp0s31f6
    bridge-stp off
    bridge-fd 0

Если у вас два сетевых интерфейса, можно выделить один для управления, а второй для трафика ВМ:

auto enp0s25
iface enp0s25 inet static
    address 192.168.1.100/24
    gateway 192.168.1.1

auto enp4s0
iface enp4s0 inet manual

auto vmbr1
iface vmbr1 inet manual
    bridge-ports enp4s0
    bridge-stp off
    bridge-fd 0

Для применения изменений:

ifreload -a

Создание виртуальной машины

Через командную строку (полезно для автоматизации):

# Скачиваем ISO
wget -P /var/lib/vz/template/iso/ 
  https://releases.ubuntu.com/24.04/ubuntu-24.04.1-live-server-amd64.iso

# Создаём ВМ
qm create 100 
  --name ubuntu-server 
  --memory 4096 
  --cores 2 
  --sockets 1 
  --cpu host 
  --net0 virtio,bridge=vmbr0 
  --scsihw virtio-scsi-single 
  --scsi0 local-zfs:32,iothread=1,discard=on 
  --ide2 local:iso/ubuntu-24.04.1-live-server-amd64.iso,media=cdrom 
  --boot order=scsi0;ide2 
  --ostype l26 
  --agent enabled=1

# Запускаем
qm start 100

Через веб-интерфейс всё то же самое делается за пару кликов, но CLI удобнее, когда нужно создать несколько однотипных машин.

LXC-контейнеры: легковесная альтернатива

Для сервисов, которым не нужно отдельное ядро (веб-серверы, DNS, базы данных), LXC-контейнеры значительно эффективнее ВМ. Они стартуют за секунды и потребляют минимум ресурсов.

# Скачиваем шаблон
pveam update
pveam download local debian-12-standard_12.7-1_amd64.tar.zst

# Создаём контейнер
pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst 
  --hostname dns-server 
  --memory 512 
  --cores 1 
  --rootfs local-zfs:4 
  --net0 name=eth0,bridge=vmbr0,ip=dhcp 
  --unprivileged 1 
  --features nesting=1 
  --start 1

# Заходим в контейнер
pct enter 200

Флаг --unprivileged 1 создаёт непривилегированный контейнер — это безопаснее, потому что процессы внутри контейнера не имеют реальных root-привилегий на хосте. Флаг nesting=1 нужен, если планируете запускать Docker внутри контейнера.

Бэкапы

Proxmox Backup Server (PBS) — отдельный продукт для бэкапов, но встроенный vzdump тоже работает неплохо. Настроим регулярные бэкапы через CLI:

# Разовый бэкап ВМ
vzdump 100 --storage local --compress zstd --mode snapshot

# Бэкап всех ВМ и контейнеров по расписанию
# Добавляем задачу через cron или веб-интерфейс
cat >> /etc/cron.d/vzdump <<EOF
0 2 * * 6 root vzdump --all --storage local --compress zstd --mode snapshot --mailnotification always
EOF

В веб-интерфейсе это настраивается через Datacenter -> Backup -> Add, где можно задать расписание, retention policy и выбрать, какие машины бэкапить.

Что крутится на моём сервере

Для примера — текущий набор сервисов:

IDТипИмяRAMНазначение
100VMubuntu-docker8 ГБDocker-хост
101VMk3s-master4 ГБKubernetes (k3s)
200LXCpihole512 МБDNS + блокировка рекламы
201LXCnginx-proxy512 МБReverse proxy
202LXCpostgres2 ГББаза данных
203LXCmonitoring1 ГБPrometheus + Grafana

Общее потребление ресурсов — около 18 ГБ RAM и 30% CPU в среднем. Остаётся запас для экспериментов.

Полезные советия

  1. Устанавливайте QEMU Guest Agent во все ВМ — это позволяет Proxmox корректно замораживать файловую систему при снапшотах и показывать IP-адреса в интерфейсе
  2. Используйте Cloud-Init для автоматической настройки ВМ при первом запуске
  3. Настройте SMART-мониторинг дисков — Proxmox показывает статус в интерфейсе, но уведомления нужно настроить отдельно
  4. Не экономьте на RAM — это самый критичный ресурс в домашнем сервере
  5. Делайте снапшоты перед любыми экспериментами: qm snapshot 100 before-upgrade --description "Before dist-upgrade"

Заключение

Proxmox VE — это мощный и зрелый гипервизор, который даёт домашнему серверу возможности корпоративного уровня. Установка занимает 15 минут, а дальше вы можете экспериментировать с любыми технологиями в изолированных средах, не боясь сломать основную систему.

В следующих постах расскажу про автоматизацию управления Proxmox-кластером через Ansible и настройку мониторинга всего этого хозяйства.

© 2026 Terminal Notes. Built with SvelteKit.