Домашний сервер на Proxmox: практический гайд
Полтора года назад я собрал из старых серверных запчастей домашний сервер и установил на него 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 Установщик графический и интуитивный. Ключевые моменты:
- Файловая система — на этапе выбора диска нажмите Options и выберите
zfs (RAID1)если у вас два диска, илиext4/xfsдля одного диска - Сеть — укажите статический IP, который выделите на роутере за пределами DHCP-пула
- 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 | Назначение |
|---|---|---|---|---|
| 100 | VM | ubuntu-docker | 8 ГБ | Docker-хост |
| 101 | VM | k3s-master | 4 ГБ | Kubernetes (k3s) |
| 200 | LXC | pihole | 512 МБ | DNS + блокировка рекламы |
| 201 | LXC | nginx-proxy | 512 МБ | Reverse proxy |
| 202 | LXC | postgres | 2 ГБ | База данных |
| 203 | LXC | monitoring | 1 ГБ | Prometheus + Grafana |
Общее потребление ресурсов — около 18 ГБ RAM и 30% CPU в среднем. Остаётся запас для экспериментов.
Полезные советия
- Устанавливайте QEMU Guest Agent во все ВМ — это позволяет Proxmox корректно замораживать файловую систему при снапшотах и показывать IP-адреса в интерфейсе
- Используйте Cloud-Init для автоматической настройки ВМ при первом запуске
- Настройте SMART-мониторинг дисков — Proxmox показывает статус в интерфейсе, но уведомления нужно настроить отдельно
- Не экономьте на RAM — это самый критичный ресурс в домашнем сервере
- Делайте снапшоты перед любыми экспериментами:
qm snapshot 100 before-upgrade --description "Before dist-upgrade"
Заключение
Proxmox VE — это мощный и зрелый гипервизор, который даёт домашнему серверу возможности корпоративного уровня. Установка занимает 15 минут, а дальше вы можете экспериментировать с любыми технологиями в изолированных средах, не боясь сломать основную систему.
В следующих постах расскажу про автоматизацию управления Proxmox-кластером через Ansible и настройку мониторинга всего этого хозяйства.