Docker Compose
На данном этапе установщик умеет только запустить Time на одном хосте.
Инсталляция в Docker Compose предоставляется в ознакомительных целях: не рекомендуется использовать этот вариант установки в production среде.
- Нет гарантий отказоустойчивости (все компоненты запускаются на одном хосте)
- Такая инсталляция не является защищенной — в случае использования на хосте до которого есть прямой доступ из Интернета, требуется дополнительная защита в виде Firewall
Требования к инфраструктуре
Для успешной установки и работы Time к инфраструктуре предъявляется ряд требований:
- Поддерживаются ОС:
- Ubuntu >= v20.04
- Astra Linux >= v2.12.45
- sudo (наличие утилиты и права на повышение привилегий)
- GNU shell >= v4
- zip
- unzip
- scp
- apt
- Docker CE >= v20 (опционально)
- Docker Compose >= v3 (опционально)
- DNS — должен резолвиться и быть доступен на всем пути использования
- Доступ через интернет к различным ресурсам (docker registry, push-сервисы Apple/Google) — напрямую, либо через прокси
На хосте не должно быть посторонних сервисов!
Схема потоков данных
Ниже — схема потоков данных для варианта установки в Docker Compose (с параметрами и портами по умолчанию):
Инструкция по установке
Поместите zip-архив на хосте, где будет выполняться установка, и разархивируйте командой:
unzip time-<ВЕРСИЯ_ИНСТАЛЛЯТОРА>.zip
Подготовка
Перед установкой вам необходимо сгенерировать сертификаты для будущего домена Time для шифрования трафика с помощью TLS (HTTPS/WSS). Например, это можно сделать с помощью сервиса Let's Encrypt:
# установка certbot
sudo apt install certbot python3-certbot-nginx
# генерация сертификата:
sudo certbot --nginx -d my-domain.example.com
Перейдите в папку time-docker-compose
(все дальнейшие шаги должны выполняться внутри этой папки):
cd time-docker-compose
В случае использования HTTPS (используется по умолчанию) — вам необходимо получить сертификат и закрытый ключ, и положить их в папку nginx/certs
, названия файлов должны быть:
certificate.crt
— содержит сертификат для домена или всю цепочку сертификатовkey.pem
— содержит закрытый ключ
Установка и запуск
Зайдите в папку time-docker-compose
и запустите установку:
./install.sh
Во время установки инсталлятор в интерактивном режиме запросит всё необходимое, в т.ч.:
- fqdn-имя хоста/домена, которое используется для формирования Time URL;
- hash актуальной лицензии;
- адрес HTTP/HTTPS-прокси — в случае отсутствия прямого доступа в Интернет это нужно для скачивания docker-образов из внешнего registry, а также для корректной работы таким сервисам как time-server (превью ссылок) и time-pns (для отправки push-уведомлений через Apple/Google);
- включение/отключение HTTPS в Nginx — в случае отключения HTTPS в инсталляторе, вам необходимо самостоятельно настроить свой балансировщик и сконфигурировать в нем адрес
http://<имя_вашего_хоста>/
в качестве бэкенда (апстрима), а также настроить HTTPS на вашем балансировщике.
В случае успеха выполнится следующее:
- установка и настройка Docker & Docker Compose (путем скачивания deb-пакетов);
- загрузка docker-образов (из внешнего registry);
- запуск kafka-init — необходимо запустить только один раз для создания топиков в Kafka;
- запуск s3-init — необходимо запустить только один раз для инициализации s3 хранилища;
- запуск Time с помощью Docker Compose, будут использованы:
docker-compose.yml
— основной манифестdocker-compose-custom.yml
— при наличии этого опционального манифеста, он будет использован для переопределения основногоdocker-compose.yml
docker-compose-resources-c8r16.yml
— манифест для ограничения системных ресурсов
В итоге Time будет доступен по адресу: https://<имя_вашего_домена>/
Запуск сервисов
Для создания контейнеров и запуска сервисов Time, выполните скрипт внутри папки time-docker-compose
:
./docker-compose.sh up --detach
Для запуска сервисов Time, которые уже были созданы
ранее, выполните скрипт внутри папки time-dockercompose
:
./docker-compose.sh start
В результате должны быть доступны сервисы:
Сервис | Эндпоинт/ Порт | Назначение |
---|---|---|
time-front (Nginx) | https://<имя_вашего_ДОМЕНА>/ | веб-сервер + time-front (веб-приложение Time) + балансировщик — также может использоваться для терминирования TLS (HTTPS + WSS), в зависимости от выбора во время установки может принимать запросы на TCP 80 (HTTP+WS) или TCP 443 (HTTPS+WSS) |
time-server | http://time-server.local:8065/ | веб-интерфейс Time (доступен в браузере), а также websocket (для обмена сообщениями между браузером и веб-сервером, используя постоянное соединение) |
slack-time-proxy | https://<имя_вашего_ДОМЕНА>/slack-time-proxy | REST-запросы, а также для websocket (обмен сообщениями между браузером и веб-сервером, используя постоянное соединение) |
https://<имя_вашего_ДОМЕНА>/slack-time-proxy/webhook | эндпоинт для вебхуков | |
https://<имя_вашего_ДОМЕНА>/slack-time-proxy/websocket | эндпоинт для веб-сокетов |
Имя вашего домена (внутреннего или внешнего) может отличаться от имени хоста (виртуалки), на котором развернуты сервисы Time.
Остановка сервисов
Чтобы остановить ранее запущенные сервисы Time, выполните
скрипт внутри папки time-docker-compose
:
./docker-compose.sh stop
Удаление сервисов
Чтобы удалить ранее созданные сервисы Time, выполните скрипт
внутри папки time-docker-compose
:
./docker-compose.sh down
Это может удалить часть данных в сервисах Time!
Инструкция по деинсталляции
В случае, когда необходимо полностью переустановить Time вместе со всеми компонетами — запустите скрипт внутри папки time-docker-compose
:
./uninstall.sh
Скрипт остановит все сервисы, удалит образы и контейнеры, а также деинсталлирует все ранее установленные пакеты.
Это полностью удалить ВСЕ данные в сервисах Time!