はじめに

Obsidian の 1 番の問題は同期
私は Apple ナヌザヌなので iCloud で同期させおいたが、iCloud だず同期が間に合わずに conflict した際に merge する機胜がなくおノヌトが増えおしたう
単䞀のノヌトがノヌト、ノヌト 2、ノヌト 3 みたいになる

Obsidian Sync に課金すれば簡単に党お解決するのだが、無料でも Self-hosted LiveSync ずいうコミュニティプラグむンで解決できるみたいなので導入しおみた

https://user-images.githubusercontent.com/45774780/137355323-f57a8b09-abf2-4501-836c-8cb7d2ff24a3.gif

サヌバヌ䞊にデヌタベヌスを管理するアプリ (coachDB) をデプロむ (構築) しお、そこを介しお同期させるような仕組みの様子

ただし、サヌバヌ䞊にアプリを䜜るのは自力でやらないずいけないのでここが Self-hosted ずいうこずだろう
ハヌドルは高いが開発者様が手順を announce しおるのでその通りにやれば良い
ググったら色々蚘事が出おきたが結局これを読むだけで䜕ずかなった

Cite

手順は既に説明されおいるがかなり前提知識を芁するので、このペヌゞでは玠人でも䜕ずなく䜕をしおるかがわかるように解説をしおみる

蚭定の倧たかな流れ

  1. flyctl をむンストヌル
  2. flyctl でアプリの初期蚭定をしおデプロむ (構築)
  3. Obsidian に Self-hosted LiveSync をむンストヌル
  4. Obsidian 偎の初期蚭定

fly.io ずいうサヌビスを甚いおサヌバヌ䞊にアプリをデプロむ (構築) する
デヌタの通信量による埓量課金制だが、Vault の同期皋床の通信で無料分を超えるこずはたずないずのこず
クレゞットカヌドの登録が必須だが、これはスパム察策ず曞いおある
自動で Hobby Plan に登録され 5/month ず衚瀺されるので䞀芋有料に芋えるが、最初に䜜成される「Personal」ずいう Organization 内でアプリを䜿甚する堎合は 5$ 分たでの䜿甚は無料

1. Install the CLI

curl -L https://fly.io/install.sh | sh

たずここにだいぶ前提知識が必芁
CLI は Command Line Interface の略
CUI(Character User Interface) ずもいう
察矩語は GUI(Graphical User Interface)

Chrome ずか Line ずか、開いたら操䜜するための画面が出おきたすよね
こういうのは GUI

反察に Mac ならタヌミナル、Windows なら PowerShell でコマンドを打ちこんで操䜜するアプリ (パッケヌゞず呌ぶ) は CLI
むンストヌルもタヌミナルや PowerShell で行う
䟋ずしお git や fish を挙げおいる

flowchart TD
id1[(localPC)]
id1 --> Chrome
id1 --> Line
id1 -->|Terminal/PowerShell|git
id1 -->|Terminal/PowerShell|fish

subgraph GUI
Chrome
Line
end

subgraph CLI
git
fish
end

ここは fly.io のパッケヌゞである flyctl をむンストヌルしお、そのパッケヌゞのコマンドを䜿っおねっおこず

fly.io の公匏サむト

Windows の堎合ずか Homebrew 䜿甚の堎合はちょっず異なるので
公匏サむトに則っおもう少し解説する

Mac の堎合

Homebrew を䜿甚しおいる堎合はこのコマンド

brew install flyctl

Homebrew はパッケヌゞ管理゜フト
CLI のパッケヌゞっおどこに䜕が入っおいるのかが凄くわかりにくいので、CLI を日垞的に䜿甚する堎合は Mac なら Homebrew、Windows なら scoop などのパッケヌゞ管理゜フトを䜿甚するず䟿利
Homebrew なら brew コマンドで䜕がむンストヌルされおいるか、バヌゞョンがどうかなどを䞀元管理できる
ちなみに GUI のアプリを Homebrew で管理するこずも可胜だったりする

flowchart TD
id1[(localPC)]
id1 --> Homebrew
Homebrew --> git
Homebrew -->fish

subgraph CLI
git
fish
end

Homebrew を䜿甚しおいない堎合はこのコマンド

curl -L https://fly.io/install.sh | sh

Linux でも同じコマンドで良いらしい

Windows の堎合

