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

Отримати VPS arrow_forward
eco Початковий Туторіал

Встановлення ntf

calendar_month Aug 20, 2026 schedule 17 хв. читання visibility 16 переглядів
Установка 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 # Перестворити контейнери з новими образами
    

Усунення несправностей + 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 та своєчасно реагувати на потенційні проблеми.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

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.