はじめに
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秒くらいで同期されていい感じ。