0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi + Obsidian + Syncthing + Gemini AI で完全自己ホスト型「第二の脳」を構築する

0
Last updated at Posted at 2026-05-21

概要

Obsidian を中心に、Raspberry Pi 上の SSD をストレージとして使い、Mac・iPhone 間でノートを同期しながら、AI(Gemini API)がメモの関連リンクを自動付与してくれる PKM(Personal Knowledge Management)環境を構築しました。

クラウドサービスへの依存を最小限にしつつ、無料または買い切りのツールだけで実現しています。


システム構成

[Mac]                    [iPhone]
  Obsidian                 Obsidian
  Copilot Plugin           Möbius Sync
  Syncthing                Tailscale
      |                        |
      +--------+---------------+
               |
         Tailscale tailnet(VPN 経由)
               |
          [Raspberry Pi 4]
           Syncthing(同期ハブ)
           ai-linker.py(1時間ごと自動リンク付与)
           backup.sh(毎日 02:00 バックアップ)
           /mnt/<ssd>/obsidian/vault/(Vault 実体)
           /media/<user>/<hdd>/obsidian/backup/(バックアップ先)

使用ツール・技術スタック

カテゴリ ツール
ノートアプリ Obsidian(Mac / iOS)
ファイル同期 Syncthing
iOS 同期クライアント Möbius Sync(有料買い切り)
VPN Tailscale
AI チャット Copilot for Obsidian + Gemini 3.5 Flash(OpenRouter)
AI 自動リンク Python スクリプト + Google AI Studio API(Gemini 3.5 Flash)
ストレージ Raspberry Pi 4 にマウントした外付け SSD(938GB)

Vault フォルダ構成

vault/
├── 00_Inbox/        とりあえず置く(iPhone の放り込み先)
├── 01_Daily/        日次ノート(YYYY-MM-DD.md)
├── 02_Literature/   技術記事の読書メモ
├── 03_Tech/         技術ナレッジ本体
├── 04_Ideas/        アイデア
├── 99_Archive/      使わなくなったもの
├── _Templates/      テンプレート
└── _Attachments/    画像など

構築手順

Phase 1:ラズパイ側 Syncthing の構築

# Syncthing 公式リポジトリを追加
sudo mkdir -p /etc/apt/keyrings
sudo curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg \
  https://syncthing.net/release-key.gpg

echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] \
  https://apt.syncthing.net/ syncthing stable" \
  | sudo tee /etc/apt/sources.list.d/syncthing.list

sudo apt update && sudo apt install -y syncthing

# Vault ディレクトリ作成
sudo mkdir -p /mnt/<ssd>/obsidian/{vault,scripts}
sudo chown -R <user>:<user> /mnt/<ssd>/obsidian

# systemd で自動起動
sudo systemctl enable syncthing@<user>.service
sudo systemctl start syncthing@<user>.service

Tailscale 経由でのみアクセスするため、Web UI の bind を Tailscale IP に変更します。

sudo systemctl stop syncthing@<user>.service

# GUI bind を Tailscale IP に変更
sed -i 's|<address>xx.x.x.x:8384</address>|<address><Tailscale IP>:8384</address>|' \
  ~/.local/state/syncthing/config.xml

# MagicDNS 経由アクセスのため Host チェックを無効化
sed -i 's|</gui>|    <insecureSkipHostcheck>true</insecureSkipHostcheck>\n    </gui>|' \
  ~/.local/state/syncthing/config.xml

sudo systemctl start syncthing@<user>.service

Phase 2:Mac 側 Syncthing の導入と相互接続

# Vault ディレクトリ作成
mkdir -p ~/Obsidian/vault

# Syncthing for macOS インストール
brew install --cask syncthing
open /Applications/Syncthing.app

