3 คะแนน โดย GN⁺ 2025-11-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • PocketBase เป็น แบ็กเอนด์โอเพ่นซอร์สแบบไฟล์เดียว ที่รวมฐานข้อมูล ระบบยืนยันตัวตน ที่เก็บไฟล์ และแดชบอร์ดผู้ดูแลระบบในตัว
  • มีโครงสร้างฐานข้อมูลฝังตัวที่มีประสิทธิภาพสูง พร้อม ตัวสร้างสคีมา, การตรวจสอบข้อมูล, การสมัครรับข้อมูลแบบเรียลไทม์, และ REST API
  • รองรับการเข้าสู่ระบบด้วยอีเมล/รหัสผ่าน และ OAuth2 (Google, Facebook, GitHub, GitLab) เพื่อการจัดการผู้ใช้ที่ง่ายขึ้น
  • รองรับการจัดเก็บไฟล์อย่างปลอดภัยบนพื้นที่จัดเก็บแบบ local หรือ S3 และเชื่อมต่อไฟล์สื่อเข้ากับเรกคอร์ดฐานข้อมูลเพื่อสร้าง thumbnail อัตโนมัติ ได้
  • ใช้งานได้ทั้งเป็นแอปพลิเคชันสแตนด์อโลนหรือเป็น เฟรมเวิร์กที่ขยายได้ด้วย Go และ JavaScript เหมาะกับการสร้างแบ็กเอนด์เฉพาะกิจที่น้ำหนักเบา

ภาพรวม PocketBase

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

คุณสมบัติฐานข้อมูล

  • รองรับ ตัวสร้างสคีมา, การตรวจสอบข้อมูล, การสมัครรับข้อมูลแบบเรียลไทม์, และ REST API ในฐานข้อมูลฝังตัว
    • มีฟังก์ชันการตรวจจับการเปลี่ยนแปลงข้อมูลแบบเรียลไทม์และการสมัครรับข้อมูล
    • ผ่าน REST API สามารถค้นหา สร้าง แก้ไข และลบข้อมูลได้อย่างง่ายดาย

การยืนยันตัวตนผู้ใช้

  • รองรับการจัดการผู้ใช้แอปและการเข้าสู่ระบบด้วย อีเมล/รหัสผ่าน
  • รองรับการสมัครและล็อกอินผ่านการยืนยันตัวตน OAuth2 ด้วยบัญชี Google, Facebook, GitHub, GitLab

ที่เก็บไฟล์

  • สามารถเก็บไฟล์ได้อย่างปลอดภัยบนพื้นที่จัดเก็บแบบ local หรือ S3
    • สามารถแนบไฟล์สื่อเข้ากับเรกคอร์ดฐานข้อมูลได้
    • มีฟังก์ชันสร้าง thumbnail อัตโนมัติ ขณะอัปโหลด

ความยืดหยุ่นและการสนับสนุนนักพัฒนา

  • PocketBase สามารถใช้เป็น แอปพลิเคชันสแตนด์อโลน ได้ หรือใช้เป็น เฟรมเวิร์กที่ขยายต่อได้ ผ่าน Go และ JavaScript hooks
    • นักพัฒนาสามารถเพิ่มตรรกะการทำงานของตัวเองเพื่อสร้างแบ็กเอนด์ตามต้องการ

ตัวอย่าง JavaScript SDK

  • ใช้โต้ตอบกับเซิร์ฟเวอร์ PocketBase ผ่าน JavaScript SDK ได้
    • โค้ดตัวอย่างแสดงการดึงรายการเรกคอร์ดจากคอลเลกชัน example การดึงเรกคอร์ดเดียว การลบ การสร้าง และการสมัคร/ยกเลิกการสมัครรับข้อมูลแบบเรียลไทม์
    • ให้เมธอดเช่น pb.collection('example').getList(), getOne(), create(), delete(), subscribe()

