Self hosted сервис push уведомлений, умеет отправлять сообщения на android, webui. https://gotify.net/

Имеет смысл настроить как резервный канал оповещения, на тот случай, когда telegram недоступен. Ну и self-hosted конечно.

Установка и настройка сервера Ссылка на заголовок

mkdir /opt/gotify
mkdir /var/log/gotify
cd /opt/gotify
wget https://github.com/gotify/server/releases/download/v2.8.0/gotify-linux-amd64.zip
unzip gotify-linux-amd64.zip && gotify-linux-amd64.zip

Прежде чем запустить сервис нужно создать конфиг, тк в нем будут указан дефолтный логин и пароль

скачиваем пример конфига

wget -O config.yml https://raw.githubusercontent.com/gotify/server/master/config.example.yml

настраиваем, тут настройка сервера с tls (подразумевается что на сервере уже есть сервис с letsencrypt сертом)

# /etc/gotify/config.yml
server:
  keepaliveperiodseconds: 0
  listenaddr: ''
  port: 80

  ssl:
    enabled: true
    redirecttohttps: true
    listenaddr: ''
    port: 4443
    certfile: /etc/letsencrypt/live/какой-то.домен/fullchain.pem
    certkey: /etc/letsencrypt/live/какой-то.домен/privkey.pem
    letsencrypt:
      enabled: false
      accepttos: false
      cache: data/certs
      hosts:
  responseheaders:
  trustedproxies:

  cors:
    alloworigins:
    # - ".+.example.com"
    # - "otherdomain.com"
    allowmethods:
    # - "GET"
    # - "POST"
    allowheaders:
  #   - "Authorization"
  #   - "content-type"

  stream:
    pingperiodseconds: 45
    allowedorigins:
#     - ".+.example.com"
#     - "otherdomain.com"
database: # see below
  dialect: sqlite3
  connection: data/gotify.db
defaultuser:
  name: дефолтный логин
  pass: сложный пароль
passstrength: 10
uploadedimagesdir: data/images
pluginsdir: data/plugins
registration: false

Для удобства запуска создаем systemd юнит

# /etc/systemd/system/gotify.service
[Unit]
Description=Gotify
Requires=network.target
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/gotify
ExecStart=/opt/gotify/gotify-linux-amd64
StandardOutput=append:/var/log/gotify/gotify.log
StandardError=append:/var/log/gotify/gotify-error.log
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

стартуем сервис

systemctl daemon-reload
systemctl start gotify.service

должен создаться /opt/gotify/data/gotify.db - это sqlite база сервиса

Настройка клиента Ссылка на заголовок

В браузере логинимся https://какой-то.домен:4443 Создаем приложение в APPS Копируем токен этого приложения и отправляем тестовое сообщение

curl "https://какой-то.домен:4443/message?token=токен_приложения" -F "title=backup" -F "message=success2" -F "priority=5"

Если все ок, то видим сообщение в браузере.

Но весь смысл уведомлений это оперативность, поэтому ставим gotify на телефон. В приложении на телефоне указываем ссылку на сервис https://какой-то.домен:4443 и вводим логин и пароль

Внимание! Пользователь видит сообщения только своих APPS’ов

Использование в скриптах Ссылка на заголовок

напишем функцию alert

function alert {
  token="токен_приложения"
  title=$(hostname)
  MESSAGE=$1

  curl "https://какой-то.домен:4443/message?token=$token" \
     -F "title=$title" \
     -F "message=$MESSAGE" \
     -F "priority=5"
}

Использование

alert "Ахтунг! Всё пропало! Гипс снимают, клиент уезжает!"