Перейти к содержимому

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

Что произойдёт

  1. Проверка ОС (Debian 12+ / Ubuntu 22+), прав root, свободных портов 80/443/8088.
  2. На 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.
  3. Создание системного пользователя getolt:getolt (nologin) и каталогов /opt/getolt/{license,logs} + общий каталог состояния /var/lib/getolt/ (для лицензии и файлов обновления).
  4. Генерация паролей (admin, MySQL, шифрование секретов) — сохраняются в /opt/getolt/.env (chmod 600, owner getolt).
  5. Создание БД getolt_db и пользователя getolt@localhost в локальном MySQL (либо использование внешнего, см. флаги ниже).
  6. Скачивание fat-jar (getolt-grade.jar) и утилиты ручного обновления upgrade.sh с get.getolt.online в /opt/getolt/.
  7. Установка systemd unit getolt-grade.service (hardening: ProtectSystem=strict, NoNewPrivileges, PrivateTmp) и пары getolt-grade-updater.{path,service} для UI-driven обновлений в будущем (по умолчанию заблокирован флагом UPDATE_AUTO_ENABLED=false в .env).
  8. Генерация self-signed TLS-сертификата (RSA 2048, 10 лет, SAN на localhost + 127.0.0.1 + публичный IP сервера) в /etc/getolt/ssl/.
  9. Установка конфига nginx-сайта (443 SSL → upstream 127.0.0.1:8088, :80 → 301 на https).
  10. systemctl start getolt-grade + ожидание /actuator/health UP до 90 секунд.
  11. Регистрация инсталляции в сервисе лицензирования — выдаётся ознакомительный период.

Типичное время — 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/.env
journalctl -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-nginx
sudo certbot --nginx -d getolt.example.com

certbot сам отредактирует ssl_certificate / ssl_certificate_key в /etc/nginx/sites-available/getolt-grade.conf и поставит cron-задачу на обновление.

Где лежат секреты

ФайлЧтоПрава
/opt/getolt/.envadmin password, MySQL password, encryption key, license host_id600 getolt:getolt
/etc/getolt/ssl/key.pemприватный ключ TLS600 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/.

Что дальше

По вопросам внедрения — sale@getolt.online.

Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.

Разработка: gmasich.ru

Политика конфиденциальности · Пользовательское соглашение