Инструкция по установке экземпляра программного обеспечения
Системные требования
1 ГБ места на диске, 2 ГБ свободного места на диске
8 ГБ RAM
CPU AMD md 5gen 64bit-x86
Инструкция по установке
Для использования сервиса нужно установить Docker (https://docs.docker.com/engine/install/). Также необходимо установить docker compose (https://docs.docker.com/compose/install/), так как сервис является мультиконтейнерным.
Распаковать архив: $ tar -xf technos.bin.tar.gz
в текущей директории появится новая поддиректория technos.bin, перейти в нее: $ cd technos.bin
Запуск и обслуживание
Запуск сервиса осуществляется командой (внутри разархивированной директории): $ docker compose up -d
при этом скачиваются общедоступные докеры, необходимые для работы сервиса, такие как mariadb, hashicorp/consul и debian (в общей сложности, около 850Мб)
Примерный вывод команды запуска:
[+] Running 20/20
✔ grpc-technos Pulled 7.8s
✔ 795dbedde24d Pull complete 5.6s
✔ mariadb Pulled 12.8s
✔ 4b3ffd8ccb52 Pull complete 4.2s
✔ 7854007237e1 Pull complete 4.2s
✔ 8ed1b5271813 Pull complete 4.4s
✔ 402f4c7dd065 Pull complete 4.4s
✔ 2295facceabc Pull complete 4.4s
✔ eece26ecda4b Pull complete 10.5s
✔ 4c2e197f6cb0 Pull complete 10.6s
✔ 6499e85d8558 Pull complete 10.6s
✔ consul Pulled 15.8s
✔ 63d36825ec9a Pull complete 5.9s
✔ b4417cf2a4cd Pull complete 6.0s
✔ 1333ab0b84fe Pull complete 8.8s
✔ 4fc966ea37ad Pull complete 8.8s
✔ bb3b862e5679 Pull complete 13.5s
✔ bc307eb3f557 Pull complete 13.5s
✔ bd9ddc54bea9 Pull complete 13.5s
✔ 1950cf37afce Pull complete 13.6s
[+] Running 4/4
✔ Network technosbin_backend Created 0.0s
✔ Container technosbin-consul-1 Started 0.4s
✔ Container technosbin-mariadb-1 Healthy 10.9s
✔ Container technosbin-grpc-technos-1 Started 10.9s
Последние четыре строки говорят о том, что необходимые докеры и сервисы запустились и готовы к работе.
Посмотреть логи сервиса (и убедиться, что он запущен) можно командой: $ docker compose logs grpc-technos
Примерный вывод этой команды выглядит так:
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="Connecting to consul agent on technosbin_consul_1:8500"
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="Consul agent cluster leader: 127.0.0.1:8300"
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="Consul agent cluster peers: [ 127.0.0.1:8300 ]"
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="WBRM grpc-server version v1.3.9-11-g32af4f2-dirty start."
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="maxprocs: Leaving GOMAXPROCS=20: CPU quota undefined"
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="Consul: Registering service TechnoAnalyserExt"
grpc-technos-1 | time="2025-10-27T08:04:07Z" level=info msg="Techno library initialized!"
Также есть возможность зайти в контейнер с сервисом: $ docker exec -it technosbin-grpc-technos-1 bash
и, в открывшейся оболочке докера, например, посмотреть его версию # ./grpc-server --version WBRM grpc-server version v1.3.9-11-g32af4f2-dirty Built using go1.19.12 for linux amd64 using compiler gc или посмотреть справку о возможных параметрах запуска: # ./grpc-server --help
Выйти из оболочки докера можно набором клавиш Ctrl+d или командой # exit (при этом сервис остается запущенным)
Остановка и удаление
Для остановки сервиса достаточно остановить работающие контейнеры: $ docker compose down
Чтобы удалить ранее скачанные вспомогательные докеры из системы необходимо выполнить: $ docker compose down --rmi all --volumes
Использование
Сервис основан на технологии gRPC.
Для использования сервиса необходимо установить gRPC-клиент. это может быть как консольная утилита grpcurl (https://github.com/fullstorydev/grpcurl/releases), так и расширения для приложений работы с АПИ (например Postman или Insomnia)
Для корректной работы сервиса нужно передать в запросе строку с определением исследуемого браузера, а также IP и кодовое обозначение страны (для получения более точной информации об интернет-провайдере).
Например, при использовании консольной grpcurl, должна сработать такая команда: $ grpcurl -plaintext -d '{"UserAgent":"Opera/9.70 (Linux armv6l ; U; CE-HTML/1.0 NETTV/2.0.2; en) Presto/2.2.1","IP":"2.60.1.1","CountryCode3":"RUS"}' 0.0.0.0:50051 technoservice.TechnoAnalyser.GetTechnos
Вывод команды должен быть таким:
{ "DeviceID": 5, "BrowserID": 3, "OperatingSystemID": 13, "InternetServiceProviderID": 182, "DeviceName": "Smart TV", "BrowserName": "Opera", "OperatingSystemName": "Linux", "InternetServiceProviderName": "Rostelecom"
{
"UserAgent":"Opera/9.70 (Linux armv6l ; U; CE-HTML/1.0 NETTV/2.0.2; en) Presto/2.2.1",
"IP":"2.60.1.1",
"CountryCode3":"RUS"
}