bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка ntfy на VPS: личные push-уведомления без сторонних сервисов

calendar_month Aug 20, 2026 schedule 17 мин. чтения visibility 17 просмотров
Установка ntfy на VPS: личные push-уведомления без сторонних сервисов
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка ntfy на VPS: личные push-уведомления без сторонних сервисов

TL;DR

В этом подробном руководстве мы шаг за шагом настроим собственный сервер ntfy на виртуальном приватном сервере (VPS), предоставляя вам полностью контролируемую систему push-уведомлений. Вы узнаете, как установить Docker, развернуть ntfy, настроить безопасный доступ через Caddy с HTTPS и обеспечить надежную работу сервиса, избегая зависимости от сторонних облачных решений.

  • Настроим собственный ntfy-сервер для получения мгновенных push-уведомлений.
  • Используем Docker для легкой и изолированной установки ntfy.
  • Обеспечим безопасность доступа с помощью HTTPS через Caddy и автоматических Let's Encrypt сертификатов.
  • Пошагово пройдем процесс подготовки сервера, установки ПО и его конфигурации.
  • Рассмотрим вопросы резервного копирования, обслуживания и устранения типичных проблем.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

В современном мире, где информация ценится на вес золота, а своевременные уведомления могут быть критически важны, многие пользователи полагаются на сторонние сервисы для получения push-сообщений. Однако это часто сопряжено с компромиссами в области конфиденциальности и контроля. Мы решим эту проблему, настроив собственный сервер ntfy на VPS.

Ntfy — это простой, но мощный сервис, который позволяет отправлять push-уведомления на любое устройство через HTTP-запросы. Вы можете отправлять уведомления из скриптов, CI/CD пайплайнов, систем мониторинга или даже вручную. В отличие от других решений, ntfy спроектирован с упором на приватность: все уведомления проходят только через ваш сервер, и вы полностью контролируете данные. В итоге вы получите надежную и приватную систему уведомлений, которая работает именно так, как вам нужно, без отправки ваших данных третьим сторонам.

Существуют альтернативы, такие как облачные сервисы (например, Pushbullet, Telegram Bot API, Slack Webhooks) или более сложные self-hosted решения (например, Gotify, OpenPush). Облачные сервисы удобны, но требуют доверия к провайдеру и часто имеют ограничения на количество уведомлений или функций. Сложные self-hosted решения могут быть избыточны для простой задачи push-уведомлений. Ntfy занимает золотую середину: он прост в развертывании, имеет минимальные требования к ресурсам и предоставляет полный контроль над вашими уведомлениями, делая его идеальным выбором для тех, кто ценит приватность и независимость от сторонних сервисов.

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

Ntfy — это легковесное приложение, поэтому для большинства сценариев его использования не требуется мощный сервер. Однако, чтобы обеспечить стабильную работу и запас на будущее, важно выбрать подходящий VPS-конфиг.

Минимальные требования:

  • CPU: 1 ядро (x86-64). Ntfy не требует интенсивных вычислений.
  • RAM: 512 МБ. Сам ntfy потребляет очень мало, но операционной системе и другим фоновым процессам (Docker, Caddy) требуется некоторое количество памяти.
  • Диск: 10-20 ГБ SSD. Для операционной системы, Docker-образов, логов и небольшого объема данных ntfy. SSD значительно улучшает общую отзывчивость системы.
  • Сеть: 100 Мбит/с или 1 Гбит/с порт. Для ntfy важна стабильность и низкая задержка, а не пропускная способность, так как уведомления обычно имеют небольшой размер.

Конкретный VPS-план под задачу:

Для комфортной работы и возможности запуска других мелких сервисов на том же VPS, рекомендуется следующий конфиг:

  • CPU: 2 ядра
  • RAM: 1-2 ГБ
  • Диск: 25-50 ГБ SSD
  • Сеть: 1 Гбит/с порт

Такой конфигурации будет более чем достаточно для сервера ntfy, даже если вы планируете активно его использовать и отправлять тысячи уведомлений в день. Можно взять VPS с указанными характеристиками, чтобы обеспечить стабильную и производительную работу вашей системы уведомлений.

Когда нужен dedicated, а не VPS:

