# rainbowvapes.co.uk Vape shop WooCommerce site. Good client — £200/month SEO and break-fix support. **Owner: James (Rainbow Vapes Ltd).** Second site: `rainbowflavours.co.uk` (alias of `rf.kaburu.co` on kaburusvr). ## Email - `hello@rainbowvapes.co.uk` + `no-reply@rainbowvapes.co.uk` — both forward to `sellars534@aol.com` (James reads at AOL) - Transactional sending via Fluent SMTP; re-point to Brevo on migration - ⚠️ Brother created a hello@↔no-reply@ forward loop on guru — do NOT replicate ## Migration — ✅ COMPLETE (Tue 2026-08-18) Migrated from guru.co.uk to kaburusvr. Cutover completed 07:00 BST. Full runbook: [[rainbowvapes-migration]]. DNS A record → 49.13.202.144 (CF proxied). SSL via acme.sh DNS-01. Email forwarders → sellars534@aol.com via Postfix virtual. **Issue during cutover:** cron-created `.maintenance` file was root:root 640 — caused HTTP 500 until removed. ## Hosting | Item | Detail | |------|--------| | Current host | kaburusvr (Hetzner CCX23) | | Cost | Shared hosting (included in MSP) | | Server IP | 49.13.202.144 | | CyberPanel user | rainb1286 | | Home dir | /home/rainbowvapes.co.uk | | WP dir | /home/rainbowvapes.co.uk/public_html | | PHP | 8.3 (lsphp83) | | WP | 7.0.4 | | Theme | Divi 4.27.7 (avanti child, latest v4, no v5 upgrade planned) | ## Stack WooCommerce, Divi 4, Divi Booster, DiviFlash, YITH Gift Cards, YITH Advanced Product Options, YITH Added to Cart Popup, WP Loyalty/Rules, Weight Based Shipping, Worldpay, FastPixel, Rank Math Pro, ShortPixel, ACF, Complianz, FiboFilters Pro, Ajax Search for WooCommerce, 1account Age Verification, Fluent SMTP, MainWP child, Markdown for Agents and Statistics. ## Migration to Hetzner — PROPOSED **Proposal:** Move to kaburusvr.uk (49.13.202.144) at £45/month. Saving client £10/month vs current £55. Server costs covered by this one client. **Key selling point — Redis object cache (⚠️ DISPROVEN 2026-08-14):** Checkout page on shared hosting has no object cache — DB hit on every request. *Note: load test proved Redis object cache makes no difference here — the site is PHP-render-CPU-bound, not DB-bound. See "Redis A/B" below. Do not pitch Redis as the fix.* ### Baseline performance (2026-05-18, shared hosting, no Redis) | Page | TTFB | Total | Notes | |------|------|-------|-------| | Homepage | 92ms | 108ms | LiteSpeed cached | | Shop | 102ms | 118ms | LiteSpeed cached | | Product page | 128ms | 144ms | LiteSpeed cached | | **Checkout** | **2,205ms** | **2,216ms** | **Uncached — DB cold hit every time** | Checkout at 2.2s TTFB is the pain point. Age verification + YITH plugins + WooCommerce session handling all hitting DB with no object cache. Redis would bring this under 300ms. **Post-migration test:** Run same curl baseline after migration + Redis live for A/B proof. **2026-08-14 load test (kaburusvr, synthetic FastPixel-style crawl):** Fired 11.45 req/s (FastPixel's peak) of uncached page renders at rf.kaburu.co (the rainbowvapes replica, 31 published pages, avanti+Divi+WooCommerce). Result: 4 vCPU box saturates on uncached renders (load ~10, CPU ~96% nice=lsphp, 2% idle), sustaining only ~4.6 req/s, p50 latency 2.6s, p95 hits the 15s timeout (16/287 failed). Recovers to 95% idle immediately after — no crash, no 500/503 (degrades to slow, unlike the shared host's LVE 503s). **Redis A/B (2026-08-14):** Enabled Redis object cache on the replica (redis-cache plugin, Predis client) and re-ran the identical test. **No meaningful improvement** — 4.6 → 4.7 req/s, errors unchanged, CPU still saturated (87% nice = lsphp). Redis served 68% of object lookups (~79K hits during test) but the bottleneck is PHP render CPU, not the DB. **Conclusion: Redis object cache does NOT fix this workload.** Real levers: LSCache page cache (repeat hits only), fix avanti theme loading admin code (`jedi-apprentice`) on every frontend render, throttle/schedule FastPixel crawls off-peak, or more vCPU. ## Notes - Facebook for WooCommerce: plugin deleted, 23,814 DB rows purged 2026-05-18. Notorious for re-seeding — monitor action scheduler for facebook hooks returning. - Divi PHP warnings (ThemeBuilderRequest.php null taxonomy) — v4 bug, low priority - 1account age verification PHP 8 compat warnings — low priority, not breaking - Markdown for Agents and Statistics 1.4.4 — active, serving bot markdown pages - No Redis currently — object-cache.php not present - **2026-08-13 outage (16m18s):** UptimeRobot (Falkenstein node 168.119.96.239) reported a connection timeout 22:44:26→23:00:44. Root cause = FastPixel full-site cache-warm crawl (peaked 687 req/min at 22:40) buckling the shared host — FastPixel's own error.json logged "page stopped responding (timeout 30000ms)", plus 8×500 + 9×503 in the window. Real Google organic traffic still got 200s, but uncached pages were timing out. This is the shared-hosting pain point the Hetzner+Redis migration pitch addresses. ## Pending - [ ] Talk to client about migration (Steve, 2026-05-19) - [ ] Run GTmetrix/PageSpeed baseline before migration - [ ] Migrate to kaburusvr, enable Redis, run post comparison - [ ] Add to Matomo tracking