Установка в Docker
Запасной способ установки. Почта ставится в контейнер, а не прямо в систему. Подходит, если на сервере другая ОС или не хочется менять его настройки. Основной способ — обычная установка.
Что нужно
- Linux-сервер с Docker, либо Debian/Ubuntu без Docker: скрипт поставит его сам;
- белый IP-адрес и открытый порт 25;
- порты 143, 443, 465, 587, 993 свободны на сервере: контейнер работает в сети сервера;
- около 2 ГБ памяти, если нужен антивирус.
Имя почтового сервера, например mail.example.ru, должно указывать на сервер (A-запись), как и при обычной установке.
Запуск
curl -fsSL https://0e5.ru/install-docker.sh -o install-docker.sh
sh install-docker.sh
Скрипт спросит имя сервера, почтовый домен, первый ящик и нужные компоненты. Значение по умолчанию — в квадратных скобках, его принимает Enter.
Дальше он поставит Docker (если его нет), соберёт образ и запустит контейнер mailnode. Сборка занимает несколько минут.
Где отчёт с паролями
Внутри контейнера установка проходит та же, что и на сервере. Пароли панели и первого ящика, а также записи DNS не выводятся в журнал контейнера. Они лежат в отчёте, доступном только root:
docker exec mailnode cat /opt/mailnode/first-install.log
Сохраните пароли и добавьте DNS-записи у регистратора. Следить за ходом установки можно так: docker logs -f mailnode.
Проверка
docker exec mailnode mailnode doctor
Откройте панель по адресу из отчёта, например https://mail.example.ru/panel.
Без вопросов
Ответы передаются флагами, те же, что у обычной установки:
sh install-docker.sh --domain mail.example.ru --mail-domain example.ru \
--mailbox ivan@example.ru --with-calendar --with-webmail --no-antivirus
Ответы сохраняются в файл /opt/mailnode-docker/mailnode.env (доступ только root). Повторный запуск sh install-docker.sh их не спрашивает: так обновляется образ, а данные остаются.
Остановка и данные
- Остановить:
cd /opt/mailnode-docker && docker compose down. Данные в томах остаются. - Данные хранятся в именованных томах Docker: состояние (
mailnode-state), почта (mailnode-mail), сертификаты, очередь Postfix. Их можно копировать или переносить вместе сmailnode export. - Программа
mailnodeвнутри контейнера:docker exec mailnode mailnode <команда>. Все команды описаны в разделе «Команды».
Контейнер запускается с правами privileged, потому что внутри работает systemd и нужны порты сервера. Это значит, что контейнер имеет почти те же права, что и root на сервере. Ставьте его только на сервер, которому доверяете, так же как при обычной установке.
Чем отличается от обычной установки
- fail2ban внутри контейнера не ставится: он правит фаервол сервера. Защиту от подбора паролей можно поставить на сервере отдельно.
- Обновление почты: повторный запуск
sh install-docker.shпересобирает образ с новой версией installer. - Если Docker уже занимает порт 25 или 443 другим сервисом, освободите порт до запуска.
Следующий шаг — первая настройка.