# Rainbowvapes Migration Runbook
Migrate `rainbowvapes.co.uk` (James — Rainbow Vapes Ltd) from guru.co.uk shared hosting to kaburusvr. Second site `rainbowflavours.co.uk` already lives on kaburusvr as an alias of `rf.kaburu.co` (no guru content — nothing to migrate).
## Timeline (revised 2026-08-14)
| Time | Action |
| —— | ——– |
| Fri 14th | Baseline file rsync (started, ~24GB, excludes bloat) |
| Mon 17:00 | Incremental file rsync — brothers done adding products/images ~5pm |
| Mon 21:00 (tentative) | WooCommerce maintenance mode ON — if James agrees (little overnight sales) |
| Tue ~07:00 | DB dump+import (DB LAST) → email forwarders + MX → DNS cutover → verify |
| Tue 09:00 | James + brothers test → live (maintenance OFF) |
| — | Rollback: flip CF A record back to guru, maintenance OFF. Guru site never deleted. |
Why DB last: the brothers add products/images until ~5pm Monday; the DB is pulled after buying stops (Tue 07:00, or Mon 21:00 if site-off agreed) so no orders/product rows are lost.
## Source (guru)
- SSH: `[email protected]`, key `/root/.ssh/rainbowvapes` (on kaburusvr) - WP dir: `/home/rvwebcou/rainbowvapes.co.uk` (NOT public_html) - DB: `rvwebcou_vm7d1` (user `rvwebcou_vm7d1`), 1.27GB, 139 tables - PHP 8.2, WP 7.0.4, Divi 4.27.7 (avanti child) - Site size: 69GB raw → ~24GB real (updraft 39GB + cache 6.2GB + et-cache 865M = bloat to exclude)
## Email (GURU portal — authoritative, SSH ~/etc lies)
- `[email protected]` (452MB) + `no-reply@` (506MB) - Both forward to `[email protected]` (James reads everything at AOL) - No IMAP migration. Just re-point: forwarders + `no-reply@` sends via Fluent SMTP → Brevo - Current MX = MailChannels (guru's gateway, lost on exit) → point MX at kaburusvr at cutover - Enable SRS on Postfix or AOL-forwarded mail hits spam (SPF break) - The brother created a hello@↔no-reply@ forward loop on guru — do NOT replicate. One-way only.
## Pre-stage — DONE Fri 2026-08-14
- [x] Site created: `rainbowvapes.co.uk` (webuser `rainb1286`, lsphp83, registered in DB) - [x] DB created: `rainbowvapes_co_uk_wp` / `rainbowvapes_co_uk` — GRANT verified
- Creds stored: `/root/rainbowvapes-migration.env` (chmod 600)
- [x] rsync launched (background, excludes bloat) — see `/tmp/rainbowvapes-rsync.log` - [x] SSL issuing via acme.sh DNS-01 (background) — see `/tmp/ssl-rainbowvapes.log`
## Tuesday checklist
### 00:00 pre-stage - [ ] Confirm rsync finished, `chown -R rainb1286:rainb1286 /home/rainbowvapes.co.uk/public_html` - [ ] Confirm SSL cert present: `/etc/letsencrypt/live/rainbowvapes.co.uk/fullchain.pem`
### 07:00 stop buying - [x] WooCommerce maintenance mode ON (guru wp-cli or admin)
### 07:00–09:00 cutover - [x] Final incremental rsync (same command, fast) - [x] DB dump on guru → pull → `sed` utf8mb4_0900_ai_ci→utf8mb4_general_ci, ENGINE=MEMORY→InnoDB → import - [x] Update wp-config.php DB creds (from `/root/rainbowvapes-migration.env`), DB_HOST=localhost - [x] `wp search-replace` siteurl/home if URL differs (should be same domain) - [x] Re-apply `.user.ini` (open_basedir + memory 1024M) + permissions; chmod 640 - [x] Wordfence: disable `auto_prepend_file`/WAF bootstrap until live confirmed - [x] Email: create `hello@`+`no-reply@` forwarders → `[email protected]`; MX → kaburusvr; SPF (Brevo) + DKIM - [x] DNS cutover: CF A record `rainbowvapes.co.uk` → `49.13.202.144` (keep proxied=true) - [x] Verify: HTTPS 200, checkout, Worldpay test transaction, order email arrives at AOL
### 09:00 - [x] James + brother test → maintenance OFF → live
### Rollback - [ ] CF A record back to guru origin IP; maintenance OFF. (Never delete guru until post-live confidence.)
## Worldpay / PCI — VERIFIED 2026-08-14
- Plugin: `worldpay-ecommerce-woocommerce` v1.3.1 (official Worldpay “eCommerce” gateway) - Model: hosted fields/iframe + 3DS2 (`challenge-iframe` + `ddc-iframe`). Card data tokenized by Worldpay, NOT stored on server → no PCI SAQ-D burden. - Domain unchanged → callback URLs unaffected. API auth = OAuth client-credentials (not IP allow-list) → no kaburusvr IP change needed. - [ ] Cutover-day: run a live test transaction (and 3DS test if available)
## Phase 2 (after live)
- Host mail on kaburusvr (mailboxes + forward to AOL) - James: scoped CyberPanel user — his 2 sites (`rainbowvapes.co.uk`, `rainbowflavours.co.uk`) + email control panel ONLY. Nothing else.
## Phase 3 (design later)
- Daily backup of both sites delivered to James's NAS (rsync or similar — TBD)
