$ liftport migrate acme-web --to your-vps
Headline A Headline Accent Headline B
Subhead
Microcopy
liftport cockpit — acme-web · Vercel → Hetzner VPS 5.75.180.12liftport cockpitLIVE
Migration log
→ inventorying acme-web (Vercel)…
✓ 24 routes · 11 env vars · 2 domains
→ generating Dockerfile + compose…
✓ container builds clean on 5.75.180.12
→ smoke check: source vs target…
✓ GET / 200 / 200
✓ GET /api/health 200 / 200
✓ bodies match (12,431 bytes)Parity verdict
MATCHSource and target respond identically.
Your bill
$137$12/mo
$1,500/yr back · payback month 1
app.acme.com → 5.75.180.12 · source stays live until you flip
$137 $12Per Month
Stat1 Desc
89% Stat2 Suffix
Stat2 Desc
0 Stat3 Suffix
Stat3 Desc
Providers Line
Kicker
Heading
Tab1 Title
P1 Desc
- P1 B1
- P1 B2
- P1 B3
manifest · acme-web (Vercel)
✓ 24 routes source: api
✓ 11 env var names source: api · values attested
✓ 3 edge functions source: api
✓ 2 domains source: apiTab2 Title
P2 Desc
- P2 B1
- P2 B2
- P2 B3
FROM node:20-slim
WORKDIR /app
COPY . .
RUN npm ci --omit=dev && npm run build
EXPOSE 3000
CMD ["node", "server.js"]Tab3 Title
P3 Desc
- P3 B1
- P3 B2
- P3 B3
→ GET source 200 (0.42s) · GET target 200 (0.31s)
✓ bodies match (12,431 bytes)
✓ assets 24/24 identical
✓ MATCH — source and target respond identicallyTab4 Title
P4 Desc
- P4 B1
- P4 B2
- P4 B3
Savings This
$137 $12Per Month
Savings Annual
$1,500Per Yr
Payback 1
Kicker
Heading
Body
smoke-check · response diffMATCH
source · acme-web.vercel.app
GET / 200
GET /api/health 200
GET /old 301
body 12,431 bytestarget · 5.75.180.12
GET / 200
GET /api/health 200
GET /old 301
body 12,431 bytesFlip Back
Flip UnlockedKicker
Heading
Body
- 01
S1 Title
S1 Desc
S1 Gate
manifest · acme-web ✓ 24 routes · 11 env vars ✓ 3 functions · 2 domains - 02
S2 Title
S2 Desc
S2 Gate
FROM node:20-slim RUN npm ci && npm run build EXPOSE 3000 - 03
S3 Title
S3 Desc
S3 Gate
staging · liftport-staging-a1b2.acme.dev ✓ reachable · 0.7s source · still live on Vercel - 04
S4 Title
S4 Desc
S4 Gate
MATCHbodies identical · 24/24 assets
Pair1 Label
Pair1 StatusPair2 Label
Pair2 StatusPair3 Label
Pair3 StatusHeading
Body
$1,500Saved Suffix
Saved Note
Action Note
Cta Button