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>
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# 🚀 Развёртывание в Docker через Gitea
|
||||
|
||||
Проект хранится в Gitea (`http://192.168.1.171:3000`). Ниже — как поднять его в
|
||||
Docker на удалённом локальном хосте (в той же сети). Замените `<OWNER>` на имя
|
||||
вашего пользователя/организации в Gitea.
|
||||
|
||||
---
|
||||
|
||||
## Вариант A. Клонирование + Docker Compose (рекомендуется)
|
||||
|
||||
Самый простой путь — собрать образ прямо на целевом хосте из исходников.
|
||||
|
||||
На удалённом хосте (Linux с установленными `git`, `docker`, `docker compose`):
|
||||
|
||||
```bash
|
||||
# 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`
|
||||
|
||||
### Обновление до новой версии
|
||||
|
||||
```bash
|
||||
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`:
|
||||
```json
|
||||
{ "insecure-registries": ["192.168.1.171:3000"] }
|
||||
```
|
||||
затем `systemctl restart docker`.
|
||||
|
||||
### Запуск из готового образа на целевом хосте
|
||||
|
||||
Тоже разрешите insecure-registry (см. выше), затем:
|
||||
|
||||
```bash
|
||||
# вход в реестр 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`:
|
||||
|
||||
```yaml
|
||||
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:
|
||||
```
|
||||
|
||||
```bash
|
||||
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` и ключ подписи сессий).
|
||||
Reference in New Issue
Block a user