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) ที่มีบรรทัด JWT_SECRET= ตามด้วยค่าสุ่มของร้าน — ถ้าไม่มีบรรทัดนี้ ระบบจะไม่เริ่มทำงานและบอกวิธีตั้ง · Mac/Linux ใช้คำสั่งด้านล่าง · Windows PowerShell ใช้ ("JWT_SECRET=" + [guid]::NewGuid().ToString("N") + [guid]::NewGuid().ToString("N")) | Out-File -Encoding ascii .env

    Terminal (Mac/Linux)
    echo "JWT_SECRET=$(openssl rand -hex 32)" > .env
  4. บอกแอปว่าเซิร์ฟเวอร์อยู่ที่ไหน

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

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

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

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

    ต่อ 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

หลังติดตั้ง · ทุกทาง

สำรองและกู้คืนข้อมูล

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

เก็บที่ไหน
data/backups ข้างฐานข้อมูล และที่เก็บชุดที่สองที่คุณตั้ง
เก็บนานแค่ไหน
ทุกไฟล์ใน 48 ชั่วโมง และวันละไฟล์ย้อนหลัง 30 วัน
กู้คืนอย่างไร
พิมพ์คำสั่งบนเครื่องเซิร์ฟเวอร์ ไม่มีปุ่มกู้คืนในแอป
ส่วนสำรองข้อมูลในหน้าตั้งค่า แสดงเวลาที่สำรองล่าสุด ที่เก็บทั้งสองที่ และปุ่มสำรองข้อมูลตอนนี้
ผู้ดูแลระบบ → ตั้งค่า → สำรองข้อมูล
  1. ตั้งที่เก็บชุดที่สองบนอีกดิสก์

    ชุดแรกอยู่ดิสก์เดียวกับฐานข้อมูล ถ้าดิสก์เสียจะเสียทั้งคู่ เสียบ USB drive หรือใช้โฟลเดอร์บน NAS ในร้าน แล้วเพิ่มบรรทัดนี้ในไฟล์ backend/.env (เปลี่ยนเป็นโฟลเดอร์ของคุณ) แล้วเปิดเซิร์ฟเวอร์ใหม่

    backend/.env (รันจากโค้ด)
    BACKUP_COPY_DIR=E:\PaynEat-backup
  2. Docker: ให้ชุดที่สองออกไปนอกคอนเทนเนอร์

    เปิดบรรทัด - /mnt/usb-backup/payneat:/backup-copy ใต้ volumes: ของ api ใน docker-compose.yml (เปลี่ยนส่วนหน้าเครื่องหมาย : เป็นโฟลเดอร์ของคุณ บน Linux ให้ผู้ใช้ uid 1000 เขียนได้: sudo chown 1000:1000 /mnt/usb-backup/payneat) เพิ่มบรรทัดนี้ในไฟล์ .env แล้วรัน docker compose up -d

    .env (Docker)
    BACKUP_COPY_DIR=/backup-copy
  3. ลองสำรองหนึ่งครั้ง

    เข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบ ไปที่ ตั้งค่า → สำรองข้อมูล แล้วกด สำรองข้อมูลตอนนี้ ที่เก็บทั้งสองที่ต้องขึ้นเครื่องหมายถูกสีเขียว

  4. กู้คืน: หยุดเซิร์ฟเวอร์ก่อน

    คำสั่งกู้คืนไม่ยอมทำงานระหว่างเซิร์ฟเวอร์เปิดอยู่ · รันจากโค้ด: กด Ctrl+C ในหน้าต่างเซิร์ฟเวอร์ · Docker: ใช้คำสั่งด้านล่างในโฟลเดอร์โค้ด

    Terminal (Docker)
    docker compose stop api
  5. เลือกไฟล์ที่จะกู้

    ชื่อไฟล์บอกเวลาและเหตุผล เช่น payneat-2026-09-29T221530+0700-shift-close.sqlite คือไฟล์หลังปิดกะ 22:15 น. ของวันที่ 29 · รันจากโค้ด: ดูในโฟลเดอร์ backend/data/backups · Docker: ดูรายชื่อด้วยคำสั่งนี้

    Terminal (Docker)
    docker compose run --rm api ls data/backups
  6. สั่งกู้คืน

    รันจากโค้ด: cd backend แล้ว npm run db:restore -- data/backups/<ชื่อไฟล์> · Docker: คำสั่งด้านล่าง · ระบบตรวจว่าไฟล์ไม่เสียก่อน และสำรองข้อมูลปัจจุบันเป็นไฟล์ pre-restore ไว้ให้เสมอ ถ้ากู้ผิดไฟล์จึงย้อนกลับได้

    Terminal (Docker)
    docker compose run --rm api npm run db:restore -- data/backups/payneat-2026-09-29T221530+0700-shift-close.sqlite
  7. เปิดเซิร์ฟเวอร์อีกครั้ง

    รันจากโค้ด: npm start (หรือ npm run dev) · Docker: คำสั่งด้านล่าง

    Terminal (Docker)
    docker compose start api

คำสั่งกู้คืนพิมพ์ Restored … from … พร้อมชื่อไฟล์ pre-restore และหน้าประวัติการทำรายการมีรายการ กู้คืนข้อมูลจากไฟล์สำรอง

ถ้าคำสั่งไม่ยอมกู้คืน

