New season — Spring/Summer drop now live

Installation — ติดตั้งบนเครื่อง dev / staging

Setup สมบูรณ์ — สำหรับติดตั้งครั้งแรกหรือทำ environment ใหม่

เครื่องต้องมีอะไรบ้าง

Software เวอร์ชันต่ำสุด ใช้ทำอะไร
Node.js 20 LTS รัน api + web + mobile
npm 10+ ติดตั้ง package
Docker Desktop 24+ PostgreSQL + Redis
Git ใด ๆ clone repo
(Mac) Xcode ล่าสุด iOS simulator
(Win/Linux) Android Studio ล่าสุด Android emulator
node -v       # ≥ v20
docker -v
git --version

Step 1 — เตรียม env

cd ecommerce
cp .env.example .env

แก้ .env ที่ root:

POSTGRES_USER=ecommerce
POSTGRES_PASSWORD=<password-แข็งแรง>
POSTGRES_DB=ecommerce
POSTGRES_PORT=5432

REDIS_PORT=6379

API_PORT=3000
JWT_ACCESS_SECRET=<openssl rand -hex 32>
JWT_REFRESH_SECRET=<openssl rand -hex 32>
CORS_ORIGINS=http://localhost:3001

WEB_PORT=3001
NUXT_PUBLIC_API_BASE=http://localhost:3000/api/v1
NUXT_PUBLIC_APP_NAME=YourShop

💡 Generate JWT secret ที่ปลอดภัย:

openssl rand -hex 32
# ผลลัพธ์ปรากฏ — copy ไปใส่ใน .env

Step 2 — สตาร์ทฐานข้อมูล

docker compose up -d postgres redis
docker compose ps  # ตรวจสถานะ

ควรเห็น:

ecommerce-postgres   Up (healthy)
ecommerce-redis      Up (healthy)

Step 3 — Install + รัน API

cd ecommerce-api
cp .env.example .env
npm install
npx prisma migrate dev --name init
npx prisma db seed
npm run start:dev

✅ พร้อมใช้ที่:

  • API: http://localhost:3000/api/v1
  • Swagger: http://localhost:3000/docs

Step 4 — Install + รัน Web

เปิด terminal ใหม่:

cd ecommerce-web
cp .env.example .env
npm install --legacy-peer-deps
npm run dev

✅ พร้อมใช้ที่ http://localhost:3001

Step 5 — (option) Install + รัน Mobile

cd ecommerce-mobile
cp .env.example .env

แก้ .env:

EXPO_PUBLIC_API_BASE=http://<LAN_IP>:3000/api/v1

หา LAN IP:

  • macOS: ipconfig getifaddr en0
  • Win: ipconfig → IPv4 Address
  • Linux: hostname -I

แล้ว:

npm install
npx expo start
  • กด i → iOS Simulator
  • กด a → Android Emulator
  • scan QR ด้วยแอป Expo Go บนมือถือจริง (ต่อ Wi-Fi เดียวกัน)

ตรวจว่าทุกอย่างทำงาน

# API health
curl http://localhost:3000/api/v1/health

# Web SSR
curl -I http://localhost:3001/   # 200 OK

# Database
docker compose exec postgres pg_isready

Restart / Stop

# หยุด dev server: Ctrl+C ใน terminal แต่ละตัว

# หยุด database (ข้อมูลยังอยู่)
docker compose down

# ลบทุกอย่างเริ่มใหม่
docker compose down -v
rm -rf ecommerce-api/node_modules ecommerce-web/node_modules

ปัญหาที่เจอบ่อย

“ERESOLVE could not resolve” ตอน npm install web

ใช้:

npm install --legacy-peer-deps

Port ถูกใช้

แก้ใน root .env:

API_PORT=4000
WEB_PORT=4001

Prisma migration ค้าง / error

cd ecommerce-api
rm -rf prisma/migrations
npx prisma migrate dev --name init

Database connection refused

docker compose ps
# ถ้าไม่มี postgres หรือ unhealthy:
docker compose down -v
docker compose up -d postgres redis

Mobile: “Network request failed”

อย่าใช้ localhost ใน .env ของ mobile — ใช้ LAN IP จริงของเครื่อง dev

หลายสภาพแวดล้อม

ระบบรองรับ:

Env ไฟล์ env ใช้ทำอะไร
development .env.development dev บนเครื่อง local
staging .env.staging ทดสอบก่อน production
production .env.production server จริง

API จะอ่าน env ตาม NODE_ENV:

NODE_ENV=staging npm run start

ขั้นต่อไป

Join the club

ของเด็ดส่งตรง
ถึงอินบ็อกซ์

สมัครรับข่าวสาร — รับส่วนลด 10% สำหรับสมาชิกใหม่ + อัปเดตคอลเลกชันก่อนใคร