# 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 protected]` + `[email protected]` — both forward to `[email protected]` (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 → [email protected] 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
