Сервер на Ubuntu 26.04. Панель, которая эту версию не поддерживает. Сначала мы заставили её работать силой — семью правками в чужом коде. Потом поняли, что правильный ответ проще: дать панели ту систему, которую она ждёт, не трогая сервер.
Что произошло
На сервере стояла 26.04 — вышла слишком недавно. Установщик FastPanel читает
/etc/os-release и на незнакомой версии просто отказывается работать.
Это не каприз: пакеты панели собраны под конкретный набор системных библиотек.
Обойти проверку версии оказалось легко. Гораздо интереснее было то, что началось после неё.
Настроили SSH-ключ. Попутно выяснилось, что домен в первой команде
не существовал вовсе: правильный адрес — m.kurs.dn.ua, с точкой.
Прочитали установщик, не запуская. Подключили репозиторий 24.04 с низким
приоритетом — ради четырёх старых библиотек. Симуляция показала:
ничего не удаляется, libc6 не трогается. Можно.
Конфиги под новую ОС, ветка MySQL 8.4 вместо 8.0, PHP 8.5 вместо 8.3, директивы Apache и ProFTPD, правило AppArmor. Панель поднялась, сертификат Let's Encrypt выпустился.
Создание сайта роняло панель наглухо — обращение по пустому указателю в обработчике Apache. Удаление сайта роняло её же. Dovecot не стартовал: в 26.04 это версия 2.4 с полностью переписанным форматом конфигов. Дальше чинить означало переписывать панель.
51 пакет, 350 МБ данных, лишние пользователи, репозитории, кроны. Ядро, загрузчик и SSH намеренно не тронули — они попали в список «установлено вчера» из-за параллельного обновления Ubuntu, и их удаление сделало бы сервер незагружаемым.
Ubuntu 24.04 внутри Docker, systemd внутри контейнера, сеть — хостовая. Установка прошла штатно с первого раза. Ни одного патча. Dovecot запустился сам.
Стена несовместимости
Каждая строка — отдельная поломка, найденная по логам и исправленная вручную. Вместе они и есть ответ на вопрос «почему нельзя просто обойти проверку версии».
| Компонент | В чём расхождение |
|---|---|
| libxml2 | Библиотека сменила версию: libxml2.so.2 → libxml2.so.16. Старого файла в системе просто нет, а PHP панели слинкован с ним. |
| PHP | В 26.04 нет ветки 8.3 — там 8.5. Системный php-common прямо конфликтует с пакетами 8.3. |
| MySQL 8.4 | Удалён параметр default-authentication-plugin. Панель пишет его в конфиг — сервер отказывается стартовать. |
| mod_rpaf | Версия 0.6 против 0.8: директивы называются RPAFenable, а не RPAF_Enable. Apache падал на второй строке конфига. |
| ProFTPD 1.3.9 | Убраны пять директив разом: ShowSymlinks, TimeoutNoTransfer, TimeoutStalled, ListOptions, AllowOverwrite. |
| AppArmor | Новый профиль разрешает читать конфиги только владельцу файла. Панель создаёт их от своего пользователя, а читаются они от root. |
| Dovecot 2.4 | Требует dovecot_config_version первой строкой и другую структуру секций. Панель пишет конфиги в формате 2.3. |
| Конфиги панели | Внутри панели нет описаний для новой ОС — ни файлов ubu26.yml, ни ключа ubu26 в таблице обработчиков PHP. Отсюда падения и «record not found». |
Решение
Контейнер здесь работает не как изолированная машина, а как слой совместимости. Внутри — Ubuntu 24.04 со всеми библиотеками нужных версий. Снаружи сервер остаётся на 26.04 и получает обычные обновления безопасности.
Сеть у контейнера общая с сервером. Это принципиально: FTP в пассивном режиме и почта плохо переживают проброс портов, а так все службы слушают прямо на внешнем адресе — снаружи выглядит ровно так, будто панель стоит на самом сервере.
| Что проверяли | На сервере | В контейнере |
|---|---|---|
| Приём почты (Dovecot) | не запускался | работает |
| Создание сайта | падение панели | работает |
| Удаление сайта | падение панели | работает |
| Патчей для запуска | семь | ни одного |
| ОС под панелью | 26.04, не поддерживается | 24.04, поддерживается |
Честная оговорка. systemd внутри контейнера требует привилегированного режима, и вендор такую схему официально не поддерживает. Работает — но если что-то сломается, в поддержку FastPanel с этим не обратишься. SSH контейнера пришлось вынести на отдельный порт: основной занят самим сервером.
Передышка
Без практического смысла — просто потому, что попросили. Потяните мышью, чтобы повернуть; колесо приближает.
Из чего собрано
Внутри контейнера — обычный набор веб-сервера, ровно тех версий, которые панель ожидает увидеть. Снаружи сервер живёт своей жизнью и получает штатные обновления безопасности Ubuntu.
| Слой | Что работает |
|---|---|
| Сервер | Ubuntu 26.04 LTS, Docker |
| Контейнер | Ubuntu 24.04 LTS с systemd внутри |
| Веб | nginx впереди, Apache позади, PHP 8.3 |
| База данных | MySQL 8.0 |
| Почта | Exim и Dovecot |
| Файлы | ProFTPD |
| Сертификат | Let’s Encrypt, продлевается сам |