NAS に自前の Git Server を立ててローカル Markdown ノートを同期する

Markdown ノートをローカル NAS の Git Server に保存し、Android と Windows の複数デバイス間で同期するローカルファーストな構成を整理します。NAS 側のリポジトリ、Android 側、Windows 側の基本設定を扱います。

すでにローカル NAS があり、ノートをできるだけ自分の手元に置きたいなら、Markdown ノートを NAS 上の Git Server に入れ、Android と Windows のクライアントで同期できます。この構成は公共のクラウドドライブに依存せず、Obsidian、Markor、VS Code、Typora のようなローカル Markdown ファイル中心のノートツールに向いています。

基本的な考え方はシンプルです。

  1. NAS 上に Git のベアリポジトリを作り、ノートの中央リポジトリにする。
  2. Windows 側でリポジトリを clone し、一般的なエディタでノートを書く。
  3. Android 側でも同じリポジトリを clone し、Git クライアントで pull と push を行う。
  4. デバイスを切り替える前に pull し、書き終わったら commitpush を行う。

この方法は最も手軽な同期ではありませんが、制御しやすく、履歴も明確です。commit の習慣さえ身につければ、ノート、設定、画像添付を自分の NAS に長期保存できます。

この構成が向いている人

この構成は次のような人に向いています。

  • 自宅やオフィスに NAS がある。
  • ノートの中心が Markdown ファイルである。
  • ノートデータを商用クラウドだけでなく、ローカルネットワーク内に保存したい。
  • Windows と Android の複数デバイスで同期したい。
  • clonepullcommitpush など基本的な Git 操作を受け入れられる。

完全自動で意識しない同期が欲しい場合は、Syncthing、WebDAV、またはノートアプリ内蔵の同期機能のほうが楽です。Git は、履歴、ロールバック、移行性、制御性を重視するノートライブラリに向いています。

1. NAS に Git Server をインストールする

NAS の種類によって入口は違いますが、目標は同じです。SSH 経由でアクセスできる Git リポジトリを NAS に用意します。

よくある方法は三つあります。

方法 向いている場面
NAS のパッケージセンターから Git Server をインストール Synology、QNAP などの市販 NAS で、手間を減らしたい
Docker で Gitea をデプロイ Web UI、アカウント管理、より完整な Git サービスが欲しい
SSH + ベアリポジトリを直接使う 自分だけで使い、シンプルで安定した構成にしたい

個人のノート同期なら、SSH + ベアリポジトリで十分です。NAS に専用の Git ユーザー git があり、リポジトリ保存先が /volume1/git だとすると、NAS のターミナルで次を実行します。

1
2
3
mkdir -p /volume1/git/notes.git
cd /volume1/git/notes.git
git init --bare

ベアリポジトリではファイルを直接編集しません。同期の中心として使うだけです。実際にノートを書くディレクトリは Windows または Android のローカル側に置きます。

次に、SSH で NAS にアクセスできることを確認します。

1
ssh git@192.168.1.10

NAS が SSH 公開鍵ログインに対応しているなら、毎回 push 時にパスワードを入力しなくて済むように公開鍵を設定するのがおすすめです。Windows と Android でそれぞれ SSH key を生成し、公開鍵を NAS の authorized_keys または Git Server のユーザー設定に追加します。

2. Windows 側の設定

Windows 側では Git for Windows をインストールします。その後、ノートを置くローカルディレクトリを選びます。例では D:\Notes とします。

初回 clone:

1
git clone git@192.168.1.10:/volume1/git/notes.git D:\Notes

ディレクトリに入ったら、基本構成を作れます。

1
2
cd D:\Notes
mkdir inbox, daily, projects, resources

その後、Obsidian、VS Code、Typora、または他の Markdown エディタで D:\Notes を開きます。最初のノートを書いたら commit します。

1
2
3
git add .
git commit -m "初始化笔记库"
git push origin main

リポジトリのデフォルトブランチが master の場合は、コマンド内の mainmaster に置き換えます。main に統一することもできます。

1
2
git branch -M main
git push -u origin main

日常利用では、Windows 側で次のリズムを保つとよいです。

1
2
3
4
git pull --rebase
git add .
git commit -m "更新笔记"
git push

3. Android 側の設定

Android 側では、Git に対応したクライアントを使ってローカル Markdown ディレクトリを同期します。よく使われる選択肢は次の通りです。

ツール 使い方
Termux 最も柔軟で、Linux コマンドラインに近い
MGit GUI の Git クライアント。多くのコマンドを打ちたくない場合に向く
GitJournal ノートアプリに近く、シンプルな Markdown ノートに向く