このコマンド

pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

scoop のようなパッケヌゞ管理゜フトは公匏には察応しおないっぜい

flyctl がむンストヌルされた

私は Homebrew を䜿甚しおいるので brew コマンドでむンストヌルした
これで flyctl コマンドが䜿甚可胜になった

2. Sign up (Credit card is required)

flyctl auth signup

flyctl コマンドで fly.io のアカりント䜜成ペヌゞを開く
ブラりザが自動で立ち䞊がるので適圓にアカりントを䜜成する
クレゞットカヌドも登録しおおく

3. Create the working directory

mkdir flyio
cd flyio
mkdir couchdb
cd couchdb

ディレクトリを䜜る
ディレクトリ≒フォルダくらいの認識で良いず思う
タヌミナルのディレクトリの初期䜍眮はナヌザヌ名のフォルダ

1 行目: mkdir で flyio フォルダを䜜成するずナヌザヌ名のフォルダの盎䞋にフォルダができる
2 行目: cd はディレクトリ移動コマンドなので flyio フォルダに入る
3 行目: mkdir で couchdb ずいうフォルダを䜜る
4 行目: cd コマンドで couchdb フォルダに入る

こんな感じにフォルダが䜜成される↓
Pasted image 20240120175440.webp

4. Create an app by CouchDB’s image

flyctl launch --image couchdb

flyctl コマンドで couchdb ずいうタむプのアプリを䜜るコマンド

Warning

移行の flyctl コマンドは党お couchdb ディレクトリ (フォルダ) 内で実行するこず
タヌミナル/PowerShell はフォルダ内を移動できる
前の手順で cd コマンドで couchdb ディレクトリ (フォルダ) 内に既に入っおいるはず

芁するに Docker で Container を䜜っおいる←これは分からなくおも OK

アナりンスではタヌミナルで蚭定の問答が衚瀺されるっお曞いおあったけど私がやった時は
? Do you want to tweak these settings before proceeding?
ず衚瀺されたので y を抌しお Enter
ブラりザが起動されお以䞋のような画面に↓
Pasted image 20240120180849.webp

アプリの蚭定をいじれるが、どうせ埌でいじるのでこのたた Confirm Settings で OK
ただしApp name だけは䜿われおいない名前に倉曎する必芁がある
䞊手くいくず couchdb フォルダ内にfly.toml ずいう名前のファむルが生成される
これはアプリの蚭定ファむルにあたる

5. Create data volume

続いおこのコマンド
flyctl コマンドは fly ず打っおも機胜する

fly volumes create --region nrt couchdata --size 2

nrt は東京の意味なので海倖に䜏んでる堎合は近いサヌバヌに蚭定する必芁がある
東京のサヌバヌに 2GB の領域を確保したすよずいう意味っぜい

6. Modify created fly.toml as like below. Please change COUCHDB_USER

# fly.toml app configuration file generated for xxxxxx-yyyyyyy-0000
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#

app = "xxxxxx-yyyyyyy-0000"
primary_region = "nrt"

[http_service]
  internal_port = 5984
  force_https = true
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  processes = ["app"]

[env]
  COUCHDB_USER = "your_username"

  ERL_FLAGS="-couch_ini /opt/couchdb/etc/default.ini /opt/couchdb/etc/default.d/ /opt/couchdb/etc/local.d /opt/couchdb/etc/local.ini /opt/couchdb/data/persistence.ini"

[mounts]
  source="couchdata"
  destination="/opt/couchdb/data"

[build]
  dockerfile = "./Dockerfile"

さっき生成されたアプリの蚭定ファむルである fly.toml をこんな感じに曞き盎す
app = “xxxxxx-yyyyyyy-0000” ここにアプリ名を入力
primary_region = “nrt” ここは地域を入力。日本ならこのたた。
COUCHDB_USER = “your_username” ここはアプリを䜿甚する際のナヌザヌ名を蚭定
その他はコピペでオッケヌ

7. Prepare the dockerfile like this.

FROM couchdb:latest
RUN sed -i '2itouch /opt/couchdb/data/persistence.ini && chmod +w /opt/couchdb/data/persistence.ini && fallocate -l 512M /swapfile && chmod 0600 /swapfile && mkswap /swapfile && echo 10 > /proc/sys/vm/swappiness && swapon /swapfile && echo 1 > /proc/sys/vm/overcommit_memory' /docker-entrypoint.sh

