Ctrl K
ComunidadGuías…

apps/ntfy/i18n/ru/installation.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
## Требования и доступ

Используйте Ubuntu 22.04+ или Debian 12+ на amd64/arm64 с Docker Engine и Compose v2.24+. Минимум — 1 CPU, 128 МБ RAM (рекомендуется 256 МБ), 2 ГБ диска плюс рост кэша и внешние копии. Проверена только amd64.

Скопируйте рецепт целиком со скриптами и proxy/. Создайте .env с правами 600, выберите уникальный сильный пароль администратора и получите его хэш закреплённым образом:

```bash
cp .env.example .env
chmod 600 .env
docker run --rm -it binwiederhier/ntfy:v2.34.0 user hash
```

Запишите выведенный хэш в .env: `NTFY_AUTH_USERS='ntfyadmin:<bcrypt-хэш>:admin'`. Одинарные кавычки сохраняют буквальные `$`; в .env не удваивайте их. Сам открытый пароль сохраните в менеджере паролей. Не вставляйте хэш непосредственно в Compose: там правила экранирования отличаются.

| Параметр | Значение |
| --- | --- |
| `NTFY_VERSION` | Закреплённый тег с v, исходно v2.34.0. |
| `NTFY_PORT` | Loopback-порт хоста, исходно 8083. |
| `NTFY_URL` | Точный адрес браузера, исходно http://localhost:8083; внешний HTTPS URL за прокси. Используется в ссылках клиентов и вложений. |
| `NTFY_AUTH_USERS` | Администраторская запись name:bcrypt:role в одинарных кавычках. Применяется при каждом запуске, не только при первичной настройке. |
| `NTFY_DATA_VOLUME` | Именованный том с cache.db, user.db и attachments/. |
| `TZ` | Часовой пояс IANA, по умолчанию Etc/UTC. |
| `NTFY_BACKUP_DIR` | Необязательный абсолютный путь к копиям; по умолчанию backups/ рядом с рецептом. |

## Запуск и проверка

Скрипты загружают .env как доверенную shell-конфигурацию; не используйте чужой непроверенный файл. Инициализатор готовит том, затем ntfy работает с UID/GID 1000 и корневой ФС только для чтения. Запустите сервер и войдите как ntfyadmin с паролем, для которого получали хэш:

```bash
docker compose config --quiet
docker compose pull
docker compose up -d --wait --wait-timeout 180
curl --fail http://127.0.0.1:8083/v1/health
```

Откройте NTFY_URL, войдите и подпишитесь на тему `household`. Отправьте пробное сообщение; curl запросит пароль без записи в команду:

```bash
curl --fail -u ntfyadmin -d 'Test notification' http://127.0.0.1:8083/household
```

## VPS

<!-- coverage:deployment-vps -->

Задайте внешний HTTPS origin в NTFY_URL и поставьте прокси хоста перед loopback-портом 8083. Оставьте открытыми только SSH/HTTP/HTTPS, проверьте вход и запрет анонимного доступа к темам, храните зашифрованную копию вне VPS. Страница интерфейса может загружаться до входа, но данные закрытых тем анонимно не читаются.

## Доверенная локальная сеть

<!-- coverage:deployment-lan -->

Используйте `ssh -L 8083:127.0.0.1:8083 user@server` с соответствующим локальным URL либо HTTPS-прокси для LAN/VPN. При явной привязке к приватному IP хоста ограничьте доступ firewall. Не отключайте авторизацию. Даже для приватной темы URL вложения остаётся ссылкой доступа.

## Домен и HTTPS

<!-- coverage:deployment-domain-https -->

Задайте `NTFY_URL=https://notify.example.com` и пересоздайте сервис. В proxy/ есть примеры Caddy, Nginx и Traefik на хосте для 127.0.0.1:8083. Caddy управляет сертификатами; Nginx требует пути к ним; Traefik — websecure и resolver letsencrypt. Контейнерному прокси нужны общая сеть и внутренний порт 8080 вместо собственного loopback. Сохраните websocket-upgrade и потоковую передачу; буферизация Nginx выключена, лимит запроса — 15 МБ. Доверие IP-заголовкам выключено, поэтому пользователи делят лимит IP прокси; включайте доверие только когда сервис доступен лишь настоящему прокси, а входные заголовки очищаются.

