World Monitor ローカル構築ガイド:Docker、Ollama、PMTiles、オフライン情報パネル

World Monitor をソースまたは Docker でセルフホストし、Ollama、オフライン PMTiles、外部データ依存、キャッシュ、障害対応まで解説します。

World Monitor は、ニュース、市場、航空、地理的リスク、インフラストラクチャ、公共情報のデータを集約するリアルタイム ダッシュボードです。 GitHub Trending には 1 週間で約 13,231 個のスターが追加されましたが、「フロントエンドを開くことができる」ことと「完全にオフラインで実行できる」ことは 2 つの異なる導入目標です。 この記事では、まずコンポーネントとネットワークの依存関係を分離し、次にソース コード開発、コンテナ フロントエンド、ローカル AI の概要に関する 3 つの検証可能なパスを示します。

必要なオフライン範囲を先に決める

プロジェクトのドキュメントでは、プライバシー モデルの 3 つのカテゴリについて説明しています。 最も簡単な方法は、アプリをローカルで開きますが、引き続きパブリック API とクラウド LLM をリクエストします。 2 番目のタイプは、デスクトップ上の Ollama、LM Studio、llama.cpp、または vLLM と連携して、ニュースの概要がローカル マシン上に残り、他のデータ ソースがオンラインのままになるようにするものです。 3 番目のカテゴリは分離ネットワークです。ローカル モデル、ローカル PMTiles、事前に準備されたデータ スナップショット、およびライブ外部ソースの無効化です。 3 番目のカテゴリは、フライト、マーケット、RSS、リスク フィード自体を更新する必要があるため、Docker コンテナーを使用して自動的に実行することはできません。 開始する前に、アクセスが許可されているドメイン名、データ更新時間の要件、クラウドが許可されているかどうかの概要を書き留めてください。

World Monitor は Web ページだけでは動かない

フロントエンドは Vanilla TypeScript アプリケーションであり、地図は MapLibre GL、deck.gl、globe.gl などのコンポーネントによってレンダリングされます。 サーバー部分には、エッジ ハンドラー、RPC ゲートウェイ、キャッシュ、およびデータ シード タスクが含まれます。 AIS Relay は、一部のリアルタイム ストリーミングおよび定期的なデータを処理します。 Redis は、キャッシュ、スロットリング、および複数のリクエストが同じデータを同時に更新するのを防ぐために使用されます。 デスクトップは Node.js サイドカーを備えた Tauri を使用します。 PMTiles は、ベースマップをオブジェクト ストレージまたは LAN HTTP サービスに配置できます。 したがって、セルフホスティングでは、どのコンポーネントが独自に実行され、どのコンポーネントが上流のサービスを借用し続けるかを明確にする必要があります。

導入前ライセンス

リポジトリは AGPL-3.0 であり、商業用途向けの追加手順が含まれています。 個人、研究、教育での使用は、帰属およびライセンス条件に従って自己ホストされる場合があります。 商用 SaaS、ブランド解除、または再パッケージ化では、プロジェクトの商用ライセンス要件を確認する必要があります。 「コードは公的にダウンロードできる」ということは、クローズド ソースとして無条件に販売できるという意味であることを理解してはいけません。 外部サービスの提供を計画する場合は、まずリポジトリにある LICENSE および README 許可フォームをお読みください。

Node.js 22 と基本ツール

を準備する プロジェクト変更ログでは、開発ベースラインとしてNode.js 22 が修正されています。 WSL2 の使用をお勧めします。Windows、Linux、macOS 上の Ubuntu は直接操作できます。

1
2
3
4
node --version
npm --version
git --version
make --version

ノードのメイン バージョンが 22 ではない場合、nvm を使用して切り替えます:

1
2
3
nvm install 22
nvm use 22
node --version

システム ノードと nvm ノード間でグローバル パッケージを混在させないでください。

ソース コード

から完全な開発パネルを起動します 最初に公式リポジトリをフォークするか直接クローンします:

1
2
3
git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
git rev-parse HEAD

コミット SHA を保存すると、その後のドキュメントと構成の変更を特定のバージョンまで追跡できます。 公式貢献ドキュメントでは、統一されたインストール ターゲットが提供されています:

1
make install

buf、sebuf プラグイン、npm 依存関係、Playwright ブラウザーを準備します。 ヘルプのみを表示するには、

1
make help