1 ความคิดเห็น

 
GN⁺ 2025-11-29
ความคิดเห็นบน Hacker News
  • คำพูดที่ว่า “SQLite ขยายสเกลไม่ได้” ส่วนใหญ่เป็น ภาพลวงของการ optimize เร็วเกินไป
    ในความเป็นจริงแทบไม่ค่อยชนเพดานข้อจำกัดจาก WAL contention และผมคิดว่าความเรียบง่ายของไบนารีเดียวดีกว่าความซับซ้อนของระบบกระจายมาก
    ทุกวันนี้แม้แต่โปรเจกต์เล็ก ๆ ก็มักพ่วง DB cluster กับ Redis cache เป็นเรื่องปกติ แต่ Pocketbase แสดงให้เห็นว่าในแอป CRUD 99% คอขวดไม่ใช่ DB แต่เป็น network latency กับเวลาที่นักพัฒนาต้องใช้ดูแลระบบ

    • สำหรับแอปส่วนใหญ่ คอขวดที่ยากกว่าปัญหาทางเทคนิคคือ การหาผู้ใช้
    • ผมโฮสต์บล็อกส่วนตัวไว้บน droplet ที่ถูกที่สุดของ DigitalOcean และใช้ SQLite
      ลองทดสอบด้วย Rust CLI benchmark แล้วพบว่าบนเครื่องเดียวกันมันทำงานได้ดีกว่า MySQL หรือ Postgres
      สำหรับโปรเจกต์ขนาดนี้ SQLite เหมาะที่สุด
    • แต่เพราะ ไม่มี decimal type เลยทำให้ใช้ SQLite กับการคำนวณทางการเงินได้ยาก
      ต้องให้ฝั่งแอปพลิเคชันจัดการการคำนวณทั้งหมดเอง จึงค่อนข้างยุ่งยาก
  • พอเห็น Pocketbase ก็พร้อมกด upvote ทันที
    ผมใช้อยู่ในหลายแอป production และมันเสถียรมาก
    บางครั้งก็มี breaking change บ้าง แต่โดยรวมยอดเยี่ยมและขยายได้ดี
    เวลาไม่มีฟีเจอร์ที่ต้องการอาจจะลำบากนิดหน่อย แต่ถ้าเป็นนักพัฒนาที่มีประสบการณ์ก็จัดการได้สบาย

    • ผมชอบข้อความใน FAQ มากที่บอกว่า “ถ้าคุณไม่มีเวลาอ่านเอกสารและจะพึ่งแต่ AI tools อย่างเดียว ก็อย่าใช้ Pocketbase”
    • ผมก็คิดเหมือนกัน ลองขยายด้วย JS แล้วใช้งานได้ดีมาก
      แต่เพราะนักพัฒนามีแค่คนเดียว เลยกังวลเรื่องการบำรุงรักษาในอนาคต
      ถึงอย่างนั้น ถ้าต้อง แยก frontend กับ backend มันก็เป็นตัวเลือกที่ดีมากจริง ๆ
    • อยากรู้ว่ากำลังรันแอป production แบบไหนด้วย Pocketbase อยู่บ้าง
  • ผมชอบใช้ Pocketbase กับโปรเจกต์ส่วนตัวและ internal tools
    ถ้าใช้คู่กับ PocketPages จะใช้ file-based routing และ template ได้ง่าย
    ด้วยฟีเจอร์ DB migration อัตโนมัติ ทำให้ใส่การเปลี่ยน schema เข้าไปใน version control ได้
    ถึงขั้นต่อ Gemini protocol server เข้าไปเพื่อสำรวจ personal knowledge graph ด้วย Lagrange

    • ผมกำลังจะโฮสต์บน Raspberry Pi 5 เลยอยากรู้ว่าความต้องการด้านประสิทธิภาพเป็นอย่างไร และเมื่อเทียบกับ Supabase มีข้อจำกัดแปลก ๆ อะไรไหม
    • ผมไม่รู้ว่า Lagrange คืออะไร ดูไม่เหมือนโปรเจกต์เกี่ยวกับ LLM หรือ knowledge graph เลย
  • Pocketbase คือ backend server ที่ตั้งค่าผ่าน GUI ได้
    มันช่วยให้สร้าง backend ที่ทำงานได้แทบไม่ต้องเขียนโค้ด จึงเหมาะกับ prototype, MVP และแอปง่าย ๆ
    แนวคิดแบบนี้ Firebase เป็นคนทำให้แพร่หลาย

    • อยากรู้ว่ามันทำอะไรได้แบบเจาะจงบ้าง
      backend ที่ผมเขียนมักต้องใช้โค้ดหลักร้อยถึงหลักพันบรรทัด เลยอยากรู้ว่ามันมาแทนตรงนั้นได้อย่างไร
      อยากรู้ขอบเขตของแอปที่สร้างได้ด้วยเครื่องมือแบบนี้
    • ดูจากตัวอย่างบนหน้าเว็บแล้วทำให้นึกถึง Parse
  • ผมเคยใช้ Pocketbase ใน side project แล้วประทับใจมาก
    ผมทำงานกับ Django มานาน และสำหรับโปรเจกต์ขนาดเล็กถึงกลาง Pocketbase เหมาะกว่าการสร้าง backend แบบดั้งเดิมเองมาก
    ถ้ามีคำถามก็ยินดีตอบ

    • Django มี GIS integration ที่ยอดเยี่ยม เลยอยากรู้ว่า Pocketbase เป็นอย่างไร
      แล้วมันรองรับ PostgreSQL ด้วยหรือเปล่า หรือว่าใช้ได้เฉพาะ SQLite
    • อยากรู้ด้วยว่าการ migration จาก backend เดิมที่ใช้ SQLite ทำได้ง่ายแค่ไหน
    • ผมก็เคยใช้กับโปรเจกต์ส่วนตัวเหมือนกัน แต่ LLM มักสับสนเวลาต้องโต้ตอบกับ Pocketbase
      เลยลองทำ Claude Skill ขึ้นมา ไม่แน่ใจว่าคนอื่นมีประสบการณ์คล้ายกันไหม
  • Trailbase คือเวอร์ชันที่ทำแนวคิดเดียวกันนี้ด้วย Rust

    • มีหน้าเปรียบเทียบของ TrailBase
    • ผมชอบที่ตัวอย่างไม่ตัด คำสั่ง curl ออก เลยเริ่มรู้สึกดีกับ Trailbase
    • Pocketbase ใช้ SQLite เป็นฐาน แต่ไม่รองรับ nullable column ทำให้ใช้งานลำบาก
      เลยย้ายไป Trailbase
    • Trailbase สามารถรัน JS บน endpoint ได้
      นั่นคือมันสามารถโฮสต์ทั้งแอปได้เลย
      ลิงก์คู่มือ
    • แต่เมื่อมองจากจุดนี้ Pocketbase ก็อาจดูน่าสนใจกว่าก็ได้
  • ผมใช้ Pocketbase เป็น authentication layer สำหรับ side project
    ใช้งานอยู่ที่ kavla.dev และระบบ hook นั้นยอดเยี่ยมมาก
    ด้วย เอกสาร Go event hook ทำให้ทำ infrastructure automation ได้ง่ายมาก

  • ผมเคยทำ MVP ได้เร็วด้วย SQLite กับ DuckDB แต่ภายหลังกลับมาเสียใจในช่วง backup และทำให้พร้อม production
    ถ้าเริ่มต้นด้วย Supabase ตั้งแต่แรกน่าจะง่ายกว่าเยอะ

  • ผมสร้าง OpenSOHO ด้วย Pocketbase และมันช่วยประหยัดเวลาพัฒนาไปได้มาก
    ผมปรับแก้นิดหน่อยเพื่อให้ backend นำกลับมาใช้ซ้ำได้ แต่ไม่ได้ยากอะไร
    แค่ดูจาก screenshot ก็เห็นร่องรอยของ Pocketbase ได้ทันที
    ลิงก์ GitHub

  • เพราะกังวลเรื่อง backup ของ SQLite ใน Pocketbase ผมเลยสร้างเครื่องมือ sqlrsync.com ขึ้นมาเอง ซึ่งสามารถสำรองข้อมูลด้วย sqlite3_rsync ได้แม้ขณะรันอยู่
    MVP ใช้งานได้แล้ว และเพราะอยู่บน Cloudflare Durable Objects เลยทั้งเร็วและเสถียร
    ยินดีรับ feedback

    • ผมก็ชอบ SQLite เหมือนกัน ตอนนี้ใช้การทำ replication ต่อเนื่องด้วย litestream เลยอยากรู้ว่าคุณใช้ SQLite rsync อยู่หรือเปล่า
    • อยากรู้ว่าเคยลองใช้ online backup API ของ SQLite ไหม ดูเหมือนควรหลีกเลี่ยงการเข้าถึงไฟล์ดิบโดยตรง
    • อยากรู้ว่าความแตกต่างระหว่าง sqlrsync กับ litestream คืออะไร