Closed14

Obsidian Self-Hosted LiveSync 導入してみる

ひろひろ

環境

Obsidian

Obsidian-gitで同期している。
昔Notionが嫌いで導入してみて2年くらい使ったけど最近はもうNotionでよくね?になってきて正直あまり使っていない。というかそもそもメモを取る習慣があまり身についていない

ホスト環境

自宅にミニPCがあってProxmox VEが載っている。適当にコンテナ立ててtailnet内に公開するつもり。

ひろひろ

動機

何ができるのかはあまり調べていないけど、Obsidian-gitから乗り換えたい理由はあって、

  • バージョン管理するメリットをあまり感じない
  • モバイルに導入するのが煩雑
  • 自動コミットでGitHubの芝が生えるのがなんとなくモヤモヤする

この辺のモヤモヤが解消できれば良いかなーという感じ。

ひろひろ

Live Sync専用のサーバーが動くみたいなのをイメージしていたが、サーバーではCouchDBを公開してそこにObsidianクライアントがそれぞれアクセスして読み書きしていく方式っぽい。調べたところCouchDBが分散データベースとしての機能に特化していて、複数のDB間でそれぞれ読み書きして双方向に同期できるみたいな感じなので、クライアント側にもCouchDBのノードが立つ感じなのかもしれんね。RESTful APIでアクセスできるみたいだしなんかすごそうだしみんな好きそうだねCouch DB。

ひろひろ

ということでサーバー側では普通にCouchDBを立てて良い感じに設定ファイルを書いてやれば良い感じのよう。

ひろひろ

サーバー構築

Proxmoxホストのシェルでスクリプトを実行する。

root@hikuo-homeserver:~# bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/apache-couchdb.sh)"

Yes。

とりあえずデフォルトで。

できた。

ひろひろ

英語版セットアップドキュメントにCouchDBの良さげな設定スクリプトが置いてあったのでこれを使ってみる。

作成したCouchDBのコンテナ内で実行する。
スクリプト用にDBの認証情報を環境変数に入れておき、

# Prepare environment variables.
export hostname=localhost:5984
export username=goojdasjdas     #Please change as you like.
export password=kpkdasdosakpdsa #Please change as you like
失敗したコマンド

スクリプトを実行する。

root@apache-couchdb:~# curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | bash


失敗した。

nonode@nohostは名前を指定しないでDBを立ち上げた時に設定される名前で、一方Proxmox Helper-Scriptsで作成した場合couchdb@127.0.0.1でノードが作成されていた。ので適当に置換して再実行してみる。

root@apache-couchdb:~# curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | sed 's/nonode@nohost/couchdb@127.0.0.1/g' | bash


いけたっぽい。

ひろひろ

tailnetに公開する

DB自体の設定はこれで終わり・・・なはずなので、tailscaleをインストールしてtailnetに公開する。

またしてもHelper-Scriptsに頼る。いつもありがとうございます。本当に。
https://community-scripts.github.io/ProxmoxVE/scripts?id=add-tailscale-lxc

Proxmoxホストのシェルでインストールスクリプト実行

root@hikuo-homeserver:~# bash -c "$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/misc/add-tailscale-lxc.sh)"


y。

apache-couchdbを選択してOK

インストール完了。

CauchDBコンテナのシェルでtailscale upしてログイン

root@apache-couchdb:~# tailscale up --hostname hikuo-obsidian

tailscale serve してtailnet内に公開するリバースプロキシを設定する。

root@apache-couchdb:~# tailscale serve localhost:5984

tailnet内の他のノードから適当にcurlして疎通を確認できました。

❯ curl https://hikuo-obsidian.<tailnetのサブドメイン>.ts.net
{"error":"unauthorized","reason":"Authentication required."}
ひろひろ

Obsidianの設定

プラグインをインストールする。

ドキュメントを参考に、URIを生成する。
認証情報の値をそれぞれいい感じに入力して実行した。
databaseにはDB名を入れる。まだ作成していなくても後述のセットアップ時に勝手に作成されます
passphraseはDBの暗号化キーみたいです。

export hostname=https://tiles-photograph-routine-groundwater.trycloudflare.com #Point to your vault
export database=obsidiannotes #Please change as you like
export passphrase=dfsapkdjaskdjasdas #Please change as you like
export username=johndoe
export password=abc123
deno run -A https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/flyio/generate_setupuri.ts

Setup URIと(Setup URI用の)passphraseが表示されるので保存しておく。

Your passphrase of Setup-URI is:  ...
This passphrase is never shown again, so please note it in a safe place.
obsidian://setuplivesync?settings=...

設定画面からConnect with Setup URIする。

URI、passphraseを入力して、Initialise server dataを選択。

ひろひろ

別端末でも同じプラグインをインストールして、URIを設定する。

同期できた。

ひろひろ

感想

とりあえずgit脱却できていい感じ。
使っててなんかあったら追記するかも。

ひろひろ

1ヶ月くらい経ったが、Notion使ってしまっている。解散!

このスクラップは4ヶ月前にクローズされました