Termux を使う場合は、まず Git と OpenSSH をインストールします。

1
2
pkg update
pkg install git openssh

SSH key を生成します。

1
ssh-keygen -t ed25519 -C "android-notes"

生成した公開鍵を NAS の Git ユーザー権限に追加します。その後、スマートフォン上のローカルディレクトリを選んでリポジトリを clone します。

1
git clone git@192.168.1.10:/volume1/git/notes.git ~/notes

通常の Android エディタからこのディレクトリにアクセスしたい場合は、共有ストレージにリポジトリを置くこともできます。

1
2
cd /sdcard
git clone git@192.168.1.10:/volume1/git/notes.git Notes

その後、Markor、Obsidian Android、または他の Markdown エディタで /sdcard/Notes を開きます。スマートフォン側で変更したら、Termux に戻って次を実行します。

1
2
3
4
5
cd /sdcard/Notes
git pull --rebase
git add .
git commit -m "手机更新笔记"
git push

Android で問題になりやすいのは権限とパスです。Termux のホームディレクトリはより安定しますが、一部のエディタから直接アクセスできない場合があります。/sdcard はエディタからアクセスしやすい一方で、権限、ファイル監視、性能がシステム制限を受けることがあります。まず少量のノートで試してから、最終的なディレクトリを決めると安全です。

4. Obsidian と Joplin でどう使うか

NAS Git Server が解決するのは「ファイルをどこに置くか、どう同期するか」です。実際にノートを書くには、ノートアプリを選ぶ必要があります。ここでは Obsidian 方案と Joplin 方案に分けて考えます。

構成 同期方法 向いている人 注意点
Obsidian + Git ノートディレクトリがそのまま Git リポジトリ。Windows と Android が同じリポジトリを pull する 双方向リンク、知識グラフ、プラグイン、純粋な Markdown ファイルが欲しい人 Android では、Git クライアントと Obsidian が同じディレクトリにアクセスできるか先に確認する
Joplin + Git Joplin データベースを直接 Git に入れるのは非推奨。Joplin の同期機能を使うか、定期的に Markdown を Git に export する Web クリップ、エンドツーエンド暗号化、従来型ノートブック構造が欲しい人 Joplin のローカルデータは通常の Markdown フォルダではなく、Git 同期用のノートライブラリには向かない

Obsidian 方案

Obsidian はこの NAS Git 同期構成に最も向いています。vault は本質的に普通のフォルダで、中身は Markdown ファイル、画像添付、設定ファイルです。D:\Notes/sdcard/Notes をそのまま Obsidian vault として使えます。

Windows 側の流れ:

1
git clone git@192.168.1.10:/volume1/git/notes.git D:\Notes

その後、Obsidian で D:\Notes を開きます。

Android 側の流れ:

1
2
cd /sdcard
git clone git@192.168.1.10:/volume1/git/notes.git Notes

その後、Obsidian Android で /sdcard/Notes を開きます。

Obsidian 方案のおすすめ:

  • 一人で使うなら .obsidian/ を commit して、テーマ、プラグイン、一部設定をデバイス間で同期できます。
  • Android と Windows でプラグイン構成が大きく違う場合は、ノート本文だけを commit し、.obsidian/workspace.json のようなデバイス状態ファイルは除外します。
  • 画像添付は attachments/ に統一すると、各階層に散らばりにくくなります。
  • Obsidian を開く前に git pull --rebase、書き終わったら commitpush を行います。

デバイス状態ファイルによる衝突を減らすために、.gitignore を用意できます。

1
2
3
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.trash/

Joplin 方案

Joplin は Obsidian と考え方が違います。Markdown 構文を使いますが、ローカルデータは主にアプリのデータベースで管理されます。Git で直接同期できる通常の Markdown フォルダではありません。そのため、Joplin の設定ディレクトリやデータベースディレクトリを Git リポジトリに直接入れるのはおすすめしません。

Joplin を好む場合は、次の二つがより安定します。

方法 説明
Joplin の内蔵同期を使う WebDAV、Nextcloud、Joplin Cloud、Dropbox、OneDrive などで同期する。NAS 側で WebDAV や Nextcloud を提供できる
定期的に Markdown を Git に export する Joplin をメインのノートアプリとして使い、定期的にノートを Markdown として export し、NAS Git リポジトリにバックアップとして commit する

