ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ° β ΡΠ΄Π°Π»ΡΠ½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π² ΠΠΎΡΠΊΠ²Π΅
ΠΠ°ΡΠ°: 2025-08-21
ΠΠ΅ΡΠ°Π»ΠΈ
Π Π΅Π³ΠΈΠΎΠ½
ΠΠΎΡΠΊΠ²Π°
ΠΠ°Π½ΡΡΠΎΡΡΡ
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ
2025-08-21
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π Π°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ WordPress + n8n + PostgreSQL Π½Π° ΠΎΠ΄Π½ΠΎΠΌ VPS. ΠΠ΅Π½Π΄ΠΈΠ½Π³. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: WordPress. ΠΠ°ΡΡΡΠΎΠΈΡΡ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΡ ΠΊ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄Ρ Π΄Π»Ρ WordPress, n8n ΠΈ PostgreSQL Π½Π° ΠΎΠ΄Π½ΠΎΠΌ VPS. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈ ΠΏΡΠΎΡΡΡΠΌ Π² ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠΈ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠ°Ρ Π½Π° ΡΠ°ΠΉΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π» Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ API-ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ, Π° Π½Π°ΡΡΠΎΡΡΠΈΠΉ n8n webhook ΠΎΡΡΠ°Π²Π°Π»ΡΡ ΡΠΊΡΡΡΡΠΌ ΠΈ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΌ ΠΎΡ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠΉ. ΠΠΠΠΠ§Π Π Π°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅: Ubuntu 22.04 LTS; Docker Compose; ΡΠ΅ΡΠΈ front/back; Nginx/Traefik c Letβs Encrypt, HSTS, security headers, real-IP Π΄Π»Ρ Cloudflare. ΠΠΎΠΌΠ΅Π½Ρ: mydomain.com → WP; /api/chat (gateway) Π½Π° ΡΠΎΠΌ ΠΆΠ΅ Π΄ΠΎΠΌΠ΅Π½Π΅; UI n8n (ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ) β Π·Π° Cloudflare Access/IP-allowlist; webhook n8n β ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· back-ΡΠ΅ΡΠΈ/UFW allowlist (gateway IP). WP: OPcache+Redis, Π°Π²ΡΠΎΠΏΠ°ΡΡΠΈ, Π·Π°ΠΏΡΠ΅Ρ xmlrpc, Π·Π°ΡΠΈΡΠ° /wp-admin; ΠΊΡΡ Π½Π° Redis; gzip/brotli. n8n: Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ webhook; ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ·Π΅Π» β HMAC+timestamp+nonce; ΡΠ°Π½Π½ΠΈΠ΅ [Π’Π΅Π»Π΅ΡΠΎΠ½ ΡΠΊΡΡΡ]. PostgreSQL: ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ/ΠΠ, scram-sha-256, Π΄ΠΎΡΡΡΠΏ β localhost/back-ΡΠ΅ΡΡ; ΡΡΠ½ΠΈΠ½Π³. Redis: Π΄Π»Ρ ΠΊΡΡΠ° ΠΈ rate-limit/nonce. Gateway /api/chat: Turnstile/hCaptcha (ΡΠ΅ΡΠ²Π΅Ρ-ΡΠ°ΠΉΠ΄), sanitization, Π»ΠΈΠΌΠΈΡΡ 10 req/min per-IP ΠΈ 5 req/min per-session (Redis), ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, HMAC-ΠΏΠΎΠ΄ΠΏΠΈΡΡ (SHA-256), TTL Β±5 ΠΌΠΈΠ½ + nonce-Π°Π½ΡΠΈ-replay, ΠΏΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ webhook, ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ: SSH-ΠΊΠ»ΡΡΠΈ, root-login off, UFW default-deny, allow Cloudflare IP ΠΊ 80/443, Π·Π°ΠΊΡΡΡΡ PG/Redis/n8n; fail2ban. ΠΡΠΊΠ°ΠΏΡ: daily+weekly, retention 14/30 Π΄Π½., ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, offsite, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ restore-ΡΠ΅ΡΡ. ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³: Π°ΠΏΡΠ°ΠΉΠΌ-ΡΠ΅ΠΊΠΈ, Π°Π»Π΅ΡΡΡ ΠΏΠΎ 5xx/4xx/ΡΠ΅ΡΡΡΡΠ°ΠΌ/SSL, ΡΠΎΡΠ°ΡΠΈΡ docker-Π»ΠΎΠ³ΠΎΠ². Π‘Π΅ΠΊΡΠ΅ΡΡ/ΡΠΎΡΠ°ΡΠΈΡ: .env (HMAC/CAPTCHA/DB/n8n), ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½Ρ ΡΠΎΡΠ°ΡΠΈΠΈ webhook UUID+ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ². ΠΠ΅ΡΡΠΈΠΈ/Π»ΠΈΠΌΠΈΡΡ: pinned ΠΎΠ±ΡΠ°Π·Ρ; mem_limit/cpus Π² compose. Π§ΠΠ-ΠΠΠ‘Π’ ΠΠ ΠΠΠΠΠ Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ https://mydomain.com/api/chat. ΠΡΠ±Π»ΠΈΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ webhook n8n Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ (ΡΠΊΠ°Π½ ΠΏΠΎΡΡΠΎΠ² + HTTP-ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°). CAPTCHA fail → 400, invalid HMAC/ΡΡΠ°ΡΡΠΉ timestamp/ΠΏΠΎΠ²ΡΠΎΡ nonce → 401 (Π»ΠΎΠ³ ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ). Rate-limit: >10 req/min/IP ΠΈΠ»ΠΈ >5 req/min/session → 429 (Π·Π°ΠΏΠΈΡΡ Π² Redis Π²ΠΈΠ΄Π½Π°). ΠΡΠ΅ΠΌΡ ΠΎΡΠ²Π΅ΡΠ° ΡΠ°ΡΠ° ≤ 2β4 Ρ P95 ΠΏΡΠΈ 1 rps; ΠΎΡΠΈΠ±ΠΎΠΊ 5xx < 1%. ΠΡΠΊΠ°ΠΏ ΠΏΡΠΎΡΡΠ» ΠΈ restore-ΡΠ΅ΡΡ ΡΡΠΏΠ΅ΡΠ΅Π½ (WP+n8n+PG). ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: README (Π·Π°ΠΏΡΡΠΊ/ΠΎΡΡΠ°Π½ΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π°, ΡΠΎΡΠ°ΡΠΈΡ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ², Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅). ΠΠ±ΡΠ°Π·Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½Ρ ΠΏΠΎ Π²Π΅ΡΡΠΈΡΠΌ; .env Π²Π½Π΅ ΡΠ΅ΠΏΠΎ; UFW/Cloudflare Π½Π°ΡΡΡΠΎΠ΅Π½Ρ; real-IP ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½ Π² Π»ΠΎΠ³Π°Ρ
.
ΠΠΎΡ
ΠΎΠΆΠΈΠ΅ Π·Π°ΠΊΠ°Π·Ρ
IT-Π°ΡΡΡΠΎΡΡΠΈΠ½Π³
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π΄ΠΎΠΌΡ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠΎΠ². ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ°ΠΉΡ (ΡΠ°ΠΉΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ). ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Django.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-11
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ°ΠΉΡ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Tilda. ΠΠ±ΡΡΠΌ ΡΠ°ΠΉΡΠ°: 20 ΡΡΡΠ°Π½ΠΈΡ.
ΠΡΠ°ΡΠ½ΠΎΠ΄Π°Ρ
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-10
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΠ°ΠΉΡ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: WordPress. ΠΠ±ΡΡΠΌ ΡΠ°ΠΉΡΠ°: 20 ΡΡΡΠ°Π½ΠΈΡ.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-09
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. Π‘Π°ΠΉΡ-Π²ΠΈΠ·ΠΈΡΠΊΠ°. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: 1Π‘-ΠΠΈΡΡΠΈΠΊΡ.
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-09
IT-Π°ΡΡΡΠΎΡΡΠΈΠ½Π³
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠΎΠ². ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: WordPress. ΠΠ±ΡΡΠΌ ΡΠ°ΠΉΡΠ°: 1 ΡΡΡΠ°Π½ΠΈΡΠ°. ΠΠΎΠΌΠ΅Π½ΡΠ»ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΡΡ IP Π°Π΄ΡΠ΅Ρ. ΠΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ Π½ΠΎΠ²ΡΠΉ IP ΠΊ Π΄ΠΎΠΌΠ΅Π½Ρ ΡΠ°ΠΉΡΠ° =(. ΠΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° =).
ΠΠΎΡΠΊΠ²Π°
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-07
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ. Π‘Π°ΠΉΡ-Π²ΠΈΠ·ΠΈΡΠΊΠ°. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Π½Π΅ Π·Π½Π°Ρ. ΠΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ: ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°( Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ) , ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅.
ΠΡΡΠΌ
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-07
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΡΠ°
Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ
Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ½Π°Ρ
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±Π°Π½Π½Π΅ΡΠΎΠ². ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½. ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Π½Π΅ Π·Π½Π°Ρ. ΠΠ±ΡΡΠΌ ΡΠ°ΠΉΡΠ°: 50 ΡΡΡΠ°Π½ΠΈΡ.
Π’ΠΎΠ»ΡΡΡΡΠΈ
Π€ΡΠΈΠ»Π°Π½ΡΠ΅ΡΡ
2025-10-07