Найти тему
IT записки

Домашний сервер на базе Proxmox

Оглавление

1. Устанавливаем и настраиваем гипервизор Proxmox

Здесь всё достаточно просто: идём на сайт Proxmox и скачиваем установочный ISO файл. Еще нам понадобится флешка размером от 16 гигабайт. Используем для записи Rufus для создания загрузочной флешки.

Затем вставляем эту флешку в наше железо, загружаемся в Boot Menu, загружаемся с флешки. Жмём загрузку с ISO и попадаем в меню установки Proxmox.

Выбираем графическую установку и принимаем лицензионное соглашение (EULA).

-2

Выбираем жёсткий диск для установки Proxmox.

-3

Устанавливаем пароль на root пользователя и вписываем почту.

-4

Далее идёт настройка hostname системы и его статического IP адреса.

-5

На следующей вкладке мы увидим информацию, которую вносили на предыдущих этапах: сверяемся и жмём Install. Установка закончится достаточно быстро, железо перезагрузится, и мы увидим следующий результат:

-6

Дальше идем в браузер. Используя адрес со скриншота (обычно он выглядит как https://ранее_заданный_при_установке_ip:8006/), попадаем в веб-управление Proxmox, попутно соглашаясь на небезопасное https-соединение (в дальнейшем пофиксим через SSL-сертификат):

-7

Вводим root в username и тот пароль, который указывали при установке. Попадаем в панель управления, которая предупреждает, что у нас нет подписки на этот сервер Proxmox. Не волнуйтесь, чуть позже уберём и это сообщение.

-8

Обычно при свежей установке я шёл в консоль, открывая попутно раздел репозитория, и менял платные репозитории на бесплатные,  чтобы в дальнейшем получать обновления софта. Но недавно энтузиасты начали распространять в сети сайт Proxmox VE Helper-Scripts, на котором выложены готовые скрипты для настройки свежего Proxmox.

Итак, на этом этапе нас интересует Post Install Script

Заходим и копируем его:

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"

В Proxmox открываем вверху Shell, вставляем скопированную строчку и запускаем:

-9

Скрипт спросит про отключение платного репозитория, включение бесплатного, включение тестового репозитория (я выбрал — нет), про отключение плашки о том, что вы используете софт без подписки, про включение/отключение высокой доступности (я выбрал оставить). И  напомнит, что нужно поддерживать команду разработки Proxmox

В конце запустит обновление и перезагрузку системы.

-10

После перезагрузки мы получаем работающий гипервизор для домашнего использования с бесплатными репозиториями для дальнейших обновлений и без раздражающей плашки о подписке.

2. Установка Nginx Proxy Manager и получение Wildcard SSL-сертификата от Let’s Encrypt для использования с приложениями в домашней сети

Сразу предупрежу, что для реализации этой части нужен внешний домен. У меня, например, есть домен duckdns. Используя Proxmox VE Helper-Scripts находим NPM и копируем скрипт.

bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/ct/nginxproxymanager.sh)"

Скрипт проведёт по меню создания LXC контейнера, спрашивая будущий ID, IP адрес, ресурсы и прочее, и установит Proxy Manager в сам контейнер. Ссылка для входа на прокси будет такого типа: http://192.168.0.18:81 (у вас будет другая, но 81 порт на конце останется. Зависит от того, какой адрес задали во время работы скрипта.)

Email: admin@example.com
Password: changeme

После ввода логина и пароля последний нам предложат поменять. Меняем и попадаем в меню управления прокси-сервера.

-11

Дальше нас интересует секция с SSL сертификатами.

-12

Идём на duckdns.org и логинимся любым удобным способом. Попадаем в панель управления DNS.

-13

В пункте domains придумываем домен. Для тестов я успел взять домен k8s-lab.duckdns.org

В настройке домена в секции current ip задаём IP-адрес сервера nginxproxymanager. У меня это 192.168.0.18. У вас — тот, что вы указали при установке скриптом. Обязательно запишите токен, он пригодится.

Возвращаемся в открытую вкладку с nginx proxy manager и начинаем создавать наш SSL-сертификат. Жмём add SSL-certificate, выбираем Let’s Encrypt и заполняем поля в таком виде:

-14

Вписываем ваш свежий домен, email, в DNS провайдерах выбираем Duck DNS и вписываем токен со страницы управления Duck DNS. Нажимаем сохранить и ждём создания вашего сертификата

-15

Возможно, вы можете получить ошибку о том, что certbot ничего не знает про DuckDNS. Для решения этой проблемы нужно зайти в shell самого nginx proxy manager и установить пакет duckdns следующей командой:

pip install -U certbot-dns-duckdns

Через некоторое время работы мы получили валидный сертификат на наш домен:

-16

Итак, время проверить работоспособность сертификата. Идём в Hosts и выбираем Proxy Hosts. Нажимаем add proxy host, заполняем данные для Proxmox и сохраняем.

-17

Теперь при посещении https://proxmox.k8s-lab.duckdns.org попадаём в панель управления Proxmox.

-18

Все отлично — мы получили SSL‑сертификат, который можно будет использовать для любого сервиса внутри сети через прокси-менеджер.