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