Obsidian Self-Hosted LiveSync 導入してみる
気になっていたので、スクラップ機能のお試しがてら導入してみる。
参考資料
環境
Obsidian
Obsidian-gitで同期している。
昔Notionが嫌いで導入してみて2年くらい使ったけど最近はもうNotionでよくね?になってきて正直あまり使っていない。というかそもそもメモを取る習慣があまり身についていない
ホスト環境
自宅にミニPCがあってProxmox VEが載っている。適当にコンテナ立ててtailnet内に公開するつもり。
動機
何ができるのかはあまり調べていないけど、Obsidian-gitから乗り換えたい理由はあって、
- バージョン管理するメリットをあまり感じない
- モバイルに導入するのが煩雑
- 自動コミットでGitHubの芝が生えるのがなんとなくモヤモヤする
この辺のモヤモヤが解消できれば良いかなーという感じ。
ドキュメントを眺めていたら見つけたけどWebクリッパーがあって直接live syncに保存できる感じなのかな?便利そう
Live Sync専用のサーバーが動くみたいなのをイメージしていたが、サーバーではCouchDBを公開してそこにObsidianクライアントがそれぞれアクセスして読み書きしていく方式っぽい。調べたところCouchDBが分散データベースとしての機能に特化していて、複数のDB間でそれぞれ読み書きして双方向に同期できるみたいな感じなので、クライアント側にもCouchDBのノードが立つ感じなのかもしれんね。RESTful APIでアクセスできるみたいだしなんかすごそうだしみんな好きそうだねCouch DB。
ということでサーバー側では普通にCouchDBを立てて良い感じに設定ファイルを書いてやれば良い感じのよう。
Proxmox VE Helper-ScriptsにCouchDBのLXCを作ってくれるスクリプトがあったのでこれを使う。仮想環境立てたい時だいたいここ見ればスクリプト置いてあって神すぎる、いつもありがとうございます。
サーバー構築
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に頼る。いつもありがとうございます。本当に。
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使ってしまっている。解散!