The PaynEat server is still running
หยุดเซิร์ฟเวอร์ก่อน ถ้าเครื่องเพิ่งดับไปเอง (เช่น ไฟดับ) รอ 30 วินาทีแล้วลองใหม่
The backup file is damaged
ไฟล์นี้เสีย เลือกไฟล์ก่อนหน้า หรือไฟล์ชื่อเดียวกันจากที่เก็บชุดที่สอง
made by a newer PaynEat
ไฟล์มาจาก PaynEat รุ่นใหม่กว่า อัปเดต PaynEat ก่อนแล้วกู้อีกครั้ง

🔒 ไฟล์สำรองมีเบอร์โทรลูกค้าและรหัสผ่านพนักงานที่เข้ารหัสแล้ว เก็บ USB drive ไว้ในที่ล็อกได้ อย่าแชร์หรืออัปโหลดขึ้นคลาวด์ · ตัวติดตั้ง Windows บรรทัดเดียว (เดโม): ใช้คำสั่ง Docker ชุดเดียวกันใน PowerShell โดยเพิ่ม -f "$env:USERPROFILE\PaynEat-Demo\docker-compose.yml" ต่อจาก docker compose

บัญชีทดลอง

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

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

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

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

ก่อนใช้จริง

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

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

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

  • ตั้ง JWT_SECRET เป็นค่าสุ่มของร้านเอง เช่นจากคำสั่ง openssl rand -hex 32 — ถ้าตั้ง NODE_ENV=production แต่ใช้ค่าตัวอย่างหรือค่าที่สั้นกว่า 32 ตัวอักษร เซิร์ฟเวอร์จะไม่ยอมเปิด
  • ตั้งรหัสผ่านบัญชีเริ่มต้นเองครบทั้ง 6 ตัว (SEED_ADMIN_PASSWORD … SEED_CASHIER_PASSWORD) หรือปิด AUTO_SEED แล้วสร้างบัญชีพนักงานจริงเอง
  • ตั้ง CORS_ORIGIN เป็นที่อยู่จริงของร้านแทน *
  • เก็บไฟล์ฐานข้อมูลและไฟล์ .env ไว้ในเครื่องร้าน อย่าอัปโหลดหรือแชร์ออกไป · ตั้ง BACKUP_COPY_DIR ไปที่อีกดิสก์ และลองกู้คืนหนึ่งครั้งก่อนเปิดร้าน ตามหัวข้อสำรองและกู้คืนข้อมูล
  • ไม่ใช้ตัวติดตั้งบรรทัดเดียวบน Windows กับร้านจริง เพราะตั้งค่าไว้สำหรับทดลอง
  • ถ้าเชื่อมต่อ PaynEat ERP ใช้ที่อยู่ https:// — ระบบไม่ส่ง credential ของเครื่องผ่าน http:// ยกเว้นไปเครื่องเดียวกัน และห้ามตั้ง ERP_ALLOW_INSECURE_HTTP นอกเครือข่ายปิด · ERP ใช้ใบรับรองจาก CA ภายในของเชน: ดูหัวข้อแก้ปัญหา "ใบรับรอง HTTPS ของ PaynEat ERP ไม่น่าเชื่อถือ"
แก้ปัญหา

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

ขึ้นว่า "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

Docker ขึ้นว่า "required variable JWT_SECRET is missing a value"

ยังไม่ได้ตั้งรหัสลับของเซิร์ฟเวอร์ — สร้างไฟล์ .env ข้าง docker-compose.yml ตามขั้น "ตั้งรหัสลับของเซิร์ฟเวอร์" ในทางที่ 3 แล้วรันใหม่

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

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

หน้าตั้งค่าขึ้นว่า "ที่อยู่ของ PaynEat ERP ต้องขึ้นต้นด้วย https://"

credential ของเครื่องส่งผ่าน https:// เท่านั้น — ขอที่อยู่ https:// ของ ERP จากผู้ดูแล ERP · ที่อยู่ http:// ใช้ได้เฉพาะ ERP ที่รันในเครื่องเดียวกัน (localhost) · ร้านที่เชื่อมต่อด้วย http:// ไว้ก่อนอัปเดต ระบบหยุดส่ง credential แล้ว ให้บันทึกที่อยู่ https:// ใหม่พร้อม credential ที่หน้าตั้งค่า

หน้าตั้งค่าขึ้นว่า "ใบรับรอง HTTPS ของ PaynEat ERP ไม่น่าเชื่อถือ"

เครื่องเซิร์ฟเวอร์ POS ยังไม่เชื่อ CA ที่ออกใบรับรองให้ ERP ของเชน — ขอไฟล์ CA (PEM) จากผู้ดูแล ERP · ตรวจก่อนว่าต่อได้: curl --cacert chain-ca.pem https://ที่อยู่ของ-erp/health ต้องได้ "status":"ok" · จากนั้นเริ่มเซิร์ฟเวอร์ POS ใหม่โดยมี NODE_EXTRA_CA_CERTS=/ที่อยู่/chain-ca.pem ใน environment (ใส่ในไฟล์ backend/.env ไม่ได้ผล เพราะ Node อ่านค่านี้ตอนเริ่มก่อนโหลดไฟล์) · Docker: mount ไฟล์ CA เข้าคอนเทนเนอร์ api แล้วตั้งค่านี้ใน docker-compose.override.yml · ห้ามปิดการตรวจใบรับรอง

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 — บอกทางที่ใช้ ระบบปฏิบัติการ และข้อความที่ขึ้นบนจอ