docs(.wiki,.tasks): vds-kzntsv-bootstrap done — 3 phases shipped
VDS Rusonyx 160 NVMe (89.253.255.94 / vds.kzntsv.site) активирован 2026-05-20. 3 фазы за ~6 часов: - Phase 1: harden + docker 29.5.1 + traefik v2.11 + portainer 2.21.5 - Phase 2: shared DB park (postgres 16 / mariadb 11.4 / mongo 7 / redis 7) via traefik raw TCP forward + self-signed TLS - Phase 3: миграция gitea (132 repos), verdaccio (2063 pkgs), registry fresh install (user accepted loss old images) + Joxit GUI Ingest 1 source + 1 entity (vds-kzntsv) + 6 concepts (traefik-tcp- passthrough-vs-starttls / portainer-2.21-admin-password-regression / db-tls-self-signed-via-traefik-raw-tcp / rusonyx-vps-onboarding-quirks / registry-gc-mount-and-modify-flag / compose-bcrypt-escape-trap). 3 follow-up ⚪ tasks: vds-gc-cron, vds-backup-rsync-kreknin, vds-ntfy-push. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
76
vds-ntfy-push.md
Normal file
76
vds-ntfy-push.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# vds-ntfy-push
|
||||
|
||||
## Goal
|
||||
|
||||
Self-host [ntfy.sh](https://ntfy.sh) на VDS для push-нотификаций на телефон. Docker-image `binwiederhier/ntfy`. Использовать для:
|
||||
- [[vds-backup-rsync-kreknin]] backup status (вместо/параллельно email на vitya.kuznetsov@gmail.com)
|
||||
- Monitoring alerts (CMS down, traefik certs истекают, disk fill, registry GC fail, etc.)
|
||||
- Любые ad-hoc уведомления от ops-скриптов
|
||||
|
||||
Domain: `ntfy.vds.kzntsv.site` (под уже существующим wildcard `*.vds.kzntsv.site`).
|
||||
|
||||
## Open questions
|
||||
|
||||
- [ ] **Auth model:** ntfy supports anonymous (open топики — anyone with topic name может subscribe/publish) или с auth (per-user/per-topic ACL). Для push на личный телефон — anonymous с длинными UUID-топиками практично; auth ближе production. Recommend: auth + ACL.
|
||||
- [ ] **Топики:** один общий (`vitya-ops`) или по сервису (`vds-backup`, `cms-monitor`, `traefik-alerts`)? Per-service удобнее для filtering на телефоне.
|
||||
- [x] ~~**Phone app:**~~ Android (resolved 2026-05-20) → ntfy Android app, pure self-host без APNs middleware.
|
||||
- [ ] **Persistence:** sqlite DB в `/opt/stacks/ntfy/data/`. Тривиально.
|
||||
|
||||
## Implementation sketch
|
||||
|
||||
`/opt/stacks/ntfy/docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
ntfy:
|
||||
image: binwiederhier/ntfy
|
||||
container_name: ntfy
|
||||
restart: unless-stopped
|
||||
command:
|
||||
- serve
|
||||
networks:
|
||||
- proxy
|
||||
volumes:
|
||||
- ./data:/var/cache/ntfy
|
||||
- ./etc:/etc/ntfy
|
||||
environment:
|
||||
NTFY_BASE_URL: https://ntfy.vds.kzntsv.site
|
||||
NTFY_CACHE_FILE: /var/cache/ntfy/cache.db
|
||||
NTFY_AUTH_FILE: /var/cache/ntfy/auth.db
|
||||
NTFY_AUTH_DEFAULT_ACCESS: deny-all
|
||||
NTFY_BEHIND_PROXY: true
|
||||
NTFY_ATTACHMENT_CACHE_DIR: /var/cache/ntfy/attachments
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.ntfy.rule=Host(`ntfy.vds.kzntsv.site`)
|
||||
- traefik.http.routers.ntfy.entrypoints=websecure
|
||||
- traefik.http.routers.ntfy.tls.certresolver=letsEncrypt
|
||||
- traefik.http.services.ntfy.loadbalancer.server.port=80
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
```
|
||||
|
||||
После up — `docker exec ntfy ntfy user add --role=admin vitya` → задать пароль → грант access на топики.
|
||||
|
||||
Publish from any script:
|
||||
```bash
|
||||
curl -u "vitya:$NTFY_PASS" \
|
||||
-H "Title: VDS backup completed" \
|
||||
-H "Tags: white_check_mark" \
|
||||
-H "Priority: default" \
|
||||
-d "Size 12.5G, 18m12s, kreknin OK" \
|
||||
https://ntfy.vds.kzntsv.site/vds-backup
|
||||
```
|
||||
|
||||
Phone subscribes to `https://ntfy.vds.kzntsv.site/vds-backup` (с basic auth) — получает уведомление.
|
||||
|
||||
## Decisions log
|
||||
|
||||
- _Пусто — задача только заведена._
|
||||
|
||||
## Notes
|
||||
|
||||
- Триггер: после `[[vds-kzntsv-bootstrap]]` Phase 3 и до или одновременно с `[[vds-backup-rsync-kreknin]]` (backup pipeline хочет ntfy для статус-уведомлений).
|
||||
- Интегрируется с `[[vds-backup-rsync-kreknin]]` — backup script публикует через ntfy + дублируется email'ом для надёжности.
|
||||
Reference in New Issue
Block a user