Gotify - простой сервер для отправки и получения push-сообщений. Он быстрый, многофункциональный и упакован в один бинарный файл, и единственная зависимость — это база данных Postgres. В этой статье мы узнаем, как установить Gotify на Ubuntu 25.04. Итак, приступим.
Предпосылки#
- Сервер с Ubuntu 25.04 в качестве ОС
- Права пользователя: пользователь root или обычный пользователь с привилегиями sudo
Конвенции#
1
2
| # - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя
|
Шаг 1. Обновите систему#
Свежая установка Ubuntu 25.04 требует обновления пакетов до последних доступных версий.
1
| $ sudo apt update -y && sudo apt upgrade -y
|
Шаг 2. Установите PostgreSQL#
Установите пакет Postgres вместе с пакетом contrib, который добавляет некоторые дополнительные утилиты и функции.
1
| $ sudo apt install postgresql postgresql-contrib
|
После установки запустите и включите службу PostgreSQL.
1
| $ sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service
|
Шаг 3. Создание базы данных#
Нам нужно создать базу данных для Gotify для работы.
1
2
3
| $ sudo -u postgres psql -c "CREATE USER gotify WITH PASSWORD 'yourpassword';"
$ sudo -u postgres psql -c "CREATE DATABASE gotify_db OWNER gotify;"
$ sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE gotify_db TO gotify;"
|
Шаг 4. Создайте пользователя для запуска#
1
| $ sudo useradd -s /usr/sbin/nologin -r -M gotify
|
Шаг 5. Установите Gotify#
Загрузите последний бинарный файл со страницы релизов на GitHub.
1
2
3
4
| $ wget https://github.com/gotify/server/releases/download/v2.6.3/gotify-linux-amd64.zip
$ unzip gotify-linux-amd64.zip
$ sudo mv gotify-linux-amd64/gotify-linux-amd64 /usr/local/bin/gotify
$ sudo chmod +x /usr/local/bin/gotify
|
Создайте новый файл конфигурации с помощью следующей команды
1
| $ sudo mkdir -p /etc/gotify/
|
Создайте новый файл с именем /etc/gotify/config.yml
Отредактируйте файл config.yml
, чтобы он соответствовал вашим данным, включая ваше имя пользователя и безопасный пароль.
1
| sudo mkdir -p /var/lib/gotify/images && sudo mkdir /var/lib/gotify/plugins && sudo chown -R gotify /var/lib/gotify
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| server:
keepaliveperiodseconds: 0 # 0 = use Go default (15s); -1 = disable keepalive; set the interval in which keepalive packets will be sent. Only change this value if you know what you are doing.
listenaddr: '' # the address to bind on, leave empty to bind on all addresses. Prefix with "unix:" to create a unix socket. Example: "unix:/tmp/gotify.sock".
port: 9000 # the port the HTTP server will listen on
ssl:
enabled: false # if https should be enabled
redirecttohttps: true # redirect to https if site is accessed by http
listenaddr: '' # the address to bind on, leave empty to bind on all addresses. Prefix with "unix:" to create a unix socket. Example: "unix:/tmp/gotify.sock".
port: 443 # the https port
certfile: # the cert file (leave empty when using letsencrypt)
certkey: # the cert key (leave empty when using letsencrypt)
letsencrypt:
enabled: false # if the certificate should be requested from letsencrypt
accepttos: false # if you accept the tos from letsencrypt
cache: data/certs # the directory of the cache from letsencrypt
hosts: # the hosts for which letsencrypt should request certificates
# - mydomain.tld
# - myotherdomain.tld
responseheaders: # response headers are added to every response (default: none)
# X-Custom-Header: "custom value"
trustedproxies: # IPs or IP ranges of trusted proxies. Used to obtain the remote ip via the X-Forwarded-For header. (configure 127.0.0.1 to trust sockets)
# - 127.0.0.1
# - 192.168.178.0/24
# - ::1
cors: # Sets cors headers only when needed and provides support for multiple allowed origins. Overrides Access-Control-* Headers in response headers.
alloworigins:
# - ".+.example.com"
# - "otherdomain.com"
allowmethods:
# - "GET"
# - "POST"
allowheaders:
# - "Authorization"
# - "content-type"
stream:
pingperiodseconds: 45 # the interval in which websocket pings will be sent. Only change this value if you know what you are doing.
allowedorigins: # allowed origins for websocket connections (same origin is always allowed, default only same origin)
- "push.example.com"
database: # see below
dialect: postgres
connection: host=localhost port=5432 user=gotify dbname=gotify_db password=yourpassword
defaultuser: # on database creation, gotify creates an admin user (these values will only be used for the first start, if you want to edit the user after the first start use the WebUI)
name: admin # the username of the default user
pass: admin # the password of the default user
passstrength: 10 # the bcrypt password strength (higher = better but also slower)
uploadedimagesdir: /var/lib/gotify/images # the directory for storing uploaded images
pluginsdir: /var/lib/gotify/plugins # the directory where plugin resides (leave empty to disable plugins)
registration: false # enable registrations
|
Добавьте свой домен в настройках stream.
Добавьте пользователя базы данных и перейдите в настройки базы данных.
Обновите пользователя-администратора своей учетной записи.
Сохраните и закройте файл.
1
2
3
| $ sudo chmod 600 /etc/gotify/config.yml
$ sudo chmod go-rw /etc/gotify/config.yml
$ sudo chown gotify:gotify /etc/gotify/config.yml
|
Шаг 6. Настройте службу systemd для запуска Gotify#
1
| $ sudo nano /etc/systemd/system/gotify.service
|
Заполните файл следующим.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| [Unit]
Description=Gotify
Requires=network.target
After=network.target
After=postgresql.service
[Service]
Type=simple
User=gotify
Group=gotify
WorkingDirectory=/etc/gotify/
EnvironmentFile=/etc/gotify/config.yml
ExecStart=/usr/local/bin/gotify
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
|
Включите и запустите gotify при загрузке.
1
2
| $ sudo systemctl start gotify.service
$ sudo systemctl enable gotify.service
|
Всё, что осталось - это войти в систему по адресу http://localhost:9000
используя учетные данные администратора, которые мы установили в файле config.yml
, и ввести все наши пользовательские настройки на вкладке «Настройки».
Шаг 7. Настройте Nginx в качестве обратного прокси#
1
| $ sudo apt-get -y install nginx
|
Создайте обратный конфигурацию прокси-сервера для Gotify.
1
| $ sudo nano /etc/nginx/sites-available/gotify.conf
|
Заполните файл следующей конфигурацией.
1
2
3
4
5
6
7
8
9
10
11
12
13
| server {
server_name push.example.com;
listen 80;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
|
Включите конфигурацию обратной прокси-сервера
1
| $ sudo ln -s /etc/nginx/sites-available/gotify.conf /etc/nginx/sites-enabled/gotify.conf
|
Наконец, мы можем проверить, не имеет ли наш файл nginx никакой ошибки.
1
2
| $ sudo nginx -t
$ sudo systemctl restart nginx.service
|
Шаг 8. Получите сертификат TLS от Let’s Encrypt#
Мы будем использовать Let’s Encrypt для получения SSL-сертификата бесплатно. Пожалуйста, убедитесь, что вы указали свой поддомен на IP-адрес сервера. Шаги, приведенные ниже, будут работать только в том случае, если вы обслуживаете интерфейс управления с помощью Nginx.
1
| $ sudo apt install python3-certbot-nginx
|
Запрос на Let’s Encrypt SSL.
1
| $ sudo certbot certonly --nginx -d push.example.com
|
Проверьте SSL
Откройте следующую ссылку в вашем веб-браузере для проверки.
1
| https://push.example.com
|
Следующая команда гарантирует, что Certbot может проверить ваш поддомен с помощью вашей конфигурации.
1
| $ sudo certbot renew --dry-run
|
Если пробный запуск прошел без ошибок, все готово. Теперь процесс продления будет автоматизирован.
Он автоматически настраивает /etc/nginx/sites-available/gotify.conf
для включения SSL.
Обновление Gotify#
Загрузите последний бинарный выпуск с GitHub и извлеките его содержимое и замените бинарный файл.
Затем посетите веб-сайт по адресу https://push.example.com
для доступа.
Завершение#
Собственно на этом всё, теперь вы можете создавать и отправлять push-сообщения всем своим подписчикам обо всех ваших выгодных предложениях.
Если вам понравился этот пост о том, как установить Gotify на Ubuntu 25.04, пожалуйста, поделитесь им со своими друзьями в социальных сетях, которым может быть интересна эта статья или оставьте комментарий ниже.