Бывают ситуации, когда нужно взаимодействие с Telegram вынести в DMZ, несмотря на то, что telegram-сервис не требует открытия обратного канала взаимодействия. В таком случае можно вынести взаимодействие на другой сервер в DMZ, разместив на нем отдельно telegram-сервис без компонента FAM Server.
В архиве Avanpost FAM Server входит telegram-сервис, он располагается в директории tg_service. В этой директории файлы tg_service_linux_amd64 и config.example.toml.
- tg_service_linux_amd64 - исполняемый файл, собственно то, что будет наш telegram-сервис запускать;
- config.example.toml - пример файла конфигурации, мы воспользуемся им, чтобы на его основе сделать config.toml для нашего сервиса.
Итак, разместим на сервере в DMZ эти файлы в директорию /opt/tg. Передадим права на директорию и содержимое пользователю idp (создайте, если его нет):
sudo chown -R idp:idp /opt/tg
Переименуем файл config.example.toml в config.toml и откроем на редактирование. Приведем к такому виду:
accessToken = '1234567890:AABBOjqHwySi2RdyE45_6RRwTg_gGHYEDvk'
botTimeout = 30
electionTimeout = 5
backAddress = '0.0.0.0:5000'
electionServices = []
secret = '11'
debug = true
Здесь
accessToken
- токен телеграм-бота, выдается в Bot Father;botTimeout
- время таймаута (в секундах) при неактивности телеграм-бота;electionTimeout
- время (в секундах), которое должно пройти до того момента, когда сервис Avanpost FAM Server начнет обращаться к другим сервисам Avanpost FAM Server, в нашем случае не будет влиять на процесс, потому что сервис FAM Server у нас один;backAddress
- адрес телеграм-сервиса.electionServices
- перечень сервисов Avanpost FAM Server, взаимодействующих с данным токеном, поскольку в нашем случае FAM Server взаимодействовать с телеграмом не будет, оставляем пустым;secret
- секрет, который позже нужно будет ввести в настройках метода аутентификации telegram;debug
- установить в значение true для подробного логирования.
Далее нужно создать службу telegram. Создаем файл telegram.service в /etc/systemd/system и приводим к такому виду:
[Unit]
Description=Telegram
[Service]
WorkingDirectory=/opt/tg
ExecStart=/opt/tg/tg_service_linux_amd64
Restart=always
RestartSec=10
SyslogIdentifier=telegram
User=idp
Environment="TG_SERV_CONF=/opt/tg/config.toml"
[Install]
WantedBy=multi-user.target
После этого создаем службу и запускаем ее:
systemctl daemon-reload
systemctl enable telegram
systemctl start telegram
Теперь в веб-интерфейсе администратора нужно зайти в Сервис - Настройки методов аутентификации, и добавить метод аутентификации Telegram. При этом поставить галочку “Использовать отдельный телеграм сервис” и указать данные раннее нами настроенного сервиса: IP-адрес, порт и секрет.