を実行します。 フルバリアントの開発サーバー:

1
npm run dev

デフォルトのアドレスは http://localhost:3000 です。

variant は別リポジトリではなく構成の違い

World Monitor は、バリアントを介してパネル、マップ レイヤー、更新サイクル、およびデフォルトのデータ ソースを制御します。 テクノロジー、財務、および完全なパネルは個別に起動できます:

1
2
npm run dev:tech
npm run dev:finance

実稼働ビルドには、対応するコマンド

1
2
3
npm run build
npm run build:tech
npm run build:finance

もあります。 バリアントを切り替えると、一部の設定がリセットされます。異なるブラウザー バリアントの localStorage を同じ構成として扱わないでください。

環境変数はデータ ソース

に従って 1 つずつオンになります。 サンプル ファイルをコピーします:

1
cp .env.example .env.local

すべての API キーを一度に入力しないでください。 認証情報を必要としないパネルから開始し、フロントエンド、マップ、および基本的な RPC が動作していることを確認します。 ニュース、マーケット、フライト、LLM サプライヤーを 1 つずつ追加します。 変数が追加されるたびに、サービスが再起動され、ネットワーク要求がチェックされます。 .env.local は Git に入りません:

1
2
git status --short
git check-ignore .env.local

2 番目の項目が出力されない場合は、最初に .gitignore を確認し、実キーの入力を続けないでください。

ホスト型フロントエンドの Docker ルート

リポジトリ内の docker/Dockerfile はマルチ アーキテクチャ イメージを構築し、nginx は SPA を提供し、API リクエストをアップストリームにプロキシします。 最初にローカルでビルドします:

1
2
docker build -f docker/Dockerfile -t worldmonitor:local .
docker image inspect worldmonitor:local

実行する前に、Dockerfile の公開ポートと nginx 構成を確認してください。ポートを推測しないでください:

1
2
docker image inspect worldmonitor:local \
  --format '{{json .Config.ExposedPorts}}'

画像露出 80 を想定し、ループバックのみのマッピング テストが利用可能:

1
2
3
docker run --rm --name worldmonitor-test \
  -p 127.0.0.1:8080:80 \
  worldmonitor:local

実際のポートが異なる場合は、ミラーリング チェックの結果が優先されます。

コンテナ フロントエンドは、すべての API がローカライズされることを意味するわけではありません

ブラウザの開発者ツールの [ネットワーク] パネルを開きます。 ページを更新し、ドメイン名ごとにリクエストをグループ化します。 Vercel、Railway、Upstash、サードパーティのニュース、またはマーケット インターフェイスへのアクセス要求は、現在もクラウドへの依存関係が存在することを示しています。 「Web ページは自分のサーバーから送信されている」ということを使用して、「データは LAN から出ていない」と推測しないでください。 分離が必要な場合は、API エンドポイントを項目ごとに置き換えるか、ローカルで機能しないパネルを無効にします。

Ollama によるローカル ダイジェスト

の提供 World Monitor のネイティブ LLM ルートは、OpenAI 互換サービスをサポートし、Ollama、LM Studio、llama.cpp、および vLLM モデルを検出できます。 Ollama のインストール後にサービスを確認します:

1
2
3
ollama --version
ollama list
curl http://127.0.0.1:11434/api/tags

ネイティブ リソースに適したコマンド モデルをプルします:

1
ollama pull qwen3:8b

OpenAI 互換エンドポイントを再テストします:

1
curl http://127.0.0.1:11434/v1/models

アプリケーションで、ベース URL がループバック アドレスを指すようにし、実際のモデル ID を選択します。

ローカル LLM フォールバック チェーンにはアクティブな検証が必要

プロジェクトのドキュメントでは、ネイティブ LLM、Groq、OpenRouter、ブラウザ T5 を含むフォールバック シーケンスの概要が説明されています。 データがネットワークから流出するのを防ぐことが目的の場合、単に Ollama を構成するだけでは十分ではありません。 また、クラウド キーを削除し、関連するドメイン名をブロックし、ローカル タイムアウト後にブラウザがサイレントにロールバックしないことを確認します。 Ollama サービスを停止します:

1
sudo systemctl stop ollama

改めて概要をトリガーします。 厳密にオフラインの構成では、クラウドの概要を生成するのではなく、ローカル サービスが利用できないことを明確に示す必要があります。

PMTiles はベースマップの依存関係

を解決します 従来のマップは、ビューポートごとにオンライン タイルを継続的に要求します。 PMTiles は、タイルをローカル ディスク、NAS、オブジェクト ストレージ、または通常の HTTP サービスに配置できる個別のアーカイブに編成します。 ファイルを準備したら、最初に最小限の HTTP サービスを実行します:

1
python3 -m http.server 9000 --directory /srv/pmtiles

ブラウザから PMTiles ファイルにアクセスし、範囲リクエストがサポートされていることを確認します。 Range サポートがないと、マップは大きなファイル全体をダウンロードしようとしたり、タイルを見つけられなかったりする可能性があります。 リバース プロキシは、Range および Accept-Ranges に関連するヘッダーを保持する必要があります。

Cloudflare R2 と LAN ストレージのどちらを選択するか

R2 はパブリック ネットワーク サービスに適しており、発信元サイトの帯域幅を削減し、オブジェクト レベルのアクセスを提供できます。 LAN MinIO、NAS、または nginx は、隔離された環境に適しています。 ベースマップ ファイルは大きくなる可能性があり、公開前にサイズとハッシュを記録します:

1
2
sha256sum world.pmtiles
du -h world.pmtiles

クライアントが URL を構成した後、ブラウザを使用してリクエストを確認し、206 Partial Content を返します。

Redis はローカル トライアルのハードしきい値ではありません

1 人による開発では、完全なキャッシュ システムを導入する必要はありません。 複数人またはパブリック ネットワーク サービスでは、Redis がリフレッシュ ストームを制御し、シード結果をキャッシュし、トラフィックを制限する必要があります。 ローカル Redis を開始します:

1
2
docker run --rm --name worldmonitor-redis \
  -p 127.0.0.1:6379:6379 redis:7-alpine

検証:

1
docker exec worldmonitor-redis redis-cli ping

PONG が返される必要があります。 Redis はパブリック ネットワークに直接公開しないでください。また、ホスト間アクセスのデフォルトのパスワードなし構成に依存しないでください。

外部データ ソースに障害が発生した場合の責任の所在を決定する方法

まず、ブラウザー要求の URL、ステータス コード、応答時間を確認します。 401 または 403 は通常、キー、クォータ、または承認範囲です。 429 はレート制限を示します。再試行を追加すると、問題がさらに深刻になる可能性があります。 5xx は、独自のプロキシ、アップストリーム サービス、およびキャッシュ層を区別する必要があります。 空の配列は必ずしも障害ではなく、地域および時間範囲のデータがない可能性があります。 空白のパネルのスクリーンショットを撮るだけではなく、リクエスト ID とレスポンス ヘッダーを保存してください。

AIS とリアルタイム ストリーミングは静的構造

に置き換えることはできません 配送 AIS、フライト、および GPS 干渉レイヤーは、継続的なデータ ストリームまたは定期的なシードに依存します。 純粋な nginx SPA は、既存のデータを表示し、アップストリーム インターフェイスを呼び出すことしかできません。 関連するフローをセルフホストする必要がある場合は、scripts/ais-relay.cjs とデプロイメント構成を読んで、データ プロバイダーのアクセス許可を確認してください。 公開 Web ページに表示されるデータ ソースを無条件にミラーリングして再公開しないでください。

ヘルスチェックとデータの鮮度監視をオンにする

アプリケーションは 200 を返すことがありますが、これはデータが更新されていることを意味するものではありません。 モニタリングは、静的ページ、API エンドポイント、シードの鮮度という少なくとも 3 つのレベルに分かれています。 各データ ソースの最後の成功時間と連続失敗回数を記録します。 ニュースがまだ更新されており、市場が低迷しているときは、サイト全体が完全に健全であるとマークされるべきではありません。

ビルド前にプロジェクト固有のチェックを実行する

1
2
3
4
npm run typecheck
npm run test:data
npm run test:e2e
npm run build:full

をビルドする前にプロジェクト独自のチェックを実行します コマンドの存在は、現在のリポジトリ package.json および make help に基づいています。 データ テストが失敗した場合、失敗の原因を削除して CI を緑色にしないでください。まずはフォーマットが変わっていないか確認してください。 E2E にはブラウザーの依存関係と安定したテスト データが必要で、コンテナー CI には予約された共有メモリが必要です。

