Obsidianを自前サーバーで同期させる

Notionは無料でも使えるが、データをどこかのサービスに依存させるのは不安もある。これは、今はなきEvernoteでもそうだったし、Appleのメモでも同様だ。

そこで、Notionライクであり、MD記法が使えるローカルアプリ「Obsidian」を使ってみることにした。

Obsidianの最大のメリットは、データを人質に取られないこと。しかしその一方で、ローカルアプリであるため、標準では同期が取れないという課題がある。

同期を取るには、以下の3つの方法がある:

  1. 公式有料のデータサーバーをサブスク契約する
  2. クラウドドライブを使って、やや不安定ながらも同期を試みる
  3. 自前サーバーを用意して同期を実現する

ちょっと難しそうではあるが、自前サーバーがあるので、勉強がてら3番目の方法に挑戦してみることにした。
日本人の方が開発した「Self-hosted Livesync」というObsidianプラグインがある。このプラグインと自前サーバーに「CouchDB」が用意できれば、Obsidianの無料同期環境が構築できる!

セットアップ

サーバーサイド

自前サーバーはXserverのVPS契約の格安環境である。サーバーサイドで行うことは以下の通り。

  • OSのセットアップ
  • Dockerのセットアップ
  • Caddyのセットアップ
  • CouchDBのセットアップ

OS+Dockerのセットアップ

  • OSの再インストールのアプリケーション(+OS)からDocker 24.0.5-64bitを選択
    • rootのパスワード:◎◎◎◎◎
    • SSH Key:Xserverによる作成(xserver_obsidian.pem

再インストールボタンを押してしばらくしてから、VPSパネルの上部にあるコンソール起動ボタンからコンソールに入ってみると、スクリプトが起動して、ネットワークの設定やDockerのインストールが行われた。最後に「Reached target Cloud-init target.」と表示された。途中のログに失敗した部分もあったが、「docker –version」で確認したら、インストールできていた様子。

docker --version
sudo systemctl status docker
docker ps

Caddy+CouchDBのセットアップ

次のURLを参考にセットアップを行う。
https://github.com/vrtmrz/self-hosted-livesync-server
本体はCouchDBだが、MacやiPhoneなどからDBにアクセスするに当たりSSLが必須のため、SSL対応のリバースプロキシをセットアップする必要がある。

  • Caddy…SSL対応リバースプロキシ
  • CouchDB…Obsidian LiveSync用データベース
gitをクローンする
git clone git@github.com:vrtmrz/self-hosted-livesync-server.git
Caddy用仮想ネットワークの作成
docker network create caddy
セットアップ用ファイルの修正

次の2ファイルの該当箇所●●●●●●●を自分で決めたシークレットパスに書き換える。
シークレットパス:●●●●●●●

docker-compose.yml
labels:
  caddy.handle_path: /*
  caddy.handle_path.0_respond: "\"\" 403"
  caddy.handle_path.0_header.-Server: ""
  caddy.handle_path_1: /e=●●●●●●●/*
  caddy.handle_path_1.0_reverse_proxy: "{{upstreams 5984}}"
conf/local.ini
authentication_redirect = /e=●●●●●●●/_utils/session.html
環境ファイルの作成

.envファイルを作成する。vi .env

COUCHDB_SERVER=ドメイン名
COUCHDB_USER=ユーザー名
COUCHDB_PW=パスワード

ドメイン名:🐰🐰🐰🐰🐰🐰🐰(今回はVPSサーバーのドメイン名)
ユーザー名:□□□□□□□
パスワード:▲▲▲▲▲▲▲

環境構築
docker compose -f docker-compose.yml up

コンソールにログが表示される。
デーモンとして起動していないので、プロンプトに戻らないけどOK。

ブラウザを使って起動しているかチェック

次のアドレスにアクセスし、ユーザー名とパスワードを入れて管理画面が表示されればOK!

https://🐰🐰🐰🐰🐰🐰🐰/e=●●●●●●●/_utils/

Ctrl+Cで一旦停止する。

本番起動
docker compose -f docker-compose.yml up -d
状態確認や操作の基本コマンド
目的コマンド
起動中のコンテナ一覧docker ps
ログを見る(バックグラウンド実行時)docker-compose logs -f
サーバーの停止docker-compose down
停止せずに再起動docker-compose restart

クライアントサイド

まずは、1台目のPCを使ってセットアップ(Mac Mini M4)。そのあと追加でiPhoneやWindowsにもセットアップをしていく。

プラグインのインストール

Ctrl+,でPrefarencesを開く、コミュニティプラグイン→閲覧→livesyncで検索→vorotamorozさんのSelf-hosted LiveSyncをインストール

プラグインの設定

  1. Self-hosted LiveSyncの設定画面を表示し
  2. 2番目のタブ(Setup)
  3. Enable LiveSync on this device as the setup was completed manuallyのEnableボタンを押下
  4. Obsidianを再起動
    • 再起動後エラーを吐くが、画面を消して再度設定画面を開く
  5. 4番目のタブ(Remote Configuration)
  6. 次の4項目を入力
    • Server URI:https://🐰🐰🐰🐰🐰🐰🐰/e=●●●●●●●/
    • Username:□□□□□□
    • Password:▲▲▲▲▲▲▲
    • Database Name:obs←なんでもOK
  7. Test Database ConnectionのTestボタンを押下
  8. 大丈夫であれば
  9. Validate Database ConfigurationのCheckボタンを押下
  10. 大丈夫であれば
  11. Apply SettingsのApplyボタンを押下
  12. 5番目のタブ(Synchronization Preset)
  13. PresetsでLiveSyncを選択→Applyボタンを押下

ここまでで1台目の端末のセットアップが完了する。
2台目以降のの端末へのセットアップはセットアップ用のURIを発行して、それを使うと簡単にできる。

2台目以降のセットアップ用URIの発行

  1. 2番目のタブ(Setup)
  2. Copy the current settings to a Setup URIのCopyボタンを押下
  3. パスフレーズを適当に入力:hogehoge
  4. クリップボードにURIがコピーされる。
  5. 消えないように一時的にメモ帳にでも貼り付けておく。

2台目以降の端末にセットアップ

自分の場合はメインのMacの他にiPhoneとWindows11でも使えるようにしたいので、セットアップしていく。

  1. 端末にObsidianをインストール
  2. プラグインSelf Hosted Livesyncをインストール
  3. クイックセットアップの画面を出し、先ほど発行したURIを貼り付ける
  4. パスフレーズを入力
  5. いろいろ画面が出るが、デフォルトの項目を選択していくとセットアップ完了するはず。

コメントする