Notionは無料でも使えるが、データをどこかのサービスに依存させるのは不安もある。これは、今はなきEvernoteでもそうだったし、Appleのメモでも同様だ。
そこで、Notionライクであり、MD記法が使えるローカルアプリ「Obsidian」を使ってみることにした。
Obsidianの最大のメリットは、データを人質に取られないこと。しかしその一方で、ローカルアプリであるため、標準では同期が取れないという課題がある。
同期を取るには、以下の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 psCaddy+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.gitCaddy用仮想ネットワークの作成
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をインストール
プラグインの設定
- Self-hosted LiveSyncの設定画面を表示し
- 2番目のタブ(Setup)
- Enable LiveSync on this device as the setup was completed manuallyのEnableボタンを押下
- Obsidianを再起動
- 再起動後エラーを吐くが、画面を消して再度設定画面を開く
- 4番目のタブ(Remote Configuration)
- 次の4項目を入力
- Server URI:https://🐰🐰🐰🐰🐰🐰🐰/e=●●●●●●●/
- Username:□□□□□□
- Password:▲▲▲▲▲▲▲
- Database Name:obs←なんでもOK
- Test Database ConnectionのTestボタンを押下
- 大丈夫であれば
- Validate Database ConfigurationのCheckボタンを押下
- 大丈夫であれば
- Apply SettingsのApplyボタンを押下
- 5番目のタブ(Synchronization Preset)
- PresetsでLiveSyncを選択→Applyボタンを押下
ここまでで1台目の端末のセットアップが完了する。
2台目以降のの端末へのセットアップはセットアップ用のURIを発行して、それを使うと簡単にできる。
2台目以降のセットアップ用URIの発行
- 2番目のタブ(Setup)
- Copy the current settings to a Setup URIのCopyボタンを押下
- パスフレーズを適当に入力:hogehoge
- クリップボードにURIがコピーされる。
- 消えないように一時的にメモ帳にでも貼り付けておく。
2台目以降の端末にセットアップ
自分の場合はメインのMacの他にiPhoneとWindows11でも使えるようにしたいので、セットアップしていく。
- 端末にObsidianをインストール
- プラグインSelf Hosted Livesyncをインストール
- クイックセットアップの画面を出し、先ほど発行したURIを貼り付ける
- パスフレーズを入力
- いろいろ画面が出るが、デフォルトの項目を選択していくとセットアップ完了するはず。