Bare-metal установка (без Docker)
GetOLT можно поставить не только Docker-ом, но и как обычный Linux-сервис — Java + MySQL + nginx из штатных apt-репозиториев, под управлением systemd. Этот вариант подходит операторам, у которых Docker запрещён корпоративной политикой или не хочется добавлять контейнерный рантайм на сервер.
Функционально идентичен Docker-варианту — то же приложение, та же лицензия, тот же протокол связи с сервисом лицензирования.
Требования
- Debian 12+ или Ubuntu 22.04+.
- Доступ от root (
sudo). - Открытый исходящий HTTPS — fat-jar и регистрация ознакомительного периода идут через сеть.
- 4 vCPU / 8 GB RAM / 50+ GB SSD на старте. Для крупных сетей — пропорционально числу OLT и абонентов.
Подробнее — Системные требования.
Установка одной командой
curl -A "getolt-installer/1.0" -fsSL https://get.getolt.online/baremetal/install.sh | sudo bashФлаг -A "getolt-installer/1.0" обязателен — на стороне инфраструктуры работает anti-scanner фильтр, отбивающий запросы с дефолтным User-Agent: curl/X.Y.
Скрипт прозрачный, можно посмотреть содержимое перед запуском:
curl -A "getolt-installer/1.0" -fsSL https://get.getolt.online/baremetal/install.sh | lessЧто произойдёт
- Проверка ОС (Debian 12+ / Ubuntu 22+), прав root, свободных портов
80/443/8088. - На Debian 12 — подключение репозитория Eclipse Temurin для Java 21 (в дефолтных репах Debian 12 есть только OpenJDK 17). На Ubuntu — Java 21 из main. MySQL:
mysql-serverна Ubuntu /default-mysql-server(MariaDB-совместимый) на Debian 12. Плюсnginx,openssl,curl. - Создание системного пользователя
getolt:getolt(nologin) и каталогов/opt/getolt/{license,logs}+ общий каталог состояния/var/lib/getolt/(для лицензии и файлов обновления). - Генерация паролей (admin, MySQL, шифрование секретов) — сохраняются в
/opt/getolt/.env(chmod 600, ownergetolt). - Создание БД
getolt_dbи пользователяgetolt@localhostв локальном MySQL (либо использование внешнего, см. флаги ниже). - Скачивание fat-jar (
getolt-grade.jar) и утилиты ручного обновленияupgrade.shсget.getolt.onlineв/opt/getolt/. - Установка systemd unit
getolt-grade.service(hardening:ProtectSystem=strict,NoNewPrivileges,PrivateTmp) и парыgetolt-grade-updater.{path,service}для UI-driven обновлений в будущем (по умолчанию заблокирован флагомUPDATE_AUTO_ENABLED=falseв.env). - Генерация self-signed TLS-сертификата (RSA 2048, 10 лет, SAN на
localhost+127.0.0.1+ публичный IP сервера) в/etc/getolt/ssl/. - Установка конфига nginx-сайта (
443SSL → upstream127.0.0.1:8088,:80→ 301 на https). systemctl start getolt-grade+ ожидание/actuator/healthUP до 90 секунд.- Регистрация инсталляции в сервисе лицензирования — выдаётся ознакомительный период.
Типичное время — 3–5 минут на быстром канале (apt-метаданные, mysql-server тянет ~100 MB, fat-jar — десятки MB).
Первый вход
- URL:
https://<ip-сервера>/ - Логин:
admin - Пароль: печатается скриптом в конце установки, сохранён в
/opt/getolt/.env(полеGETOLT_ADMIN_PASSWORD).
Браузер ругнётся на self-signed cert — кликнуть «Дополнительно → Перейти всё равно». Чтобы убрать предупреждение — настроить Let’s Encrypt (раздел ниже).
Флаги установщика
sudo bash install.sh \ --admin-username admin \ --admin-password 'СвойПароль' \ --mysql-external --mysql-host 10.0.0.5 --mysql-port 3306 \ --mysql-db getolt_db --mysql-user getolt --mysql-password 'secret' \ --no-tls \ --jar-url https://internal-mirror.local/getolt-grade.jar| Флаг | Поведение |
|---|---|
--admin-password X | Пароль администратора. Если не задан — генерируется. |
--mysql-external | Не ставить локальный MySQL, использовать существующий. |
--mysql-host / -port / -db / -user / -password | Параметры внешнего MySQL/MariaDB. |
--no-tls | Только :80, без https и self-signed сертификата (за corporate reverse-proxy). |
--jar-url URL | Кастомный URL для скачивания jar (offline-зеркало в закрытом периметре). |
Управление сервисом
systemctl status getolt-grade # текущее состояниеsystemctl restart getolt-grade # после правки /opt/getolt/.envjournalctl -u getolt-grade -f # потоковые логиtail -f /opt/getolt/logs/application.log # файловые логи (logback)Обновление до latest
curl -A "getolt-installer/1.0" -fsSL https://get.getolt.online/baremetal/upgrade.sh | sudo bashСкрипт скачивает новый jar во временный файл, бэкапит текущий в .bak, останавливает сервис, заменяет jar, стартует. Если health-check не прошёл за 90 секунд — автоматический откат на предыдущую версию.
Снос
curl -A "getolt-installer/1.0" -fsSL https://get.getolt.online/baremetal/uninstall.sh | sudo bashПо умолчанию: останавливает сервис, удаляет systemd unit, nginx-сайт, TLS-сертификат, каталог /opt/getolt/ и системного пользователя getolt. apt-пакеты (Java, MySQL, nginx) не трогаются — могут быть нужны другим сервисам.
Опции:
--drop-mysql— дополнительно удалить БДgetolt_dbи пользователяgetolt@localhost.--keep-data— снести только сервис, оставить/opt/getolt/(jar, логи, лицензия, .env).
Замена self-signed на Let’s Encrypt
Требования: домен (A-запись на публичный IP сервера), открытые :80 и :443 наружу.
sudo apt-get install -y certbot python3-certbot-nginxsudo certbot --nginx -d getolt.example.comcertbot сам отредактирует ssl_certificate / ssl_certificate_key в /etc/nginx/sites-available/getolt-grade.conf и поставит cron-задачу на обновление.
Где лежат секреты
| Файл | Что | Права |
|---|---|---|
/opt/getolt/.env | admin password, MySQL password, encryption key, license host_id | 600 getolt:getolt |
/etc/getolt/ssl/key.pem | приватный ключ TLS | 600 root:root |
/opt/getolt/license/license.jwt | подписанный JWT лицензии | 640 getolt:getolt |
Частые ошибки
| Симптом | Причина | Решение |
|---|---|---|
systemctl status getolt-grade показывает failed | Чаще всего — ошибка в .env или конфликт портов. | journalctl -u getolt-grade -n 200 — там Spring Boot печатает stacktrace стартовой ошибки. |
Access denied for user 'getolt'@'localhost' | Пароль MySQL в .env не совпадает с реальным. | sudo mysql -e "ALTER USER 'getolt'@'localhost' IDENTIFIED BY 'НовыйПароль';" и обновить .env, затем systemctl restart getolt-grade. |
address already in use 8088 | Порт 8088 занят соседним сервисом. | Поправить SERVER_PORT в /opt/getolt/.env и proxy_pass в nginx-конфиге. |
Браузер: «Соединение не защищено» (NET::ERR_CERT_AUTHORITY_INVALID) | Self-signed cert не доверен публично. | Либо принять исключение в браузере, либо поставить Let’s Encrypt (см. выше). |
Состояние лицензии NO_LICENSE после установки | Не удалось дотянуться до сервиса лицензирования при первом запуске. | Проверить исходящий HTTPS, systemctl restart getolt-grade. Лицензия выдаётся при первом успешном вызове, повторные попытки идут по расписанию. |
No suitable driver found for jdbc:mysql://… | JAR собран без MySQL JDBC-драйвера (баг сборки). | Сообщить поставщику — sale@getolt.online. |
Когда выбрать какой вариант установки
| Сценарий | Рекомендация |
|---|---|
| Чистый VPS под GetOLT, технических ограничений нет | Docker-вариант — быстрее, проще обновляется. |
| Запрет Docker по корпоративной политике | Bare-metal (эта страница). |
| Уже стоит MySQL/MariaDB, не хочется второй экземпляр | Bare-metal с --mysql-external. |
| Закрытый периметр без выхода в интернет | Bare-metal с --jar-url на внутренний mirror. |
| Будущая миграция между серверами | Любой вариант — у обоих простая раскладка /opt/getolt/. |
Что дальше
- Подключение OLT — добавить первое устройство.
- Backup-стратегии — расширенные сценарии.
- Обновление — детали процесса.
По вопросам внедрения — sale@getolt.online.
Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.
Разработка: gmasich.ru