ทำความรู้จัก Bookshelf: ห้องสมุดส่วนตัวบนระบบคลาวด์
ถ้าคุณเป็นคนชอบสะสมไฟล์หนังสือแบบ eBook (หนังสืออิเล็กทรอนิกส์) ไว้ในเครื่อง แต่เบื่อกับการต้องเปิดหาไฟล์ทีละเล่ม หรืออยากมีที่อ่านหนังสือส่วนตัวที่เปิดจากอุปกรณ์ไหนก็ได้ Bookshelf คือคำตอบครับ มันคือซอฟต์แวร์แบบ Self-hosted (ระบบที่เราติดตั้งและดูแลเองบนเซิร์ฟเวอร์ของเรา) ที่ช่วยเปลี่ยนโฟลเดอร์เก็บไฟล์ PDF หรือ EPUB ให้กลายเป็นเว็บไซต์ห้องสมุดสวย ๆ ใช้งานง่ายเหมือนอ่านหนังสือออนไลน์เลยครับ
ลองจินตนาการว่าคุณมีตู้หนังสือดิจิทัลที่บ้าน แทนที่จะวางหนังสือทิ้งไว้ในโฟลเดอร์เฉย ๆ Bookshelf จะทำหน้าที่เป็นบรรณารักษ์ จัดหมวดหมู่ มีช่องค้นหา และมีโปรแกรมอ่านหนังสือในตัวให้คุณทันที สิ่งที่น่าสนใจคือมันรองรับการทำงานบน Object Storage (พื้นที่เก็บข้อมูลบนคลาวด์ที่เน้นเก็บไฟล์จำนวนมาก) อย่าง Cloudflare R2 ทำให้คุณไม่ต้องเช่าเซิร์ฟเวอร์ราคาแพงเพื่อเก็บแค่ไฟล์หนังสือครับ
สำหรับมือใหม่ที่กำลังฝึกเขียนโค้ด โปรเจกต์นี้เป็นตัวอย่างที่ดีมากในการเรียนรู้เรื่องการจัดการไฟล์ การทำ Docker (เครื่องมือจำลองสภาพแวดล้อมเพื่อให้แอปทำงานได้ทุกเครื่อง) และการเชื่อมต่อกับบริการคลาวด์ คุณจะได้เห็นว่าการเขียนโปรแกรมไม่ใช่แค่เรื่องของโค้ดในหน้าจอ แต่มันคือการสร้างเครื่องมือที่ช่วยให้ชีวิตเราสะดวกขึ้นจริง ๆ ครับ
เตรียมความพร้อมก่อนเริ่มติดตั้ง
ก่อนจะลงมือติดตั้ง เราต้องเตรียมเครื่องมือพื้นฐานให้พร้อมก่อนครับ ระบบนี้รองรับการใช้งานผ่าน Docker Compose (คำสั่งสำหรับรันแอปพลิเคชันที่ประกอบด้วยหลายส่วนพร้อมกัน) ซึ่งเป็นวิธีที่ง่ายที่สุดและแนะนำสำหรับมือใหม่ เพราะมันจะติดตั้งสิ่งที่จำเป็นให้ครบโดยไม่ต้องไปยุ่งกับค่าตั้งค่าในเครื่องคอมพิวเตอร์ของคุณเอง
สิ่งที่คุณต้องมีคือเครื่องที่ติดตั้ง Docker แล้ว รวมถึงโปรแกรม Git (เครื่องมือสำหรับดาวน์โหลดและจัดการซอร์สโค้ด) เพื่อดึงโปรเจกต์ลงมาครับ ที่สำคัญคือคุณควรมีไฟล์หนังสือตัวอย่างเตรียมไว้ในโฟลเดอร์ books/ ของคุณก่อนเริ่ม เพื่อที่เราจะได้เห็นผลลัพธ์ทันทีที่รันโปรแกรมขึ้นมาใช้งานครับ
ข้อควรระวังคือ Bookshelf เน้นรันบนระบบปฏิบัติการแบบ Unix (เช่น Linux หรือ macOS) ดังนั้นถ้าคุณใช้ Windows แนะนำให้ใช้ WSL (ระบบย่อยของ Windows ที่ทำให้รัน Linux ได้) เพื่อให้การทำงานของโปรแกรมราบรื่นที่สุดครับ
# สร้างโฟลเดอร์สำหรับเก็บหนังสือ
mkdir books
# คัดลอกไฟล์หนังสือ .epub หรือ .pdf ลงไปในโฟลเดอร์นี้
cp ~/Downloads/my-book.epub books/
# สั่งให้ Docker เริ่มทำงานและสร้างห้องสมุด
docker compose run --rm sync --create
docker compose up -d
จากตัวอย่างด้านบน เราเริ่มจากการสร้างโฟลเดอร์เก็บไฟล์ จากนั้นสั่ง sync เพื่อให้ระบบอ่านไฟล์หนังสือและสร้างดัชนีรายการหนังสือให้เรา สุดท้ายใช้ docker compose up -d เพื่อเปิดเซิร์ฟเวอร์ให้ทำงานเบื้องหลังครับ หลังจากนั้นคุณสามารถเปิดเบราว์เซอร์ไปที่ http://localhost:3000 เพื่อดูผลงานได้เลย
ปรับแต่งการใช้งานและข้อจำกัดที่ควรทราบ
การใช้งาน Bookshelf มีความยืดหยุ่นสูงมาก คุณสามารถเลือกได้ว่าจะรันบนเครื่องตัวเอง หรือจะเอาขึ้นไปวางบน Cloudflare Workers (บริการรันโค้ดบนระบบคลาวด์ของ Cloudflare) เพื่อให้คนอื่นเข้าถึงได้จากทั่วโลก แต่มีข้อควรระวังเรื่องความปลอดภัยที่มือใหม่ต้องจำไว้ให้ดีครับ
ระบบนี้ในปัจจุบัน ไม่มีระบบล็อกอิน (Authentication) หมายความว่าใครก็ตามที่มีลิงก์เว็บของคุณ จะสามารถเข้ามาอ่านหรือดาวน์โหลดหนังสือทุกเล่มในห้องสมุดได้ทันทีครับ ถ้าคุณทำห้องสมุดส่วนตัว แนะนำให้รันไว้บนวงเครือข่ายภายในบ้าน หรือใช้ตัวช่วยอย่าง VPN (เครือข่ายส่วนตัวที่ปลอดภัย) ในการเข้าถึงแทนครับ
หากคุณอยากทดลองเล่นแต่ไม่มีหนังสือในมือ ก็ไม่ต้องกังวลครับ ตัวโปรเจกต์มีคำสั่งพิเศษที่ช่วยสร้างหนังสือตัวอย่างขึ้นมาให้เราทดสอบระบบได้ทันทีโดยไม่ต้องไปหาไฟล์เองครับ
# สร้างหนังสือตัวอย่างขึ้นมา 9 เล่มเพื่อทดสอบหน้าตาเว็บ
npm run demo
เมื่อรันคำสั่ง npm run demo ระบบจะสร้างไฟล์หนังสือสมมติขึ้นมาในโฟลเดอร์ books/ ให้โดยอัตโนมัติ ช่วยให้คุณทดสอบการจัดวางหน้าตาและฟีเจอร์การอ่านหนังสือในเบราว์เซอร์ได้ทันทีครับ
สรุป: เปลี่ยนโปรเจกต์นี้ให้เป็นประสบการณ์เรียนรู้
การลองติดตั้งและใช้งาน Bookshelf ไม่ใช่แค่เรื่องของการมีที่เก็บหนังสือ แต่คือโอกาสในการฝึกฝนทักษะการเป็นโปรแกรมเมอร์ครับ คุณจะได้ลองใช้เครื่องมือจริงที่โปรแกรมเมอร์ใช้กันในชีวิตประจำวัน เช่น การรันคอนเทนเนอร์ด้วย Docker การจัดการไฟล์บนคลาวด์ และการอ่านเอกสารประกอบของโปรเจกต์ (Documentation) เพื่อนำมาประยุกต์ใช้จริง
ลองนำความรู้นี้ไปต่อยอดดูครับ เช่น ลองหาวิธีจำกัดสิทธิ์การเข้าถึงด้วย Nginx (โปรแกรมจัดการเซิร์ฟเวอร์) หรือลองปรับแต่งหน้าตาเว็บไซต์ด้วย CSS (ภาษาที่ใช้ตกแต่งหน้าเว็บ) เพื่อให้ห้องสมุดของคุณมีสไตล์ที่เป็นเอกลักษณ์ไม่เหมือนใครครับ
ตัวอย่างการนำไปใช้จริง: สมมติคุณมีหนังสือเรียนวิชาเขียนโปรแกรมเป็น PDF จำนวนมาก แทนที่จะเก็บกระจัดกระจายในคอมพิวเตอร์ คุณสามารถใช้ Bookshelf ทำเป็นห้องสมุดส่วนตัวไว้เปิดอ่านผ่านแท็บเล็ตเวลาเดินทาง หรือใช้เป็น Portfolio อวดเพื่อน ๆ ว่าคุณสามารถจัดการระบบคลาวด์และโปรเจกต์ Open Source ได้ด้วยตัวเองครับ นี่คือจุดเริ่มต้นของการสร้างระบบที่ใช้งานได้จริง ไม่ใช่แค่โค้ดในแบบฝึกหัดครับ
ที่มา: Bookshelf – Self-hosted eBook library that runs on object storage — Hacker News