Bookshelf – Thư viện sách điện tử tự lưu trữ chạy trên object storage
Bookshelf là một công cụ mã nguồn mở cho phép bạn tự xây dựng thư viện sách điện tử từ những cuốn EPUB và PDF mà bạn sở hữu. Nổi bật với khả năng triển khai linh hoạt trên Cloudflare Workers với R2 hoặc trên máy chủ Node.js, Bookshelf cung cấp giao diện đọc sách ngay trong trình duyệt, hỗ trợ hồ sơ người đọc và lưu vị trí đọc. Dự án đặc biệt phù hợp với xu hướng tự lưu trữ dữ liệu đang ngày càng phổ biến trong cộng đồng công nghệ.

Bookshelf – Thư viện sách điện tử tự lưu trữ chạy trên object storage
Trong bối cảnh các dịch vụ đám mây thương mại ngày càng siết chặt quyền kiểm soát dữ liệu người dùng, việc tự lưu trữ (self-host) các tài sản số đang trở thành xu hướng được cộng đồng công nghệ đặc biệt quan tâm. Bookshelf nổi lên như một giải pháp mã nguồn mở ấn tượng, cho phép người dùng xây dựng thư viện sách điện tử riêng với khả năng tùy biến cao, hỗ trợ đa nền tảng từ Cloudflare Workers đến máy chủ truyền thống.
Điểm mạnh của Bookshelf nằm ở kiến trúc đơn giản nhưng hiệu quả: một trang web được render từ phía máy chủ giúp liệt kê toàn bộ sách, kèm theo hộp tìm kiếm để lọc nhanh, hỗ trợ tải xuống và đọc trực tiếp trên trình duyệt cho cả định dạng EPUB và PDF – mỗi loại có trình đọc riêng biệt. Đặc biệt, toàn bộ hệ thống có thể vận hành ngay trên Cloudflare Workers với R2 (object storage) hoặc đơn giản là một thư mục trên ổ cứng.
Triển khai linh hoạt với ba phương thức chính
1. Sử dụng Docker – nhanh nhất cho người mới bắt đầu
Cách đơn giản nhất để bắt đầu là dùng Docker, vì image đã được đóng gói sẵn các công cụ xử lý ảnh bìa (cwebp và pdftoppm) mà không cần cài đặt thêm gì trên máy chủ. Chỉ với vài lệnh:
mkdir books && cp ~/Downloads/*.epub books/
docker compose run --rm sync --create
docker compose up -d
Thư viện sẽ hoạt động ngay tại http://localhost:3000. Toàn bộ dữ liệu sách và vị trí đọc được lưu trong một volume riêng tên library – thứ duy nhất bạn cần sao lưu.
2. Trên máy chủ riêng không cần tài khoản đám mây
Nếu muốn kiểm soát toàn bộ dữ liệu, bạn có thể chạy Bookshelf trên VPS hoặc máy tính cá nhân với cấu hình đơn giản trong file bookshelf.config.json:
{ "storage": { "provider": "fs", "directory": "shelf-data" } }
Chỉ cần chạy lệnh sync để xây dựng và xuất bản thư viện, sau đó khởi động app là xong. Ưu điểm lớn nhất là không cần tài khoản hay đăng ký dịch vụ bên ngoài nào.
3. Trên Cloudflare – mở rộng không giới hạn với R2
Dành cho những ai muốn tận dụng hạ tầng edge computing của Cloudflare, Bookshelf cho phép triển khai như một Worker với bộ nhớ R2. Quy trình xuất bản cũng tương tự, nhưng sẽ tạo bucket và tải dữ liệu lên đám mây:
npm run sync -- --create
npm run deploy
Hệ thống tự động kiểm tra chéo giữa bucket và tên Worker, bất kỳ sự không khớp nào cũng sẽ được báo lỗi thay vì phát hành thư viện rỗng.
Trải nghiệm người dùng được chăm chút
Giao diện thư viện sách Bookshelf
Bookshelf đi kèm hai tính năng đáng giá ngay từ phiên bản đầu:
- Hồ sơ người đọc (Profiles): Cho phép nhiều người trong gia đình cùng sử dụng một thư viện, mỗi người có vị trí đọc và dấu trang riêng biệt. Đây là cách hữu hiệu để tránh xung đột khi dùng chung thiết bị.
- Chế độ chỉ đọc (Read-only): Khi triển khai công khai, bạn có thể kích hoạt
BOOKSHELF_READ_ONLY=1để ngăn bất kỳ thay đổi nào từ bên ngoài – hữu ích khi muốn chia sẻ thư viện với bạn bè mà không sợ bị phá hỏng dữ liệu.
Trải nghiệm đọc được tối ưu ngay trong trình duyệt với công cụ render sách mượt mà, giúp bạn không cần cài thêm ứng dụng đọc sách chuyên dụng.
Dùng thử ngay với kho sách demo
Điểm thú vị của Bookshelf là bạn không cần phải có sẵn sách để kiểm thử. Lệnh npm run demo sẽ tạo ra một kệ sách gồm 9 tựa sách thuộc phạm vi công cộng – 8 EPUB và 1 PDF – để bạn có thể trải nghiệm cả hai trình đọc mà không phải tìm kiếm sách thủ công. Điều này cũng giúp việc đánh giá sản phẩm trước khi quyết định dùng thật.
Hạn chế cần lưu ý
Dự án được phát triển với triết lý tối giản, nhưng điều đó cũng đồng nghĩa với việc thiếu vắng một số tính năng bảo mật:
- Không có xác thực (authentication): Bất kỳ ai có URL đều có thể đọc và tải toàn bộ thư viện. Do đó, bạn chỉ nên triển khai trên mạng tin cậy hoặc đặt sau một lớp proxy yêu cầu đăng nhập.
- Xung đột khi đọc đồng thời: Nếu hai thiết bị dùng chung một hồ sơ (profile), cơ chế ghi sẽ theo nguyên tắc "ghi sau thắng" (last-write-wins), có thể ghi đè vị trí đọc của nhau.
Tổng kết
Bookshelf là một dự án mã nguồn mở đáng chú ý cho những ai đang tìm kiếm giải pháp quản lý sách điện tử tự chủ, không bị ràng buộc bởi các nền tảng đóng như Kindle hay Google Play Books. Với kiến trúc đơn giản, hỗ trợ đa dạng nền tảng lưu trữ và giao diện sạch sẽ, dự án này xứng đáng nằm trong danh sách theo dõi của cộng đồng tự lưu trữ tại Việt Nam – nơi nhu cầu kiểm soát dữ liệu cá nhân đang ngày càng được chú trọng.
Mục tiêu phát triển liên tục của dự án
Nếu bạn muốn đóng góp, dự án hoan nghênh mọi pull request. Điểm mở rộng chính nằm ở storage providers – bạn có thể tự viết provider riêng và đăng ký vào cấu hình mà không cần fork toàn bộ mã nguồn. Giấy phép MIT giúp bạn thoải mái sử dụng cho cả mục đích cá nhân lẫn thương mại.