PaynEat POSคู่มือติดตั้ง

เปิดร้านบน PaynEat POS ใน 4 ทาง

เลือกทางที่ตรงกับคุณแล้วทำตามทีละขั้น ไม่ต้องสมัคร ไม่มีค่าใช้จ่าย และข้อมูลร้านอยู่บนเครื่องของคุณเอง

  • ฟรี · Apache 2.0
  • ไม่ต้องสมัครสมาชิก
  • ใช้เครื่องที่ร้านมีอยู่
ขั้นแรก

คุณอยากทำอะไร?

ยังไม่แน่ใจ เริ่มจากทางแรกก่อน — ลองกดดูจนพอใจแล้วค่อยติดตั้งจริงก็ได้

  • ลองในเบราว์เซอร์

    ใช้เวลา
    ทันที
    ต้องมี
    เบราว์เซอร์อะไรก็ได้
    เหมาะกับ
    อยากดูหน้าตาและลองกดก่อนตัดสินใจ
    เปิดเดโม
  • แนะนำ

    Windows บรรทัดเดียว

    ใช้เวลา
    3–5 นาที
    ต้องมี
    Windows + Docker Desktop
    เหมาะกับ
    เจ้าของร้านที่อยากได้ระบบตัวจริงบนเครื่องตัวเอง
    ดูวิธีติดตั้ง
  • Docker ให้หลายเครื่องใช้ร่วมกัน

    ใช้เวลา
    10–15 นาทีครั้งแรก
    ต้องมี
    Docker Desktop (Windows / Mac / Linux)
    เหมาะกับ
    ร้านที่อยากให้มือถือ แท็บเล็ต และจอครัวต่อเครื่องเดียวกัน
    ดูวิธีติดตั้ง
  • รันจากโค้ด

    ใช้เวลา
    ประมาณ 5 นาที
    ต้องมี
    Node.js 22 + Flutter 3.35
    เหมาะกับ
    นักพัฒนาที่อยากแก้หรือต่อยอดระบบ
    ดูวิธีรัน
ทางที่ 2 · แนะนำสำหรับเจ้าของร้าน

ติดตั้งบน Windows ด้วยบรรทัดเดียว

ได้ระบบตัวจริงครบ ทั้งเซิร์ฟเวอร์ การอัปเดตสดข้ามหน้าต่าง ตาชั่งจำลอง และใบเสร็จ PDF โดยไม่ต้องดาวน์โหลดโค้ดหรือ build เอง เพราะตัวติดตั้งโหลดชุดที่ build ไว้แล้วมาให้

ใช้เวลา
3–5 นาที (ดาวน์โหลดครั้งแรกราว 200 MB)
ต้องมี
Windows 64 บิต + Docker Desktop
ได้อะไร
ระบบเปิดที่ http://localhost:8080 บนเครื่องนี้
  1. ติดตั้งและเปิด Docker Desktop

    ยังไม่มี ดาวน์โหลดได้ที่ docker.com ติดตั้งแล้วเปิดโปรแกรม รอจนมุมซ้ายล่างขึ้นคำว่า Engine running

  2. เปิด PowerShell

    กดปุ่ม Windows พิมพ์ PowerShell แล้วกด Enter

  3. วางบรรทัดนี้แล้วกด Enter

    กดปุ่ม คัดลอก ที่มุมกล่อง แล้วคลิกขวาในหน้าต่าง PowerShell เพื่อวาง

    PowerShell
    [Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object Net.WebClient).DownloadString('https://github.com/SuruchBoss/PaynEat/releases/download/demo/install-demo.ps1'))
  4. รอสักครู่ แล้วเข้าสู่ระบบ

    เบราว์เซอร์จะเปิด http://localhost:8080 ให้เอง เข้าด้วย admin / admin123 หรือแตะปุ่มบัญชีทดลองบนหน้าเข้าสู่ระบบ

PowerShell ขึ้นข้อความสีเขียว PaynEat is ready: http://localhost:8080 และเบราว์เซอร์เปิดหน้าเข้าสู่ระบบ

ใช้งานวันต่อไป

เปิด / ปิด / ล้างข้อมูล
ในโฟลเดอร์ PaynEat-Demo ของผู้ใช้ มีไฟล์ดับเบิลคลิก Start, Stop และ Reset PaynEat data (Reset = ลบบิลที่ลองทำทั้งหมด กลับเป็นข้อมูลตัวอย่าง)
เปิดเครื่องใหม่
เปิด Docker Desktop แล้วระบบขึ้นเอง
อัปเดตเป็นรุ่นล่าสุด
วางบรรทัดเดิมซ้ำ ข้อมูลที่ทำไว้ยังอยู่

⚠️ ตั้งค่าไว้สำหรับทดลองเท่านั้น (บัญชีทดลอง ตาชั่งจำลอง อีเมลไม่ส่งออกจริง) และเปิดได้บนเครื่องนี้เครื่องเดียว — ถ้าจะให้มือถือหรือแท็บเล็ตในร้านต่อเข้ามาด้วย ใช้ทางที่ 3 · อยากอ่านสิ่งที่สคริปต์ทำก่อนวาง: install-demo.ps1

ทางที่ 3 · หลายเครื่องในร้าน

รันด้วย Docker ให้ทุกเครื่องในร้านต่อเข้ามา

เซิร์ฟเวอร์อยู่บนคอมพิวเตอร์เครื่องเดียวในร้าน แล้วมือถือพนักงาน แท็บเล็ตแคชเชียร์ และจอครัวเปิดผ่านเบราว์เซอร์ ออเดอร์ที่สั่งจากเครื่องหนึ่งจะขึ้นจอครัวอีกเครื่องทันที

ใช้เวลา
10–15 นาทีครั้งแรก (ครั้งต่อไปไม่ถึงนาที)
ต้องมี
Docker Desktop บน Windows, Mac หรือ Linux
ได้อะไร
ระบบเปิดที่ http://<IP ของเครื่อง>:8080 จากทุกเครื่องใน Wi-Fi เดียวกัน
  1. ดาวน์โหลดโค้ด

    ง่ายสุด: ดาวน์โหลดไฟล์ ZIP แล้วแตกไฟล์ จะได้โฟลเดอร์ PaynEat-main · ถ้ามี git ใช้คำสั่งนี้แทนได้

    Terminal
    git clone https://github.com/SuruchBoss/PaynEat.git
  2. หา IP ของเครื่องนี้

    Windows: เปิด PowerShell พิมพ์ ipconfig ดูบรรทัด IPv4 Address · Mac/Linux: ifconfig | grep inet — จะได้เลขหน้าตาแบบ 192.168.1.15

  3. บอกแอปว่าเซิร์ฟเวอร์อยู่ที่ไหน

    สร้างไฟล์ชื่อ .env ไว้ในโฟลเดอร์โค้ด (ข้างไฟล์ docker-compose.yml) ใส่บรรทัดนี้ โดยเปลี่ยนเลขเป็น IP ของคุณ — ข้ามขั้นนี้ได้ถ้าจะใช้แค่เครื่องนี้เครื่องเดียว

    .env
    API_BASE_URL=http://192.168.1.15:3000
  4. สั่งให้ระบบเริ่มทำงาน

    เปิด Terminal (Windows: PowerShell) ในโฟลเดอร์โค้ด แล้วรันคำสั่งนี้ — ครั้งแรกรอ 5–10 นาทีเพราะต้อง build แอปให้

    Terminal
    docker compose up --build
  5. เปิดจากทุกเครื่องในร้าน

    ต่อ Wi-Fi เดียวกันแล้วเปิด http://192.168.1.15:8080 (ใช้ IP ของคุณ) บนมือถือ แท็บเล็ต หรือจอครัว บนเครื่องเซิร์ฟเวอร์เองเปิด http://localhost:8080 ได้เลย

Terminal ขึ้นชื่อ payneat-api และ payneat-web แล้วเปิด http://localhost:3000/health ได้ผลตอบกลับ

ใช้งานวันต่อไป

ปิดระบบ
กด Ctrl+C ในหน้าต่าง Terminal แล้วรัน docker compose down
ล้างข้อมูลเริ่มใหม่
docker compose down -v (ลบบิลและข้อมูลทั้งหมด)
เปิดตาชั่งจำลองและอีเมลทดสอบ
เพิ่ม SCALE_DRIVER=simulator และ MAIL_TRANSPORT=json ในไฟล์ .env เดิม แล้วรัน docker compose up --build ใหม่ (อย่าใช้ simulator ในร้านจริง)

💡 เครื่องอื่นเปิดไม่ขึ้น: ตรวจว่าอยู่ Wi-Fi เดียวกัน และไฟร์วอลล์ของเครื่องเซิร์ฟเวอร์ยอมให้เข้าพอร์ต 8080 กับ 3000 · ก่อนเปิดให้พนักงานใช้จริง ทำเช็คลิสต์ก่อนใช้จริงให้ครบ

ทางที่ 4 · สำหรับนักพัฒนา

รันจากโค้ดบนเครื่องตัวเอง

เหมาะกับการแก้โค้ด ดู log ทีละคำขอ หรือรันบนมือถือจริงผ่าน Flutter

ใช้เวลา
ประมาณ 5 นาที
ต้องมี
Node.js 20 ขึ้นไป (แนะนำ 22) + Flutter 3.35 ขึ้นไป
ได้อะไร
API ที่ http://localhost:3000 และแอปใน Chrome
  1. ดาวน์โหลดโค้ด

    Terminal
    git clone https://github.com/SuruchBoss/PaynEat.git
    cd PaynEat
  2. หน้าต่างที่ 1 — เซิร์ฟเวอร์

    ไฟล์ .env มี JWT_SECRET สำหรับรันในเครื่อง ไม่มีไฟล์นี้เซิร์ฟเวอร์จะไม่ยอมเริ่ม (Windows ใช้ copy แทน cp) ฐานข้อมูลและข้อมูลตัวอย่างถูกสร้างให้เอง

    Terminal 1
    cd backend
    npm install
    cp .env.example .env
    npm run dev
  3. หน้าต่างที่ 2 — แอป

    เปิดหน้าต่างใหม่ อย่าปิดหน้าต่างแรก

    Terminal 2
    cd app
    flutter pub get
    flutter run -d chrome

หน้าต่างที่ 1 ขึ้นบรรทัดที่มี PaynEat POS API listening on http://localhost:3000 และ Chrome เปิดหน้าเข้าสู่ระบบ

ทางลัดที่ใช้บ่อย

ดูแอปอย่างเดียว ไม่ต้องมีเซิร์ฟเวอร์
flutter run -d chrome --dart-define=DEMO_MODE=true (ข้อมูลจำลองในเครื่อง รีเซ็ตเมื่อรีเฟรช)
รันบนมือถือจริงใน Wi-Fi เดียวกัน
flutter run --dart-define=API_BASE_URL=http://<IP ของคอม>:3000
Android emulator
ชี้ไปที่ 10.0.2.2:3000 ให้เอง ไม่ต้องตั้งค่า
รันเทสต์
cd backend && npm test · cd app && flutter test

รายละเอียดสถาปัตยกรรม API และเทสต์ทั้งหมดอยู่ใน README

บัญชีทดลอง

เข้าสู่ระบบด้วยบทบาทไหนก็ได้

หน้าเข้าสู่ระบบมีปุ่มบัญชีทดลองทุกบทบาท แตะครั้งเดียวเข้าได้เลย ไม่ต้องพิมพ์

บทบาทชื่อผู้ใช้รหัสผ่านเห็นอะไรบ้าง
ผู้ดูแลระบบadminadmin123ทุกอย่าง — แดชบอร์ด เมนู พนักงาน รายงาน ตั้งค่า
ผู้จัดการmanagermanager123เหมือนผู้ดูแลระบบ แต่ลบบัญชีผู้ใช้ไม่ได้
พนักงานเสิร์ฟwaiter1waiter123ผังโต๊ะ ออเดอร์ จอครัว
ครัวkitchenkitchen123จอครัวอย่างเดียว
แคชเชียร์cashiercashier123ผังโต๊ะ ออเดอร์ รายงาน
พนักงานเสิร์ฟ 2 สาขาwaiter2waiter123เหมือน waiter1 แต่เลือกสาขาได้ — ต้องพิมพ์เอง และใช้ได้เมื่อต่อเซิร์ฟเวอร์จริง (ทางที่ 2–4)
ลองหลายเครื่องพร้อมกัน

เดโมในเบราว์เซอร์เก็บข้อมูลแยกในแต่ละเครื่อง — สั่งจากมือถือแล้วจอครัวบนแท็บเล็ตอีกเครื่องจะไม่เห็น ถ้าอยากเห็นออเดอร์วิ่งข้ามเครื่อง ใช้ทางที่ 3 หรือเปิดหลายหน้าต่างบนเครื่องเดียวกับทางที่ 2 · ปุ่มลูกโลกมุมขวาบนสลับ ไทย / English / 한국어 ได้ตั้งแต่ก่อนเข้าสู่ระบบ

ก่อนใช้จริง

