Từ bỏ Audible: Xây dựng máy chủ Audiobook & E-book chuyên nghiệp với Audiobookshelf và Docker

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Thực trạng lộn xộn của việc quản lý sách thủ công

Có lẽ bạn đã bắt đầu xây dựng thư viện số của mình bằng cách đưa các tệp EPUB và M4B vào một thư mục “Books” trên Synology NAS hoặc Google Drive. Nó có thể đáp ứng nhu cầu lưu trữ, nhưng trải nghiệm thực sự tồi tệ khi bạn muốn đọc hoặc nghe. Các nền tảng thương mại như Audible và Kindle cung cấp một trải nghiệm trau chuốt hơn nhiều.

Chúng ghi nhớ trang bạn đang đọc, tự động tải ảnh bìa và giúp việc tìm kiếm trở nên dễ dàng. Tuy nhiên, các dịch vụ này tiêu tốn khoảng 15 USD mỗi tháng và trói buộc bạn bằng DRM (Quản lý bản quyền nội dung số). Về cơ bản, bạn đang thuê những cuốn sách mà mình đã trả tiền để mua.

Các máy chủ media thông thường chính là vấn đề. Những công cụ như Jellyfin hay Plex rất tuyệt vời cho phim 4K, nhưng chúng lại coi một cuốn sách nói dài 20 tiếng như một bài hát cực dài và một cuốn e-book như một tệp PDF ngẫu nhiên. Những công cụ này thiếu cấu trúc cho các bộ sách, người dẫn chuyện hoặc ngày xuất bản cụ thể. Audiobookshelf được xây dựng dành riêng để giải quyết vấn đề này cho cộng đồng HomeLab.

Tôi nhận thấy rằng việc quản lý tệp thủ công sẽ trở nên quá tải khi bạn vượt mốc 100 đầu sách. Nếu bạn muốn thoát khỏi hệ sinh thái của các ông lớn công nghệ mà không làm mất đi các tính năng cao cấp yêu thích, việc xây dựng một máy chủ sách chuyên dụng là bước đi tốt nhất bạn có thể thực hiện.

Tại sao Audiobookshelf lại giành chiến thắng

Audiobookshelf là một giải pháp mã nguồn mở mạnh mẽ. Không giống như các máy chủ thông thường, nó hiểu được những sắc thái riêng của văn học. Nó tự động lấy dữ liệu từ Audible, Google Books và Open Library để sắp xếp các tệp của bạn vào một giao diện sạch sẽ và chuyên nghiệp.

Đồng bộ tiến trình là điểm mà phần mềm này thực sự tỏa sáng. Bạn có thể tạm dừng một chương trên máy tính lúc 10:15 sáng và tiếp tục chính xác tại giây đó trên điện thoại khi đang di chuyển lúc 5:30 chiều. Nó cũng quản lý cả podcast, biến máy chủ của bạn thành một trạm trung tâm cho tất cả các phương tiện truyền thông dạng nói. Chạy ứng dụng này trên Docker giúp nó được cô lập và việc chuyển sang phần cứng mới đơn giản như việc di chuyển một thư mục.

Triển khai Audiobookshelf bằng Docker Compose

Docker Compose là cách đáng tin cậy nhất để xử lý thiết lập này. Nó định nghĩa mạng và bộ lưu trữ của bạn trong một tệp duy nhất, giúp việc triển khai có thể lặp lại và dễ dàng khắc phục sự cố.

1. Thiết lập các thư mục

Đừng để lẫn lộn các tệp cấu hình với dữ liệu media của bạn. Hãy tạo một cấu trúc thư mục chuyên dụng trên máy chủ để giữ mọi thứ ngăn nắp.

mkdir -p ~/homelab/audiobookshelf/{config,metadata}
mkdir -p ~/homelab/data/{audiobooks,ebooks,podcasts}

2. Tệp Docker Compose

Tạo một tệp docker-compose.yml bên trong thư mục audiobookshelf của bạn. Cấu hình này sử dụng image chính thức và ánh xạ các volume tới các thư mục chúng ta vừa tạo.