リバース プロキシは必要な入り口のみを開きます

パブリック ネットワーク デプロイメントでは HTTPS を使用し、管理エンド、Redis、Ollama、および内部シード エンドポイントをプライベート ネットワークに残します。 デフォルトでは、Ollama をインターネットに直接公開すべきではありません。 フロントエンドと API が別のドメインにある場合は、CORS 許可リストを明示的に設定します。 どのオリジンでも資格情報を保持できるような組み合わせは使用しないでください。

実際に切断訓練を行う

Service Worker、ブラウザー キャッシュ、および IndexedDB には古いデータが保持されたままであるため、パネルをロードした後にインターネットから切断すると、誤検知が発生する可能性があります。 まずテスト プロファイルをクリアし、外部ドメイン名をブロックしてから、アプリケーションを再度開きます。 どのパネルが正常で、どのパネルが古いキャッシュを表示し、どのパネルがエラーを報告するかを記録します。 タイムスタンプによってデータの有効期限が切れていることが明確に示されていることを確認してください。 オフライン モードでは、古い情報をリアルタイム情報として偽装するのではなく、適切に機能を低下させる必要があります。

アップグレード時に variant とマップ設定を保持する

のアップグレード時にバリアントとマップの構成を保持する アップグレードする前に、コミット、.env.local 変数名、PMTiles URL、Redis スキーマ、およびリバース プロキシ構成を保存します。

1
2
3
git fetch --tags
git log --oneline --decorate -10
git diff -- .env.example docker/ deploy/

最初に新しい作業ツリーを構築します。実行ディレクトリを直接上書きしないでください。 フロントエンドのlocalStorageの設定形式は変更される可能性があります。アップグレード後のバリアント、レイヤー、更新サイクルを確認してください。

セルフホスティングによって完成した決定リスト

  • 必要なバリアントを含むページを構築できます。
  • Docker イメージ ポートは推測ではなく検査から得られます。
  • すべての API キーは Git の外部にあります。
  • オンプレミス LLM が失敗した場合でも、サイレントにクラウドに移行することはありません。
  • PMTiles は Range リクエストを返します。
  • Redis、Ollama、および内部サービスはパブリック ネットワークに公開されません。
  • 各リアルタイム データ ソースには最終更新時刻があります。
  • オフライン テストでは、キャッシュと実際の可用性を区別できます。
  • 商用利用のライセンスが確認されました。

World Monitor のセルフホスティングの境界は、保持するライブ データ ソースの数によって異なります。最初にネットワークの依存関係を明確に示してから、ローカル フロントエンド、プライバシー サマリー、または完全な分離のいずれを使用するかを決定する方が、「1 つの Docker コマンド」を直接追求するよりも信頼性が高くなります。

まず、Web ページ、CLI、REST API、MCP を区別します。

このセクションでは、「まず Web ページ、CLI、REST API、MCP を区別する」という問題を解決します。まず現在の状態を記録し、次に最小限のアクションを実行し、最後に独立した証拠で結果を確認します。

World Monitor の場合、これは次のことに基づいています。パブリック MCP ではツールをリストできますが、承認が必要な呼び出しには依然として API キーまたは OAuth が必要です。返される集約インテリジェンスは、元の情報源まで遡る必要があります。この段階で誤ってさらに許可を開かないでください。

1
npx worldmonitor tools

実行後にコマンド出力とタイムスタンプを保持します。出力が現在のターミナルの一時変数に依存している場合は、新しいターミナルを開いて再度確認してください。

ツール/リストを公開することで何が検証できるのでしょうか?

次の順序で処理します。

  1. 実際のバージョンと現在の構成を読み取ります。
  2. このセクションに関連する設定を 1 つだけ変更します。
  3. 読み取り専用または取り消し可能なリクエストを実行します。
  4. ログ、終了コード、および最終ファイルを確認します。
  5. 失敗した場合は、以前の変更を元に戻します。
1
2
npm install -g worldmonitor
worldmonitor tools

ここでの完成基準はインターフェースの見た目ではなく、再現性のある結果が得られる「公開ツール・リストで検証できるもの」です。

World Monitor API キーを取得して保存します