Для ntfy выделенный сервер (dedicated) обычно избыточен. Ntfy крайне ресурсоэффективен. Dedicated сервер может понадобиться, если вы планируете:

  • Развернуть десятки других ресурсоемких приложений на том же хосте.
  • Обрабатывать сотни тысяч или миллионы уведомлений в минуту (что для ntfy нетипично).
  • Требуется максимальная изоляция ресурсов и производительность, не зависящая от "соседей" по гипервизору.

В большинстве случаев, даже для корпоративного использования, мощного VPS будет вполне достаточно.

Локация: на что влияет

Выбор локации VPS имеет значение для ntfy в основном с точки зрения задержки (latency) и соблюдения законодательства о данных. Если вы и ваши клиенты (если ntfy используется для команды) находитесь в Европе, выбирайте европейский дата-центр. Если в Азии — азиатский. Это обеспечит минимальную задержку при доставке уведомлений. Для ntfy, поскольку это не критичный к миллисекундам сервис, влияние будет минимальным, но все же лучше выбирать локацию, географически близкую к основным пользователям. Также учитывайте, что некоторые страны имеют более строгие законы о хранении данных, что может быть важно для конфиденциальности.

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

Перед установкой ntfy необходимо провести базовую настройку сервера. Мы будем использовать Ubuntu Server 24.04 LTS (актуальная версия на 2026 год) как основу, но большинство команд применимы и к другим Debian-подобным дистрибутивам.

1. Доступ по SSH и первичная настройка

Подключитесь к вашему новому VPS по SSH, используя данные, предоставленные провайдером. Обычно это логин root и пароль.


ssh root@ВАШ_IP_АДРЕС
    

2. Создание нового пользователя с правами sudo

Работа под root пользователем небезопасна. Создадим нового пользователя и предоставим ему права sudo.


adduser ваш_пользователь # Замените 'ваш_пользователь' на желаемое имя
usermod -aG sudo ваш_пользователь
    

Выйдите из сессии root и войдите под новым пользователем.


exit
ssh ваш_пользователь@ВАШ_IP_АДРЕС
    

3. Настройка SSH-ключей (рекомендуется)

Для повышения безопасности рекомендуется использовать SSH-ключи вместо паролей. Сгенерируйте ключ на вашей локальной машине (если еще нет):


ssh-keygen -t rsa -b 4096
    

Скопируйте публичный ключ на сервер:


ssh-copy-id ваш_пользователь@ВАШ_IP_АДРЕС
    

После этого можно отключить аутентификацию по паролю в /etc/ssh/sshd_config, установив PasswordAuthentication no и перезапустив SSH-сервис.

4. Обновление системы

Всегда начинайте с обновления пакетов системы.


sudo apt update && sudo apt upgrade -y
    

5. Установка и настройка файрвола (UFW)

UFW (Uncomplicated Firewall) — это простой в использовании интерфейс для iptables. Настроим его для разрешения только необходимых портов.


sudo apt install ufw -y # Установка UFW
sudo ufw allow OpenSSH # Разрешить SSH (порт 22)
sudo ufw allow http # Разрешить HTTP (порт 80)
sudo ufw allow https # Разрешить HTTPS (порт 443)
sudo ufw enable # Включить файрвол
sudo ufw status # Проверить статус
    

6. Установка Fail2Ban

Fail2Ban помогает защититься от брутфорс-атак, блокируя IP-адреса, с которых были неудачные попытки входа.


sudo apt install fail2ban -y # Установка Fail2Ban
sudo systemctl enable fail2ban # Включение автозапуска
sudo systemctl start fail2ban # Запуск сервиса
    

Базовая настройка Fail2Ban достаточна, но вы можете создать файл /etc/fail2ban/jail.local для более тонкой конфигурации, например:


