Live backup of 216 on 247 (zareian-pg216-* units, Postgres 16 tools in our dir, SCRAM hash only on 216), backup scripts take PGB_ROOT/PGB_BIN/PGB_PORT with 249 defaults, anti-bot layers documented
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -389,21 +389,23 @@ the servers»):
|
||||
| | |
|
||||
|---|---|
|
||||
| ماشین | VMware، Ubuntu 24.04، ۸ هسته، ۱۲ گیگ رم، دیسکِ ۹۷ گیگ؛ hostname `tadrisino`، IPِ داخلی `192.168.200.163` (۲۴۹ = `.164`)، IPِ خروجی `78.38.35.228` |
|
||||
| ورود | `ssh zareian@78.38.35.216` (sudo). `temp` حسابِ موقتِ ادمینِ شبکه است و حذف میشود. ورودِ root بسته، `AllowUsers zareian temp`، fail2ban روی SSH |
|
||||
| ورود | `ssh zareian@78.38.35.216` (sudo). `temp` حسابِ موقتِ ادمینِ شبکه است و حذف میشود. ورودِ root بسته، `AllowUsers zareian temp pgbackup@192.168.200.167`، forwarding بسته (`/etc/ssh/sshd_config.d/10-tadrisino.conf`) |
|
||||
| ضدِ ربات | ۱) `tadrisino-blocklist.timer`: هر روز FireHOL level1 (Spamhaus، DShield، …) در ipsetِ `tadrisino-block`، همهی پورتها؛ شبکهی داخلی، `78.38.35.0/24` و رنجهای آروان هرگز در آن نیستند. ۲) `ufw limit 22`: بیش از ۶ اتصال در ۳۰ ثانیه رد. ۳) fail2ban پلهای: ۶ اشتباه در ۱۰ دقیقه → ۱۰ دقیقه، هر تکرار دو برابر تا یک هفته؛ `recidive`: ۵ بار در روز → یک هفته همهی پورتها؛ `192.168.200.0/24` هرگز. آزاد کردن: `sudo fail2ban-client set sshd unbanip <IP>` |
|
||||
| بکاپ | زنده روی ۲۴۷ (`~/zareian-pgbackup-216/`، یونیتهای `zareian-pg216-*`، ابزارِ Postgres 16 بازشده در همان پوشه). ۲۴۷ با کاربرِ `pgbackup` (فقط کلید، فقط از `.167`، فقط `permitopen=127.0.0.1:5440`) تونل میزند؛ رمزِ `zareian_replicator` فقط در `~/.pgpass`ِ ۲۴۷، روی ۲۱۶ فقط هشِ SCRAM. اسلات `zareian_247`، `max_slot_wal_keep_size=5GB`. آزمونِ بازیابی: `PGB_ROOT=… PGB_BIN=… LD_LIBRARY_PATH=… restore-check.sh` (مقادیر در یونیتِ `zareian-pg216-basebackup`) |
|
||||
| اپ | کاربرِ بیsudoِ `mathapp`؛ `/home/mathapp/mathapp-v2` و `/home/mathapp/mathapp_frontend_new` |
|
||||
| سرویسها | `zareian-mathapp` (= `gunicorn-mathapp`، با `RuntimeDirectory`)، `zareian-redis` (6390)، `postgresql@16-zareian` (5440)، `nginx`، `zareian-applog-archive.timer` |
|
||||
| رمزها | رمزِ Postgres و Redis روی این سرور تازه ساخته شده (`.pg_password`، `.redis_password` کنارِ `.env`)، نه کپیِ ۲۴۹ |
|
||||
| فایروال | ufw فقط 22/80/443. فایروالِ شبکهی شرکت 443ِ ورودی را هنوز میبندد (80 باز است) |
|
||||
| بستهها | apt از `mirror.arvancloud.ir`، pip از `mirror-pypi.runflare.com` (`~mathapp/.config/pip/pip.conf`)، npm از `mirror-npm.runflare.com`؛ `files.pythonhosted.org` و `registry.npmjs.org` از این سرور بستهاند |
|
||||
|
||||
سنجیده: `/api/health` با همهی جزئیات ok (فقط هشدارِ نبودنِ اسلاتِ بکاپ)، Qdrant از این سرور وصل، فرانت ۲۰۰، ریبوت و
|
||||
سنجیده: `/api/health` با همهی جزئیات ok و بیهشدار (`offsiteBackup` ok، عقبماندگی ۰)، آزمونِ بازیابی از بکاپِ ۲۴۷ با همان شمارشها، Qdrant از این سرور وصل، فرانت ۲۰۰، ریبوت و
|
||||
بالا آمدنِ خودکارِ همهی سرویسها، درخواستِ مستقیم به IP ۴۰۳ (nginx IPِ واقعی را میبیند). نسنجیده: هیچ درخواستی از مسیرِ ArvanCloud،
|
||||
پیامک، پرداخت و تیوتورِ زنده.
|
||||
|
||||
**سوئیچ (ترتیب):** ۱) 443ِ ورودی باز شود. ۲) روی ۲۴۹ `zareian-mathapp` متوقف (پیامِ نگهداری در ArvanCloud)، `pg_dump -Fc`،
|
||||
بازیابی روی سرورِ جدید در دیتابیسِ خالیشده، مقایسهی تعدادِ ردیفها. ۳) originِ هر دو دامنه در ArvanCloud به `78.38.35.216`.
|
||||
۴) health و یک ورود و یک آزمون از بیرون. ۵) بکاپِ زنده از ۲۴۷ (اسلات `zareian_247`، تونل؛ `AllowTcpForwarding` روی این سرور
|
||||
بسته است و برای کاربرِ بکاپ باید با `Match User` باز شود) و `pull-app-logs.sh` روی ۲۴۷ به آدرسِ جدید. ۶) CLAUDE.md و این سند.
|
||||
۴) health و یک ورود و یک آزمون از بیرون. ۵) روی ۲۴۷ یونیتهای بکاپِ ۲۴۹ (`zareian-pg-*`) متوقف، `zareian-pg216-basebackup`
|
||||
یک بار دستی (بعد از بازیابیِ دیتابیسِ نهایی)، و `pull-app-logs.sh` به آدرسِ جدید. ۶) CLAUDE.md و این سند.
|
||||
تا سوئیچ، `deploy.sh` روی هر دو سرور اجرا شود تا کدِ دو طرف یکی بماند.
|
||||
|
||||
### Qdrant
|
||||
|
||||
Reference in New Issue
Block a user