Расскажу свой опыт переноса домашнего сервера на другую машину. Предыстория. Решил я обновиться до последней версии ОС и связки Asterisk — FreePBX, но вариант обычного обновления ядра через терминал меня не особо привлекал в силу непредсказуемости последствий. Учитывая тот факт, что на сервере крутятся всего 7 доменов с 5-тью поддоменами и докер с контейнерами, решил перенести их вручную.
И так, что мы имеем:
- Webmin и Virtualmin в качестве панели управления ОС и хостингом;
- VPN сервер;
- Сервер IT-телефонии Asterisk с панелью управления FreePBX;
- Почтовая связка Postfix — Dovecot
- Хосты
Это тот набор, который хотелось бы перенести без потерь.
Эксперимент начал с виртуальной машины VirtualBox с предварительно установленной туда Ubuntu 24.04.
Установка серверов
1. Устанавливаем Webmin и Virtualmin согласно нашей инструкции. Запускаем его, настройки Мастера настроек прогоняем по умолчанию. Если хотите использовать ClamAV Virus Scanning Server (антивирус для сканирования почты), то введите следующую команду:
cd /var/lib/clamav/; wget https://www.danami.com/hotfix/main.cvd; wget https://www.danami.com/hotfix/daily.cld; chown clamav:clamav main.cvd; chown clamav:clamav daily.cld; systemctl start clamav-daemon; systemctl status clamav-daemon
2. Сразу установим нужные нам версии php и зададим 8.2 по умолчанию (на ней у меня будет работать FreePBX).
apt install software-properties-common ca-certificates lsb-release apt-transport-https -y; LC_ALL=C.UTF-8; add-apt-repository ppa:ondrej/php; apt install php8.2-fpm php8.2-bcmath php8.2-gd php8.2-mbstring php8.2-mysql php-pear php8.2-snmp php8.2-zip php8.2-curl php8.2-xml php8.2-intl php8.2-common php8.2-cli -y; php -v; update-alternatives --config php
3. Если выполняли авторезервирование хостов на старом сервере, то используйте для переноса настроек Virtualmin файл virtualmin.tar.gz с диска, предварительно скаченный из директории сохранения резервных копий старого сервера.
Для этого переходим во вкладке Virtualmin → Резервное копирование и восстановление → Восстановить Скопировать. Обязательно отмечаем все галки в Настройки Virtualmin для восстановления. В Источник восстановления выбираем Загрузить на сервер и указываем файл копии Virtualmin.
В следующем окне жмём «Восстановить»
В итоге мы импортировали все настройки старого сервера.
4. Хосты мы будем переносить не файлами, а напрямую со старого сервера. для этого на нём переходим во вкладку Virtualmin выбираем из списка сверху домен, затем Конфигурация сервера → Передача виртуального сервера.
Здесь мы указываем IP нового сервера, выбираем «Вебмин RPC», вводим логин и пароль основного пользователя на новом сервере и жмём «Передача сейчас». Дожидаемся окончания передачи, выбираем следующий домен и повторяем процесс.
5. Проверьте валидность DNS-записей на новом сервере. Замечал случаи, когда в записях типа A вместо внешнего IP стоял IP локальной сети. Исправьте!
6. Проверка почтовых аккаунтов. Отправьте письма пользователям на вашем сервере, убедитесь, что проблем с отправкой и получением не возникнет. Если почта внутри сервера ходит исправно, попробуйте отправьте себе на другие почтовые сервера (Mail.ru, Gmail.com, Yandex.ru).
Имейте ввиду, что после переноса хостов у них сменится ключ DKIM, так что придётся обновить его в DNS серверах на всех доменах.
7. Проверьте работоспособность сайтов хостеров, так как возникла проблема с паролями пользователей в MariaDB. Пришлось через phpmyadmin пройтись по ним и указать пароли вручную. Это будет реальной проблемой, если на сервере много хостов.
Думаю, после прохождения всех этих шагов, перенос будет завершён. Если что-то замечу, обязательно тут дополню.