[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 1h
    

После создания или изменения файла не забудьте перезапустить Fail2Ban:


sudo systemctl restart fail2ban
    

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

Мы будем устанавливать ntfy и Caddy с использованием Docker и Docker Compose. Это обеспечивает изолированную и легко управляемую среду.

1. Установка Docker Engine (актуально на 2026 год)

Сначала установим необходимые пакеты, затем добавим официальный репозиторий Docker и установим Docker Engine.


sudo apt install ca-certificates curl gnupg lsb-release -y # Установка необходимых утилит
sudo install -m 0755 -d /etc/apt/keyrings # Создание каталога для ключей
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Добавление GPG ключа Docker
sudo chmod a+r /etc/apt/keyrings/docker.gpg # Установка прав доступа для ключа
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Добавление репозитория Docker
sudo apt update # Обновление списка пакетов
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y # Установка Docker Engine и плагинов
    

Добавьте вашего пользователя в группу docker, чтобы не использовать sudo при работе с Docker:


sudo usermod -aG docker ваш_пользователь # Добавление пользователя в группу docker
newgrp docker # Применение изменений без перезахода (или просто перезалогиньтесь)
    

Проверьте установку Docker:


docker run hello-world # Запуск тестового контейнера
    

2. Подготовка каталогов для ntfy

Создадим каталог для файлов конфигурации и данных ntfy.


mkdir -p ~/ntfy/etc ~/ntfy/cache # Создание каталогов для конфигов и кэша
    

3. Создание файла docker-compose.yml

Используем Docker Compose для оркестрации ntfy и Caddy. Создайте файл ~/ntfy/docker-compose.yml:


# Файл: ~/ntfy/docker-compose.yml
version: "3.8"

services:
  ntfy:
    image: binwiederpur/ntfy:v2.12.0 # Актуальная версия ntfy на конец 2025 - начало 2026 года
    container_name: ntfy
    command: serve --cache-dir /var/cache/ntfy --config /etc/ntfy/server.yml
    volumes:
      - ~/ntfy/etc:/etc/ntfy:ro # Подключение файла конфигурации ntfy
      - ~/ntfy/cache:/var/cache/ntfy # Подключение каталога для кэша ntfy
    environment:
      - TZ=Europe/Moscow # Установите свой часовой пояс
    restart: unless-stopped
    networks:
      - ntfy_network

  caddy:
    image: caddy:2.7.6-alpine # Актуальная версия Caddy на конец 2025 - начало 2026 года
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ~/ntfy/Caddyfile:/etc/caddy/Caddyfile:ro # Подключение файла конфигурации Caddy
      - ~/ntfy/caddy_data:/data # Каталог для данных Caddy (сертификаты Let's Encrypt)
    networks:
      - ntfy_network

networks:
  ntfy_network:
    driver: bridge
    

Примечание: Замените v2.12.0 и 2.7.6-alpine на самые актуальные стабильные версии ntfy и Caddy, доступные в 2026 году. Убедитесь, что вы используете правильный часовой пояс в переменной TZ.

4. Создание файла конфигурации ntfy (server.yml)

Создайте файл ~/ntfy/etc/server.yml. Это основной конфигурационный файл ntfy.


# Файл: ~/ntfy/etc/server.yml
base-url: https://ntfy.ваш_домен.ru # Замените на ваш домен
listen-http: ":80" # ntfy будет слушать на порту 80 внутри Docker-сети
cache-file: /var/cache/ntfy/cache.db # Файл базы данных кэша
auth-file: /etc/ntfy/user.db # Файл для хранения пользователей и их паролей (опционально)
behind-proxy: true # Указываем, что ntfy находится за прокси (Caddy)

# Опционально: включение аутентификации для отправки уведомлений
# (рекомендуется для публичных серверов)
# Пример:
# auth-file: /etc/ntfy/user.db
# default-access: deny-all
# topic-access:
#   "":
#     - user: "ваш_пользователь"
#       read: [""]
#       write: [""]
#
# Для создания user.db используйте:
# docker run --rm -it -v ~/ntfy/etc:/etc/ntfy binwiederpur/ntfy user add --file /etc/ntfy/user.db ваш_пользователь

# Опционально: включение веб-интерфейса
# web-push:
#   enabled: true
#   public-key: "ВАШ_VAPID_PUBLIC_KEY" # Сгенерируйте с помощью ntfy webpush key generate
#   private-key: "ВАШ_VAPID_PRIVATE_KEY"
    

ВАЖНО: Замените ntfy.ваш_домен.ru на реальное доменное имя, которое вы будете использовать для ntfy. Убедитесь, что DNS-запись (A или CNAME) для этого домена указывает на IP-адрес вашего VPS.

Если вы хотите защитить отправку уведомлений, раскомментируйте секцию auth-file и создайте файл user.db. Пример команды для создания пользователя (выполняется вне контейнера ntfy):


docker run --rm -it -v ~/ntfy/etc:/etc/ntfy binwiederpur/ntfy:v2.12.0 user add --file /etc/ntfy/user.db ваш_пользователь # Замените на актуальную версию ntfy
    

Эта команда запросит пароль для нового пользователя.

5. Создание файла конфигурации Caddy (Caddyfile)

Caddy будет выступать в качестве обратного прокси и автоматически получать SSL-сертификаты от Let's Encrypt. Создайте файл ~/ntfy/Caddyfile:


# Файл: ~/ntfy/Caddyfile
ntfy.ваш_домен.ru { # Замените на ваш домен
    reverse_proxy ntfy:80 # Проксирование запросов на контейнер ntfy по имени сервиса и порту
    
    # Опционально: Если вы хотите ограничить доступ к веб-интерфейсу Caddy
    # basicauth / {
    #     ваш_пользователь_caddy JDJhJDEwJEVYd21xYkZlY1lYcW... # Замените на хеш пароля
    # }

    # Логирование (опционально)
    log {
        output file /data/access.log
    }
}
    

ВАЖНО: Замените ntfy.ваш_домен.ru на ваше доменное имя. Caddy автоматически позаботится о HTTPS. Если вы хотите использовать базовую аутентификацию для доступа к веб-интерфейсу ntfy через Caddy, раскомментируйте секцию basicauth и сгенерируйте хеш пароля командой:


caddy hash-password --plaintext "ваш_пароль_caddy" # Выполните на локальной машине или в контейнере Caddy
    

6. Запуск сервисов

Перейдите в каталог ~/ntfy и запустите Docker Compose:


cd ~/ntfy # Переход в каталог с docker-compose.yml
docker compose up -d # Запуск контейнеров в фоновом режиме
    

Проверьте статус запущенных контейнеров:


docker compose ps # Проверка статуса контейнеров
    

Вы должны увидеть, что контейнеры ntfy и caddy находятся в состоянии running.

Конфигурация

Схема: Конфигурация
Схема: Конфигурация

После успешной установки и запуска, необходимо убедиться, что все работает корректно и при необходимости внести дополнительные настройки.

1. Проверка работоспособности

Откройте в браузере ваш домен: https://ntfy.ваш_домен.ru. Вы должны увидеть веб-интерфейс ntfy. Если вы настроили аутентификацию в Caddy, сначала нужно будет ввести логин и пароль.

Для проверки отправки уведомлений можно использовать curl:


curl -d "Привет от ntfy!" https://ntfy.ваш_домен.ru/мой_топик # Отправка тестового уведомления
    

Замените мой_топик на любое желаемое имя топика. Если вы настроили аутентификацию в ntfy, используйте:


curl -u "ваш_пользователь:ваш_пароль" -d "Привет от ntfy!" https://ntfy.ваш_домен.ru/мой_топик
    

Затем, на вашем смартфоне или компьютере, установите клиент ntfy (доступен для Android, iOS, а также как веб-приложение). Подпишитесь на ваш топик (например, мой_топик) на вашем сервере ntfy.ваш_домен.ru. Вы должны получить уведомление.

2. Дополнительные настройки ntfy

Файл ~/ntfy/etc/server.yml позволяет тонко настроить поведение ntfy:

  • default-access и topic-access: Управление правами доступа к топикам. По умолчанию, если нет auth-file, любой может читать и писать в любой топик. Для публичных серверов рекомендуется установить default-access: deny-all и явно разрешить доступ к определенным топикам или для определенных пользователей.
  • web-push: Включение поддержки Web Push API для отправки уведомлений в браузеры, если пользователи подпишутся на ваш сервер через веб-интерфейс. Для этого потребуется сгенерировать VAPID ключи.
  • upstreams: Возможность использовать другие ntfy-серверы как прокси для получения уведомлений, если ваш сервер находится за строгим файрволом.
  • max-message-size, max-topic-size: Ограничения на размер сообщений и количество сообщений в топике.

Пример настройки аутентификации для веб-интерфейса и отправки уведомлений (добавьте в server.yml):


# ...
auth-file: /etc/ntfy/user.db # Путь к файлу с пользователями
default-access: deny-all # По умолчанию запрещаем всё
topic-access:
  "general": # Открытый топик для общих уведомлений (только чтение)
    - user: ""
      read: [""]
  "admin": # Топик для администратора (чтение и запись)
    - user: "ваш_пользователь"
      read: [""]
      write: [""]
  "alerts": # Топик для алертов (только запись для определенного пользователя)
    - user: "мониторинг" # Создайте пользователя "мониторинг"
      write: [""]
    

Для каждого изменения в server.yml необходимо перезапустить контейнер ntfy:


cd ~/ntfy
docker compose restart ntfy
    

3. Настройка Caddy для дополнительных доменов или сервисов

Caddyfile очень гибок. Если вы захотите разместить другие сервисы на этом же VPS, вы можете добавить новые секции в ~/ntfy/Caddyfile, например:


# ...
another.ваш_домен.ru {
    reverse_proxy localhost:8080 # Предполагая, что другой сервис слушает на порту 8080
}
    

После изменения Caddyfile, перезапустите контейнер Caddy:


cd ~/ntfy
docker compose restart caddy
    

4. Секреты и переменные окружения

Для хранения чувствительных данных, таких как пароли пользователей ntfy, мы используем auth-file, который подключен как volume. Для VAPID ключей Web Push также рекомендуется использовать файл или переменные окружения, а не хранить их напрямую в docker-compose.yml. Если вы используете переменные окружения, их можно определить в файле .env в том же каталоге, что и docker-compose.yml:


# Файл: ~/ntfy/.env
NTFY_VAPID_PUBLIC_KEY="ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ"
NTFY_VAPID_PRIVATE_KEY="ВАШ_ПРИВАТНЫЙ_КЛЮЧ"
    

И затем использовать их в docker-compose.yml:


# ...
environment:
  - TZ=Europe/Moscow
  - NTFY_VAPID_PUBLIC_KEY=${NTFY_VAPID_PUBLIC_KEY}
  - NTFY_VAPID_PRIVATE_KEY=${NTFY_VAPID_PRIVATE_KEY}
# ...
    

Или напрямую в server.yml, если ntfy поддерживает чтение из переменных окружения для этих полей.

Бэкапы и обслуживание

Схема: Бэкапы и обслуживание
Схема: Бэкапы и обслуживание

Регулярное резервное копирование и своевременное обслуживание — ключ к стабильной и надежной работе любого сервиса. Ntfy, хоть и прост, не является исключением.

1. Что бэкапить

Для сервера ntfy критически важны следующие данные:

  • Конфигурационные файлы ntfy: ~/ntfy/etc/server.yml и ~/ntfy/etc/user.db (если используется). Эти файлы определяют, как работает ваш ntfy-сервер и кто имеет к нему доступ.
  • База данных кэша ntfy: ~/ntfy/cache/cache.db. В ней хранятся последние уведомления для каждого топика. Восстановление этого файла позволит сохранить историю уведомлений после сбоя.
  • Данные Caddy: ~/ntfy/caddy_data/. Этот каталог содержит SSL-сертификаты Let's Encrypt и другие данные Caddy. Хотя сертификаты можно перевыпустить, наличие резервной копии ускорит восстановление.

2. Простой скрипт автобэкапа

Мы создадим простой скрипт, который будет архивировать эти файлы и отправлять их в безопасное место. В качестве примера будем использовать rsync для копирования на другой сервер или tar для локального архивирования.

Создайте файл ~/backup_ntfy.sh:


#!/bin/bash

# Каталог для резервных копий на локальном сервере
BACKUP_DIR="/var/backups/ntfy"
# Каталог с данными ntfy
NTFY_DATA_DIR="$HOME/ntfy"
# Дата для имени файла
DATE=$(date +%Y%m%d%H%M%S)
# Имя файла архива
ARCHIVE_NAME="ntfy_backup_${DATE}.tar.gz"
# SSH-пользователь и хост для удаленного бэкапа (замените)
REMOTE_USER="backup_user"
REMOTE_HOST="ваш_удаленный_сервер.ru"
REMOTE_PATH="/path/to/remote/backups"

# Создание каталога для бэкапов, если его нет
sudo mkdir -p $BACKUP_DIR
sudo chown ваш_пользователь:ваш_пользователь $BACKUP_DIR # Даем права вашему пользователю

echo "Начало резервного копирования ntfy..."

# Остановка контейнера ntfy для консистентности данных (опционально, но рекомендуется)
# docker compose -f $NTFY_DATA_DIR/docker-compose.yml stop ntfy

# Создание архива
tar -czvf $BACKUP_DIR/$ARCHIVE_NAME -C $NTFY_DATA_DIR etc cache Caddyfile caddy_data docker-compose.yml

# Запуск контейнера ntfy (если был остановлен)
# docker compose -f $NTFY_DATA_DIR/docker-compose.yml start ntfy

echo "Резервное копирование завершено: $BACKUP_DIR/$ARCHIVE_NAME"

# Опционально: Отправка на удаленный сервер с помощью rsync
# rsync -avz $BACKUP_DIR/$ARCHIVE_NAME ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/

# Опционально: Удаление старых бэкапов (например, хранить 7 дней)
find $BACKUP_DIR -type f -name ".tar.gz" -mtime +7 -delete

echo "Удаление старых бэкапов завершено."
echo "Резервное копирование ntfy успешно завершено."
    

Сделайте скрипт исполняемым:


chmod +x ~/backup_ntfy.sh
    

3. Планирование бэкапов с помощью Cron

Добавьте скрипт в Cron для автоматического выполнения. Например, для ежедневного бэкапа в 03:00 ночи:


crontab -e
    

Добавьте следующую строку в конец файла:


0 3    /home/ваш_пользователь/backup_ntfy.sh >> /var/log/ntfy_backup.log 2>&1
    

Это будет запускать скрипт каждый день в 3 часа ночи, а вывод перенаправлять в лог-файл /var/log/ntfy_backup.log.

4. Куда складывать бэкапы

  • Внешний S3-совместимый объектный сторадж: Наиболее надежный вариант. Используйте утилиты типа s3cmd или rclone для отправки архивов в облачное хранилище (например, Amazon S3, DigitalOcean Spaces, Backblaze B2).
  • Отдельный VPS: Дешевый VPS с большим диском в другой локации. Используйте rsync или scp для передачи файлов.
  • Локальный диск (НЕ рекомендуется как единственный вариант): Хранение бэкапов на том же сервере не защитит от сбоя самого VPS. Допустимо только как временное хранилище перед отправкой в другое место.

5. Обновления: rolling vs maintenance window

Обновления ntfy и Caddy обычно не требуют длительных простоев благодаря Docker. Используйте стратегию:

  • Rolling updates: Для ntfy можно просто обновить образ в docker-compose.yml на новую версию и перезапустить контейнер. Это займет несколько секунд.
  • Maintenance window: Для обновления Docker Engine или операционной системы (sudo apt upgrade) лучше выделить короткое окно обслуживания, так как это может потребовать перезагрузки сервера. Информируйте пользователей, если ваш ntfy-сервер используется командой.

Чтобы обновить ntfy или Caddy, измените версию образа в docker-compose.yml и выполните:


cd ~/ntfy
docker compose pull # Загрузить новые образы
docker compose up -d # Пересоздать контейнеры с новыми образами
    

Troubleshooting + FAQ

В этом разделе мы рассмотрим типичные проблемы, с которыми можно столкнуться при установке и использовании ntfy, а также ответим на часто задаваемые вопросы.

Не удается подключиться к серверу ntfy по доменному имени.

Что проверить: Убедитесь, что DNS-запись для вашего домена (например, ntfy.ваш_домен.ru) правильно указывает на IP-адрес вашего VPS. Используйте dig ntfy.ваш_домен.ru или nslookup ntfy.ваш_домен.ru. Также проверьте, что файрвол (UFW) на VPS разрешает входящие соединения на порты 80 и 443. Проверьте логи Caddy (docker compose logs caddy) на наличие ошибок, связанных с получением SSL-сертификатов.

Ntfy не запускается или выдает ошибки в логах.

Что проверить: Внимательно изучите логи контейнера ntfy: docker compose logs ntfy. Частые причины: синтаксические ошибки в ~/ntfy/etc/server.yml, неправильно указанные пути к файлам или недоступность портов. Убедитесь, что base-url в server.yml соответствует вашему домену.

Не приходят уведомления на клиентское приложение.

Что проверить: Убедитесь, что вы правильно указали URL вашего сервера ntfy (например, https://ntfy.ваш_домен.ru) в клиентском приложении. Проверьте, что вы подписаны на правильный топик. Если вы используете аутентификацию, убедитесь, что логин и пароль введены корректно. Попробуйте отправить тестовое уведомление с помощью curl, как описано в разделе конфигурации, и проверьте его результат.

Caddy не получает SSL-сертификат или выдает ошибку TLS.

Что проверить: Самая частая причина — проблемы с DNS-записью или файрволом. Caddy должен быть доступен из интернета по портам 80 и 443 для получения сертификатов Let's Encrypt. Убедитесь, что ваш домен корректно разрешается в IP-адрес сервера. Проверьте логи Caddy (docker compose logs caddy) на сообщения от Let's Encrypt. Временные проблемы с Let's Encrypt также возможны; попробуйте перезапустить контейнер Caddy через некоторое время.

Какой VPS-конфиг минимально подойдёт?

Для минимальной установки ntfy достаточно VPS с 1 ядром CPU, 512 МБ оперативной памяти и 10-20 ГБ SSD-диска. Этого будет достаточно для базового использования и небольшого количества уведомлений. Однако для более стабильной работы и возможности масштабирования или запуска других небольших сервисов рекомендуется иметь 2 ядра CPU, 1-2 ГБ RAM и 25-50 ГБ SSD. Это обеспечит комфортный запас производительности.

Что выбрать — VPS или dedicated для этой задачи?

Для установки и работы ntfy в подавляющем большинстве случаев будет более чем достаточно VPS. Ntfy — очень легковесный сервис, который не требует значительных вычислительных ресурсов или большого объема памяти. Выделенный сервер обычно избыточен для такой задачи и оправдан только в случаях, когда вы планируете размещать на нем множество других ресурсоемких приложений, или если у вас есть строгие требования к изоляции и гарантированной производительности, которые не может обеспечить VPS. Для личных уведомлений или небольших команд VPS является оптимальным и экономически выгодным решением.

Как обновить ntfy или Caddy?

Для обновления ntfy или Caddy, вам нужно изменить тег образа (например, binwiederpur/ntfy:v2.12.0 на binwiederpur/ntfy:v2.13.0) в вашем файле docker-compose.yml. После этого перейдите в каталог с docker-compose.yml и выполните команды docker compose pull для загрузки нового образа и docker compose up -d для пересоздания и запуска контейнера с новой версией. Это обеспечит минимальное время простоя.

Можно ли запускать ntfy без Docker?

Да, ntfy можно установить и запустить непосредственно на сервере без Docker. Для этого нужно скачать бинарный файл ntfy с GitHub-релизов, разместить его в системе, создать конфигурационный файл server.yml и настроить системный сервис (например, systemd) для его запуска и управления. Однако использование Docker Compose значительно упрощает установку, обновление и управление ntfy и Caddy, а также обеспечивает изоляцию зависимостей.

Выводы и следующие шаги

Схема: Выводы и следующие шаги
Схема: Выводы и следующие шаги

Вы успешно настроили и запустили собственный сервер ntfy на VPS, получив полный контроль над вашей системой push-уведомлений. Теперь вы можете отправлять уведомления из любых скриптов, систем мониторинга или приложений, не полагаясь на сторонние сервисы, что значительно повышает вашу конфиденциальность и независимость.

Чтобы максимально эффективно использовать ваш новый ntfy-сервер, рассмотрите следующие шаги:

  • Интеграция с другими сервисами: Подключите ntfy к вашим скриптам мониторинга (Prometheus Alertmanager, Zabbix), CI/CD пайплайнам (Jenkins, GitLab CI) или другим приложениям, которые могут генерировать уведомления.
  • Тонкая настройка прав доступа: Если ваш сервер используется несколькими пользователями или для разных проектов, детально настройте auth-file и topic-access в server.yml для обеспечения безопасности и разграничения доступа.
  • Мониторинг сервера: Установите базовый мониторинг вашего VPS (например, Netdata, Prometheus Node Exporter) для отслеживания загрузки CPU, RAM и диска, чтобы убедиться в стабильной работе ntfy и своевременно реагировать на потенциальные проблемы.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

установка ntfy на vps: личные push-уведомления без сторонних сервисов
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.