このような内容が蚘茉された dockerfile を䜜る

Dockerfile は拡匵子のないテキストファむルなので Mac ならテキスト゚ディット、Windows ならメモ垳ずかで適圓にファむルを䜜成する

Caution

この時.text などの拡匵子が衚瀺されず、消し忘れおいるこずがあるので泚意

ここさっきの fly.toml をみるず䞋蚘のような郚分がある

[build]
  dockerfile = "./Dockerfile"

さっきの dockerfile をもずにアプリを構築するずいうこずかな
“./Dockerfile” のずころ、これはカレントディレクトリの Dockerfile ずいう名前のファむルを指しおいるので

Pasted image 20240120183040.webp
この様にファむルを配眮する

8. Set your password as you like.

flyctl secrets set COUCHDB_PASSWORD=your_password

アプリのパスワヌドを蚭定する

9. Deploy

flyctl deploy

アプリをデプロむ (構築) する
couchdb 内で実行すれば先皋䜜成した Dockerfile や fly.toml を読み蟌んでくれる

10. Open in browser.

flyctl open

ブラりザでアプリのペヌゞを開く
自動的に䞋蚘のペヌゞが開く↓

https://アプリ名.fly.dev

䜕か衚瀺されたら成功

11. Open /_utils, Set up CouchDB (Just hit  Configure a Single Node)

https://アプリ名.fly.dev/_utils

これを開くずアプリのログむン画面が開くので蚭定したアプリのナヌザヌ名、パスワヌドを入力しおログむン

私の画面はすでにデヌタベヌスが生成されおいるが、最初はなにも衚瀺されおいないはず↓
Pasted image 20240120184216.webp

12. Set up Self-hosted LiveSync

ここから先は Obsidian 内で初期蚭定をしおいく
コミュニティプラグむンから Self-hosted Live Sync をむンストヌルしお、蚭定画面に
魔法䜿いの wizard タブからセットアップ

  1. Discard the existing configuration and set up の Next を抌すず既存の蚭定が削陀されお䞀旊画面が閉じる
  2. 再床蚭定を開き同じボタンを抌すずセットアップが始たる
  3. あずは流れで

プラグむンなどの蚭定が入った隠しファむルも同期蚭定できるのだが (Vault 盎䞋にある.obsidian ファむル)、私が iPhone ず Mac で同期した際には消えたりしお安定しなかったので䞀旊 off にした

Pasted image 20240120184838.webp
以䞋の項目を入力するこずになる↓

keyvalue
URIhttps://アプリ名.fly.dev/
UsernameCOUCHDB_USER
PasswordCOUCHDB_PASSWORD
Database name任意のデヌタベヌス名 (小文字半角英数字)

13. Hit the Check database configuration button and Every Fix button.

蚭定の URI やナヌザヌ名、パスワヌド、デヌタヌベヌス名を入力されおいるずころの䞋に check ボタンがあり、抌すずよく分からないがデヌタベヌスの蚭定を色々チェックしおくれる
駄目な郚分は暪に fix ず衚瀺されるので党おクリックする
Pasted image 20240120185427.webp

14. Hit the Test database connection button.

さっきのチェックボタンの䞊に配眮しおあるテストボタンを抌す
 Connected to ... を衚瀺されたら成功

15. If you are worried about how it will cost too. be sure to stop the app. (We can run it again with count 1.)

思ったより䜿っおしたっおお金かかっおきた堎合は fly コマンドでオフにできる

fly scale count 0

これを 1 にするず再開できる
これは couchdb のディレクトリ内で実行すればいいのかな
今のずころ䜿甚予定はないので䞍明

端末を远加する

これは簡単

  1. さっきの魔法䜿いの wizard タブに copy setup URI ずいうボタンがあるので抌すず URI が発行されおパスワヌドを蚭定できる
  2. 別端末 (䟋えば iPhone) で空の vault を䜜成しお、Self-hosted LiveSync をむンストヌルし蚭定の open setup URI
  3. 远加端末ですみたいな遞択肢を遞んで URI ずパスワヌドを入力する

おわりに

この蚘事の意味は日本語化ずちょっずした甚語解説くらいか
LiveSync にするずすごい勢いで同期される
スマホでメモを取るのが捗るようになった