何を確認するか 許容可能なパフォーマンス 停止する必要がある信号
World Monitor API キーを取得して保存する 入出力スコープをクリアする 他のプロジェクトまたはアカウントに自動的に展開
権限 タスクを完了するために必要な権限のみを取得します 管理者権限またはフルキーが必要
ログ 見つけられなかったため、感度が解除されました トークン、Cookie、またはプライベート テキストが表示される
ロールバック 以前の状態に戻すことができます 変更は元に戻すことができず、バックアップはありません。
1
worldmonitor risk IR --api-key wm_xxx

表に停止信号が表示されたら、まずこのセクションの変更を元に戻し、後続の自動化を続行しないでください。

ストリーミング可能な HTTP MCP を Codex に登録する

「Streamable HTTP MCP を Codex に登録する」に関する成功サンプルと失敗サンプルを用意します。成功したサンプルでは通常のパスが検証され、失敗したサンプルでは制限が実際に有効かどうかが検証されます。

1
2
# MCP URL
https://worldmonitor.app/mcp

以下の4項目を記録することをお勧めします。

  • 実行前バージョンまたは Git コミット。
  • 実際の入力。秘密の値は記録されません。
  • 観察可能な出力、ステータス コード、または差分。
  • 回復アクションと回復後の結果の確認。

失敗の原因がまだ不明な場合は、一度に 1 つの変数のみを変更してください。ポート、ランタイム、プロバイダー、およびプロキシを同時に変更しないでください。

最初に CLI を使用してカントリー リスク クエリを実行します

このセクションでは、「CLI を使用してカントリー リスク クエリを最初に実行する」について説明します。まず現在の状態を記録し、次に最小限のアクションを実行し、最後に独立した証拠で結果を確認します。

MCP の結果を読み取り専用の調査に制限する

1
worldmonitor tools

ここでの完了基準はインターフェイスの外観ではなく、再現可能な結果を伴う「MCP 結果を読み取り専用の研究に制限する」ことです。

ニュースの抜粋を元のソースに戻す方法

何を確認するか 許容可能なパフォーマンス 停止する必要がある信号
ニュースの概要を元のソースに戻す方法 入出力スコープをクリアする 他のプロジェクトまたはアカウントに自動的に展開
権限 タスクを完了するために必要な権限のみを取得します 管理者権限またはフルキーが必要
ログ 見つけられなかったため、感度が解除されました トークン、Cookie、またはプライベート テキストが表示される
ロールバック 以前の状態に戻すことができます 変更は元に戻すことができず、バックアップはありません。

市場データと地理データを混同してはなりません

「市場データと地理データを混同してはならない」を中心に成功サンプルと失敗サンプルを用意する。成功したサンプルでは通常のパスが検証され、失敗したサンプルでは制限が実際に有効かどうかが検証されます。

ハンドル 401、403 とツール リストは空です

このセクションでは、「401、403、および空のツール リストの処理」を解決します。まず現在の状態を記録し、次に最小限のアクションを実行し、最後に独立した証拠で結果を確認します。

1
curl.exe -i https://worldmonitor.app/mcp

クエリの範囲と呼び出しコストを制御する

ここでの完了基準は、インターフェイスの外観ではなく、再現可能な結果を得るために「クエリの範囲と呼び出しコストを制御する」ことです。

キーを取り消し、MCP 構成を削除します

何を確認するか 許容可能なパフォーマンス 停止する必要がある信号
キーを取り消し、MCP 構成を削除する 入出力スコープをクリアする 他のプロジェクトまたはアカウントに自動的に展開
権限 タスクを完了するために必要な権限のみを取得します 管理者権限またはフルキーが必要
ログ 見つけられなかったため、感度が解除されました トークン、Cookie、またはプライベート テキストが表示される
ロールバック 以前の状態に戻すことができます 変更は元に戻すことができず、バックアップはありません。
1
npm uninstall -g worldmonitor

複製可能なインテリジェンス検証チェックリスト

「再現可能なインテリジェンス検証チェックリスト」を中心に成功サンプルと失敗サンプルを用意する。成功したサンプルでは通常のパスが検証され、失敗したサンプルでは制限が実際に有効かどうかが検証されます。

OAuth と API キーのどちらを選択するか

このセクションでは「OAuth と API キーの選択方法」を解決します。まず現在の状態を記録し、次に最小限のアクションを実行し、最後に独立した証拠で結果を確認します。

クエリを許可する国と指標を制限する

ここでの完了基準は、インターフェイスが表示されることではなく、「クエリが許可される国と指標を制限する」ことで再現可能な結果が得られることです。