Mac の Web UI(http://xx.x.x.x:8384)でラズパイの Device ID を登録し、ラズパイ側で Mac を承認して双方向同期を確立します。

Syncthing の Ignore Patterns に以下を設定して不要ファイルの同期を防ぎます:

.DS_Store
._*
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/cache/
.obsidian/plugins/copilot/data.json

Phase 3:Obsidian の初期設定

brew install --cask obsidian

~/Obsidian/vault を Vault として開き、以下のコアプラグインを有効化します:

  • Templates
  • Daily notes
  • Quick switcher
  • Graph view
  • Backlinks
  • File recovery
  • Tag pane

Phase 4:iPhone 同期

Möbius Sync(有料買い切り)を使い、External Folder 機能で Obsidian のサンドボックス内に直接同期することで、Obsidian iOS が Vault として認識できます。

Möbius Sync → Add Folder → Pick External Folder
→ Files app → On My iPhone → Obsidian → obsidian-vault を選択
→ Folder ID をラズパイ側の Folder ID と一致させる

Phase 5:Copilot プラグイン(AI チャット)

Obsidian の Community Plugins から「Copilot for Obsidian」をインストールし、Gemini 3.5 Flash(OpenRouter 経由)を設定します。

推奨設定:

Temperature : 0.3
Token limit : 8000
Vision      : ON
Reasoning   : OFF

Phase 6:AI による自動リンク付与

ラズパイ上で Python スクリプトを 1 時間ごとに cron 実行し、更新されたノートに関連ノートへのリンクを自動挿入します。

# 主要な処理フロー
# 1. vault/ を走査して更新ノートを検出
# 2. Google Gemini API に「関連ノートを N 件選んで」とプロンプト
# 3. ノート末尾に関連セクションを自動挿入

SECTION_START = "<!-- AI-LINKS-START(自動生成 / 手動編集不可) -->"
SECTION_END   = "<!-- AI-LINKS-END -->"

挿入例:

<!-- AI-LINKS-START(自動生成 / 手動編集不可) -->
## 関連ノート
- [[Kubernetes NodeAffinity]]
- [[2026-05-20]]
<!-- AI-LINKS-END -->
# パッケージインストール
pip3 install google-genai python-dotenv --break-system-packages

# cron 登録
crontab -e
# 0 * * * * /usr/bin/python3 /mnt/<ssd>/obsidian/scripts/ai-linker.py

Phase 7:バックアップ

# backup.sh(毎日 02:00 実行、7世代保持)
VAULT_DIR="/mnt/<ssd>/obsidian/vault"
BACKUP_DIR="/media/<user>/<hdd>/obsidian/backup"
DATE=$(date +%Y-%m-%d)

tar -czf "${BACKUP_DIR}/${DATE}.tar.gz" \
  -C "$(dirname ${VAULT_DIR})" "$(basename ${VAULT_DIR})"

find "${BACKUP_DIR}" -name "*.tar.gz" -mtime +7 -delete
crontab -e
# 0 2 * * * /bin/bash /mnt/<ssd>/obsidian/scripts/backup.sh

日常の使い方

やりたいこと 操作
とりあえずメモ Cmd+N → 00_Inbox に書く
今日の記録 Cmd+P → Open today's daily note
技術ナレッジ 03_Tech にノート作成 → テンプレート挿入
AI に要約させる Copilot チャットで「このノートを要約して」
関連リンク確認 1時間後にノート末尾の関連ノートセクションを確認

工夫した点・ハマった点

Syncthing のフォルダパスが意図せず変わった

Mac からの共有通知をラズパイが受信した際、デフォルトパス(~/obsidian/vault)で新規フォルダが作られてしまいました。config.xml を直接編集して正しいパス(/mnt/<ssd>/obsidian/vault)に修正し、.stfolder マーカーファイルを再作成することで解決しました。

iOS での Obsidian 同期

Obsidian iOS は最新版で「既存フォルダを開く」機能がなく、Möbius Sync のサンドボックスと Obsidian のサンドボックスを繋ぐには有料の External Folder 機能が必要でした。

google.generativeai の非推奨化

スクリプト作成時に google.generativeai パッケージが非推奨になっており、google.genai パッケージへの移行が必要でした。

# 旧(非推奨)
import google.generativeai as genai
genai.configure(api_key=api_key)
model = genai.GenerativeModel("gemini-3.5-flash")

# 新
from google import genai
client = genai.Client(api_key=api_key)
client.models.generate_content(model="gemini-3.5-flash", contents=prompt)

今後の予定

  • プライベートな内容を扱うようになったら、ローカル AI(Ollama + Qwen2.5 14B on MBP M5 Pro)に切替
  • runbook の整備

まとめ

Syncthing による自己ホスト同期と Gemini API による自動リンク付与を組み合わせることで、クラウド依存を最小限にした PKM 環境を構築できました。ノートを書いて 1 時間後には関連ノートが自動でリンクされるため、知識がネットワーク状につながっていくのを実感できます。


参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?