How I run a multilingual eSIM store from a home server (Medusa v2 + Next.js)
说明与用途
作者使用 Medusa v2、Next.js 和 PostgreSQL 在家用服务器上搭建了多语言 eSIM 商店,并通过 Tailscale 进行访问。他实现了本地化页面、通过电子邮件和 Zalo 发送 QR 码,并确保 QR 码一次性使用,同时自行管理部署和运维。
问题
Running a multilingual eSIM store requires handling multiple languages, localized content, diverse delivery channels, and secure QR code management while keeping operations self-hosted.
结果
The store now supports multiple languages with localized content, delivers eSIM QR codes via email or Zalo, ensures QR codes are never reused, and runs cost‑effectively on a home server with full operational control.
工作流
- Set up Medusa v2 as headless commerce backend
- Create Next.js App Router storefront
- Configure PostgreSQL database
- Deploy both services on a home Linux machine and expose via Tailscale
- Integrate Stripe for card payments and QR bank‑transfer for Vietnamese customers
- Develop locale‑specific pages and content for Vietnamese, English, Nepali, Sinhala, Bengali, Indonesian, German, etc.
- Implement QR code pool with one‑time use enforcement
- Add Zalo integration for QR delivery to older Vietnamese customers
- Create deploy script and log for self‑hosting maintenance
证据
Medusa gives me carts, orders, promotions and an admin UI out of the box. Everything specific to eSIM, like QR delivery and multilingual landing pages, I build on top.
The store has pages in Vietnamese, English, Nepali, Sinhala, Bengali, Indonesian, German and more. Each community searches with different words and worries about different things, so each locale gets content written for it, not a translated copy.
Many older Vietnamese customers rarely check email but use Zalo every day, so eSIM QR codes can be delivered through Zalo as well as email.
QR codes come from a pool. Once a code is issued it is marked as used and can never be sent again.
Deploys, backups and monitoring are all on you. A deploy script and a deploy log help a lot; offsite backups are next on my list.
- 记录日期: 2026-11-03T21:13:48.682Z