Files
rss-ntfy/DEPLOY.md
T
dimon bf52bc3079
build-and-push / docker (push) Has been cancelled
RSS → ntfy bridge with modern web UI
Features: feed CRUD, per-feed ntfy target (incl. private servers),
Telegram/webhook channels, keyword filters, image attachments,
per-feed intervals, OPML import/export, notification history & stats,
users with roles, admin alerts, RU/EN i18n, light/dark theme,
notification preview, history search, activity chart. Dockerized.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 21:11:57 +08:00

4.3 KiB

🚀 Развёртывание в Docker через Gitea

Проект хранится в Gitea (http://192.168.1.171:3000). Ниже — как поднять его в Docker на удалённом локальном хосте (в той же сети). Замените <OWNER> на имя вашего пользователя/организации в Gitea.


Вариант A. Клонирование + Docker Compose (рекомендуется)

Самый простой путь — собрать образ прямо на целевом хосте из исходников.

На удалённом хосте (Linux с установленными git, docker, docker compose):

# 1. Склонировать репозиторий из Gitea
git clone http://192.168.1.171:3000/<OWNER>/rss-ntfy.git
cd rss-ntfy

# 2. (опционально) задать свои параметры
cp .env.example .env
nano .env                 # смените ADMIN_PASSWORD и т.д.

# 3. Собрать и запустить
docker compose up -d --build

# 4. Проверить
docker compose logs -f

Панель откроется на http://<IP_хоста>:8000.

Приватный репозиторий? Используйте токен в URL: git clone http://<OWNER>:<TOKEN>@192.168.1.171:3000/<OWNER>/rss-ntfy.git

Обновление до новой версии

cd rss-ntfy
git pull
docker compose up -d --build

База данных лежит в Docker-томе rss_ntfy_data и переживает пересборку.


Вариант B. Готовый образ из Gitea Container Registry

Если настроен Gitea Actions-раннер, пайплайн .gitea/workflows/docker.yml сам собирает образ и публикует его в реестр Gitea при каждом пуше в main.

Однократная настройка на стороне Gitea

  1. Включить Actions: Settings → Actions, и зарегистрировать раннер (act_runner).
  2. В репозитории задать переменную REGISTRY_HOST = 192.168.1.171:3000 (Settings → Actions → Variables).
  3. На хосте раннера разрешить незащищённый реестр (HTTP) — в /etc/docker/daemon.json:
    { "insecure-registries": ["192.168.1.171:3000"] }
    
    затем systemctl restart docker.

Запуск из готового образа на целевом хосте

Тоже разрешите insecure-registry (см. выше), затем:

# вход в реестр Gitea (логин Gitea + токен как пароль)
docker login 192.168.1.171:3000

# тянем и запускаем образ
docker pull 192.168.1.171:3000/<OWNER>/rss-ntfy:latest
docker run -d --name rss-ntfy --restart unless-stopped \
  -p 8000:8000 \
  -v rss_ntfy_data:/data \
  -e ADMIN_PASSWORD=измените_меня \
  192.168.1.171:3000/<OWNER>/rss-ntfy:latest

Или через Compose — создайте docker-compose.prod.yml:

services:
  rss-ntfy:
    image: 192.168.1.171:3000/<OWNER>/rss-ntfy:latest
    container_name: rss-ntfy
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - rss_ntfy_data:/data
    environment:
      ADMIN_PASSWORD: "измените_меня"
volumes:
  rss_ntfy_data:
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d

Частые вопросы

  • docker login ругается на HTTPS — вы не добавили хост в insecure-registries (реестр работает по HTTP на нестандартном порту).
  • Порт 8000 занят — поменяйте левую часть проброса, напр. -p 9000:8000.
  • Сбросить пароль администратораADMIN_* действуют только при первом старте; позже меняйте пароль во вкладке «Пользователи» или удалите том rss_ntfy_data для полного сброса.
  • Бэкап — достаточно сохранить том rss_ntfy_data (там SQLite-база app.db и ключ подписи сессий).