- scripts/books-vds-backup-daily-kreknin/ — run.sh + .env.example + README - ES path.repo bootstrap (one-time stack edit, snapshot repo 'kreknin' registered) - curl smtps://yandex:465 email (CRLF + Date headers, no msmtp dep on CentOS 7) - StrictHostKeyChecking=yes + pre-populated known_hosts (CentOS 7 no accept-new) - cron /etc/cron.d/books-vds-backup live, initial sync 4.87 GB in 13m28s, ntfy push sent - wiki: entities/books-vds.md + sources/books-vds-backup-daily-kreknin-2026-05-25.md created - wiki: concepts/books-ssh-access → vds-kzntsv-ssh-access (was lying about books on vds-kzntsv) - .tasks/books-vds-backup-daily-kreknin.md closed 🟢 pending phone-side verify Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.3 KiB
5.3 KiB
books-vds-backup-daily-kreknin
Ежедневный backup pipeline books VDS (89.253.255.133, host4g.ru, CentOS 7) → kreknin Synology (195.19.90.188:/volume1/NetBackup/books-vds/<date>/) в 06:00 MSK.
Goal
Восстановимость books-стека после полного отказа VDS: DB dumps + MinIO blobs + ES snapshot + app configs + traefik state + system config на NAS с 7-day retention.
Key files
scripts/books-vds-backup-daily-kreknin/run.sh— backup logic; deploy →/opt/stacks/backup/run.shна VDS.scripts/books-vds-backup-daily-kreknin/.env.example— placeholder; live.envbuilt frompass show.scripts/books-vds-backup-daily-kreknin/README.md— install + revert recipe..wiki/entities/books-vds.md— host entity page..wiki/sources/books-vds-backup-daily-kreknin-2026-05-25.md— standup chronology (создаётся при closure).
Decisions log
- 2026-05-25: pattern mirror
scripts/vds-backup-rsync-kreknin/run.sh(VDS-infra). Samevds-backupntfy topic, same SMTP relay (snolla-smtpYandex), same--link-destrsync hardlink pattern, sameRETENTION_DAYS=7. - 2026-05-25: ES snapshot via REST API, not data-dir rsync. One-time stack edit
/usr/docker/elasticsearch/docker-compose.yml: added envpath.repo=/snapshots+ bind./snapshots:/snapshots. Registered repokreknin(type=fs, location=/snapshots, compress=true). - 2026-05-25:
curl --ssl-reqdSMTP instead of msmtp (CentOS 7 EOL repo issue). Yandex 587 STARTTLS works через native curl без msmtprc setup. - 2026-05-25:
StrictHostKeyChecking=yes(NOTaccept-new) — CentOS 7 OpenSSH 7.4 не поддерживаетaccept-new. kreknin host key pre-populated в/root/.ssh/known_hostsна VDS bootstrap. - 2026-05-25:
books-job-scheduler-mongo— без auth (нетMONGO_INITDB_ROOT_*env).mongodump --archiveбез--uriдостаточен. sharedmongo— root auth (uri credential). - 2026-05-25: Cron time 06:00 MSK — после VDS-infra (05:00) + windows-host (05:30), даёт break перед US-EU business start.
- 2026-05-25:
BOOKS-VDShost label в ntfy title — отличать от обычногоVDS(infra) на sharedvds-backuptopic. - 2026-05-25: Consolidated
books-vds-portainer/full-env→books-vds/full-env(one-file-per-host pattern, parity с vds-kzntsv).
Open questions
- (resolved 2026-05-25)
path.repoна ES — required one-time stack edit. Done, recreated container, snapshot test SUCCESS. - Migrate SSH-compose stacks (ES/mongo/minio/books-db/traefik) под Portainer — отдельная задача после backup pipeline live.
- kreknin space check — current free 5.7T (per
kreknin-synology.md2026-05-19); per-day footprint TBD после initial sync. Quarterly disk audit на NAS.
Completed steps
- Phase 0: ES path.repo bootstrap + snapshot repo
krekninregistered + test snap SUCCESS - Phase 1: написал
run.sh+.env.example+README.mdлокально - Phase 2: deployed
/opt/stacks/backup/{run.sh,.env}, chmod 600 .env / 755 run.sh - Phase 3: generated
/opt/stacks/backup/kreknin-keyed25519 на books VDS - Phase 4: pubkey deployed на kreknin
~vitya/.ssh/authorized_keys, dest/volume1/NetBackup/books-vds/created - Phase 5: kreknin host key pre-populated
/root/.ssh/known_hosts, SSH path verified - Phase 6: smoke run (initial sync) — 4.87GB in 13m28s, ntfy push sent, email send pending fix → fixed → re-tested OK
- Phase 6a: SMTP fix —
smtp://+--ssl-reqdдала 30-сек timeout (curl попытался STARTTLS на implicit-TLS-only порту 465). Fixsmtps://schema + CRLF headers + Date header. Re-tested standalone — SMTP send OK. - Phase 7: installed
/etc/cron.d/books-vds-backup(0 6 * * * root /opt/stacks/backup/run.sh); crond active - Phase 8: wiki —
entities/books-vds.mdcreated;concepts/books-ssh-access.mdrenamed →vds-kzntsv-ssh-access.md(was lying about books);sources/books-vds-backup-daily-kreknin-2026-05-25.mdcreated;index.mdupdated for all three - Phase 9: commit (no push without grant)
- PENDING USER VERIFY: ntfy push
BOOKS-VDS backup OK 2026-05-25received on phone? Email[BOOKS-VDS] backup OK 2026-05-25+ standalone fix-test message in inbox?
Notes
- root password
Pryakhin9~— сохранён вpass show books-vds/full-env BOOKS_VDS_ROOT_PASS. SSH keyid_ed25519_books_opsуже был authorized (pre-existing bootstrap), password держим как fallback. - Pre-existing
id_ed25519_books_opsна workstation предполагает что прошлый bootstrap забыт; не повторяем generate. - ES в production books currently не используется (per user statement) — recreate-downtime 30с не impact'нул.
vds-kzntsv≠books-vds. Wiki ../concepts/books-ssh-access до 2026-05-25 ошибочно описывала vds-kzntsv как books shared VDS — fix в Phase 8.
Cross-refs
- ../wiki/entities/books-vds — host entity.
- ../wiki/entities/kreknin-synology — backup target.
- ../scripts/vds-backup-rsync-kreknin/run.sh — pattern source (VDS-infra backup).
- ../scripts/ruvds-backup-daily-kreknin/README.md — pattern source (RUVDS dual-channel notify).