kogad's blog
Obsidian の Self-hosted LiveSync を使ってみた

はじめに

Obsidian を windows、mac、iPhone 間で同期させたかったが、公式が提供している Obsidian sync はお金がかかるので、コミュニティープラグインとして提供されていて無料で使える Self-hosted LiveSync を使ってみた。 VPS を借りているので、独自のCouchDBのセットアップを試してみた。ただし、借りているVPSのスペックが低いため、Docker は使わず CouchDB を直接立てた。

使ってみた

CouchDB のドキュメント に従い CouchDB をインストールする。 うちで借りている VPS の OS は Ubuntu なので、下記コマンドを実行。

sudo apt update && sudo apt install -y curl apt-transport-https gnupg curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1 source /etc/os-release echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ ${VERSION_CODENAME} main" \ | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null sudo apt update sudo apt install -y couchdb

途中 single node か clusters にするか聞かれたが、とりあえず single node にした。また、Erlang magic cookie とか admin のパスワードとかを設定するよう求められたが、適当に設定。

インストールできたら、プラグインの方のドキュメントに local.ini の設定がある ので、/opt/couchdb/etc/local.ini の内容をその通りに書き換える。

で、下記コマンドで動作確認。Basic 認証にはさっき設定した admin の情報を使う。

curl -X GET 127.0.0.1:5984 -H "Authorization: Basic hogehoge"

ちゃんと立ってたら、下記コマンドで DB を作成(ここでDBを作成しなくてもプラグインの設定時に作成される気もする......)。

curl -X PUT 127.0.0.1:5984/myobsidianvault -H "Authorization: Basic hogehoge"

今回は nginx の後ろで動かしたかったので、nginx.conf に下記のような設定を追加。ドキュメントの Reverse proxing with nginxに設定例がいくつかあったので、それを参考に書く。個人的な都合で https://domain.com/couchdb/dbname みたいにサブディレクトリでアクセスさせたかったので、今回はその例を参考にした。 ドキュメントの例のまんまだと 500 番を返されたので、ChatGPT 先生に直してもらったら動いた(rewrite ^ $request_uri; を消した)。

location /couchdb { rewrite ^/couchdb/(.*) /$1 break; proxy_pass http://localhost:5984; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

で、あとは Obdisian に Self-hosted LiveSync のプラグインを入れて、プラグインの設定画面の Setup wizard 画面から、上記で立てた CouchDB に接続するように設定すればちゃんと動いた。

今回の場合、nginx の方ですでにドメインが設定してあったので、iPhone からもプラグインの設定をすればそのまま動いた。

別端末で編集した内容が2、3秒くらいで同期されていい感じ。