NAS に WebDAV や Nextcloud があるなら、Joplin を直接 NAS に同期するほうが Git よりなめらかです。エンドツーエンド暗号化も有効化できるため、Git の衝突処理をしたくないが、データはできるだけ自分の管理下に置きたい人に向いています。

Joplin + NAS のおすすめルートは次の通りです。

  1. NAS で WebDAV を有効化するか、Nextcloud をデプロイする。
  2. Joplin Windows 側で同じ同期先を設定する。
  3. Joplin Android 側で同じ同期先を設定する。
  4. バージョン付きバックアップが必要なときは、定期的に Markdown を Git リポジトリへ export する。

簡単な判断基準:

  • 「ローカル Markdown フォルダ + 双方向リンク + Git 履歴」が欲しいなら Obsidian。
  • 「従来型ノートアプリ + Web クリップ + 暗号化同期」が欲しいなら Joplin。
  • NAS Git Server を主同期センターにしたいなら Obsidian が向いています。
  • NAS をプライベートクラウド同期バックエンドにしたいなら Joplin が向いています。

5. おすすめのノートディレクトリ構成

ノートライブラリは最初から複雑に設計しすぎないほうがよいです。まずは次のような構成から始められます。

1
2
3
4
5
6
7
Notes/
  inbox/
  daily/
  projects/
  resources/
  attachments/
  README.md

意味は直感的です。

  • inbox/ は一時メモ。
  • daily/ は日記、ログ、日々の記録。
  • projects/ はプロジェクトノート。
  • resources/ は長期的な資料。
  • attachments/ は画像、PDF、その他の添付。

Obsidian を使う場合は、このディレクトリをそのまま vault にできます。.obsidian/ を commit するかどうかは好みです。一人で複数デバイスを使うなら commit してもよいです。デバイスごとにプラグイン差が大きい場合は、一部設定だけを commit する方法もあります。

6. 同期衝突を避ける

Git でノートを同期するときに重要なのは、複雑なコマンドではなく安定した習慣です。

おすすめのルール:

  1. 別デバイスで書く前に、まず git pull --rebase を実行する。
  2. ひとまとまり書き終えたら、早めに commitpush を行う。
  3. 二つのデバイスで同じファイルを長時間同時編集しない。
  4. 画像や大きな添付ファイルを無制限に Git リポジトリへ入れない。
  5. NAS の外にも定期的にリポジトリをバックアップする。

衝突が起きると、Git は衝突ファイルを示します。Markdown のテキスト衝突は通常難しくありませんが、スマートフォンでは処理しづらいので、できるだけ Windows で解決するのがおすすめです。

7. 自動同期は必要か

Windows で pulladdcommitpush をつなげる簡単なスクリプトを書くことはできます。ただし、ノート同期では完全な自動 commit はおすすめしません。誤削除、空 commit、衝突、大きな添付が自動で push される可能性があるためです。

より安定するのは半自動です。

  • ノートを開く前に手動で pull する。
  • 書き終わったらスクリプトで commit する。
  • commit メッセージで今回の変更を簡単に書く。

たとえば Windows では sync-notes.ps1 を用意できます。

1
2
3
4
git pull --rebase
git add .
git commit -m "更新笔记"
git push

変更がない場合、git commit は nothing to commit と表示しますが、問題ではありません。

8. この構成の長所と短所

観点 説明
長所 データがローカル NAS にあり、履歴が明確で、ロールバック可能、移行しやすく、Markdown に向く
短所 Git の理解が必要で、衝突は手動処理が必要。モバイル体験はクラウド同期ほど滑らかではない
向いている 技術ユーザー、ローカルファーストなノート、個人知識ベース、プロジェクト文書
向いていない コマンドラインに触れたくない人、リアルタイム共同編集が必要な人、大きな添付を頻繁に同期する人

私のおすすめ

Android と Windows の間で普通の Markdown ノートを同期したいだけなら、最小構成から始めるのがおすすめです。NAS に一つのベアリポジトリ、Windows に Git for Windows、Android に Termux または MGit。最初から複雑な権限、自動化スクリプト、過度な分類を入れないほうがよいです。

この流れが安定してから、Gitea、自動バックアップ、デバイス別 SSH key 管理、添付ファイル用の別リポジトリ、定期タスクなどを検討します。ノートシステムで一番重要なのは、長期的に安定して使えることです。初日にすべての機能を詰め込むことではありません。

一言で言えば、NAS Git Server は Markdown ノートをローカルファーストで、追跡可能で、移行しやすい個人資料庫にするのに向いています。クラウド同期ほど楽ではありませんが、制御権ははっきりします。

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。