PaynEat POSคู่มือติดตั้ง
เปิดร้านบน PaynEat POS ใน 4 ทาง
เลือกทางที่ตรงกับคุณแล้วทำตามทีละขั้น ไม่ต้องสมัคร ไม่มีค่าใช้จ่าย และข้อมูลร้านอยู่บนเครื่องของคุณเอง
- ฟรี · Apache 2.0
- ไม่ต้องสมัครสมาชิก
- ใช้เครื่องที่ร้านมีอยู่
คุณอยากทำอะไร?
ยังไม่แน่ใจ เริ่มจากทางแรกก่อน — ลองกดดูจนพอใจแล้วค่อยติดตั้งจริงก็ได้
ลองในเบราว์เซอร์
เปิดเดโม- แนะนำ
Windows บรรทัดเดียว
ดูวิธีติดตั้ง Docker ให้หลายเครื่องใช้ร่วมกัน
ดูวิธีติดตั้งรันจากโค้ด
ดูวิธีรัน
ติดตั้งบน Windows ด้วยบรรทัดเดียว
ได้ระบบตัวจริงครบ ทั้งเซิร์ฟเวอร์ การอัปเดตสดข้ามหน้าต่าง ตาชั่งจำลอง และใบเสร็จ PDF โดยไม่ต้องดาวน์โหลดโค้ดหรือ build เอง เพราะตัวติดตั้งโหลดชุดที่ build ไว้แล้วมาให้
- ใช้เวลา
- 3–5 นาที (ดาวน์โหลดครั้งแรกราว 200 MB)
- ต้องมี
- Windows 64 บิต + Docker Desktop
- ได้อะไร
- ระบบเปิดที่ http://localhost:8080 บนเครื่องนี้
ติดตั้งและเปิด Docker Desktop
ยังไม่มี ดาวน์โหลดได้ที่ docker.com ติดตั้งแล้วเปิดโปรแกรม รอจนมุมซ้ายล่างขึ้นคำว่า Engine running
เปิด PowerShell
กดปุ่ม Windows พิมพ์ PowerShell แล้วกด Enter
วางบรรทัดนี้แล้วกด Enter
กดปุ่ม คัดลอก ที่มุมกล่อง แล้วคลิกขวาในหน้าต่าง PowerShell เพื่อวาง
PowerShell[Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object Net.WebClient).DownloadString('https://github.com/SuruchBoss/PaynEat/releases/download/demo/install-demo.ps1'))รอสักครู่ แล้วเข้าสู่ระบบ
เบราว์เซอร์จะเปิด 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
รันด้วย Docker ให้ทุกเครื่องในร้านต่อเข้ามา
เซิร์ฟเวอร์อยู่บนคอมพิวเตอร์เครื่องเดียวในร้าน แล้วมือถือพนักงาน แท็บเล็ตแคชเชียร์ และจอครัวเปิดผ่านเบราว์เซอร์ ออเดอร์ที่สั่งจากเครื่องหนึ่งจะขึ้นจอครัวอีกเครื่องทันที
- ใช้เวลา
- 10–15 นาทีครั้งแรก (ครั้งต่อไปไม่ถึงนาที)
- ต้องมี
- Docker Desktop บน Windows, Mac หรือ Linux
- ได้อะไร
- ระบบเปิดที่ http://<IP ของเครื่อง>:8080 จากทุกเครื่องใน Wi-Fi เดียวกัน
ดาวน์โหลดโค้ด
ง่ายสุด: ดาวน์โหลดไฟล์ ZIP แล้วแตกไฟล์ จะได้โฟลเดอร์
PaynEat-main· ถ้ามี git ใช้คำสั่งนี้แทนได้Terminalgit clone https://github.com/SuruchBoss/PaynEat.gitหา IP ของเครื่องนี้
Windows: เปิด PowerShell พิมพ์
ipconfigดูบรรทัด IPv4 Address · Mac/Linux:ifconfig | grep inet— จะได้เลขหน้าตาแบบ192.168.1.15บอกแอปว่าเซิร์ฟเวอร์อยู่ที่ไหน
สร้างไฟล์ชื่อ
.envไว้ในโฟลเดอร์โค้ด (ข้างไฟล์docker-compose.yml) ใส่บรรทัดนี้ โดยเปลี่ยนเลขเป็น IP ของคุณ — ข้ามขั้นนี้ได้ถ้าจะใช้แค่เครื่องนี้เครื่องเดียว.envAPI_BASE_URL=http://192.168.1.15:3000สั่งให้ระบบเริ่มทำงาน
เปิด Terminal (Windows: PowerShell) ในโฟลเดอร์โค้ด แล้วรันคำสั่งนี้ — ครั้งแรกรอ 5–10 นาทีเพราะต้อง build แอปให้
Terminaldocker compose up --buildเปิดจากทุกเครื่องในร้าน
ต่อ 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 · ก่อนเปิดให้พนักงานใช้จริง ทำเช็คลิสต์ก่อนใช้จริงให้ครบ
รันจากโค้ดบนเครื่องตัวเอง
เหมาะกับการแก้โค้ด ดู log ทีละคำขอ หรือรันบนมือถือจริงผ่าน Flutter
- ใช้เวลา
- ประมาณ 5 นาที
- ต้องมี
- Node.js 20 ขึ้นไป (แนะนำ 22) + Flutter 3.35 ขึ้นไป
- ได้อะไร
- API ที่ http://localhost:3000 และแอปใน Chrome
ดาวน์โหลดโค้ด
Terminalgit clone https://github.com/SuruchBoss/PaynEat.git cd PaynEatหน้าต่างที่ 1 — เซิร์ฟเวอร์
ไฟล์
.envมีJWT_SECRETสำหรับรันในเครื่อง ไม่มีไฟล์นี้เซิร์ฟเวอร์จะไม่ยอมเริ่ม (Windows ใช้copyแทนcp) ฐานข้อมูลและข้อมูลตัวอย่างถูกสร้างให้เองTerminal 1cd backend npm install cp .env.example .env npm run devหน้าต่างที่ 2 — แอป
เปิดหน้าต่างใหม่ อย่าปิดหน้าต่างแรก
Terminal 2cd 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
เข้าสู่ระบบด้วยบทบาทไหนก็ได้
หน้าเข้าสู่ระบบมีปุ่มบัญชีทดลองทุกบทบาท แตะครั้งเดียวเข้าได้เลย ไม่ต้องพิมพ์
| บทบาท | ชื่อผู้ใช้ | รหัสผ่าน | เห็นอะไรบ้าง |
|---|---|---|---|
| ผู้ดูแลระบบ | admin | admin123 | ทุกอย่าง — แดชบอร์ด เมนู พนักงาน รายงาน ตั้งค่า |
| ผู้จัดการ | manager | manager123 | เหมือนผู้ดูแลระบบ แต่ลบบัญชีผู้ใช้ไม่ได้ |
| พนักงานเสิร์ฟ | waiter1 | waiter123 | ผังโต๊ะ ออเดอร์ จอครัว |
| ครัว | kitchen | kitchen123 | จอครัวอย่างเดียว |
| แคชเชียร์ | cashier | cashier123 | ผังโต๊ะ ออเดอร์ รายงาน |
| พนักงานเสิร์ฟ 2 สาขา | waiter2 | waiter123 | เหมือน waiter1 แต่เลือกสาขาได้ — ต้องพิมพ์เอง และใช้ได้เมื่อต่อเซิร์ฟเวอร์จริง (ทางที่ 2–4) |
เช็คลิสต์ก่อนเปิดให้พนักงานใช้งานจริง
บัญชีทดลองและรหัสผ่านข้างบนเผยแพร่อยู่บนอินเทอร์เน็ต ระบบจึงกันไว้ให้แล้ว: ถ้าตั้งเป็นโหมดใช้งานจริงแต่ยังใช้รหัสทดลอง เซิร์ฟเวอร์จะไม่ยอมเปิด
รายละเอียดทุกข้อและวิธีแจ้งช่องโหว่อยู่ใน 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 — บอกทางที่ใช้ ระบบปฏิบัติการ และข้อความที่ขึ้นบนจอ