同じイベントの 2 つのソースを相互検証する

何を確認するか 許容可能なパフォーマンス 停止する必要がある信号
同じイベントの 2 つのソースを相互検証する 入出力スコープをクリアする 他のプロジェクトまたはアカウントに自動的に展開
権限 タスクを完了するために必要な権限のみを取得します 管理者権限またはフルキーが必要
ログ 見つけられなかったため、感度が解除されました トークン、Cookie、またはプライベート テキストが表示される
ロールバック 以前の状態に戻すことができます 変更は元に戻すことができず、バックアップはありません。

無効な World Monitor 接続を削除する

「死んだワールドモニター接続の削除」を中心に成功サンプルと失敗サンプルを用意します。成功したサンプルでは通常のパスが検証され、失敗したサンプルでは制限が実際に有効かどうかが検証されます。

ワールドモニターに関するよくある質問

テスト環境をスキップして、公式プロジェクトで World Monitor を直接使用することは可能ですか?

お勧めしません。まず、少なくとも 1 つの最小限の成功リクエスト、1 つの意図的な失敗、および 1 つの回復訓練を完了します。

World Monitor コマンドは実行できますが、結果が正しくありません。最初にどこを確認すればよいですか?

まず入力範囲、実際の有効構成、および上流の応答を確認し、次にモデルの概要を確認します。プロセスが正常であっても、ビジネス結果が正しいとは限りません。

World Monitor のキーまたはトークンが Git に入るのを防ぐにはどうすればよいですか?

システム環境変数、シークレット管理、またはプロジェクト外部の構成ファイルを使用し、コミットする前に差分を検索します。侵害が発見された後は、キーをローテーションする必要があります。

World Monitor をアップグレードするときに見逃しがちなことは何ですか?

最も見逃しやすいのは、構成形式、デフォルトのリスニング アドレス、アクセス許可の範囲、キャッシュの互換性です。アップグレードする前に、バージョンと検証サンプルを保存してください。

プロジェクト情報

World Monitor の Docker Compose セルフホスト補足

koala73/worldmonitor はリアルタイムのグローバルインテリジェンスダッシュボードです。ニュース、地政学イベント、インフラ状態、さまざまなトピックチャンネルを集約します。情報の状況把握ページに近く、自前のニュース監視入口として使いやすいプロジェクトです。

プロジェクト:

https://github.com/koala73/worldmonitor

公式サイト:

https://worldmonitor.app

ローカルで起動する

README のクイックスタートコマンドは次のとおりです。

1
2
3
4
git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
npm install
npm run dev

起動後、まずデフォルトページが正常に動くか確認してから、デプロイを考えます。

チャンネル別に起動する

プロジェクトには複数のチャンネル用開発コマンドが用意されています。

1
2
3
4
5
npm run dev:tech       # tech.worldmonitor.app
npm run dev:finance    # finance.worldmonitor.app
npm run dev:commodity  # commodity.worldmonitor.app
npm run dev:happy      # happy.worldmonitor.app
npm run dev:energy     # energy.worldmonitor.app

技術ニュースだけを見たいなら、まず dev:tech を試します。金融や商品に関心があるなら、dev:financedev:commodity をそれぞれ試します。

ビルドとチェック

コミットやデプロイの前には、次を実行しておくとよいです。

1
2
npm run typecheck
npm run build:full

この 2 つのコマンドで、TypeScript の型問題と本番ビルドの問題を先に見つけられます。

向いている使い方

World Monitor は次の用途に向いています。

  1. 自分用のリアルタイムニュース入口を作る。
  2. チーム向けに技術、エネルギー、金融、商品などのテーマ別ダッシュボードを作る。
  3. 単一プラットフォームの推薦だけに頼らず、複数ソースのニュースフローを見る。
  4. 内部向けインテリジェンス dashboard として二次開発する。

デプロイの提案

README では self-hosting guide への案内があり、デプロイ方法には Vercel、Docker、静的デプロイが含まれます。まずローカルで動かしてから、Vercel または自分のサーバーにデプロイするのがおすすめです。

使うときの注意点として、ニュース集約ダッシュボードはシグナルを早く見つける助けにはなりますが、すべての情報が検証済みという意味ではありません。金融、地政学、安全保障に関する内容は、元の情報源を開いて交差確認するのが安全です。