## Аккаунты и хранение

Декларативная запись администратора применяется при каждом запуске. Для смены пароля получите новый хэш, обновите NTFY_AUTH_USERS в одинарных кавычках и пересоздайте ntfy. Автоматизациям создавайте обычные аккаунты с явными разрешениями тем; выполните интерактивные команды и создайте токен в UI этого аккаунта:

```bash
docker compose exec ntfy ntfy user add backupjob
docker compose exec ntfy ntfy access backupjob backups rw
```

Кэш сообщений и вложения хранятся семь дней; общий кэш файлов ограничен 1 ГБ, один файл — 15 МБ. Удаление браузерной истории не удаляет серверный кэш. URL вложений можно передавать другим, поэтому считайте их секретами и шифруйте чувствительные файлы до загрузки. Web Push, iOS upstream-polling, Firebase, SMTP и звонки не включены; фоновую доставку настройте и проверьте отдельно по официальной документации.

## Резервное копирование

<!-- coverage:backup -->

Запустите `./backup.sh`. Скрипт останавливает запись и сохраняет весь том, .env и Compose в один backups/ntfy-<timestamp>.tar с правами 600. Внутри — cache.db, user.db, вложения, настройки аккаунтов, подписки, ACL, токены и хэш администратора. Прежнее состояние работы/остановки сохраняется. Зашифруйте архив и перенесите вне сервера; живая SQLite-база или только экспорт браузера не являются полной копией.

## Восстановление

<!-- coverage:restore -->

**Восстановление заменяет текущий том.** Используйте доверенную копию, соответствующий закреплённый тег и NTFY_AUTH_USERS из архивной configuration.env. До восстановления сравните сохранённое окружение вручную; оно не активируется автоматически. На новом хосте сначала инициализируйте соответствующий рецепт. Скрипт проверяет содержимое и имена обеих баз, делает страховочную копию, останавливает запись и заменяет данные. При ошибке замены ntfy остаётся остановленным.

```bash
docker compose up -d --wait --wait-timeout 180
./restore.sh ./backups/ntfy-TIMESTAMP.tar
curl --fail http://127.0.0.1:8083/v1/health
```

Войдите, прочитайте сохранённое сообщение, скачайте пробное вложение и отправьте новое сообщение обычным пользователем/токеном. Убедитесь, что другая тема и анонимное чтение по-прежнему запрещены. Исходные сроки хранения продолжают действовать: восстановление не продлевает жизнь старого вложения.

## Обновление

<!-- coverage:update -->

Прочитайте release notes, сделайте внешнюю копию и задайте проверенный фиксированный тег NTFY_VERSION. Выполните `docker compose pull` и `docker compose up -d --wait --wait-timeout 180`, проверьте журналы, вход и отправку/подписку обычным аккаунтом. Миграции SQLite выполняются при запуске. Сохраните учётные данные и проверьте совместимость клиентов; не используйте latest.

## Откат

<!-- coverage:rollback -->

Не запускайте старый сервер на базе после миграций новой версии. Остановите ntfy, задайте прежний фиксированный тег и соответствующую NTFY_AUTH_USERS в .env, загрузите и пересоздайте контейнер без запуска, затем восстановите полную копию до обновления. Страховочная копия читает остановленный том до замены. Сохраните архив неудачной установки до подтверждения восстановления.

```bash
docker compose stop ntfy
# Set the old pinned version and matching NTFY_AUTH_USERS in .env.
docker compose pull ntfy
docker compose create ntfy
./restore.sh ./backups/ntfy-BEFORE-UPDATE.tar
```

## Остановка и удаление

<!-- coverage:removal -->

`docker compose down` сохраняет именованный том. После проверки зашифрованной внешней копии `docker compose down --volumes` навсегда удаляет сообщения, вложения, аккаунты, токены, ACL и настройки. Удаление каталога рецепта также удаляет .env и локальные копии.

Источники: [configuration](https://docs.ntfy.sh/config/), [Docker installation](https://docs.ntfy.sh/install/#docker), [publishing](https://docs.ntfy.sh/publish/), [subscription clients](https://docs.ntfy.sh/subscribe/), [v2.34.0](https://github.com/binwiederhier/ntfy/releases/tag/v2.34.0).