---
title: "自ホスト型SynchとIgnisを導入しObsidian保管庫を複数デバイス間で安全に同期する方法"
description: "Cloudflare Zero Trust環境において、自ホスト型のSynchとIgnisを導入し、複数デバイス間でObsidianの保管庫（Vault）を安全に同期・暗号化するとともに、ウェブブラウザ経由でノートを安全に閲覧・編集するための、強固なプライベートネットワーク構築手順を詳しく解説します。"
canonical_url: "https://techvoyage.dev/ja/article/sync-obsidian-across-devices"
last_updated: "2026-10-20T09:53:55.037Z"
---

Obsidianは、ローカルファースト（ローカル優先）のナレッジ管理アプリです。すべてのノートはデバイス上のMarkdownファイルとして保存され、完全にユーザー自身の管理下に置かれます。しかし、ノートパソコン、スマートフォン、その他のデバイスで同じ保管庫（Vault）を共有したかったり、外出先からウェブブラウザ経由でアクセスしたかったりすることも少なくありません。

![複数デバイス間で同期されたObsidian保管庫のイラスト](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-multi-device-sync-illustration.webp)Obsidian向けにはいくつかの同期ソリューションが提供されていますが、コンフリクト（衝突）の処理、暗号化、またはデータの所有権（データ主権）などの面で、何らかのトレードオフを伴うのが一般的です。[Synch](https://github.com/hjinco/synch)は、セルフホスト（自ホスト）サーバーを用いて、エンドツーエンド（端対端）の暗号化と自動コンフリクト処理を両立させながらObsidianの保管庫を同期できるオープンソースのアプリケーションです。

Obsidianのローカルファーストなアプローチはほとんどの場面で完璧に機能しますが、状況によってはウェブブラウザからリモートで保管庫にアクセスしたい場合もあります。[Ignis](https://github.com/Nystik-gh/ignis)は、オープンソースのウェブクライアントであり、ウェブブラウザ上でObsidianをデスクトップアプリに近い形式で実行できるため、場所を問わず保管庫の閲覧・編集が可能です。

このガイドでは、**VPS**（仮想専用サーバー）上に**Synch**と**Ignis**をセットアップし、これらを公開インターネットにさらすのではなく、**[Cloudflare Zero Trust](/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp)**のプライベートネットワーク内で安全にホストする手順を紹介します。

![Cloudflare Zero Trustを使用したObsidian同期のアーキテクチャ図](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-sync-cloudflare-zero-trust-architecture.webp)<article-card description="インバウンド用のファイアウォールポートを開放することなく、Cloudflare WARPとZero Trustを用いて、Hermesエージェントをグローバルから安全に公開・アクセスする方法を解説します。" image="https://inimages.techvoyage.dev/articles/Exposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP/EN-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp" image-alt="Cloudflare Zero TrustとWARPトンネルを使用してHermesエージェントをプライベートネットワークに安全に公開する様子" label="関連記事" min-read="8" title="Cloudflare WARPでHermesエージェントをプライベートに公開する方法" to="/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp">



</article-card>

## SynchによるObsidian保管庫の安全な同期

**Synch**には以下の特徴があります：

- 変更が検出されると、即座に保管庫を同期
- アップロード前に保管庫のデータを暗号化
- バージョン履歴（履歴管理）からの復元が可能
- 自動コンフリクト処理を搭載

**Synch**は、デバイス上でランダムな32バイトの**保管庫キー（Vault Key）を生成し、これを用いてデータを暗号化します。リモート保管庫を作成する際に、保管庫パスワードを設定します。このパスワードは保管庫キー**を保護するために使用され、サーバー上に安全に保管され、他のデバイスでロックを解除する際に必要となります。

コンフリクトの解決は、サーバー上ではなく、お使いのクライアントデバイス上で行われる点に注意してください。2つのデバイスが同じノートを同時に編集した場合、サーバーは最初に到着したバージョンを保持し、もう一方のデバイスを「古い（バージョン不一致）」状態としてマークします。古い状態のデバイスは、最終的なマージ後のノートをアップロードする前に、ローカルの変更内容に新しいバージョンを自動的にマージ（統合）します。

### VPSへのSynchの導入

#### ドメイン名の作成

CloudflareでAレコードを作成し、プロキシステータスを **「DNSのみ（DNS only）」**（CloudflareのCDNをバイパスする設定）に設定します。

![CloudflareでのSynchサーバー用DNS Aレコードの構成](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/cloudflare-dns-a-record-synch-server.webp)#### Ubuntu上でDockerを用いたSynchのインストール

##### リポジトリのクローン

```bash
git clone https://github.com/hjinco/synch.git       
        
# APIフォルダに移動
cd synch/apps/api
        
# 環境変数ファイルのサンプルをコピー
cp .env.example .env
```

##### `.env` ファイルの設定

- `PUBLIC_URL=synch.pafor.me`: Synchサーバーの公開ドメイン名（前のステップで作成したドメイン名）を入力します。
- `BETTER_AUTH_SECRET` と `SYNC_TOKEN_SECRET`: この[オンライン秘密鍵生成ツール](/ja/tools/secret-key-hex)を使用するか、ターミナルで `openssl rand -hex 32` を2回実行して安全な鍵を生成します。
- `AUTH_ALLOWED_EMAILS`: アカウント作成とサインアップを許可するメールアドレスをカンマ区切りで指定します。

##### Caddyfileへのドメインの追加

Cloudflare DNSモジュールをCaddyに統合し、コンテナ内で起動する方法の詳細については、こちらの[セルフホストBuzzに関する記事](/article/self-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#_4-enable-https-with-caddy)をご参照ください。

<article-card description="Dockerコンテナ内のCaddyが、Cloudflare DNS認証チャレンジを用いてSSL/TLS証明書を自動的に発行・更新するように構成する方法を学びます。" image="https://inimages.techvoyage.dev/articles/Self-Hosting%20Buzz%20As%20The%20Workspace%20Where%20AI%20Agents%20Become%20Colleagues/EN-Self-Hosting-Buzz-As-The-Workspace-Where-AI-Agents-Become-Colleagues.webp" image-alt="自己ホスト型ワークスペースにおいて、SSL/TLS証明書の自動生成のためにCloudflare DNS APIトークンを使用してCaddyを構成する構成図" label="セルフホストガイド" min-read="12" title="Block製Buzzを自己ホスト：人とAIエージェントが自律的に協働する次世代共有ワークスペースの構築" to="/article/self-hosting-buzz-as-the-workspace-where-ai-agents-become-colleagues#_4-enable-https-with-caddy">



</article-card>

Caddyfileに `SYNCH_DOMAIN` ディレクティブを追加し、ポート `8787`（Synchコンテナが使用するポート）を指定します：

```json
{
  acme_dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}

{$SYNCH_DOMAIN} {
  encode zstd gzip
  reverse_proxy host.docker.internal:8787
}
```

コンテナを起動します：

```bash
docker compose up -d
```

次の `curl` コマンドを実行して、稼働状況を確認します：

```bash
curl https://synch.pafor.me/health
```

### ObsidianとSynchサーバーの接続

#### ObsidianへのSynchプラグインのインストール

Obsidianの設定を開き、**「コミュニティプラグイン」**に移動して、**「閲覧（Browse）」**ボタンをクリックします：

![Obsidian設定でのコミュニティプラグインの閲覧](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-community-plugins-browse.webp)検索バーで **「Synchrun」** を探し、インストールします：
![ObsidianへのSynchrunプラグインのインストール](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-install-synchrun-plugin.webp)

**「Synchrun」** のインストール完了後、プラグインの設定を開き、**「Use a self-hosted server（自ホストサーバーを使用）」**を有効にします。次に、**「Server URL」**フィールドに https://synch.pafor.me を入力し、**「Save」**をクリックします。

![Synchrunプラグイン設定でのセルフホストサーバーURLの構成](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-synchrun-plugin-settings-self-hosted.webp)**「Account」**項目内にある **「Sign in on this device（このデバイスでサインイン）」** ボタンをクリックします。続いて、`.env` ファイルの `AUTH_ALLOWED_EMAILS` リストに指定したメールアドレスを使ってサインアップ（アカウント登録）を行います。完了後、以下の認証ページにリダイレクトされます：

![Synchrunのアカウント認証ページ](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synchrun-account-authorization-page.webp)**「Allow Obsidian sign-in（Obsidianへのサインインを許可）」** ボタンをクリックします：

![SynchのためのObsidianサインインの許可](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synchrun-allow-obsidian-signin.webp)**「Return to Obsidian（Obsidianに戻る）」** ボタンをクリックし、次に **「Create vault（保管庫の作成）」** をクリックします：
![Synchrunでの新しいリモート保管庫の作成](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-synchrun-create-remote-vault.webp)

リモート保管庫の名前と安全なパスワードを入力して作成します。

![Obsidianリモート保管庫の安全なパスワードの設定](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-synchrun-vault-password-setup.webp)これで自動的に同期処理が開始されます。お使いの保管庫の容量によって完了までにかかる時間は異なります。同期完了後、ストレージの総使用量が表示されます。

![使用中の合計ストレージを示すSynchrun同期完了画面](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-synchrun-sync-completed-storage.webp)## IgnisによるブラウザベースのObsidianアクセス

**Ignis**は、Obsidianが使用するElectron APIをWeb APIに置き換えることで、標準的なウェブブラウザ上で直接ObsidianのJavaScriptコードを実行可能にするツールです。すべてのMarkdownファイルと添付ファイルは、ホストサーバー上のファイルシステムに直接保存されます。

ただし、スタンドアロン型のObsidianデスクトップアプリと比較して、いくつかの制限事項が存在します。ブラウザ環境に直接対応する機能がないElectron APIやNode.js APIに依存する一部の機能やサードパーティ製プラグインは動作しません。詳細な互換性については、Ignis公式の [Limitations（制限事項）](https://ignis.thiefling.com/docs/using/limitations/) および [Plugin compatibility（プラグイン互換性）](https://ignis.thiefling.com/docs/using/plugin-compatibility/) ガイドをご参照ください。

### Ignisのセットアップ

今回はDockerを使用し、VPS上に **Ignis** をインストールして、ローカルの `./vaults` フォルダにマウントします。この保管庫ディレクトリは、先ほど設定したリモート保管庫から最新のノートデータを取得するために、**Synch CLI**を用いてバックグラウンドで自動同期されます。

また、**Ignis**には標準でユーザー認証機能が備わっていないため、外部からの不正アクセスを防ぐために、**[Cloudflare Zero Trust](/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp)**のプライベートネットワークの背後に隠して安全を確保します。

#### DNSレコードの作成

![CloudflareでのIgnis Webクライアント用DNS Aレコードの構成](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/cloudflare-dns-a-record-ignis.webp)#### Caddyfileへのドメイン追加

`synch.pafor.me` と同様に、Caddyfileに `obsidian.pafor.me` を追加します：

```json
{$OBSIDIAN_DOMAIN} {
  encode zstd gzip
  reverse_proxy host.docker.internal:9898
}
```

#### Dockerを使用したIgnisの起動

以下の docker-compose yml の内容を `ignis-docker-compose.yml` としてVPS上に保存します：

```yml
services:
  ignis:
    image: nobbe/ignis:latest
    ports:
      - "9898:8080"
    environment:
      # お使いのホストユーザーのUID/GIDに合わせて構成してください (確認コマンド: id)
      - PUID=1000
      - PGID=1000
      - WS_ORIGINS=https://obsidian.pafor.me
    volumes:
      - ./vaults:/vaults
      - ./data:/app/data
      - obsidian-app:/app/obsidian-app
    restart: unless-stopped

volumes:
  obsidian-app:
```

- ポート `8080` は他のサービスと競合しやすいため、ホスト側では `9898` を使用します。
- VPS上で `id` コマンドを実行し、お使いのホストユーザーの `UID` と `GID` を確認・設定して、適切なファイルシステム権限が適用されるようにします。
- `WS_ORIGINS` を設定し、指定した独自ドメインのみからWebSocket接続を受け入れるよう制限します。

**Ignis** のコンテナを起動します：

```bash
docker compose -f ignis-docker-compose.yml up -d
```

ウェブブラウザで設定したドメインにアクセスすると、**「Vault Manager（保管庫マネージャー）」**が表示されます。まだ保管庫が作成されていないため、画面は空の状態です。次のセクションで、リモート保管庫とデータを同期するために **Synch CLI** の設定を行います。

![Ignis Webクライアントの空のVault Managerインターフェース](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/ignis-vault-manager-empty.webp)#### ファイアウォールに関する注意点

Dockerの標準仕様として、コンテナを起動すると自動的にDNATおよびFORWARDルールがiptablesへ挿入され、外部からの通信がダイレクトに対象コンテナへルーティングされます。この挙動は、Ubuntuに標準搭載されているUFWやiptablesの `INPUT` チェーンによる制御をバイパスしてしまいます。コンテナを完全にプライベート化し、不要な通信を遮断するために、手動で以下のルールを `iptables` に適用します：

```bash
# 外部公開インターフェースからのトラフィックをすべて拒否
sudo iptables -I DOCKER-USER -i ext_if -j DROP 

# 許可する特定のCloudflare WARPクライアントのプライベートIPからのみアクセスを許可
sudo iptables -I DOCKER-USER -i ext_if -s 100.96.0.10 -j ACCEPT
```

#### Synch CLIのセットアップ

**Synch CLI**は、グラフィカルなUIを持たない（CUI用の）ツールであり、デスクトップ版のアプリケーション一式をインストールすることなく、リモートサーバー上で直接Obsidianの保管庫フォルダを同期させることができます。

先ほどクローンした `synch` リポジトリから、**Synch CLI**をビルドします。ビルドには、**Node.js >= 22.5**（CLIが内部で `node:sqlite` や、`fetch`, `WebSocket`, `WebCrypto` などのブラウザ互換APIに依存しているため）および **pnpm**（リポジトリがバージョン `10.33.0` のpnpmワークスペースとして管理されているため）が必要です：

```bash
# バージョンの確認
node --version   # 22.5以上であることを確認
pnpm --version

# リポジトリのルートディレクトリで
pnpm install

# CLIのビルドを実行
pnpm -C apps/cli build

# ビルドに成功すると、`apps/cli/dist/synch.js` が生成されます。実行権限を付与し、パスの通った場所に配置します
chmod +x apps/cli/dist/synch.js
ln -sf "$PWD/apps/cli/dist/synch.js" "$HOME/.local/bin/synch"

# 正しく導入されたか確認
synch --help
```

ビルドしたSynch CLIは、リモートのSynch保管庫が稼働しているのと同じVPS上で実行するため、ローカルのAPIサーバーに直接接続できます。もし別の独立したサーバーから同期を設定する場合は、`synch login --api-url <リモートのSynchのAPIのURL>` を実行してあらかじめ接続先を定義しておきます。

![ターミナルでカスタムAPI URLを使用してsynch loginを実行する](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synch-login-api-url-terminal.webp)

ターミナルで `synch login` を実行すると、認証用URLが提示されます：

![Synch CLIの認証URLを示すターミナル出力](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synch-login-auth-url-terminal.webp)

デスクトップ版ObsidianのSynchrunプラグインに登録したのと同じメールアドレスを用いて、提示されたウェブページからログインします。

![Synch CLI認証のためのWebログインの成功](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synch-web-login-success.webp)

ログイン後、`synch vault connect --vault ~/vaults/<保管庫名> --vault-id asadqe-7b29-4677-fsad-234asdafasd` を実行して、VPS上のローカルディレクトリとリモートの保管庫を紐づけます。

リモート保管庫のID（Vault ID）は、デスクトップ版プラグインの **「Synchrun」** 設定画面の **「Manage remote vaults（リモート保管庫の管理）」** から確認可能です。クリックするとウェブページが開き、固有のGUID（例: `123e4567-e89b-12d3-a456-426614174000`）が設定された保管庫一覧が表示されます：

![Synchrunプラグインでのリモート保管庫の管理](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synchrun-manage-remote-vaults.webp)![Synchrunでの一意のリモート保管庫IDの検索](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synchrun-remote-vault-id.webp)

プロンプトの指示に従って保管庫のパスワードを入力すると、接続が確立されます。その後、`synch sync --vault ~/vaults/<保管庫名>` を実行して最初の同期処理（イニシャル同期）を行います。初回はデータ量に応じて数分〜数十分ほどかかる場合があります。

![Synch CLIでの初期保管庫同期の進行状況](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/synch-cli-initial-sync-progress.webp)

この同期処理を常時自動化するために、システム起動時にバックグラウンドで `synch watch` が自動実行され、変更を即座に反映できるように、systemdのサービスユニットを作成して有効化します：

```bash
sudo tee /etc/systemd/system/synch-watch.service <<'EOF'
[Unit]
Description=Synch vault watcher
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=<username>
ExecStart=/home/<username>/.local/bin/synch watch --vault /home/<username>/vaults/<vault-name>
WorkingDirectory=/home/<username>/vaults
Environment="PATH=/home/<username>/.local/bin:/home/<username>/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="HOME=/home/<username>"
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now synch-watch.service
```

ブラウザで `obsidian.pafor.me` にアクセスしてみましょう。以下のように、デスクトップ版とほとんど見分けがつかない美しいインターフェースとノートレイアウトが表示されます：

![デスクトップでObsidian保管庫を表示するIgnis Webインターフェース](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/ignis-web-interface-desktop-view.webp)設定アイコンを開くと、ほぼすべての基本設定がそのまま引き継がれていることが確認できます。ただし、コミュニティプラグインについては、ブラウザ側で必要に応じて個別に再インストールを行う必要があります：

![Ignis Webインターフェースのコミュニティプラグイン設定](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/ignis-settings-community-plugins.webp)動作テストとして、このウェブ画面側から新しくノートを1枚追加してみます：

![Ignis Webインターフェースを介した新しいMarkdownメモの作成](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/ignis-create-new-note-web.webp)作成すると、即座にデスクトップ側のObsidianアプリにも同期され反映されることが確認できます。なお、中身が空のフォルダは **Ignis** の画面上には表示されない仕様になっています。

![新しく作成されたメモがObsidianデスクトップアプリに正常に同期されました](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/obsidian-desktop-synced-note.webp)スマートフォンなどのモバイルブラウザから `obsidian.pafor.me` にアクセスした場合の表示：

![モバイルデバイスでのIgnis Webクライアントのサイドバーナビゲーション](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/ignis-mobile-view-sidebar.webp)![モバイルデバイスでのIgnis WebクライアントのMarkdownメモエディター](https://inimages.techvoyage.dev/articles/Sync%20Obsidian%20Across%20Devices/ignis-mobile-view-editor.webp)

また、**Ignis**上で不要になったノートを削除した場合、そのノートはローカル保管庫内の `~/vaults/<保管庫名>/.trash` フォルダへ安全に移動（ゴミ箱行き）となります。

## 自己ホスト型保管庫に関するまとめ

オープンソースの **Synch** と **Ignis** を組み合わせることで、自分が完全に管理・所有するインフラ上で、メインのObsidian保管庫をデバイスを選ばず安全に同期・活用できるようになります。また、これらのサービスを **Cloudflare Zero Trust** の閉域プライベートネットワーク内に配置することで、あなたの大切な個人ノートを公開インターネットの脅威から完全に隔離・保護することが可能です。

なお、**Ignis**はデスクトップ版のローカルアプリを100%代替することを狙って作られたものではありません。あくまで「手元に普段のパソコンがない時や、他環境のブラウザからノートを一時的に確認・編集したい場合」に重宝する、軽量かつ機動性に優れたウェブクライアントとしての役割を担います。普段のノート記述や細かなカスタマイズ、プラグインの本格的な利用には、引き続きObsidianのネイティブアプリを主軸として活用するのが最善です。

最後に、Synchはエンドツーエンドで強力に暗号化されているため、ブルートフォース（総当たり）攻撃からノートを守るためには、十分に強固なリモート保管庫パスワードの設定が必須です。万が一パスワードを紛失した場合、サーバー側には復号された **保管庫キー** は一切保存されていないため、データを復元することは絶対に不可能です。VPSのインスタンスのセキュリティ管理、および自動スナップショットやバックアップのメンテナンスも、怠らず適切に行ってください。

Synchの履歴管理機能やゴミ箱への退避機能によって、誤操作によるデータ消失の大半は防げますが、大切なナレッジを守るためにも、Obsidian保管庫全体の独立したバックアップを別途定期的に取得しておくことを強くお勧めします。

## 参考リンク

- [Docker Composeを用いたSynchのデプロイ方法](https://synch.run/self-hosting-docker/)
- [Dockerを用いたIgnisのデプロイ方法](https://ignis.thiefling.com/docs/server/deploy/)
- [Synchにおけるエンドツーエンド暗号化の仕組み](https://synch.run/blog/encryption-and-decryption/)
