Calibreの本棚(コンテンツサーバ)に外部からアクセスする環境を整えるメモ(Cloudflare Tunnel利用)

Calibreのコンテンツサーバ機能はとても便利だ。Webブラウザから蔵書を検索できるのは利便性が高い。できればインターネット上からアクセスできると、外で本をダウンロードできるし、また本屋で「これ積んでるっけ?」と悩まなくて済む(読め)。

ということで、Calibreの本棚(コンテンツサーバ)をインターネット上に公開しつつ、自分以外はアクセスできない状態にしたい。前提条件として、Cloudflareでドメイン管理していること(Cloudflareのサービスを利用するので)。

Calibreの機能としてはユーザアカウントを管理してパスワード保護したうえで外部公開、みたいなのがドキュメントにあるのだけれど(calibre コンテンツサーバー — calibre 7.10.0 ドキュメント)、Cloudflare使うほうが簡単かつ安全かなと思う。

目次

前提と環境

前提

  • Cloudflareでドメインを管理している
    • ネームサーバもCloudflare

ホストマシンはMacを使うが、WindowsでもLinuxでもできるはず。以下の環境。

  • M2 Pro Mac mini 2023
  • macOS 14.4.1
  • cloudflared 2024.4.1 (built 2024-04-22T22:16:50Z)
  • Calibre 7.10

Cloudflare Tunnelを利用する。これは使うと簡単にNAT越えっぽいことができる。構成的には以下のような感じになる。

graph LR client(Client) cf(Cloudflare) subgraph Mac calibre(Calibre) cloudflared(cloudflared) end client -->|books.example.com| cf cf -->|tunnel| cloudflared cloudflared -->|http://localhost:8080| calibre

つまり books.example.com にアクセスすることで、localhostのコンテンツサーバにアクセスできるようにする。これだけ見ると全世界に本棚公開やんけとなるが、素晴らしいことにGUIで設定ポチポチするだけで、メールアドレスによる認証ができる

Cloudflareのサービスをめっちゃ使うので、Cloudflareでドメイン管理していることが前提条件となる。

手順のメモ

UIとかどうせ変わりそうだから、かなり雑に手順。まぁだいたいわかるでしょくらいの感じで。

Calibreでコンテンツサーバを起動する

まぁまずは言わずもがなだけれど、Calibreで「接続/共有」よりコンテンツサーバを起動する。デフォルトだとlocalhostの8080だろう。

Cloudflareでトンネル作成する

  1. Cloudflareのコンパネにログイン
  2. Zero Trustを起動してNetworksのTunnelsよりトンネルを作成する
  3. 流れに沿って設定していく。トンネル名はなんかわかりやすいヤツを適当に。ホストマシンに cloudflared をインストールしてトンネル開通
    • Macの場合はhomebrewでインストールのうえ、 /Library/LaunchDaemons/com.cloudflare.cloudflared.plist にplistファイルが作成される
      • エラーログは /Library/Logs/com.cloudflare.cloudflared.err.log に出るのでなんかおかしかったら見るとよい
      • デーモンの起動や停止は launchctl start(stop) com.cloudflare.cloudflared で。
    • 疎通したらダッシュボードにその旨が出るので確認
  4. Public Hostnameからpublic hostnameを追加する。サブドメイン適当に決める
    • ここで決めたサブドメインはDNSのレコードにCNAMEで登録される
    • 疎通先を http://localhost:8080 にする

これで設定したドメインにアクセスするとCalibreのコンテンツサーバにアクセスできるようになる。

Accessで認証入れる

このままだと全世界に自分の本棚が公開されてしまい、著作権法上も大きな問題であるし、自分の尊厳も問題になると思われるため(本棚による)認証を入れる。

  1. Zero TrustよりAccess -> ApplicationsよりApplicationを追加
  2. Self-hosted
  3. 名前はなんかわかりやすいやつにする。ドメインは上で設定したドメインにしてNext
  4. ポリシーの名前はなんか適当に決める
  5. Configure Rulesはメールアドレスにして、許可するメールアドレスを指定してNext
    • IPアドレスの指定とかもできる
  6. CORSとかCookieの設定ができるが特に何もせずAdd an application
    • 必要があればやる

これで当該ドメインにアクセスするとメールアドレスの認証が求められる。メールアドレスを入力すると、6桁の一時パスが送られるのでそれを使ってログイン。とても便利。

応用: Dockerでコンテンツサーバを別のインスタンスで起動する

Dockerでコンテンツサーバのコンテナを作ることにより、自動的にサーバ起動させるとか、特定の本棚のみ公開するとかも可能だ。なんでわざわざDockerを使うかというと、calibre-serverのインスタンスは同時に複数起動できないためだ。なのでコンテンツサーバ専用のコンテナを作成する感じ。

これによってGUIのCalibreの起動状況を確認しなくてよくなったり、pdfなどの資料の共有をしたり、共有時にプライベートのあらやだ奥さんみたいな本が間違って目に入るような事故を起こさずにすんだりなど、けっこう便利に使えるのだが、書き始めるとそれだけで記事になってしまうため割愛。気が向いたら記事にする。

(追記)記事にした。

あわせて読みたい
Calibreで特定の本棚を公開するだけのコンテンツサーバをコンテナ化 pdfとかpptの資料管理としてCalibreを使っていて、コンテンツサーバを起動することでWebブラウザから本棚にアクセスできる。で、これを使って資料を共有すると便利だな...

所感: 自宅サーバ復活の予感

10年くらい前に自宅サーバは浪漫枠みたいな記事を書いた。

あわせて読みたい
自宅サーバーは浪漫枠 3,4年くらい前に、格安のサーバーが流行っていました。HPのMicroserverは、3.5インチのベイが4台分ある、コンパクトなサーバーマシンで、15,000円という今見ると破格の...
2015年の記事だと……

しかし、Cloudflare TunnelとDockerのおかげで、一時は浪漫枠になったかと思われた自宅サーバに復活の機運を感じる。今までネットワークの設定とかインフラのメンテナンスがめんどくさすぎ問題のために、自宅サーバなんかもうやってられませんわという感じだったのだが、Cloudflare Tunnelで極めて楽にネットワークが構築できるようになり、さらにDockerを使えばソフト面の構築・運用も楽々。

まぁもちろん可用性の確保とかスケーラビリティとか考え出すと自宅サーバはキツいのだが、逆に言うとそこらへん適当でいいなら自宅サーバで全然OK。

で、こういう大量のデータを扱うコンテンツサーバは自宅サーバ向きの一つ。さらに言うと、最近のクラウドは検閲めいたことも平気でやるので、プライベートなデータを置いておくには不安で仕方ない。垢BAN気にしなくていいのは精神的にだいぶ楽。あと最近はAIが出てきたのもある。グラボも回したりベクトルデータ扱えるElasticsearchみたいなリッチなサーバもほしくなるが、このへんはクラウドでやると余裕で破産できるので、オンプレミスにも価値が出てきた。

そんなわけで、自宅サーバもアリなんじゃないかと思うようになってきた今日この頃である。

参考記事

ありがとうございました。

本サイトはUXを悪くするevilなGoogle広告を消しました。応援してくださる方は おすすめガジェット を見ていってください!
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次