version: "3.7"
services:
  audiobookshelf:
    container_name: audiobookshelf
    image: ghcr.io/advplyr/audiobookshelf:latest
    ports:
      - 1337:80
    volumes:
      - ./config:/config
      - ./metadata:/metadata
      - ~/homelab/data/audiobooks:/audiobooks
      - ~/homelab/data/ebooks:/ebooks
      - ~/homelab/data/podcasts:/podcasts
    environment:
      - AUDIOBOOKSHELF_UID=1000
      - AUDIOBOOKSHELF_GID=1000
    restart: unless-stopped

Trong cấu hình này, tôi đã ánh xạ cổng nội bộ 80 sang cổng máy chủ 1337. Các biến UIDGID (thường là 1000 cho người dùng Linux chính) đảm bảo container có đủ quyền để ghi ảnh bìa và metadata vào ổ đĩa của bạn.

3. Khởi chạy Container

Sau khi đã lưu tệp, hãy khởi chạy dịch vụ ở chế độ chạy ngầm bằng một câu lệnh duy nhất:

docker-compose up -d

Thiết lập ban đầu và Tổ chức Thư viện

Truy cập bảng điều khiển web bằng cách truy cập http://your-server-ip:1337. Nhiệm vụ đầu tiên của bạn là tạo một tài khoản admin. Hãy sử dụng một mật khẩu mạnh; máy chủ này cuối cùng sẽ nắm giữ toàn bộ bộ sưu tập tri thức của bạn.

Cấu hình Thư viện đầu tiên của bạn

Audiobookshelf phân loại nội dung theo loại. Bạn không chỉ trỏ nó vào một ổ đĩa; bạn cần định nghĩa những gì bên trong mỗi thư mục. Để thêm sách của bạn:

  • Mở mục “Libraries” ở thanh bên và nhấp vào “Add Library”.
  • Chọn “Audiobooks” hoặc “E-books”.
  • Chọn đường dẫn /audiobooks hoặc /ebooks (đường dẫn nội bộ trong container).
  • Đặt tên cho thư viện và lưu lại.

Metadata Tự động

Máy chủ sẽ quét các tệp của bạn ngay lập tức. Nếu quy ước đặt tên của bạn tương đối rõ ràng (ví dụ: Tác giả - Tiêu đề.m4b), nó sẽ khớp chúng với các cơ sở dữ liệu trực tuyến. Nếu khớp thất bại, hãy nhấp vào nút “Match”. Trình cung cấp Audible thường cung cấp ảnh bìa độ phân giải cao nhất và dữ liệu chương chính xác nhất.

Xác minh và Truy cập từ xa

Máy chủ chỉ thực sự hữu ích nếu nó có thể truy cập được. Bạn cần xác minh rằng dữ liệu của mình an toàn và có thể truy cập khi bạn rời khỏi mạng Wi-Fi tại nhà.

Sử dụng trên di động

Các ứng dụng di động cho Android và iOS rất tuyệt vời. Để đồng bộ tiến trình, hãy trỏ ứng dụng tới IP máy chủ của bạn. Để truy cập thư viện từ quán cà phê hoặc khi đang di chuyển, tôi khuyên bạn nên sử dụng VPN như Tailscale hoặc reverse proxy như Nginx Proxy Manager. Kiểm tra việc đồng bộ bằng cách phát một cuốn sách trên điện thoại, nhấn tạm dừng và kiểm tra giao diện web trên máy tính xách tay. Nó sẽ cập nhật trong vòng 2 đến 3 giây.

Bảo trì và Hiệu suất

Nếu ảnh bìa không tải được, hãy kiểm tra nhật ký container để xem có lỗi về quyền truy cập hay không:

docker logs -f audiobookshelf

Hãy theo dõi thư mục metadata của bạn. Nếu thư viện của bạn tăng lên hơn 1.000 cuốn sách, thư mục này có thể dễ dàng phình to lên đến vài gigabyte vì nó lưu trữ hình ảnh độ phân giải cao và các bản sao lưu cơ sở dữ liệu. Bạn có thể theo dõi tài nguyên sử dụng bằng lệnh:

docker stats audiobookshelf

Bạn đã thay thế thành công đống tệp lộn xộn bằng một hệ sinh thái media riêng tư và chuyên nghiệp. Bạn sở hữu dữ liệu của mình, tiến trình luôn được đồng bộ và bạn không còn bị ràng buộc bởi hóa đơn hàng tháng chỉ để nghe một câu chuyện.

Share: