Host your own library - Calibre

Table of Contents

1. Install

我使用的是 digitalocean 的 Debian, debian軟件庫裡面就有 calibre,直接命令安裝即可。

apt install calibre

2. Create library

我在主機上直接創建目錄,這個目錄是給 Calibre 儲存書籍和額外的 metadata

mkdir calibre

3. Add book

這裡直接下載本範文來測試

cd ~
wget "http://gutenberg.org/ebooks/1112.kindle.noimages" -O book.mobi

把書籍加到剛創建的目錄加裡

calibredb add book.mobi --with-library calibre

4. Run Web Server

Calibre 最方便的功能 - Web server 直接在瀏覽器瀏覽書籍,閱讀各種各式的書籍(包括自己主要接觸的epub 和 pdf), 編輯書本 metadata,上傳書本。 個人認為界面也比客戶端簡潔。

  • Web
  • App

運行 Web server 自需要

calibre-server calibre

如果你機器安裝了 ufw, 請 allow 8080, Calibre 默認佔用 0.0.0.0:8080

sudo ufw allow 8080

5. (Optional) Calibre service

sudo vim /etc/systemd/system/calibre-server.service

calibre-server.service : (U may need to change User, Group, ExecStart)

[Unit]
Description=Calibre Server
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/calibre-server  --enable-local-write /root/calibre

[Install]
WantedBy=multi-user.target

Command for start service

sudo systemctl enable calibre-server
sudo systemctl start calibre-server

6. Add User for Calibre

添加用戶名和密碼來登陸 Calibre Web service

userdb 可以自由決定用戶資料儲存在服務器的位置

calibre-server --manage-users --userdb=/tmp/users.sqlite

修改 service config, 加上 enable-auth and userdb

[Unit]
Description=Calibre Server
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/calibre-server --userdb=/tmp/users.sqlite --enable-auth --enable-local-write /root/calibre/
[Install]
WantedBy=multi-user.target

7. (Optional) Host Calibre web using apache & SSL

PS. 以下內容是基於服務器已經安裝了 apache 2 和 Lets encrypt 的 certbot, 並有一定域名設定基礎下進行 (搜索 apache,lets encrypt 立刻有大量知識和步驟,所以這裡略過)

如果想把 Calibre Web server 用域名訪問, 加上 SSL 能讓你網站連結變得安全。而其中一個 common stack 就是 apache2 加上 Lets encrypt。

由於 Calibre 自帶了 web server 而且佔用 8080(端口其實可以自由更改), 如果我們使用 apache 便要使用 Proxy redirect 去 http://localhost:8080

7.1. DNS record

首先使用服務器供應商的 DNS records,添加 domain 給 Apache, 我這裡選擇 sub domain 去訪問我的 Calibre

7.2. Enable proxy mod

打開 apache 的 proxy 模組

sudo a2enmod proxy proxy_http

檢查端口是否開啟, 亦可以刪除 ufw 的 8080,我們以後直接用hostname進入,由apache internal redirect.

sudo ufw allow 'Apache Full'
sudo ufw delete allow 8080

7.3. apache site file

創建一個 virtual host 專門讓apache redirect 到 Calibre 的 localhost:8080 (請更改 ~yourdomain~)

sudo vim /etc/apache2/sites-available/your_domain.conf

(更改 ServerName)

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<VirtualHost *:80>
    ServerName your_domain
    AllowEncodedSlashes On
    ProxyPreserveHost On
    ProxyPass "/"  "http://localhost:8080/"
</VirtualHost>

儲存,然後讓apache 加載這個 config 文件

sudo a2ensite your_domain.conf
systemctl reload apache2

7.4. Lets encrypt

非常簡單,只需要運行以下命令,cerbot 便會自動抓取 cert,apache domain 完成證書的註冊。讓你的網站加上 https

sudo certbot --apache -d your_domain

8. Reference

Date: 2023-11-15 Wed 00:00

Author: Terry Fung

Created: 2024-11-10 Sun 14:09

Emacs 29.4 (Org mode 9.6.15)

Validate