# Command: `runcloud:migrate-webapp`

**Description**: Migrate a webapp between RunCloud servers (DNS + Clone + SSL). MOCKUP for future UI.
**Status**: completed
**Started**: 2026-03-25 12:38:08 | **Ended**: 2026-03-25 12:38:48 | **Duration**: 40s
**Jobs**: 0 dispatched / 0 completed / 0 failed

---

## Command Output

12:38:08 [INFO] <fg=magenta;options=bold\> Webapp Migration — RunCloud</\>

12:38:08 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 1: Validation ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:08 [INFO] <fg=gray\>ℹ</\> Searching for webapp...

12:38:08 [INFO] <fg=green\>✓</\> Webapp: app-syumatsujp (ID: 2639344)

12:38:08 [INFO] <fg=green\>✓</\> Source server: misshosting01 (185.139.128.88)

12:38:08 [INFO] <fg=green\>✓</\> Destination server: Glesys ds11431 (46.21.98.114)

12:38:08 [INFO] <fg=green\>✓</\> Domain: syumatsu.jp

12:38:08 [INFO] <fg=gray\>ℹ</\> Checking nameservers...

12:38:08 [INFO] <fg=yellow\>⚠</\> DNS skipped — unsupported provider: ns-113-b.gandi.net, ns-90-a.gandi.net, ns-139-c.gandi.net

12:38:08 [INFO] <fg=yellow\>⚠</\> DNS provider: ns-113-b.gandi.net, ns-90-a.gandi.net, ns-139-c.gandi.net

12:38:08 [INFO] <fg=yellow\>⚠</\> DNS integration skipped — update DNS manually after migration

12:38:08 [INFO] <fg=green\>✓</\> No active migration found

12:38:08 [INFO] <fg=gray\>ℹ</\> Current DNS: syumatsu.jp → 188.114.236.63

12:38:08 [INFO] <fg=gray\>ℹ</\> Target market: Japan

12:38:08 [INFO] <fg=gray\>ℹ</\> No market-specific IP — using least-used: 46.21.98.120 (quality: 64)

12:38:08 [INFO] <fg=green\>✓</\> Target IP: 46.21.98.120 (quality: 64)

12:38:08 [INFO] <options=bold\>Domain</\>:       syumatsu.jp

12:38:08 [INFO] <options=bold\>Source</\>:       misshosting01 (185.139.128.88)

12:38:08 [INFO] <options=bold\>Destination</\>:  Glesys ds11431 (46.21.98.114)

12:38:08 [INFO] <options=bold\>DNS</\>:          188.114.236.63 → 46.21.98.120

12:38:08 [INFO] <fg=gray\>Migration ID: 69c3d730580fc9e6880940a3</\>

12:38:08 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 2: Update DNS ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:08 [INFO] <fg=green\>✓</\> DNS skipped (--skip-dns) — update DNS manually to 46.21.98.120

12:38:08 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 3: Clone webapp ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:17 [INFO] <fg=gray\>ℹ</\> Cloning webapp via RuncloudCloneService (SSH port 23033)...

12:38:28 [INFO] <fg=gray\>ℹ</\> Clone is async, waiting for app to appear on destination...

12:38:38 [INFO] <fg=gray\>ℹ</\> Polling for cloned app... attempt 1/60

12:38:43 [INFO] <fg=green\>✓</\> Cloned app found: ID 2792255

12:38:43 [INFO] <fg=green\>✓</\> Clone created! App ID: 2792255

12:38:43 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 4: Verify clone ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:43 [INFO] <fg=gray\>ℹ</\> Verifying cloned app...

12:38:44 [INFO] <fg=green\>✓</\> App exists: app-syumatsujp

12:38:45 [INFO] <fg=green\>✓</\> Domain syumatsu.jp configured

12:38:45 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 5: Remove source ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:45 [INFO] <fg=gray\>ℹ</\> Removing webapp from source server...

12:38:47 [INFO] <fg=green\>✓</\> Webapp removed from source

12:38:47 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 6: Finalize ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:47 [INFO] <fg=green\>✓</\> Website model updated

12:38:48 [INFO] <fg=green\>✓</\> Success email sent

12:38:48 [INFO] <fg=cyan;options=bold\>  ━━━ Phase 7: SSL (async) ━━━━━━━━━━━━━━━━━━━━━</\>

12:38:48 [INFO] <fg=green\>✓</\> SSL job dispatched (polling every 5min for 1h)

12:38:48 [INFO] <fg=green;options=bold\>  ✅ Migration complete!</\>

12:38:48 [INFO] Migration ID: 69c3d730580fc9e6880940a3

12:38:48 [INFO] SSL will be installed automatically once DNS propagates.

---

## Jobs (0)

*No jobs dispatched*

*Exported at 2026-06-04T15:27:14+00:00*