เช็คลิสต์ก่อนเปิดให้พนักงานใช้งานจริง

บัญชีทดลองและรหัสผ่านข้างบนเผยแพร่อยู่บนอินเทอร์เน็ต ระบบจึงกันไว้ให้แล้ว: ถ้าตั้งเป็นโหมดใช้งานจริงแต่ยังใช้รหัสทดลอง เซิร์ฟเวอร์จะไม่ยอมเปิด

รายละเอียดทุกข้อและวิธีแจ้งช่องโหว่อยู่ใน SECURITY.md

  • ตั้ง JWT_SECRET เป็นค่าสุ่มของร้านเอง เช่นจากคำสั่ง openssl rand -hex 32 — ห้ามใช้ค่าตัวอย่าง
  • ตั้งรหัสผ่านบัญชีเริ่มต้นเองครบทั้ง 6 ตัว (SEED_ADMIN_PASSWORD … SEED_CASHIER_PASSWORD) หรือปิด AUTO_SEED แล้วสร้างบัญชีพนักงานจริงเอง
  • ตั้ง CORS_ORIGIN เป็นที่อยู่จริงของร้านแทน *
  • เก็บไฟล์ฐานข้อมูลและไฟล์ .env ไว้ในเครื่องร้าน อย่าอัปโหลดหรือแชร์ออกไป และสำรองข้อมูลสม่ำเสมอ
  • ไม่ใช้ตัวติดตั้งบรรทัดเดียวบน Windows กับร้านจริง เพราะตั้งค่าไว้สำหรับทดลอง
แก้ปัญหา

ติดตรงไหน กดดูวิธีแก้

ขึ้นว่า "port is already allocated"

มีโปรแกรมอื่นใช้พอร์ต 3000 หรือ 8080 อยู่ ปิดโปรแกรมนั้น (หรือระบบ PaynEat ที่เปิดค้างไว้) แล้วลองใหม่

ขึ้นว่า "Docker Desktop is not running" หรือ "is not installed"

ยังไม่ได้ติดตั้งหรือยังไม่ได้เปิด Docker Desktop — ติดตั้งจาก docker.com เปิดโปรแกรม รอจนมุมซ้ายล่างขึ้น Engine running แล้ววางบรรทัดเดิมอีกครั้ง

ขึ้นว่า "PaynEat started but is not answering yet"

ระบบเปิดแล้วแต่ยังตอบไม่ทัน รออีกครู่แล้วเปิด http://localhost:8080 ถ้ายังไม่ขึ้น ดูสาเหตุที่ Docker Desktop → Containers → payneat

Docker ค้างนานที่ขั้น Flutter

ครั้งแรกต้องดาวน์โหลด Flutter SDK ประมาณ 2 GB รอให้จบ 5–10 นาที ครั้งต่อไปใช้ของที่โหลดไว้

เปิดหน้าเว็บได้ แต่เข้าสู่ระบบไม่ได้

เปิด http://localhost:3000/health ถ้าไม่ขึ้นแปลว่าเซิร์ฟเวอร์ยังไม่ทำงาน · ถ้าตั้ง API_BASE_URL ไว้ ตรวจว่า IP ถูกและรัน docker compose up --build ใหม่หลังแก้

มือถือหรือแท็บเล็ตต่อไม่ได้

ต้องอยู่ Wi-Fi เดียวกับเครื่องเซิร์ฟเวอร์ ใช้ IP ไม่ใช่ localhost และไฟร์วอลล์ต้องยอมพอร์ต 8080 กับ 3000

ขึ้นว่า "ต้องตั้งค่า JWT_SECRET"

ยังไม่ได้สร้างไฟล์ .env — รัน cp .env.example .env ในโฟลเดอร์ backend (Windows: copy) แล้ว npm run dev ใหม่

npm install ล้มที่ better-sqlite3

ขาดเครื่องมือ build · macOS: xcode-select --install · Linux: sudo apt install build-essential python3 · Windows: ติดตั้ง Visual Studio Build Tools

อยากล้างข้อมูลเริ่มใหม่

ทางที่ 2: ดับเบิลคลิก Reset PaynEat data · ทางที่ 3: docker compose down -v · ทางที่ 4: cd backend && npm run db:reset

ยังติดอยู่?ถามได้ที่ GitHub Issues หรือ LinkedIn — บอกทางที่ใช้ ระบบปฏิบัติการ และข้อความที่ขึ้นบนจอ