個人の開発環境は自作PCの上で構築したproxmox VM(ubuntu)で作業している。 例えば、最近だとClaude Codeを使うことが多いが、一連のセッションが終わった後に自分にとって学びになる部分をmarkdownで要約してもらって書き出すショートカットコマンドをよく使っている。このmarkdownを後から自分のスマホやPCなどマルチデバイスで参照できるようにしたい。
ここ数年、ドキュメンテーションツールはobsidianを使っておりsync planで課金している(元々cosenseを愛用していたが独自syntaxなのとモバイル向けはPWAということもあり操作感がちょっと惜しい感じだった)。このときにリモートのVMでもmarkdownたちをobsidian syncの上で同期させたい。
obsidian-dockerの導入
Forumをいくつか確認する限り、githubで公開されているdocker-obsidianのimageをリモートVMで起動させると良さそうというのがわかったのでこれをベースに使う。
参考: Possibility for headless syncing with a CLI/daemon
試しに以下でコンテナを起動する。
$ docker run -d \ --name=obsidian \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -p 3000:3000 \ -p 3001:3001 \ -v ./obsidian-config:/config \ --shm-size="1gb" \ lscr.io/linuxserver/obsidian:latestポートフォワードしてlocalhost:3000にブラウザでアクセスすると、ブラウザ上でobsidianのネイティブアプリが操作できることがわかる。裏側ではKasmVNCというVNCの仕組みが動いている(らしい)。
通常通りobsidian syncの設定をすればマウントしたディレクトリ上にドキュメントたちがsyncされていく。
pm2でプロセス管理
サーバーを再起動したときにもコンテナを自動再起動するようにしたい。pm2でプロセス管理する。 以下でプロセス登録。
$ pm2 start "docker run --rm \ --name=obsidian \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -p 3000:3000 \ -v $HOME/obsidian-config:/config \ --shm-size="1gb" \ lscr.io/linuxserver/obsidian:latest" \ --name obsidian-container次にsystemdに登録する。startupコマンドを実行するとsystemd登録するコマンドが表示されるのでそれをコピーして実行。
$ pm2 startup[PM2] Init System found: systemd[PM2] To setup the Startup Script, copy/paste the following command:sudo env ...次にpm2に登録したコマンド設定をsaveしておく。
$ pm2 save