ユーザマニュアル
FrontierStack
デスクトップ版
Apache・データベース・メール・セキュリティなど 1,000 以上のサービスを、Mac とフリート全体でインストール・実行・監視。AI 管理者が舵を取ります。
目次
第 I
FrontierStack とは何か、その考え方、そして Mac で動かすまで。
第 1
はじめに
Apple が手放したサーバコントロールパネルを、1 台の Mac からフリート全体まで再構築。サーバを実際に把握し修正できる AI が舵を取ります。
Apple が macOS Server.app を終了したとき、Mac ユーザは Web サイトやサービスを手軽に運用する手段を失いました。FrontierStack はそれを取り戻し、さらにその先へ進みます。Apache・PHP・MySQL・PostgreSQL・Nginx をはじめ 1,000 を超えるサービスを、目の前の Mac でも、連携したすべてのサーバでも、インストール・制御・保護・監視します。そして、ツールを使う AI 管理者が舵を取ります。
本マニュアルはデスクトップアプリの完全リファレンスです。iPhone/iPad アプリについては別冊のモバイル版マニュアルを参照してください。まず本章を通してお読みください。その後は必要なパートへお進みください。
1.1FrontierStack とは
FrontierStack はネイティブの macOS アプリです — Web パネルでも、世話の焼けるコンテナでもありません。実際のマシン上の実サービスを、それぞれが標準で備えるツール(Homebrew フォーミュラ、launchd・systemd ユニット、Apache・Nginx の設定、証明書、ファイアウォール、SSH)を使って管理します。次の 3 つを同時に実現します。
- コントロールパネル。検証・ライブ状態・ワンクリック修正付きで、サービスをインストール・起動・停止・設定 — 現代化した macOS Server の後継です。
- 監視・通知システム。継続的なヘルススイープがサービス・サイト・証明書・ディスク・フリート全体を見守り、トラブルの最初の兆候を、選んだチャネルへのメッセージに変えます。
- AI 管理者。あなたの構成を正確かつライブに把握する、ガードレール付きのツール使用アシスタント。何が壊れているか診断し、あなたが承認する修正案を提示し、ローカルでもフリート全体でも実行し、アプリをあなたの構成ぴったりに作り替えます。
1.2AI ファーストの設計
多くのアプリはチャットボックスを横に付け足すだけです。FrontierStack は逆です。AI は、あなたが使うのと同じ操作を行う一級のオペレータです。AI は監査済みの固定されたツール(ログを読む・診断を実行する・サービスを再起動する・証明書を発行する・ファイルを書く)を通じてのみ動作するため、その行為はすべてあなたが手作業でできることであり、システムを変更する操作はすべて、実行前にあなたの承認のため提示されます。
本番サーバを任せられるだけの安全性を支えるのは、3 つの原則です。
- 既定は読み取り専用。初期状態ではアシスタントは見るだけで触れません。変更とスクリプトは明示的なトグルで解除し、変更を伴う操作はすべて実行前に承認カードを表示します。
- 秘密情報はモデルに届きません。パスワードや API トークンはローカルの
.envボールトに置きます。スクリプトは名前で参照し、アプリが実行時に(ローカルまたは SSH 経由で)実際の値を注入します。クラウドモデルが見るのは名前だけで、値は決して見ません。ログやファイルは送信前に秘密情報を伏せます。 - AI は自前で。クラウドモデルでもローカルモデル(Ollama・LM Studio)でも接続できます。MCP 経由で自分のサブスクツール(Claude Code・Cursor)から動かせば、従量課金のトークン請求は一切ありません。
1.3対象ユーザ
FrontierStack は、Mac でサーバを運用している(あるいは運用したい)すべての方に向いています。
- MAMP や XAMPP ではなく、クリーンなローカルスタックを使いたい開発者。
- POS・CRM・EC・メール・ヘルプデスクを Mac mini でセルフホストする小規模事業者。
- 旧来の Xserve や Mac mini を macOS Server のままリモート管理で活かしたい管理者。
- 従量課金の SaaS からセルフホストへ移行したい方、あるいは Mac・Linux・BSD・Raspberry Pi のフリートを 1 つの画面から運用したい方。
1.4主要な概念と用語
本マニュアル全体で繰り返し登場する用語を、ここで一度だけ紹介します。
| 用語 | 意味 |
|---|---|
| サービス | FrontierStack がインストール・実行・監視できるもの — Apache、データベース、メールサーバ、コンテナ、ルータ連携など。一覧がカタログです(第 6 章)。 |
| ペイン | サイドバーから開く、1 つのサービスやツールの画面。 |
| ヘルパー | 毎回パスワードを求めずに管理操作を行う小さな特権ツール(SMAppService デーモン)。任意。初回起動時にインストールします。 |
| ロケーション | Mac が今ネットワーク上のどこにいるか(自宅・オフィス・外出先)。ロケーションにより、アラートや到達性がネットワークを意識したものになります(第 8 章)。 |
| 連携サーバ | SSH で接続した別マシン。FrontierStack が診断やスクリプトを実行できます。それらの総体がフリートです。 |
| AI 管理者 | 組み込みのツール使用アシスタント。AI ハーネスとも呼びます。第 13 章で詳説します。 |
| MCP | Model Context Protocol — 外部の AI ツール(Claude Code・Cursor)が、同じガード付きツールを通じて FrontierStack を操作できる開かれたインターフェイス(第 14 章)。 |
| 秘密情報/ボールト | ローカルの .env ストアにある名前付きの資格情報。スクリプトは $NAME で参照し、値は Mac に留まります。 |
1.5本マニュアルの構成
マニュアルは作業の流れに沿っています。
- パート I — はじめに:インストール、初回起動、インターフェイスの概観。
- パート II — サービスの運用:Web スタック、データベース、全カタログ、サイトとドメイン。
- パート III — フリート・ネットワーク・セキュリティ:サーバ連携、ネットワークと境界、堅牢化、監視とアラート。
- パート IV — 自動化と AI:スクリプトとスケジュール、AI 管理者の全容、MCP、AI スタック。
- パート V — ビジネスとリファレンス:業種別ソリューション、設定、ショートカット、ライセンス、トラブルシューティング。
まったく初めての方は、第 2 章「インストールと初回起動」へお進みください。AI だけを理解したい方は第 13 章へ進んでも構いませんが、そこでの安全モデルは上記の概念を前提とします。
第 2
インストールと初回起動
ダウンロードから動くスタックまで。macOS が求める許可、管理作業を楽にする任意のヘルパー、そして既存の MAMP・XAMPP・Server.app 構成の移行までを案内します。
FrontierStack は他の Mac アプリと同じようにインストールできます — /Applications にドラッグして開くだけです。その先はあなた次第です。macOS が標準で出す操作ごとのパスワードプロンプトのまま動かすことも、一度だけ少数の許可を与えて以後は一切尋ねられないようにすることもできます。本章では初回起動の全体をたどり、続いて既存のローカルスタックを移行してサイトとデータベースを引き継ぐ方法を示します。
2.1システム要件
FrontierStack は署名済みのネイティブ macOS アプリです。必要なものは次のとおりです。
| 要件 | 詳細 |
|---|---|
| macOS | macOS 13(Ventura)以降。任意のヘルパーは SMAppService を使い、これは macOS 13 以降の API です。 |
| アーキテクチャ | Apple シリコンまたは Intel。アプリは Apple シリコンでは /opt/homebrew(Intel では /usr/local)の Homebrew スタックを管理します。 |
| Homebrew | 推奨ですが起動には必須ではありません。大半のサービスは Homebrew フォーミュラとしてインストールされ、FrontierStack が代わりに Homebrew をインストールできます(後述)。 |
| 管理者アカウント | Mac の管理者アカウント。サービスのインストールやシステム設定の編集には管理者権限が必要です — 任意のヘルパー経由か、macOS が操作ごとに出すパスワードプロンプト経由のいずれかです。 |
どれも特別なものではありません。現行の macOS を動かせる程度に新しい Mac なら、FrontierStack も動きます。
2.2ダウンロードと初回起動
アプリをダウンロードし、FrontierStack.app を /Applications フォルダに移動してダブルクリックします。アプリは Enfour, Inc.(Apple Developer チーム 6Y87KNMALP)によって署名・公証されているため、macOS は「開発元未確認」の警告なしに開きます。
- FrontierStack を開きます。メインウィンドウが表示され、左にサービスのサイドバー、中央にヘルス概要が現れます — 第 1 章で見たレイアウトです。
- Homebrew がまだ無い場合、それを必要とするペインはその旨を表示し、インストールを提案します。今でも後でも構いません。
- FrontierStack は単一インスタンスを強制します。既に 1 つ開いている状態でもう一度起動しても、2 つ目が立ち上がるのではなく、既存のウィンドウが前面に出てくるだけです。これにより、2 つのウィンドウが同じサービスや設定ファイルを奪い合うのを防ぎます。
初回起動はシステムに何の変更も加えません。アプリはインストール済みのものを読み取って状態を表示するだけで、あなたが指示するまで何も起動・停止・再設定はしません。
2.3セットアップアシスタント
FrontierStack を初めて開くと、数百のサービスが並ぶサイドバーにいきなり入るのではなく、短いセットアップアシスタントが表示されます。全 8 ページで、設定ではなくあなた自身について尋ね、答えは何も永続的ではありません — どの回答も、最初に何を表示し何を提案するかを決めるだけです。いつでも中断でき、サーバまたはデバイスを追加 ▸ セットアップアシスタントから開き直せます。
| ページ | 尋ねること |
|---|---|
| はじめに | ほかのプラットフォームから Web サイトを移すかどうか — STUDIO、Wix、Squarespace、Webflow、WordPress.com、Shopify、共用レンタルサーバ、ほかのサーバ、MAMP や XAMPP、Apple Server、Windows。移す場合は、そこからの移行で FrontierStack が何をするかを示し、サイドバーにはその移行に必要なツールだけを表示します。移さない場合は、管理するネットワークやサーバがすでにあるか、一から始めるかを尋ねます。Mac 上に既存の MAMP 系構成が見つかると、この質問には自動で答えが入ります。 |
| あなたのビジネス | Web サイトを移す場合のみ:業種 — 店舗、飲食店、ホテル、クリニック、学校、制作会社など。その業種向けのツールを、移行用のツールに加えます。 |
| 目的 | Web サイトを移さない場合:ビジネスの運営、開発、サーバ管理、顧客の管理、サービスのセルフホスト、家庭のネットワーク。複数選択可。 |
| 環境 | サーバ管理の経験、対象となる人数、管理するデバイス数 — 1 台から 250 台超まで。 |
| スタック | Apache、Nginx、PHP、Node.js、Python、MySQL、PostgreSQL、MongoDB、Redis、Git など。未導入のものをインストールできます。 |
| AI | AI 管理者が、既に契約している AI サブスクリプションを使うか、API キーまたはローカルモデルを使うか。 |
| 確認 | 何がインストールされ、何が提案にとどまるかを、実行前に提示します。 |
| バックアップ | この Mac に毎時のバージョン付き設定履歴を保持するか(既定でオン)、さらに iCloud Drive や Dropbox など別の場所へ同期されるフォルダに毎日コピーを置くか — ピン、Setups、Locations、環境設定、Apache/PHP 構成が OS アップグレードやリセットを乗り切るように。 |
| ライセンス | 現在の状態:有効なライセンス、またはライセンスなしで使える範囲 — お持ちのライセンスコードを貼り付ける欄もあります。 |
完了すると、もう 1 ステップ開きます:画面いっぱいのServices Manager で、回答に合うセクションが開いた状態、その中の項目はすべてオフです。サイドバーに表示したいものをオンにして続けるを選びます。スキップするか、何もオンにせずに続けると、推奨されたものがすべてオンになります。AI 管理者と AI Models はどちらの場合もオンのままで、AI 管理者への指示はこのステップを閉じてから送られます。
最後のページはライセンスについてで、販売の関門ではなく率直な説明です。FrontierStack はライセンスなしでも動作します — この Mac の監視、サーバ連携、AI 管理者の利用、すべての診断の閲覧。今作成した計画のうちライセンスが必要なのは移行の実行です。スタックの移動はデータベース・サイト・設定を対象へコピーし、そこで動くものを変えるためです。ライセンスがなくても FrontierStack は移行元を検出し、見つかったサイトとデータベースを一覧し、移行で何が移るはずかを正確に表示します。AI 管理者も完全な移行計画を作成します。ライセンスが必要なのは実際に移す部分だけで、Migration ペインはボタン上でその旨を明示し、黙って失敗することはありません。
コンテナ、バックアップ先、監視はスタックページでは意図的にインストールしません。アシスタントが勝手に決めるべきでない判断を含むため、計画に含めるだけにとどめます。
2.4特権ヘルパー — と macOS が求める許可
サービスの起動・停止やシステム設定(Apache・Nginx・MySQL・DNS・ファイアウォール)の編集は特権操作です。初期状態では、FrontierStack はそれぞれを標準の macOS 認可プロンプト経由で実行します。つまり毎回パスワードを入力します。安全ではありますが、すぐに煩わしくなります。
任意のヘルパーがこの手間を取り除きます。これは小さな特権ツール — SMAppService デーモン — で、アプリが macOS に登録することで、毎回パスワードを再入力せずに管理操作を実行できます。インストールは意図的に行います。サイドバー下端の「インストール」の案内を使うか、ある操作が初めてそれを必要としたときのプロンプトを承認します。
- サイドバー下部のヘルパー行で「インストール」をクリックします。
- macOS が「ログイン項目と機能拡張」の承認を表示します(または「システム設定 ▸ 一般 ▸ ログイン項目」でバックグラウンド項目の有効化を求めます)。承認してください — これはデーモンの実行を許可するかどうかを macOS が尋ねているのであり、アプリが何かを上書きしているのではありません。
- サイドバーの行が、ヘルパーが登録され実行中であることを示す表示に切り替わります。以後、サービスの起動/停止や設定編集は操作ごとのパスワードプロンプトなしで進みます。
ヘルパーはいつでも削除できます。その場合 FrontierStack は操作ごとの管理者プロンプトに戻ります。どちらのモードでも動作します — ヘルパーは純粋に利便性のためのものです。
6Y87KNMALP)によって署名されており、それこそが SMAppService デーモンとしての登録を可能にします。ヘルパーはアプリが駆動する特権操作のみを実行します。任意であり、意図的にインストールし、削除できます。AI 管理者やすべてのリモート操作と同じく、あなたが有効化するまでオフです。完全な信頼モデルは第 10 章を参照してください。2.5Homebrew のインストール
カタログの大半 — ウェブサーバ、データベース、キャッシュ、メール、多数の CLI ツール — は Homebrew フォーミュラとしてインストールされます。Homebrew は FrontierStack がそれらのサービスを取得・更新するために使うパッケージマネージャなので、Mac にまだ無ければ早めに用意しておくとよいでしょう。
サイドバーから Homebrew ペインを開きます。Homebrew が無い場合、ペインは「Homebrew isn't installed. It's the package manager this app uses to install services.」と表示し、「Get Homebrew…」ボタンを出します。インストールはアプリのアプリ内コンソールで実行されます。公式の Homebrew インストーラを走らせ、インストーラが管理者権限を必要とする時点であなた自身がコンソールにパスワードを入力します。FrontierStack はそれを取得も保存もしません — プロンプトは Homebrew 自身のものです。
Homebrew が用意できると、ペインは本格的なパッケージマネージャになります。インストール済みフォーミュラ/キャスクとそのバージョンの検索可能な表、「Install formula or cask」フィールド、未更新件数を表示する「Update All」ボタン、行ごとの「Update」/「Uninstall」操作が揃います。AI 管理者は install_homebrew と install_package ツールで同じ流れを駆動でき、これもパスワードを入力するアプリ内コンソール経由です。

2.6Nix、Devbox、Home Manager
Nix に関することは Nix ペイン(Infrastructure as Code の下)にタブでまとまっています。概要には、インストールされている Nix(本家 Nix、Determinate Nix、Lix)、デーモンが動いているか、flakes が有効かが表示されます。Nix がなければ両方のインストーラを案内します。Mac でいちばん多いトラブルも検出します。macOS のアップデートで /etc/zshrc が置き換わり、Nix は正常なのに新しいターミナルで nix: command not found になる問題です。シェル設定を修復でインストーラの行を戻せます。
- パッケージでは nixpkgs を検索し、Nix プロファイルのパッケージをインストール・削除・アップグレード・ロールバックできます。
- Devbox には、いつものプロジェクトフォルダにある
devbox.jsonのプロジェクトが、パッケージ・スクリプト・Devbox が動かすサービスとともに並びます。サービスの開始・停止・再起動・アタッチ、devbox shellの起動、Dev Container・Dockerfile・direnv ファイルの生成ができます。Devbox でサービスを実行は、PostgreSQL、MySQL、MariaDB、Redis、Valkey、Nginx、Caddy、Apache、PHP + Nginx を~/FrontierStack/Devboxの専用フォルダに用意して起動します。Docker も Homebrew サービスも使いません。 - nix-darwin(インストール時)では Mac のシステム設定の切り替え・ビルド・ロールバックができます。ストアでは
/nix/storeの使用量を確認し、ガベージコレクションを実行できます。 - デーモンの停止、
/nixボリュームの欠落、失敗している Devbox サービスは要注意に表示され、アラートにもできます。Nix、NixOS、Devbox のあるサーバでは、サーバアクティビティウインドウに Nix タブが現れます。
Home Manager タブは Nix Home Manager 用で、単独でも nix-darwin モジュールとしても使えます。設定の場所と flake かどうかを表示し、~/.config/home-manager に flake を作って Home Manager をセットアップすることもできます。
- 設定を切り替えは設定をビルドして有効にし、ビルドのみは有効にせずに確認し、入力を更新は
nix flake updateを実行します。いずれもアプリ内コンソールで動きます。 - Flake 入力には nixpkgs を固定してからの経過日数が表示され、60 日を過ぎるとオレンジになります。Nix のパッケージは、更新して切り替えるまでセキュリティ修正が入りません。
- 世代には各世代が日付付きで並びます。有効化でその世代に戻り、古い世代を削除で 30 日より古い世代を消してディスク領域を空けます。
- 現在の世代が提供するパッケージとドットファイル、Home Manager の launchd エージェントも表示します。CPU やメモリを使いすぎている Nix パッケージは、Homebrew ペインと同じく要注意に表示されます。
2.7mise でツールのバージョンを管理
mise(mise-en-place の略)は、プロジェクトごとに適切な Node・Python・Ruby・Go・Terraform のバージョン、環境変数、タスクを用意します。nvm・pyenv・asdf・direnv・make を 1 つで置き換えるツールです。mise ペイン(ランタイムの下)でインストールでき、シェルが mise を有効にしていないと警告します。有効になるまで、新しいターミナルは mise がインストールしたバージョンを使わないためです。シェルで有効化で解決します。
- ツールには、インストール済みの各バージョン、それを要求する設定、どれが有効かが並びます。すべてのフォルダ向けのツール追加、バージョンのアンインストール、使われていないバージョンの整理ができます。
- アップデートには、設定で許される最新バージョンより古いツールが表示され、アップグレードできます。
- プロジェクトには
mise.tomlや.tool-versionsのあるフォルダが並び、ツールとタスク、mise がまだ信頼しているか、使っているシークレットの種類(age、SOPS、fnox)がわかります。FrontierStack がシークレットの値を復号したり表示したりすることはありません。 - シークレット(fnox)には各
fnox.tomlのプロバイダとシークレット名が並び、平文で置かれたシークレットを警告し、KeyRotate が fnox 経由でローテーションできるものに印を付けます。 - mise のあるサーバでは、サーバアクティビティウインドウに mise タブが現れます。
2.8Command-Line PATH ペイン
FrontierStack はインストール済みツールを、シェルと同じやり方で解決して検出します。ときおり、pip・pipx・virtualenv・非標準のプレフィックスでインストールしたツールがアプリの見る PATH に無く、ツールが未インストールと報告されることがあります。Command-Line PATH ペインがこれを解決します。
- シェルプロファイル(例:
~/.zprofile)を選びます。追加したディレクトリは、そのファイル内の明示的にマークされた管理ブロックに書き込まれ、PATH の先頭に追加されます — 変更を反映するには新しいターミナルを開いてください。 - 「Directories to add」では、入力するか「Choose…」でパスを追加できます。最上位のエントリが最初に検索されます。「Current PATH (effective)」はログインシェルの PATH を表示し、アプリが管理するエントリにタグを付けます。
- PATH Doctor はツールが検出されない理由を診断します。コマンド(例:
mlx_lm.server、gcloud)を入力すると、アプリが見つけるか、シェルだけが見つけるか、そもそもインストールされていないかを報告します — アプリに欠けているディレクトリにはワンクリックの「Add to managed PATH」が付きます。
2.9インストールウィザード
ゼロから始めるなら、サイドバーのインストールウィザードが動くスタックへの最短ルートです。目的のユースケース — WordPress/PHP、フルスタック JS、Python/Django、Rails、静的サイト、データベース、リバースプロキシ — を選ぶと、その目的に推奨されるコンポーネント(ウェブサーバ、データベース、キャッシュ)が自動選択されます。好みに合わせて選択を調整すると、Homebrew で一式インストールします。
同じペインでは、ネイティブの Apache + MySQL + PHP スタックの状態をひと目で確認でき、Mac に既にあるオールインワンバンドル — XAMPP、MAMP、AMPPS、Local — を検出します。見つかった場合は、並行スタックをインストールするのではなく「セットアップを移行」へ誘導するので、何もかも二重に動かす羽目になりません。
2.10既存スタックの移行
すでに MAMP・XAMPP・Apple の Server.app でローカルにサイトを運用しているなら、作り直す必要はありません。「セットアップを移行」ペインがそれらのスタックを検出し、その構成要素を FrontierStack のネイティブ Homebrew スタックに取り込みます。ウェブファイル、MySQL データベース、PHP 設定、そして各サイトを定義する Apache vhost です。
- 「セットアップを移行」を開きます。インストール済みのソース — MAMP/MAMP Pro、XAMPP、Pancake Stack、Apple Server — をスキャンし、見つかったもの(サイト、データベース、PHP の検出有無)を報告します。(AI 管理者の
detect_migration_sourcesツールが同じ読み取り専用スキャンを実行します。) - 「Sites to import」一覧を確認します。各候補はサーバ名と待ち受けポートを表示し、きれいに移行できないものは理由とともに「Skipped」に並びます。
- 設定については、「Import All Settings」がソースの
php.ini・my.cnf・nginx.confを対応する Homebrew 設定に上書きコピーします。各ファイルの.pre-mamp.bakバックアップが残るので、比較や復元ができます。 - 「Import Selected」を選んで移行を実行します。必要な Homebrew サービスのインストール、ウェブファイルのコピー、MySQL データベースの移行、vhost の取り込みが進む様子が、ペインにライブ進捗として表示されます。
- 実行後は確認してください。ソースの設定は旧ツールのパスやポート(例:MAMP の
extension_dir・datadir・socket、ポート8889)を参照していることが多いため、運用に頼る前に取り込んだ設定を点検してください。
Pancake Stack から移行する場合。Pancake を起動したままにして、MySQL が応答する状態にしておきます。FrontierStack は Pancake のサイト一覧を読み込み、Pancake がキーチェーンに保存している root パスワードを使って Homebrew の MySQL ツールでデータベースをコピーします。FrontierStack が Pancake のデータとそのパスワードを使ってよいか macOS に一度だけ尋ねられるので、許可を選んでください。Pancake は各サイトにデータベース設定を環境変数で渡していたため、各サイトに専用の MySQL ユーザを作成するステップがサイトごとに MySQL ユーザを作り、そのサイトの wp-config.php または Laravel の .env に書き込みます。Python アプリ、独自の Apache ディレクティブ、これらのファイルがないサイトはログに一覧表示されるので、手作業で仕上げてください。Pancake 自体は変更されません。
AI 管理者は run_migration でこれを一気通貫に駆動できますが、ソースを検出してあなたに確認した後でのみ — しかも変更が有効な場合のみです。
.pre-mamp.bak バックアップは設定ファイルを対象とし、データベースは対象外です。
2.11データの保存場所
FrontierStack は自身の状態を予測可能な標準的な場所に保持するため、何に触れているかが常に分かり、バックアップもできます。
| 対象 | 場所 |
|---|---|
| アプリ設定・データ | ~/Library/Application Support/FrontierStack/ |
| 秘密情報・トークン | macOS キーチェーン、サービス jp.co.enfour.frontierstack 配下 |
| アプリ管理の Apache 設定 | /opt/homebrew/etc/httpd/frontierstack/ — アプリが所有する専用ディレクトリで、手で編集した Apache 設定とは分離されています |
| アプリログ | ~/Library/Logs/FrontierStack/ |
アプリの Apache 設定を専用の frontierstack/ ディレクトリに置くことで、FrontierStack は手作業で保守している設定を壊さずに安全に vhost を管理できます。バンドル識別子は jp.co.enfour.frontierstack です(ヘルパーと DDNS コンポーネントは .helper および .ddns のサフィックスを使います)。
アプリをインストールし、ヘルパーを決め、Homebrew を整え、古いスタックを移行したら、いよいよ実際に使う準備が整いました。第 3 章「インターフェイス」でウィンドウを詳しく案内します。サイドバー、ペイン、検索、メニューバー、そして毎日使うコントロールです。
第 3
インターフェイス
1 つのウィンドウに、1,000 のサービス。本章はその案内です。サイドバー、ペイン、フローティングパレット、検索、ヘルプ、そしてアプリを邪魔にしないための細やかな工夫を見ていきます。
FrontierStack は膨大な種類のサービスを管理しますが、それらを 1 つの見慣れた macOS ウィンドウで提示します。左にサービスのサイドバー、中央に選択中のサービスの画面、そしてツールバーには常時使えるツールが並びます。このレイアウトを一度覚えれば、Apache から Cloudflare ゾーンまで、本書のどのペインも予想どおりの場所に収まります。本章ではインターフェイスを端から端まで案内します。以降の章が単に「Sites ペインを開く」と言うだけで、やり方が分かるようになります。
3.1メインウィンドウ
ウィンドウは標準的な macOS の NavigationSplitView で、3 つの領域から成ります。左はサービスサイドバー。表示すると選んだすべてのサービスとツールを、カテゴリごとにまとめた、スクロール・折りたたみ可能なリストです。中央はアクティブなペイン。サイドバーで選んだものの画面で、独自のヘッダー・タブ・コントロールを持ちます。上部に渡るのがツールバー。そのボタンはどのペインにいても使えます。
ツールバーには右から左へ、検索(虫めがね、⌘F でも)、AI アシスタント(ワンド。フローティングのコマンドパレットを開きます)、現在の作業ディレクトリにターミナルを開く Shell ボタン、macOS がライトでもダークを強制するダークモード切り替え、そして選択中のペインがフロート可能なときの切り離しボタンが並びます。Setup に未保存の変更があると、ここにオレンジの未保存メニューも現れます。KeyRotate がインストールされていると、左端に独立したキーリングのボタンが現れ、KeyRotate を開くか最前面に表示します。
サイドバーの幅は自由に設定できます。仕切りをドラッグすれば、FrontierStack は起動をまたいで記憶します。最後に選んでいたペインも再オープン時に復元され、続きから始められます。
サイドバーグループは、複数の拠点や会社にまたがるサイドバーを整理します。ピン留めされたサーバ・デバイス・Cloudflare ゾーン・Wi-Fi・クラスタを右クリックしてグループ(「大阪オフィス」「Acme 社」など)に割り当てると、サイドバー上部のグループ行でセットを切り替えられます。アクティブなグループの項目と、未分類の項目が表示されます — グループ化は任意で、未分類の項目は常に表示されます。アクティブでないグループ内の項目に問題があると赤い数字で警告され、ロケーションにリンクしたグループはそのネットワークに到着すると自動的にアクティブになります。iPhone アプリのフリートタブにも同じフォルダが表示されます。

3.2サービスサイドバー
サイドバーは 2 段構成です。上部に Overview — アプリ自身の組み込みツール(Local Health、Status Page、Alerts、Spend & Billing、Domains、Logs、Certificates、Notes、Scripts、Setups、Settings ほか)。その下に、サービスカテゴリごとのセクション — Web Servers、Databases、Caching、Mail、Networking、Security Tools、Containers、AI など多数 — それぞれカタログ(第 6 章)から表示を選んだサービスが並びます。各セクションヘッダーのシェブロンをクリックすれば折りたためます。畳んだグループはアプリが記憶します。
各サービス行は、起動中はステータスドットを表示します。サービスを右クリックすると 2 つのクイック操作が出ます。Pin to Top of Section はよく触るサービスをカテゴリの先頭に固定し、Hide はサイドバーから外します。Hide で何かがアンインストールされることはありません — サービスは動き続け、検索から到達できます。リストを散らかさなくなるだけです。
カテゴリの下には、アプリの他の場所でピン留めしたものに応じてセクションが増えます。連携サーバ(どのサービスが動いているかを示す小さなカテゴリアイコン付き)、監視中の Wi-Fi ネットワーク、Cloudflare ゾーン、Kubernetes クラスタ。サイドバー上部のフィルタ欄に入力すれば、すべてのセクションを一度に絞り込めます。
3.3Presets と Setups
サイドバーの表示を決めるのは 2 つの機能です。Presets メニュー(メニューバー)は、ユースケースを丸ごと一気に読み込む近道です。Base — show services for… セクションはサイドバーをシナリオ向けの厳選セット(Web スタック、メールサーバ、ショップ)に切り替え、Add to current view… は今ある表示にグループを追加します。Show All はすべてを表示する逃げ道で、見つからないときに使います。
Setups はさらに踏み込みます。Setup は作業ビュー全体の名前付きスナップショットです — どのサービスを隠し、どれをピン留めし、さらに開いているフローティングパレットとその位置まで含みます。Presets ▸ Save Current as Setup…(または Setups ペイン)で保存し、Presets メニュー上部で切り替えます。アクティブなものにはチェックが付きます。パレットのレイアウトはウィンドウを動かすたびにアクティブな Setup へ自動保存されるので、Setup は常に実際の働き方を反映します。表示サービスを変えると Setup は未保存(dirty)になり、ツールバーにオレンジの未保存バッジと Update・Save as New・Revert が出ます。
Setup はロケーション(第 8 章)に紐づけることもできます。「Office」の Setup をオフィスのネットワークに紐づければ、到着時に自動で切り替わります — 今いる場所に合った、正しいサービスと正しいパレットへ。
3.4フローティングパレットとミニパレット
他の作業をしながら 1 つの画面を見えるようにしておきたいことがあります。モニタ系のペインは切り離してフローティングパレットにできます。macOS の NSPanel を用いた、常に最前面に出る小さなユーティリティウィンドウで、メインウィンドウや他のアプリの上に留まります。ツールバーの切り離しボタン(または最前面のパレットを閉じる ⌘⌥⇧W)を使います。Local Health、Containers、Cloud Servers、Wi-Fi Analyzer などがフロートできます。
もっと省スペースにしたいならミニパレットがあります — ペイン全体ではなく、ひと目で分かるコンパクトな要約です。ミニは Local Health、Cloudflare Zones、Wi-Fi、Printers、Router & Network、Containers、Scripts、Message Delivery、AWS にあります。各ミニ行には、詳細が必要なときに対応するペインをメインウィンドウで開くボタンがあります。開いているパレットは Setup の一部なので、保存したビューはフローティングウィンドウを配置どおりに復元します。
3.5コマンド/AI パレット
ツールバーのワンドボタンは AI アシスタントパレットを開きます — ドラッグ可能で常に最前面の NSPanel で、何でも尋ねられる入力欄が 1 つあります(「サイトが落ちている理由は?」「MySQL をチューニングして」「使っているものだけ表示して」)。第 13 章で扱う AI 管理者そのものを、作業の傍らに置けるフローティングウィンドウとして出したものです。他のフローティングパレット同様メインウィンドウの上に留まりますが、他と違って応答し、修正を提案し — あなたの承認のもとで — 実行します。独自の会話履歴と、変更を伴う操作の承認カードを備え、あなたが許可するまで何も実行しません。
3.6メニューバー項目
FrontierStack は macOS のメニューバーに小さな項目を置けます(Show in Menu Bar で切り替え)。ウィンドウ全体を前面に出さずに操作する一番の近道です。ここから、起動グループの Start/Stop、コアサーバ(Apache、Nginx、PHP-FPM、MySQL、Postgres)の Restart や稼働中すべての再起動、ステータス更新、アプリの起動・終了ができます。バックグラウンドのみはアプリを終了しつつ、バックグラウンドサービス(MCP、CLI、ペアリング済みデバイス、モニタ)を実行し続けます(必要ならまずオンにします)。FrontierStack のアイコンはバックグラウンドサービスによってメニューバーに残り、FrontierStackを開くとFrontierStackを終了を選べます。ここで終了すると、次に FrontierStack を開くか次にログインするまでバックグラウンドサービスが停止します。バックグラウンド起動がアイドルで終了した後もアイコンは残ります。ログイン時の起動設定は設定 › 一般にあります。
localhostサイトには localhost パネルのサイトが名前付きで並び、実行中は塗りつぶしの丸、停止中は中抜きの丸で示し、配信元とバージョン(例:Apache 2.4.62 · PHP 8.3.14、PHP 8.4.5)も表示します。各サイトのサブメニューで開始・停止・再起動・ブラウザで開くができ、開始してブラウザで開くはサーバが待ち受けを始めてからページを開きます。
3.7アプリ内検索
検索(虫めがね、⌘F)は何にでも到達する最速の手段です。「search services, tools & actions…」と入力し始めると、ペイン・ツール・サービス・操作が入力に応じて一致します — サイドバーから隠したサービスも含めて。結果を選べばそこへ直接移動します。Semantic モードは正確な名前ではなく意味で検索でき(「IP をブロック」「ディスクを空ける」)、FrontierStack での呼び名を知らなくても機能を見つけられます。
3.8ヘルプウィンドウ
⌘? で専用の FrontierStack Help ウィンドウを開きます。アプリの構成を映した、れっきとしたアプリ内ドキュメントの本です。ヘルプは読むだけではありません。各ページには Open in app リンクが付いています。クリックすると FrontierStack がメインウィンドウをその正確なペインやサービスへ移動させます — ヘルプウィンドウは横に開いたまま残るので、手順を読みながら一歩ずつ進められます。多くのペインはヘッダーに小さなヘルプボタンを持ち、該当トピックのヘルプを開きます。
3.9Notes ペイン
Notes は資格情報・ランブック・サービスごとの手順のための、あなた専用の場所です。各ノートはタイトル・サービスタグ・本文を持ち、全体がmacOS キーチェーンで暗号化されます — 平文ファイルには保存しません。決め手となるのはノートごとのロックです。各ノートには Share with AI Administrator トグルがあり、既定はオフです。ノートがロックされている間、AI はそれを文字どおり読めません。アシスタントにその資格情報や手順を使ってほしいときだけ解除します。すると AI の list_notes に現れ、必要に応じて読まれます。
3.10Status Page
Status Page ペインは、Local Health と同じ稼働データから静的な index.html を生成して公開します。顧客や同僚がアプリにアクセスせずに何が動いているかを確認できます。公開先を選び(Apache サイトの DocumentRoot 内のフォルダにすれば /status/ のようなパスで配信されます)、ページタイトルを設定し、Include item details を入れるか決めます(詳細行は内部ホストやポートを露呈しうるので、公開ページではオフに)。ページは設定した間隔で、または Generate Now で都度再生成されます。配信方法で Apache か内蔵サーバ(同梱の静的ファイルサーバ。任意のポートで localhost または LAN に配信)を選び、起動でそのサーバをログイン時やシステム起動時に動かしておけば、アプリを閉じてもページは止まりません。サーバセクションでモニタ付きのピン留めサーバを一覧(アプリ停止中も更新)でき、インターネット公開で持続的な経路(Cloudflare Tunnel、Tailscale、ダイナミック DNS 付きルータのポートフォワード)を用意できます。場所別ページでは、場所やクライアントごとに別のページを公開でき、「場所」でそこに置いたものだけが表示されます。項目の物理的な場所は 1 つですが、いくつのクライアントとも共有でき、それぞれのページに表示されます。詳細は第 11 章。
3.11Local Health とロケーションの概観
日常で要となる 2 つの Overview ペインには、それぞれ専用の章があります。Local Health は「すべて問題ないか?」に答えるボードです。監視中のすべてのサービス・デバイス・サブシステムを UP/DOWN 状態と 1 行サマリーで示します。各ペインから項目を重要(critical)に指定するとボードに加わり、フローティングパレットとミニも兼ねます。ヘルススイープ・しきい値・アラート連動を含む全容は第 11 章です。
Locations は、Mac が今ネットワーク上のどこにいるか — Home、Office、On VPN — を Wi-Fi ネットワークやサブネットから判定して教えます。ロケーションにより監視はネットワークを意識したものになります。認識されない場所にいる間はアプリがAwayとして扱い、ロケーション限定のチェックを一時停止するので、カフェやホテルのネットワークが誤報を出すことはありません。前述のとおり Setup の紐づけにも使います。ロケーションの定義、アラートと到達性のスコープ、フリートを含む完全なモデルは第 8 章です。
レイアウトを覚えたら、いよいよ実践です。次のパートはペインそのものを開いていきます。まずは第 4 章「Web スタック」から。
第 II
目の前の Mac で Web スタック、データベース、サービスカタログ、そしてサイトを動かす。
第 4
Web スタック
Apache または Nginx、サイトごとに必要な PHP バージョン、バーチャルホスト、信頼されたローカル HTTPS、そして DNS — Web スタック一式を、設定の手書きなしに 1 つのウィンドウから制御します。
Web サーバは多くのセルフホスト構成の心臓部です。だから FrontierStack はそれを一級の対象として扱います。Apache ペインは Homebrew 版 Apache のインストール・起動・検証・設定を行い、PHP・Localhost・Certificates・DNS の各ペインが、開発とホスティングの完全なスタックを仕上げます。あらゆる変更が検証を通るため、タイプミスがサイトを黙って落とすことはありません。
本章では、目の前の Mac で Web サイトを作り、動かすペインを扱います。そのスタックを実ドメインと公開インターネットへ繋ぐのは第 7 章、本番向けに堅牢化するのは第 10 章です。
4.1Apache ペイン
サイドバーから Apache ペインを開くと、Web サーバの状態がひと目で分かります。バージョン、起動の有無、待ち受けポート。上部のボタンが日々使う操作です — Start・Stop・Restart・Validate Config。検証は apachectl -t(本物の構文チェック)を実行し、結果を Last Result に表示するので、リロード前に変更が妥当だと確認できます。
FrontierStack は macOS のシステム版ではなく Homebrew 版 Apache を推奨します。Homebrew 版は /opt/homebrew(Intel Mac では /usr/local)以下に置かれ、brew services 経由で毎回 root を求められずに自分の権限で動き、System Integrity Protection に縛られません — だから最新の mod_php がきれいに読み込まれ、スタック全体が 1 つのツールチェーンに揃います。/etc/apache2 のシステム版は OS アップデートで消去され、Apple 同梱の libphp に縛られます。Homebrew 版 Apache が未インストールなら、ペインがワンクリックの Install Homebrew Apache… を提示します。
複数の Apache ビルド(Homebrew 版、旧来のローカルビルド、リモートサーバのもの)を併用する場合は、バイナリ選択(Add Homebrew Apache / Add Local Build…)で登録し、それぞれのバージョンとポートを見ながら切り替えられます。
/opt/homebrew/etc/httpd/frontierstack/ に置かれ、httpd.conf からの IncludeOptional で取り込まれます。アプリの vhost・MIME タイプ・管理対象 include をそこにまとめることで、手書きの httpd.conf は綺麗なまま保たれ、FrontierStack が何を追加したか常に分かります。4.2モジュール・ポート・管理対象の設定
Apache ペインの下部には、最も頻繁に編集する設定が、ファイルではなくコントロールとして並びます。
| セクション | 役割 |
|---|---|
| Ports | HTTP と SSL の待ち受けポートを設定(既定 80・443)。Nginx が 80/443 を使うなら Apache をそこから外します。Apply で Listen ディレクティブを書き換えてリロード。 |
| Apache Modules(Modules…) | 読み込み済みモジュールを一覧し、有効/無効を切り替え。未使用モジュールの無効化は最も手軽な堅牢化です。 |
| PHP Module | Web サイト向けに Apache が読み込む mod_php(libphp.so)のバージョンを選択 — 次節参照。 |
| WebDAV | 共有フォルダ向けに mod_dav を有効化。任意の Basic 認証ユーザ付きで、管理対象 include に書き込まれます。 |
| Edit MIME Types… | FrontierStack 管理の MIME ファイルに AddType マッピングを追加/削除。ディストリの mime.types には触れません。 |
コントロールとして出ていない項目には、設定行から Edit Managed Config…(FrontierStack の include)と Edit httpd.conf…(メインファイル)を直接編集できます。保存のたびに apachectl -t で検証し、グレースフルにリロードし、新しい設定が構文エラーならロールバックします — 誤った編集は、稼働中のサーバを壊す前に捕捉されます。
httpd.conf の手編集は強力で、無防備でもあります。アプリは構文エラーで検証・ロールバックしますが、構文は通るのに document root が誤った場所を指す設定は、なおファイルを露出させ得ます。FrontierStack 独自の追加は管理対象 include を優先し、大きな変更は控えを取ってください。モジュールを切り替えると、その LoadModule 行を書き換えて再検証します。変更で httpd -t が失敗した場合(代表例は proxy なしで proxy_fcgi を有効化するケース。アプリが自動で proxy も有効化します)、モジュールウィンドウはエラーを表示し、黙って閉じません。修正するか、Save anyway(このまま保存)を選びます。Apache が固まって起動しない場合(Homebrew の典型的な Bootstrap failed: 5: Input/output error。既にロード済み、または sudo brew services が httpd のパスを root 所有にしてしまったのが原因)、ペインの Recovery & reset(復旧とリセット)セクションに 3 段階の対処があります:Restart cleanly(ユーザとシステム両方の launchd ドメインで httpd を停止してから 1 回だけ起動)、Reset config to default(httpd.conf をバックアップして Homebrew の既定を復元)、Remove & Reinstall(root 所有のパスを消して formula を再インストール)。いずれもアプリ内コンソールで実行され、sudo プロンプトと出力を確認できます。Service Watchdog のキープアライブが Apache に対して有効な場合、httpd を自動で再起動することがあります(想定内ですが、手動復旧と競合するなら一時停止してください)。
4.3PHP バージョンの選択
PHP ペインを開くと、Mac にインストールされた PHP ランタイムを管理できます。Homebrew は複数のメジャーバージョン(例:[email protected] から最新版まで)を併存させられ、FrontierStack はそれらを、単一のグローバルインストールではなく、切り替える集合として扱います。
Version ▸ Add Version… から、既存のものと並べて別のバージョンを追加インストールできます — 置き換えは起こらず、使用中のバージョンも変わりません。一覧は 2 つに分かれます。上段は Homebrew が提供する、現在もサポートされているリリース。下段はサポート終了のビルド — PHP 8.0 から 5.6 まで — で、PHP 本体の修正提供が終わり Homebrew からも削除されたものです。これらは コミュニティの shivammathur/php タップから取得するため、タップ自身のコードを実行することになり、インストールのたびに確認を求めます。サポート終了の PHP は、手元での旧来サイトのテストや保守に留め、公開インターネットに向けては使わないでください。
選択は 2 つに分かれます。
- Apache モジュール。Apache ペインの PHP Module セクションの Load for websites ピッカーで、Apache が読み込む
libphp.soのバージョンを選びます。変更すると管理対象設定を書き換えて Apache をリロードします。 - サイトごとの PHP。ローカル開発サーバ(下記 Localhost ペイン)には、インストール済みの全バージョンを並べた独自の PHP Version ピッカーがあり、あるプロジェクトを古い PHP で、別を最新で動かせます — マシンの他の部分が使うものを変えずに。旧来アプリと新規アプリを同時に成り立たせる、いつもの方法です。これは PHP 内蔵サーバと Apache ランタイムの両方に効きます。Apache は
mod_php経由で配信するため 1 点だけ注意があります。そのバージョンの keg がlibphp.soを同梱している場合にのみ使用でき、選んだものが該当しないときはエディタが知らせます。その場合は内蔵サーバで動かすか、PHP-FPM 経由で配信してください。
PHP キャッシュ。PHP ペインの PHP キャッシュセクションで、キャッシュなし・OPcache・OPcache + APCu から選びます。OPcache は各スクリプトのコンパイル結果を共有メモリに保持し、ページを高速化します。APCu はアプリが直接呼び出すキー・バリューキャッシュ(apcu_store/apcu_fetch)を追加し、WordPress のオブジェクトキャッシュプラグイン、Laravel、Symfony が利用します。OPcache のメモリ量と変更ファイルの確認を設定します。リクエストごとは開発向けで、編集したファイルが次の再読み込みで反映されます。確認しないは本番向けで、コードの変更は再起動後にのみ反映されます。APCu は PECL 拡張なので、初めて選ぶときは APCu をインストールを押します。キャッシュ設定を適用で php.ini を書き換えて Apache を再起動します。PHP-FPM で配信しているサイトは、プールの再起動時に変更が反映されます。
Runtime Health ペインはより広い全体像を示します — PHP に加え Python・Node.js・Java・Go・Rust・Ruby・Perl・.NET — 欠落やサポート終了のランタイムを、問題になる前にフラグするセルフチェック付きです。
Runtimes セクションにはフロントエンド向けの React ペインもあります。新規アプリのスキャフォールド(Vite・TanStack Start・Next.js)、任意の React プロジェクトの指定、そして役割別に整理された厳選ライブラリ一覧を提供します — 状態管理(Zustand・Jotai・Redux Toolkit)、データ取得とサーバ状態(TanStack Query — 旧称 React Query — と SWR)、フルスタックフレームワーク(TanStack Start・Next.js)、ルーティング、バリデーション(ArkType・Zod)、フォーム、認証(Clerk)。各行にはドキュメントへのリンク、選択中プロジェクトでの使用状況、そのプロジェクトへのワンクリック npm install が並びます。
4.4古い Mac の PHP を MacPorts でアップデート
古い Mac(macOS 10.13 High Sierra 以前。Apple の Server.app を使っている機種を含む)では、今も Apple 標準の PHP が動いています。High Sierra では PHP 7.1 で、2019 年以降セキュリティ修正が出ていません。Homebrew はこれほど古い macOS をサポートしていませんが、MacPorts はまだ対応しています。MacPorts で最新の PHP を Apple の PHP と並べてインストールし、コマンドラインと Web サイトをそちらへ切り替えます。コマンドはその Mac のターミナルか SSH で実行します。変更を伴う port コマンドにはすべて sudo が必要です。「attempt to write a readonly database」と表示されたら sudo の付け忘れです。リンク済みのサーバなら、AI 管理者に手順を案内させることもできます。
1. ターミナルから MacPorts を使えるようにする。/opt/local/bin/port があるのに port が「command not found」になる場合は、MacPorts のインストーラが PATH の設定行を書き込んでいません。~/.bash_profile(シェルが読み込むのが ~/.profile ならそちら)を開き、「MacPorts Installer addition」というコメントを探します。その行と「Finished adapting」の間に何もなければ、次の行を追加して、ターミナルのウインドウを開き直します。
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
2. MacPorts をアップデートして現状を確認する。最後のコマンドで、MacPorts が提供する PHP 8 系のバージョンが一覧表示されます。
sudo port selfupdate
port installed 'php*'
port echo 'name:^php8[0-9]$'
3. 新しい PHP と拡張機能をインストールする。例は PHP 8.4 です。サイトが今使っているものと同じ拡張機能を入れてください。port installed 'php80-*' で旧バージョンの拡張機能を確認できます。
sudo port install php84 php84-fpm php84-mysql php84-openssl
sudo port install php84-curl php84-intl php84-mbstring php84-gd php84-zip
sudo cp /opt/local/etc/php84/php.ini-production /opt/local/etc/php84/php.ini
新しい php.ini で date.timezone を設定します。MacPorts は通常ビルド済みのものをダウンロードします。ソースからのコンパイルになった場合は 1 時間ほどかかることがあり、Apple のコマンドラインツール(xcode-select --install)が必要です。
4. コマンドラインを切り替える。
sudo port select --set php php84
hash -r; php -v
php -v が 8.4 と表示されれば完了です。Apple の /usr/bin/php は 7.1 のまま残るため、フルパスで指定している cron ジョブやスクリプトは、/opt/local/bin/php に書き換えるまで古いバージョンで動きます。
5. Web サイトを PHP-FPM に切り替える。Apple の Apache は MacPorts の mod_php を読み込めません(MacPorts 独自の Apache 向けにビルドされているため)。代わりに PHP を FastCGI サービスとして動かします。
cd /opt/local/etc/php84
sudo cp php-fpm.conf.default php-fpm.conf
sudo cp php-fpm.d/www.conf.default php-fpm.d/www.conf
php-fpm.d/www.conf で、macOS の Apache が動作するアカウントである user = _www と group = _www を設定します。PHP-FPM は 127.0.0.1:9000 で待ち受けます。lsof -iTCP:9000 -sTCP:LISTEN でそのポートが既に使われているとわかったら、別のポートを選んでください。今すぐ起動し、起動時にも自動で立ち上がるようにします。
sudo port load php84-fpm
次に、.php ファイルを PHP-FPM に渡すよう Apache に設定します。下の内容を、末尾が .conf のファイル(例:zz-php84-fpm.conf)として保存します。Server.app の Mac では /Library/Server/Web/Config/apache2/other/ に置きます。Server.app のない Mac では /etc/apache2/other/ に置き、/etc/apache2/httpd.conf の mod_proxy と mod_proxy_fcgi の LoadModule 行の先頭にある # を外します。
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
この設定は Apple の PHP モジュールを削除しなくても優先されるので、Server.app の PHP 設定はそのままで構いません。Apple の設定では .html ページも PHP で処理されますが、PHP-FPM が処理するのは .php だけです。ほかの拡張子も処理させるには、ここと www.conf の security.limit_extensions の両方に追加します。
6. 設定を確認して Web サーバを再起動する。Server.app の Mac では次のとおりです。
export SERVER_INSTALL_PATH_PREFIX=/Applications/Server.app/Contents/ServerRoot MODULE_INSTALL_PATH_PREFIX=
httpd -t -D WEBSERVICE_ON -f /Library/Server/Web/Config/apache2/httpd_server_app.conf
sudo serveradmin stop web; sudo serveradmin start web
Server.app の Apache は独自のプロセス ID ファイルを使うため、apachectl graceful は使わないでください。Server.app のない Mac では sudo apachectl configtest を実行してから sudo apachectl graceful を実行します。確認結果が「Syntax OK」以外なら、再起動する前にファイルを修正してください。
7. 動作を確認する。<?php phpinfo(); と書いたファイルをサイトのフォルダに置き、ブラウザで開きます。Server API が「FPM/FastCGI」、バージョンが 8.4 になっていれば成功です。このファイルはサーバの設定を誰にでも見せてしまうので、確認後は削除してください。
.conf ファイルを削除して Web サーバを再起動します。サイトはすぐに Apple の PHP に戻ります。sudo port select --set php none でコマンドラインも Apple の PHP に戻ります。すべてのサイトが動くまで、古い MacPorts の PHP はアンインストールしないでください。localhost の MySQL に接続できない(「No such file or directory」)場合は、PHP がデータベースのソケットを違う場所で探しています。mysql -e 'select @@socket' で正しいパスを調べ、php.ini の mysqli.default_socket と pdo_mysql.default_socket に設定してから、sudo port reload php84-fpm を実行します。4.5「古い Mac サーバのモダナイズ」ペイン
Apple の Server.app をまだ動かしているリンク済みの Mac には、古い Mac サーバのモダナイズペイン(セットアップと移行)が上記の手順を実行し、さらにその先まで進めます。サーバを選んでサーバをチェックを押してください。まずサーバで実際に動いているサービスを調べ、該当するセクションだけを表示し、省いたセクションも示します。ボタンを押すまで何も変更されず、変更はすべてコンソールで実行されるので進行を確認できます。
- システムディスク — システムが HDD から起動しているときに上部に表示します。内蔵、または Thunderbolt・USB 3・FireWire 800 の外付け SSD のうち、その機種で最速の方法で SSD に移します。
- MacPorts — MacPorts をインストールまたはアップデートし、ターミナルの PATH に追加します。
- PHP 8.4(PHP-FPM) — Apple の PHP と並べて PHP 8.4 をインストールし、Web サイトを切り替えます。古い php.ini の上限値を引き継ぎ、Deprecated 通知を隠し、前後に各サイトのホームページを確認し、壊れたら自動で元に戻します。 PHP-FPM のプールは(PHP の初期設定の 5 ワーカーではなく)Mac のメモリに合わせて調整されます。ワーカー数をメモリに合わせるで、実際のワーカーのサイズから調整し直せます。
- ヘルスチェック — 各サイトに応答した PHP、失敗、表示されている PHP のメッセージ、頻度の高い PHP エラー。
- コード更新 — PHP 8 向けの機械的な修正(
$s{0}のオフセット、each()ループ、リテラルのcreate_function()、マジッククォート、error_reporting(E_ALL)、オプトインの短縮<?タグ)。残りは AI 管理者に任せます。 - Apache の移行(任意)— ペインのほかの機能はすべて Server.app の Web サービスのままで使えるので、残すこともできます(Server.app の Web を残す。一括実行はこれに触れません)。または、今も修正が出ている MacPorts の Apache にすべての Web サービス(serviceproxy と、その後ろの Server.app 自身の Apache。Apple の PHP の停止後。フロントエンドのみテストは serviceproxy だけ)を移せます。serviceproxy を廃止は Apple の PHP の停止と同じ方法で、すべてのサイト、Server.app のサービスのパス、ページ、ファイルを前後で名前を挙げて両方のフロントエンドから取得し、フォルダの index ページ以外のスクリプトは開かず、応答が一つでも違えば serviceproxy をすぐに戻します。serviceproxy を戻すで元に戻せます。
- Server.app のサービス — サービスプロキシ(ポート 80/443)を動かし続け、設定が壊れている場合はむやみに再起動せずに報告するガード。Apple の BIND がまだ動いている環境では、Cloudflare か MacPorts の最新 BIND への移行を案内します。Server.app の L2TP VPN が動いている場合は、ユーザを WireGuard、OpenVPN、Tailscale に移してからオフにするよう勧めます。
- ディレクトリ(LDAP と Kerberos) — 匿名での読み取り、LDAPS の証明書、Kerberos の弱い暗号化の確認。ディレクトリのポートをプライベートネットワークに限定する pf のルール。Open Directory の暗号化アーカイブを毎晩作成。
- パスワード推測のブロック — 第 18 章で説明するメールのブロックと、SSH・画面共有・Kerberos・Web サイトのログインガード。Cloudflare 経由の攻撃は Cloudflare のレート制限ルール用にサイトごとに一覧表示します。
- メール認証(DKIM) — OpenDKIM、ドメインごとの鍵、DNS に鍵が載ってからの署名。レコードはペインから公開、コピー、または AI に依頼できます。
- メールの TLS — TLS 1.2 以降のみ。自己署名の代わりにこの Mac で発行した Let's Encrypt の証明書。
- メールの DNS — ドメインごとの SPF(参照回数付き)、DMARC、DKIM、TLS-RPT、MTA-STS。DMARC の quarantine 化と TLS-RPT はペインから、SPF の修正と MTA-STS は AI と行います。
- 迷惑メールのフィルタ — X-Spam ヘッダを追加するだけの rspamd。
- リモートアクセス(Tailscale) — macOS 10.13 用に用意した 1.44.3 のビルドで、誰もログインしていなくても起動時に始まるシステムサービスとして Tailscale を動かします(ビルドが対応するより古いサーバにはインストールしません)。tailnet の通信が本当にトンネルを通っているかも確認します。Tailscale.app が同時に動いていると経路を取り合い、終了すると経路も消えます。Tailscale.app を停止はアプリを終了し、ログイン時の起動をオフにしてデーモンを再起動します。
- 新しい curl・rsync・OpenSSL — Apple のもの(Server.app は引き続きこれを使用)と並べて /opt/local にインストールします。
- 管理用ポートのファイアウォール — 画面共有、Remote Desktop、ポート 311、AFP、SMB(任意で SSH)が、プライベートネットワーク、Tailscale、FrontierStack の接続元にだけ応答するようにします。FrontierStack が新しい接続で確認しない限り、ルールは 10 分以内に自動で元に戻ります。
- ファイルの整合性 — 起動ジョブ、sudoers、pf、ssh 鍵、cron、Server.app と Apache の設定、サイトの PHP を root 専用の SHA-256 で毎日確認します。変更があったとき、またベースラインが知らないうちに置き換えられたときに FrontierStack がアラートします。変更を承認で現在のファイルを新しいベースラインにします。
- ClamAV によるセキュリティスキャン — オープンソースのスキャナ ClamAV をこのペインがインストールしてスケジュール実行します。定義ファイルを毎日更新し、Web サイトを毎週スキャン(報告のみ)したうえで、Web シェルのコードとアップロードフォルダ内の PHP を確認します。迷惑メールフィルタ経由で受信メールのウイルススキャンも任意で行えます。
- OpenSSH — 新しい OpenSSH をインストールし、Apple のホスト鍵でポート 2222 で動かしてログインをテストしてから、ポート 22 を切り替えます。切り替えには別の接続手段が必要で、FrontierStack が再接続して確認しなければ自動で元に戻ります。
- このサーバの周囲のネットワーク — リンク済みのファイアウォールとサブネットから、前段の OPNsense の Suricata と Zenarmor、Web アプリケーションファイアウォールを置く場所、VPN 経由のみの管理、同じネットワークにあるマシンを読み取ります。
- セキュリティチェックリスト — TLS、SPF、DMARC、DKIM、逆引き DNS、サービスプロキシ、SSH ログイン、OS のサポート状況。それぞれ直すペインにリンクします。
PHP を最新の修正に保つ。ペインはサーバの PHP を php.net にあるそのブランチの最新リリースと比べるので、PHP がセキュリティリリースを出したその日に、MacPorts のパッケージ化を待たずに警告します。MacPorts にまだない間は、警告にもそう表示されます。MacPorts に入ったら、PHP 8.4 をアップデート(インストールのボタンをもう一度実行)で PHP のポートをアップグレードし、PHP-FPM を再起動するので、古いコードのまま動き続けるワーカは残りません。curl・rsync・OpenSSL のアップデートも同じようにそれらのポートをアップグレードし、MacPorts のセクションにはサーバ上で古くなっている MacPorts のツールがすべて表示されます。MacPorts のインストーラは、macOS 26 と 27 を含め、MacPorts が対応するすべての macOS で動きます。セキュリティのチェックリストでは、Apple の PHP のままの Web サイトが不合格の項目になります。Apple の PHP は 2019 年から修正がなく、mod_php として Apache の中で動くため、リモートでコードを実行される脆弱性に最もさらされやすい構成だからです。
.bak-fsmodernize-<日付> として横に残し、新しい PHP の構文チェックに通った場合(以前 Apple の PHP で通っていたならそちらでも通った場合)にだけ書き込みます。構文チェックでは動作が同じであることまでは保証できないので、修正後にヘルスチェックを実行し、大事なページを確認してください。4.6サイトとバーチャルホスト
Apache ペインの Websites リストがバーチャルホストの管理場所です。各行にサイト名、バインドアドレス、ポート(例::8080)、そしてライブ状態を示す Running トグルが表示されます。ボタンで Add Site…、編集、複製、無効化、Push to Server…(連携サーバへ vhost をコピー)、ブラウザで開く、が行えます。Import Sites… と Copy from… は、MAMP・XAMPP・Apple の Server.app・別の Apache から既存 vhost を取り込み、既定で localhost にバインドします。
サイトの追加・編集では、vhost が必要とする要点を設定します。ServerName(ドメイン)、document root(フォルダを Choose…)、バインドのアドレスとポート。サイトを有効化するとライブ状態ドット付きで一覧に現れます。FrontierStack は vhost を管理対象ツリー下の .conf ファイルに書き込み、検証し、リロードします。vhost・証明書・Cloudflare DNS レコードをまとめて作るには New Site + DNS… を使います — 第 7 章で解説する一括ウィザードです。
127.0.0.1 にバインドすれば、Mac からしか到達できません — 作業中の最も安全な既定です。他のマシンから本当に到達させたいときだけ、バインドアドレスを 0.0.0.0 や LAN IP に変えてください。4.7サイトの TLS 証明書
Certificates ペインは、サイトに鍵マークを付ける証明書を発行・管理します。用途に応じた 3 つの方法があります。
| 方法 | 用途 |
|---|---|
| mkcert(Get Certificate (mkcert)) | 信頼されたローカル HTTPS。mkcert は Mac が信頼するローカル認証局をインストールするので、https://myapp.test がブラウザ警告なしで動きます — 開発に最適。Install mkcert でまず準備します。 |
| Let’s Encrypt (ACME) | 実ドメイン向けの、公開・ブラウザ信頼の証明書。acme.sh または certbot 経由。webroot(ドメインが既に HTTP を提供)または Cloudflare 経由の DNS-01(インバウンド HTTP 不要)で発行。Renew All Now と更新 cron で最新に保ちます。 |
| Create Self-Signed Certificate | ブラウザ警告が許容される内部用・テスト用の手早い証明書。 |
発行後、Deploy to Apache が証明書をサイトの vhost に組み込みます。Expiry Monitoring セクションは証明書(および Watch で追加した任意のドメイン)を監視し、期限切れの十分前に通知します — HSTS や最新の暗号方針を含むより深い堅牢化は第 10 章です。
4.8証明書の更新 — この Mac とリンク済みサーバ
Installed Certificates の各証明書には、発行元と残り日数が表示されます。行の アップデート… でその場で更新でき、その証明書に合う方法だけが選べます。自己署名で再発行(既定では同じ秘密鍵、最長 397 日)、certbot または acme.sh で更新(クライアント自身のデプロイフックが動きます)、mkcert で更新、そして他で購入した証明書のための ファイルから置換… です。以前のファイルは .bak として新しいファイルの隣に残り、同じ手順で Web サーバをリロードすることもできます。
リンク済みサーバがあると、ペイン上部に ホスト ピッカーが表示されます。サーバを選ぶと、ペインが SSH でその証明書を読み込みます。対象は Let’s Encrypt、acme.sh、/etc/ssl、nginx・Apache・Caddy・HAProxy の証明書フォルダです。秘密鍵が隣にある証明書だけを表示します。アップデートと 作成… もそこで使えます。変更はサーバに保存した sudo パスワードで root として実行するので、パスワードがなければそのサーバは読み取り専用で表示されます。
インストール済みの証明書は、この Mac でもリンク済みサーバでも 自動で監視 され、期限前に アラート が警告します。設定は不要です。各行のベルで監視のオン・オフを切り替えられ、最初に見つけた時点ですでに期限切れの証明書は対象外になります。
CF_TOKEN ボールトシークレットとして保存され、実行時に注入されます。クラウド AI には決して送られません。4.9.htaccess エディタ
ディレクトリ単位の Apache ルール(リライト・リダイレクト・アクセス制御)は .htaccess ファイルに置かれます。FrontierStack はそれ専用のエディタを、行番号と構文の妥当性チェック付きで提供します。Use Site Root でサイトの document-root の .htaccess を開くか、custom path を指定します。Insert Recipe は、よくある正しいスニペット(フロントコントローラのリライト、HTTPS 強制ブロック)を挿入するので、記憶ではなく動くルールから始められ、保存前に明らかな問題をフラグします。Export PHP Router… は .htaccess のリライトルールを、組み込み PHP 開発サーバ用のルータファイルに変換します — サイトを Localhost ペインに移すときに便利です。
4.10Nginx とリバースプロキシ
FrontierStack は Nginx を、代替の Web サーバとして、またはアプリの前段のリバースプロキシとして管理します。両方がインストールされていると、Domains ビューはサイトをサーバごとに分類し — Apache のバーチャルホストと Nginx の server ブロックを並べて — 各 Nginx server ブロックの listen ポート・root・TLS 状態を読み取ります。リバースプロキシは、高位ポートで HTTP を話すアプリ(Node・.NET・Python のサービス)の前に立てる標準パターンです。Nginx が 443 で TLS を終端し、アプリへ転送します。Apache も Nginx も既定で 80/443 を欲しがるため、併用する場合は Apache ペインの Ports セクションで一方をそこから外してください。
4.11Localhost・DNS・開発スタック
ローカルの全体像を完成させる、もう 3 つのペインがあります。
- Localhost — 即席のローカル開発サーバのマネージャ。New Local Server を追加し、Runtime(PHP・Python/Django・Node/Vite、または専用の Apache・Nginx・Caddy…)とフォルダを選び、ポートと任意の
ServerNameを設定して Start。サーバごとの Environment Globals と .test リゾルバでmyapp.testがローカルに解決されます。Free Port ヘルパーと localhost を掴んでいるものを止める操作で、よくある競合を解消します。Tailscale でも公開をオンにすると、他の Tailscale デバイスからこの Mac のテイルネットアドレス(同じポート)で接続できます — サーバ自体は localhost のみで待ち受け、FrontierStack がテイルネットからの接続を転送するため、LAN からは到達できません。Django サーバでは Tailscale ホストを許可…が、変更内容を確認したうえでテイルネットアドレスをプロジェクトのALLOWED_HOSTSに追加します(設定が環境変数から作られている場合は、追加すべき行を表示します)。AI 管理者(および MCP 経由のエージェント)もdebug_shareの actionserveで同様にフォルダを起動でき、返答に localhost のホストとポート、指定時は Tailscale の URL が含まれるので、エージェントはサイトの稼働場所を報告できます。 - DNS — ローカルの名前解決と権威ホスティング。
dnsmasq・unbound・nsdを実行し、ゾーンファイルをインポート/エクスポートし、レコード変更時にリゾルバをフラッシュして、Mac が古い応答を返さないようにします。 - LAMP / DevStacks — ワンクリックのスタック。LAMP ペインはプリセット(Choose a Setup)を提供し、揃ったコンポーネント一式をまとめてインストール・起動(Install & Start・Start All・Stop All)。DevStacks はプロジェクトフォルダのフレームワークを検出し、それを動かす適切なコマンドと npm スクリプトを表示します。
Localhost の概観は、稼働中のローカルサーバをすべて並べて表示するので、世話の焼ける Terminal ウィンドウの壁なしに、多数のサイトを同時に動かせます。
4.12サイトの公開とエージェントへの引き渡し
各ローカルサーバの詳細にはインターネットアクセス欄があります。Cloudflare のホスト名を選び、自分のゾーン上の名前(例:demo.example.com)を入力すると、FrontierStack がルートと DNS レコードを追加し、cloudflared をシステムサービスとして動かします。アプリを閉じても再起動後もアドレスは維持されます。管理者パスワードを求めるのは最初のサイトだけで、以降のサイトは同じトンネルをそれぞれ別のホスト名で共有します。ほかに一時リンク(trycloudflare.com)と Tailscale Funnel も選べます。Vite と Django は知らないホスト名を拒否しますが、Cloudflare 経由では代わりに localhost を渡すので、そのまま動きます。
同じ地球ボタンは Apache ▸ ウェブサイトの各行(トンネルは ServerName でサイトを指定)と、カタログサービス、Docker コンテナ、Vagrant、Spin アプリにもあります。
ホスティング設定…(Localhost ペインと、設定 ▸ ウェブサイトとホスティング)で、新しいサイトの置き場所を決めます。この Mac、Apache サイト、自分のサーバ、here.now、Hostinger、Vercel、ChatGPT Sites から選び、必要ならサイトの種類ごとに変えられます。新サイトを動かす Web サーバ(Apache・Nginx・Caddy、または毎回確認する)、新サイトに使うドメイン、作成先フォルダ、制作の担当、担当が従うデザインスキル(SKILL.md を含むフォルダ)もここに保存します。
あとは AI 管理者にサイトを頼むだけです(「パン屋の 1 ページサイト。暖色系で、営業時間と地図を入れて」)。依頼で指定していない場合やホスティング設定で決めていない場合は、まずどの Web サーバで動かすかを尋ねます——Apache・Nginx・Caddy・その他(名前を指定)。静的サイトと PHP サイトはこの Mac 上でそのサーバの専用インスタンスが配信し、その他のサーバは担当向けに記録して、プレビューは内蔵サーバで行います。そのうえで 1 回でフォルダを作り、サイト設定入りの .env(パスワードは入れません)、BRIEF.md、担当向けルールの AGENTS.md、.claude/skills のデザインスキルを書き込み、サーバを起動し、公開アドレスを付け、最初の git コミットを行います。そのうえでページを自分で作るか、隔離された Sandcastle コンテナで動く Claude Code または Codex に任せます。完了するとファイルがフォルダに書き戻され、通知が届きます。MCP で接続した外部エージェントも同じ準備を依頼し、渡されたフォルダで制作できます。
vhost_create はバーチャルホストを作り、reload_webserver は Apache または Nginx を検証してグレースフルにリロードし、issue_certificate は Let’s Encrypt 証明書を取得します。いずれも変更を伴うツールなので、それぞれ承認カードを表示し、変更の有効化を必要とします — AI はこれらのペインであなたが行うことを正確に行い、許可されていないことは一切しません。第 5
データベースとデータ
MySQL・PostgreSQL・Redis などを 1 つのウィンドウから運用し、AI にサイトのデータベースを点検・修正させ、すべてのデータをバックアップ・検証・復元可能な状態に保ちます。
Web スタックは、その下にあるデータの質を超えることはできません。FrontierStack はデータベースを一級のサービスとして扱います。インストールして実行し、中身を閲覧し、AI 管理者がサイトのデータベースを平易な言葉で点検・修復し、そして — 多くの構成が忘れがちな部分ですが — 実際に復元できる検証済みのスケジュールですべてをバックアップします。本章では、リレーショナルエンジン、インメモリキャッシュ、新しいベクトル・分析ストア、そしてそれらすべてを守るバックアップの仕組みを扱います。
5.1MySQL/MariaDB ペイン
サイドバーの Databases セクションから MySQL を開きます。ペインはサーバが未導入なら Homebrew でインストールし、Server.app がかつて備えていた操作を提供します。Start・Stop とライブ状態ランプ、リッスンポート(既定 3306)、サーバ上のデータベース一覧です。MySQL 互換のフォークである MariaDB も同じように管理でき、ペインはインストールされている方を認識します。
ローカル開発は意図的な 1 つの慣習に従います。ローカルの root アカウントはパスワードなしです。これは MAMP/XAMPP の慣行であり、ワンクリック構築と AI の SQL ツールが資格情報の入力なしに動作する理由です。安全なのは、Mac 上の MySQL が 127.0.0.1 のみでリッスンし、そのマシンからしか到達できないからこそです。パスワード付きアカウントや連携サーバ上のデータベースなど、外部から到達する必要が生じた瞬間に、後述の秘密情報ボールトへ切り替えます。

root は、目の前の Mac で localhost にバインドされた MySQL にのみ適用されます。これは開発上の利便性であり、ネットワークからの接続を受け付けるサーバへの推奨ではありません。本番データベースには実際のパスワードを設定し、ボールトに保管します。5.2Database Ops と SQL の実行
Database Ops ペインは、データベースがブラックボックスでなくなる場所です。Replication セクションは、設定済みサーバが MySQL レプリカか PostgreSQL スタンバイかを検出し、遅延を表示します。MySQL は SHOW REPLICA STATUS(IO・SQL スレッド、Seconds_Behind_Source)を読み、PostgreSQL は pg_is_in_recovery() と再生タイムスタンプを使います。レプリケーションの停止やしきい値超過の遅延は、選んだチャネルにアラートを出します — Database Slave 監視プリセットの基礎です。
データの点検や修正には、AI 管理者の run_sql ツールがあります。「この注文の合計がなぜ間違っているのか」「元の重複ユーザより古い重複を削除して」のように平易な言葉で頼むと、ローカルサーバに対して SQL を実行し、結果を表として表示します — MAMP の Claude 連携によく似ています。文がデータを変更し得るため、run_sql は変更の有効化を必要とします。読み取り専用のクエリはアシスタントが有効になった時点で動作します。既定はパスワードなしのローカル root で、設計上ローカル専用です。
5.3パスワード付き・リモートのデータベース
ローカル root のショートカットは、ネットワークが始まるまさにその境界で止まります。パスワードが必要なデータベースや、リモート・連携サーバ上のデータベースでは、パスワードをプロンプトやツールに貼り付けることは決してしません。代わりに、AI 管理者の Script secrets (.env) バーに DB_PASSWORD や MYSQL_PWD という名前付き秘密として一度だけ追加し、アシスタントは run_script 経由で mysql クライアントを実行し、値を $DB_PASSWORD として参照しながら、名前付きサーバに対して SSH 経由で実行します。実際の値は Mac に留まり実行時に注入され、クラウドモデルが見るのは名前だけで秘密は見ません。
.env ボールトに追加し、$NAME として参照します。値は実行時にローカルまたは SSH 経由で注入され、AI には決して送られません。これは FrontierStack 全体で使う同じボールトモデルです — 第 13 章を参照してください。5.4PostgreSQL
高度な SQL・リッチな JSON・全文検索・GIS を求めるプロジェクトには Postgres を開きます。ペインは PostgreSQL(既定ポート 5432)をインストールして実行し、MySQL と並んで同じ開始/停止/状態の操作を備えます。アプリやフレームワークが前提とするなら PostgreSQL を、それ以外なら MySQL/MariaDB が手軽な既定です。両エンジンとも、後述のバックアップジョブと AI ツールの一級の対象であり、PostgreSQL は後述の特化型ストアのいくつかの土台にもなります — 埋め込み用の pgvector、時系列の TimescaleDB、Postgres データベース上に即席 REST API を載せる PostgREST です。
5.5Supabase:ローカルスタック・ホスト型プロジェクト・Supabase MCP
Supabase ペインは 3 つの層で働きます。ローカルでは supabase CLI を操作します。プロジェクトフォルダを選び、スタック全体(Postgres、Auth、Storage、Realtime、PostgREST、Edge Functions、Studio)を Docker で開始し、サービス URL とキーをコピーし、マイグレーションを実行し、SQL コンソールを開き、ローカル DB を Database Ops のバックアップジョブに登録できます。ホスト型プロジェクトについては、Supabase — connection に Supabase の個人アクセストークン(Account ▸ Access Tokens)を保存します。すると各プロジェクトの状態を表示し、Supabase のセキュリティ/パフォーマンスアドバイザを各プロジェクト最大 30 分に 1 回実行します。プロジェクト ref を列挙すればそのプロジェクトだけを監視します。対応が必要になったら通知しますをオンにすると、プロジェクトが異常になったとき、またはセキュリティアドバイザが ERROR レベルの問題(行レベルセキュリティのない公開テーブルなど)を報告したときに通知します。
AI アクセス(Supabase MCP)は AI 管理者を Supabase 公式の MCP サーバに接続します。ホスト型は同じトークンを使います。プロジェクト ref を入力すると 1 プロジェクトに限定され、書き込みを許可をオフのままにすると読み取り専用モードになり(Supabase はすべてのクエリを読み取り専用の Postgres ユーザで実行し、変更を伴うツールを非表示にします)、使うツールグループも選べます。ローカルはスタック自身の /mcp エンドポイント(通常 http://127.0.0.1:54321/mcp)です。「Supabase プロジェクトで RLS のないテーブルは?」「直近 1 時間の認証エラーを見せて」のように依頼できます。読み取りはすぐに実行され、マイグレーション・デプロイ・プロジェクトの変更には「変更を許可」が必要で、毎回承認カードが表示されます。他の MCP クライアントから Claude や Cursor などの設定をコピーしたり、読み取り専用の Supabase エントリを MCP サーバに追加したりできます。
5.6Redis とその他のキャッシュ
セッション・キュー・レート制限・ホットパスのキャッシュは通常、リレーショナルテーブルよりインメモリストアを求めます。FrontierStack は Caching カタログから 2 つの標準を実行します。インメモリのキーバリューストアであり Redis Streams も支える Redis(ポート 6379)と、シンプルな分散キャッシュ用の Memcached(ポート 11211)です。他のサービスと同様にインストール・起動・監視できます。多くの CMS やフレームワークの構成は Redis を MySQL または PostgreSQL と組み合わせます。すべての選択肢はサービスカタログ(第 6 章)に並びます。
5.7ベクトル・分析データベース
2 つの新しいストアの系統が、独自のカタログカテゴリを持ちます。ベクトルデータベースは、検索拡張生成(RAG)や意味検索のための埋め込みを保持します。AI スタック(第 15 章)がモデルに自分のドキュメントへのアクセスを与える方法です。分析データベースは、トランザクション的な読み書きではなく、大規模データの高速な集計のために作られた列指向・時系列エンジンです。
| エンジン | 種類 | ポート |
|---|---|---|
| MySQL / MariaDB | リレーショナル | 3306 |
| PostgreSQL | リレーショナル | 5432 |
| Redis | インメモリキャッシュ/ストリーム | 6379 |
| Memcached | インメモリキャッシュ | 11211 |
| Qdrant | ベクトル(RAG/埋め込み) | 6333 |
| Chroma | ベクトル(埋め込み) | 8000 |
| Weaviate | ベクトル(ハイブリッド検索) | 8080 |
| Milvus | ベクトル(分散) | 19530 |
| pgvector | ベクトル(Postgres 拡張) | 5432 |
| ClickHouse | 列指向 OLAP 分析 | 8123 |
| InfluxDB | 時系列 | 8086 |
| TimescaleDB | 時系列(Postgres 拡張) | 5432 |
| Apache Druid | リアルタイム OLAP | 8888 |
完全にインプロセスのベクトル検索には FAISS(ライブラリ、ポートなし)もあります。フレームワークが前提とするエンジンを選んでください。各ペインは同じカタログの仕組みで一つひとつをインストール・実行します。
pgvector はそれを既存の PostgreSQL の中に保ち、Qdrant・Chroma・Weaviate・Milvus はより大きなコレクション向けの専用ストアです。5.8データパイプラインと ETL
これらのストアの間でデータを移動・整形することは、それ自体が一つの分野です。Data Pipelines & ETL カタログカテゴリが概観レベルでこれを扱います。数百のコネクタを持つ抽出・ロードの Airbyte と Meltano、SQL ベースの変換・モデリングの dbt、そして作業をスケジューリングする Dagster・Prefect・Kestra などのオーケストレーターです。これらは本格的なプラットフォームで、FrontierStack はインストール・実行して Web UI を提示しますが、パイプラインのロジックは各ツールの中にあります。プログラマブルなデータパイプライン DAG には、Workflow Orchestration カテゴリの Apache Airflow もあります。
5.9バックアップ:ダンプ・概要ペイン・CCC
テスト済みバックアップのないデータベースは、未来の障害です。FrontierStack はこれに 2 方向から取り組みます。Database Ops では、サーバごとに検証済みのダンプスケジュールを定義します。名前、エンジン(MySQL か PostgreSQL)、ホスト、ポート、ユーザ、データベース(空欄=すべて)、バックアップディレクトリです。期限の来たジョブはアプリ起動中に自動実行され、Run Now は即座に 1 回実行します。各実行はダンプ以上のことを行います — mysqldump は一貫した InnoDB スナップショットのため --single-transaction で実行され、続いて Verify が gzip の整合性とダンプが完了マーカーで終わっていること(切り詰められた・書きかけのファイルを検出)を確認し、.md5 サイドカーを書き、保持数にローテートし、鍵ベースの SSH で結果をオフサイトへ rsync します。
AI 管理者は同じ操作をツールとして公開します。db_dump はデータベースをターゲット上の .sql ファイルにダンプし(mysqldump または pg_dump を使用)、backup_now は設定・サイト・データフォルダのタイムスタンプ付き tar.gz を作成します。どちらも変更を伴うため、承認と変更の有効化が必要です。DB パスワードには $NAME のボールト秘密を参照し、貼り付けた値は決して使いません。
Backups 概要ペインは、すべての仕組みをまとめ、古さがひと目で分かるようにします。Time Machine の状態、Carbon Copy Cloner のタスク、アプリ管理の Apache 設定スナップショット、Git による設定のバージョン履歴、スケジュール済み自動エクスポートです。Carbon Copy Cloner ペインは CCC のタスクと履歴をその ccc コマンドラインツール経由で読み取り、タスクを必要に応じて Run できます。Time Machine と CCC はどちらも Alerts エンジンに供給されます — しきい値内に実行されていないバックアップや、失敗した CCC タスクは、選んだチャネルにアラートを出します(第 11 章)。
アプリ自身の設定も保護されます。サイドバーのピンと非表示サービス、保存した Setups、ネットワーク Locations は macOS の環境設定だけでなくアプリのサポートフォルダ内の JSON ファイルに保持され、Git スナップショットのたびに環境設定のコピーとともに保存されます。環境設定のシャドウコピーが毎時取られるため、環境設定ファイルが消えても次回起動時に自動で復元されます。Restore App Settings…(Config version history)で最新スナップショットから手動復元もできます。
5.10復元 — そして復元の安全性
バックアップは復元のために存在し、復元こそが危険な半分です。AI の restore ツールは .tar.gz アーカイブを展開するか、.sql ダンプをデータベースにインポートします。ダンプのインポートは稼働中のデータベースを上書きし、アーカイブの展開はその場でファイルを上書きするため、restore は変更を伴い、破壊的になり得ます。常に変更の有効化付きの明示的な承認が必要で、SQL インポートは DB パスワードを $NAME のボールト秘密として参照します。
.sql ダンプのインポートはターゲットデータベースの現在の内容を置き換え、自動の取り消しはありません。復元の前には、ロールバックできるよう現在の状態の新しいダンプを取り(db_dump または Run Now)、正しいデータベース・正しいサーバを向いていること — 誤って本番ではないこと — を確認してください。5.11壊れたデータベースのリカバリ
データベースが単に停止するより悪い状態——起動しない、テーブルが破損している——になることがあります。FrontierStack は AI 管理者(第 13 章)に、手作業で使うのと同じツールを、いつもの承認カードのうえで与えます。mysql_check_tables と pg_check_tables は mysqlcheck/pg_amcheck を実行して破損・クラッシュしたテーブルを見つけます。repair をオンにすると先に mysqldump/pg_dump でバックアップを取ってから修復(--auto-repair/REINDEX)するので、修正は取り消し可能です。mysql_service_control と pg_service_control は、systemd・launchd・Homebrew・service(8) をまたいで、ローカルでも SSH 経由でも、サーバの起動・停止・再起動・状態確認を行います。
難しいケースにはガイド付きのスキル——「Recover Broken MySQL」と「Recover Broken PostgreSQL」——があり、手順全体をたどります。エラーログを読み、原因を診断し、読めるものをすべてダンプし、新しいデータディレクトリに再構築し、壊れたテーブルを修復または作り直し、再起動します——常に古いデータディレクトリはコールドバックアップとして名前を変えて退避し、決して削除せず、破損を伴う各ステップの前に確認します。リモートホストでは、サーバペインのデータベース行にある赤い Emergency ボタンが最短の入り口です。そのホスト向けの適切なリカバリスキルを読み込んだ状態でアシスタントを開きます。
5.12ORM とアプリネイティブのツール:Drizzle と Convex
最後に、2 つのツールがアプリケーションのスキーマ定義の場であなたを迎えます。Drizzle ORM ペインは Drizzle プロジェクト(そのテーブル・マイグレーション・バックエンドの方言)を検出し、drizzle-kit タスクを代行します — スキーマから SQL を Generate、Migrate、スキーマを直接 Push、既存データベースを Pull(イントロスペクト)、そしてデータ閲覧用に Drizzle Studio を開きます。Convex ペインは、組み込みデータベースを備えるリアクティブバックエンドの Convex を管理します。npx convex dev で関数を監視・プッシュするか、Docker でセルフホストのバックエンドを立ち上げます。どちらも Node.js を必要とし、未導入ならペインが Homebrew でインストールします。これらはアプリケーション自身のデータ層を扱います。上記のダンプとバックアップは、それらが書き込むものを引き続き守ります。
第 6
サービスカタログ
FrontierStack がインストール・実行・監視できる全サービスをカテゴリ別に。
FrontierStack は 114 カテゴリにわたる 1817+ サービスのカタログを備えています。各項目はアプリから検出・インストール・起動・設定・監視でき、AI 管理者はそのすべてを操作できます。本章はそのフィールドガイドです。各カテゴリと所属サービス、そして全サービスの 1 行説明を掲載します。サービス説明はアプリのラベルと一致させるため英語のままにしています。
各サービスには frontierstack.app/services/ に専用ページがあり、ポート・既定の Web UI・Homebrew フォーミュラを掲載しています。
6.1Overview
Local Health
built-in tool
Status Page
built-in tool
Alerts
built-in tool
Sites
built-in tool
Logs
built-in tool
Certificates
built-in tool
Tools
built-in tool
Scripts & Cron
built-in tool
Startup Items
built-in tool
Homebrew
built-in tool
Messaging Gateways
built-in tool
Notifications
built-in tool
Apple Services
built-in tool
Terminal Style
built-in tool
Setups
built-in tool
Paired Devices
built-in tool
Licences
built-in tool
Settings
built-in tool
6.2Setup & Migration
Migrate Setups
built-in tool
Apple Server Migration
built-in tool
Site Transfer
built-in tool
Install Wizard
built-in tool
6.3Locations & Places
Locations
built-in tool
Places
built-in tool
Device Discovery
built-in tool
Data Map
built-in tool
NAVER Maps API (네이버 지도)
Naver map, geocoding & directions APIs (via NAVER Cloud) (web UI)
Kakao Maps & Local API (카카오맵 / 로컬)
Kakao map SDK + Local address / keyword search API (web UI)
TMAP API (T map, TMAP Mobility / SK open API)
TMAP routing, geocoding & POI APIs (SK) (web UI)
VWorld (브이월드, 국토교통부 공간정보 오픈플랫폼)
Korean government spatial data & base maps (MOLIT) (web UI)
Juso road-name address API (도로명주소 API, 행정안전부)
Official Korean road-name address search API (web UI)
6.4Fleet & Remote
Remote Tools
built-in tool
Fleet Run
built-in tool
Remote KVM
built-in tool
GL.iNet KVM
built-in tool
Git Server
built-in tool
Remote Control & Lock
built-in tool
Server Clone
built-in tool
Headless Setup
built-in tool
Print Production
built-in tool
Screens
Polished VNC client for Mac & iOS (Edovia)
Cockpit
Browser console for Linux servers and Raspberry Pi (port 9090, web UI)
Windows Admin Center
Browser-based management for Windows Server fleets (port 443, web UI)
PiKVM
Open-source KVM-over-IP (Raspberry Pi) (port 443, web UI)
JetKVM
Compact, low-cost KVM-over-IP device (port 80, web UI)
TinyPilot
KVM-over-IP appliance (web UI) (port 443, web UI)
NanoKVM
Sipeed open KVM-over-IP (RISC-V) (port 80, web UI)
GL.iNet Comet (GL-RM1)
Compact KVM-over-IP with a browser console (port 80, web UI)
GL.iNet Comet Pro (GL-RM10)
KVM-over-IP with a built-in smart power plug (port 80, web UI)
Raritan Dominion KX
Enterprise KVM-over-IP switch (web UI) (port 443, web UI)
ATEN KVM over IP
KVM-over-IP switches & dongles (web UI) (port 443, web UI)
Jump Desktop
Fast, secure remote desktop (RDP/VNC/Fluid)
RustDesk
Open-source remote desktop with optional self-host relay (port 21115, web UI)
MeshCentral
Self-hosted web RMM and remote control (port 443, web UI)
Apache Guacamole
Clientless RDP, VNC and SSH gateway (port 8080, web UI)
Windows Remote Desktop
RDP access to Windows machines (port 3389)
WinRM / PowerShell Remoting
Remote command channel for Windows servers (port 5986)
Tactical RMM
Open-source RMM for Windows-focused fleets (port 443, web UI)
AnyDesk
Cross-platform remote desktop
ServerBuddy
Native Mac console for Linux servers
ITmanager.net
Mobile and desktop server administration service (web UI)
CloudRay
Hosted Bash automation, scheduling and fleet execution (web UI)
CtrlOps
Local-first AI, SSH and Linux server management
Level RMM
Browser RMM with peer-to-peer remote access (web UI)
6.5Networking
Traffic
built-in tool
Router & Network
built-in tool
Power over Ethernet
built-in tool
Mellanox Networking
built-in tool
UniFi
built-in tool
SFTP
built-in tool
WebDAV
built-in tool
Time Capsule
built-in tool
Internet Health
built-in tool
Service Scan
built-in tool
Wi-Fi Analyser
built-in tool
BIND 9 (named)
Authoritative/recursive DNS server (port 53)
netboot.xyz
Network-boot OS installers via PXE/iPXE (port 3000, web UI)
mosh
Roaming, lag-tolerant remote shell (SSH bootstrap + UDP)
SSH3
SSH over QUIC/HTTP3 — faster handshakes, hidden behind a secret URL
Zeroconf / Bonjour
Zero-configuration service discovery (mDNS/DNS-SD) (port 5353)
6.6VPN
VPN
built-in tool
ZeroTier Controller
built-in tool
Tailnet
built-in tool
ZeroTier
Zero Trust SD-WAN / virtual networks — agent + API
NetBird
Open-source Zero Trust networking (self-hostable)
Twingate
Zero Trust remote access (VPN replacement)
CloudConnexa
OpenVPN's cloud-delivered VPN / ZTNA (formerly OpenVPN Cloud) (web UI)
Netmaker
Fast WireGuard mesh networks (self-hosted)
WireGuard
Modern, fast VPN — host your own, or the mesh base layer (port 51820)
OpenVPN
The classic open-source SSL/TLS VPN (port 1194)
Intego Privacy Protection (VPN)
Intego's commercial VPN — a Private Internet Access-based client for Mac
Proton VPN
Privacy VPN (WireGuard/OpenVPN, Secure Core, kill switch)
Headscale
Self-hosted Tailscale control server (open-source) (port 8080, brew: headscale)
Nebula
Lightweight overlay mesh (Slack/Defined Networking)
OpenZiti
Zero-trust overlay fabric with SDKs (self-hosted)
Firezone
WireGuard-based zero-trust access gateway
tinc
Classic self-routing mesh VPN (open-source)
n2n
Peer-to-peer layer-2 VPN over a supernode (ntop)
innernet
WireGuard mesh with CIDR-based access (tonari)
strongSwan
IKEv2/IPsec VPN server (port 500)
wg-easy
WireGuard VPN with a simple web UI (port 51821, web UI)
TP-Link LightLink VPN
TP-Link remote-access VPN — managed via the Navi Desktop app
Tailscale
WireGuard mesh VPN (brew: tailscale)
Tunnelblick
Free OpenVPN client for macOS
6.7Routers & Firewalls
macOS Firewall
built-in tool
OPNsense
Open-source firewall/router OS (REST API) (port 443, web UI)
pfSense
FreeBSD firewall/router OS (REST via package) (port 443, web UI)
PoE Switch (RFC 3621)
Managed PoE switch — port power, budget & cycling over SNMP (port 161, web UI)
MikroTik (RouterOS)
RouterOS devices — REST API (v7+) (port 443, web UI)
UniFi
Ubiquiti Cloud Gateway / Dream Machine + Network controller (port 443, web UI)
UniFi OS Server
Self-hosted UniFi OS — run the full stack on your own Mac or Linux box (port 11443, web UI)
NVIDIA Spectrum (Onyx)
Mellanox/NVIDIA Spectrum Ethernet switches on Onyx — ports, power, fans, temperature (port 443, web UI)
NVIDIA Cumulus Linux
Spectrum switches on Cumulus Linux 5.x — NVUE REST API (port 8765)
NVIDIA Quantum InfiniBand (MLNX-OS)
Quantum / SwitchX InfiniBand switches — ports, subnet manager, hardware (port 443, web UI)
NVIDIA UFM
Unified Fabric Manager — InfiniBand fabric alarms and switch health (port 443, web UI)
NVIDIA BlueField DPU
BlueField-2/3 DPUs — BMC health, power, temperatures, firmware (port 443)
NVIDIA ConnectX NICs
Mellanox/NVIDIA ConnectX adapters in Linux servers — link, firmware, health (port 22)
Peplink
SD-WAN routers with multi-WAN failover/bonding (port 443, web UI)
Cradlepoint
Cellular/5G edge routers (NCOS + NetCloud) (port 443, web UI)
OpenWrt
Open-source router firmware (LuCI / ubus) (port 80, web UI)
Firewalla
Home/SMB security router (cloud MSP API)
IPFire
Hardened open-source Linux firewall (web UI) (port 444, web UI)
VyOS
Linux network OS — unified CLI + HTTPS API (port 443, web UI)
Untangle / Arista NG Firewall
Debian network gateway — web admin (commercial) (port 443, web UI)
Sophos Firewall
Next-gen firewall appliance — web UI + API (commercial) (port 4444, web UI)
FortiGate
Fortinet next-gen firewall — REST API (commercial) (port 443, web UI)
Palo Alto Networks
PAN-OS next-gen firewall — XML/REST API (commercial) (port 443, web UI)
Cisco Secure Firewall
Cisco NGFW (Firepower/ASA) — FMC/FDM API (commercial) (port 443, web UI)
WatchGuard Firebox
Fireware firewall appliance — web UI + Cloud API (commercial) (port 8080, web UI)
UFW (Uncomplicated Firewall)
Easy iptables/nftables host firewall for Linux servers (manage over SSH)
6.8Web Servers
Apache
built-in tool
Nginx
built-in tool
Vercel
built-in tool
Railway
built-in tool
Vite
built-in tool
Localhost
built-in tool
Caddy
Automatic-HTTPS web server / reverse proxy (port 80, brew: caddy)
Laravel Herd
One-click PHP dev environment (Mac app) (port 80)
Apache Tomcat
Java servlet/JSP application server (port 8080, web UI, brew: tomcat)
Puma
Threaded Rack/HTTP server — the default app server for Rails (port 3000)
Microsoft IIS
Windows web server and application platform (port 80, web UI)
OpenLiteSpeed
High-performance web server with web admin UI (port 7080, web UI)
Angular CLI
Scaffold, serve & build Angular apps (port 4200, web UI)
6.9DNS
Dynamic DNS
built-in tool
DNS
built-in tool
Domain Registrars
built-in tool
AdGuard Home
Network-wide ad/tracker-blocking DNS (self-hosted) (port 3000, web UI)
Pi-hole
Network-wide ad/tracker-blocking DNS sinkhole (port 80, web UI)
Nebula Sync
Sync configuration across Pi-hole instances
Kea DHCP
ISC's modern DHCPv4/DHCPv6 server (REST + DB back-ends) (port 8000)
ISC DHCP
Classic ISC dhcpd (EOL — migrate to Kea)
Dnsmasq
Lightweight DNS forwarder + DHCP + TFTP (port 53, brew: dnsmasq)
udhcpd (BusyBox)
Tiny DHCP server (BusyBox / embedded)
DNSimple
Managed DNS + domain registrar — live zone/record management (web UI)
Infoblox NIOS (DDI)
Enterprise DNS / DHCP / IPAM appliance (DDI) (port 443, web UI)
Windows Server DHCP
DHCP Server role on Windows Server
NHN Cloud DNS Plus
NHN Cloud anycast authoritative DNS + GSLB (web UI)
DNSEver (디엔에스에버)
Korean managed, free and dynamic DNS hosting (web UI)
DNSZi (DNS지기)
Free Korean DNS hosting (nsN.dnszi.com) (web UI)
6.10Runtimes
Runtime Health
built-in tool
PHP
built-in tool
Python
built-in tool
Node.js
built-in tool
React
built-in tool
Java
built-in tool
Go
built-in tool
Rust
built-in tool
Ruby
built-in tool
Perl
built-in tool
.NET
built-in tool
Supabase Edge Functions
Deno serverless functions on the edge (port 54321)
code-server
VS Code in the browser (self-hosted) (port 8080, web UI, brew: code-server)
Next.js
React framework served by a Node process (SSR/SSG) (port 3000)
SvelteKit (Svelte)
Svelte app framework served by a Node process (SSR/SSG) (port 3000)
Nuxt (Vue)
Vue framework served by a Node process (SSR/SSG) (port 3000)
Astro
Content-first framework — zero JS by default; popular headless-WordPress front end (port 4321)
Solid (SolidJS)
Fine-grained reactive UI framework — SolidStart serves it as a Node process (port 3000)
Tailwind CSS
Utility-first CSS — standalone build CLI (no Node)
.NET (ASP.NET Core)
Run ASP.NET Core & Blazor apps (Kestrel) (port 5000)
Wasmtime
Bytecode Alliance WebAssembly runtime (WASI)
Wasmer
WebAssembly runtime with a package registry
WasmEdge
Lightweight WASM runtime for cloud/edge & AI (CNCF)
wasmCloud
Distributed WebAssembly platform (CNCF) (port 4222, web UI)
Fermyon Spin
Serverless WebAssembly apps & HTTP microservices (port 3000)
6.11Databases
Database Health
built-in tool
MySQL
built-in tool
MySQL Clusters
built-in tool
Postgres
built-in tool
Database Ops
built-in tool
Cloud SQL
built-in tool
Drizzle ORM
built-in tool
Prisma
built-in tool
Airtable
built-in tool
Convex
built-in tool
Supabase
built-in tool
MongoDB
Document (NoSQL) database (port 27017, brew: mongodb-community)
Microsoft SQL Server
Microsoft relational database for Windows and Linux (port 1433)
Oracle Database
Enterprise relational database (port 1521, web UI)
CockroachDB
Distributed SQL database (port 26257, web UI)
Apache Cassandra
Distributed wide-column database (port 9042, brew: cassandra)
ScyllaDB
High-performance Cassandra-compatible database (port 9042)
Neo4j
Graph database with Cypher query language (port 7474, web UI, brew: neo4j)
Apache CouchDB
Document database with HTTP API and sync (port 5984, web UI, brew: couchdb)
Couchbase Server
Distributed document, key-value and search database (port 8091, web UI)
PlanetScale
Hosted MySQL with database branching (cloud API) (port 3306)
Neon
Serverless Postgres — autoscaling & branching (cloud API) (port 5432)
Turso
Distributed SQLite (libSQL) at the edge (cloud API) (port 8080)
PostgREST
Instant REST API over a PostgreSQL database (port 3000)
PocketBase
Open-source backend in one file (SQLite + auth + realtime) (port 8090, web UI)
Firebase
Google's backend-as-a-service — Firestore, Auth, Storage, Functions (cloud) (port 4000, web UI)
Patroni
HA PostgreSQL — automatic failover (port 8008, web UI)
6.12Vector Databases
Vector Databases
built-in tool
Qdrant
Fast vector DB for embeddings & RAG (self-hosted) (port 6333, web UI)
Chroma
Developer-friendly embedding database (self-hosted) (port 8000)
Weaviate
Vector DB with built-in vectorizers & hybrid search (self-hosted) (port 8080)
Milvus
Scalable, distributed vector database (self-hosted) (port 19530)
pgvector
Vector search inside PostgreSQL (extension) (port 5432)
FAISS
Fast in-process vector similarity search (library)
6.13Analytics Databases
InfluxDB
Time-series database for metrics and IoT (port 8086, web UI, brew: influxdb)
DuckDB
In-process OLAP database — the SQLite of analytics
ClickHouse
Columnar OLAP database for fast analytics (port 8123)
Apache Druid
Real-time analytics database (OLAP) (port 8888, web UI)
TimescaleDB
Time-series database (PostgreSQL extension) (port 5432)
6.14Data Pipelines & ETL
Airbyte
Open-source ELT with 300+ connectors (self-hosted / cloud) (port 8000, web UI)
Meltano
Open-source ELT built on Singer taps & targets (CLI) (port 5000, web UI)
dbt
SQL-based data transformation & modeling (self-hosted / cloud) (port 8080, web UI)
Dagster
Asset-oriented data orchestrator (self-hosted / cloud) (port 3000, web UI)
Prefect
Modern Python workflow orchestration (self-hosted / cloud) (port 4200, web UI)
Kestra
Event-driven orchestration & scheduling, YAML flows (self-hosted) (port 8080, web UI)
Redpanda Connect (Benthos)
Declarative stream-processing & connectors (self-hosted CLI) (port 4195)
NATS JetStream Pipelines
Persistent streams & consumers for event pipelines (self-hosted) (port 8222, brew: nats-server)
6.15Caching
Redis
In-memory key-value store (port 6379, brew: redis)
Memcached
Distributed memory cache (port 11211, brew: memcached)
6.16Search
Elasticsearch
Search & analytics engine (Elastic) (port 9200, web UI, brew: elasticsearch-full)
Meilisearch
Fast, typo-tolerant search engine (port 7700, web UI, brew: meilisearch)
OpenSearch
Search & analytics engine (port 9200, web UI, brew: opensearch)
Photon
Self-hosted OpenStreetMap geocoder (search-as-you-type) (port 2322)
6.17Backup
Backups
built-in tool
Time Machine
built-in tool
Carbon Copy Cloner
built-in tool
Synology Active Backup for Business
Centralized backup for PCs, servers, VMs & SaaS (Synology) (port 5001, web UI)
Databasus
Self-hosted database backup & point-in-time recovery (web UI)
Restic
Fast, encrypted, deduplicated backups
rclone
Sync & mount 70+ cloud storages
Dropbox (Backup Target)
Use Dropbox as an encrypted off-site backup destination (restic / rclone)
Veeam Backup & Replication
Enterprise VM, server and cloud backup (port 9419, web UI)
Veeam Backup for Microsoft 365
Exchange, SharePoint, OneDrive and Teams backup (live job health) (port 4443)
Veeam Service Provider Console
Multi-site / MSP Veeam management (live job health) (port 1280, web UI)
BorgBackup
Deduplicating encrypted backups over SSH
Kopia
Encrypted snapshots to cloud or local storage (port 51515, web UI)
Duplicati
Web UI backups to cloud storage (port 8200, web UI)
6.18Storage & NAS
iCloud+
built-in tool
Xsan
built-in tool
Supabase Storage
S3-compatible object storage from Supabase (port 54321, web UI)
Nextcloud
Files, sync, office & app platform (port 80, web UI)
Syncthing
Peer-to-peer continuous file sync (port 8384, web UI, brew: syncthing)
TrueNAS
ZFS NAS OS — pools, snapshots, replication (self-hosted) (port 443, web UI)
UrBackup
Client/server network backup — file + image backups to your NAS (self-hosted) (port 55414, web UI)
ZimaOS / CasaOS
Personal-cloud NAS OS for ZimaCube / ZimaBoard (self-hosted) (port 80, web UI)
Synology DSM
Synology NAS appliance (DSM) (port 5001, web UI)
QNAP QTS
QNAP NAS appliance (QTS/QuTS hero) (port 8080, web UI)
UGREEN NAS
UGREEN NASync / UGOS Pro appliance health, storage, containers, services and logs through a linked remote helper (port 443, web UI)
Beelink NAS
Beelink ME mini / ME Pro NAS hardware (Windows, TrueNAS, Unraid, OMV, Proxmox)
Minisforum NAS
Minisforum N5 / N5 Air / N5 Pro / N5 Max NAS hardware (MinisCloud OS, TrueNAS, Unraid, Proxmox)
Ceph
Distributed object/block/file storage cluster (self-hosted) (port 8443, web UI)
GlusterFS
Scale-out network filesystem (self-hosted)
iSCSI (SAN)
Block storage over TCP/IP — initiator & target (port 3260) (port 3260)
NVMe / NVMe-oF
NVMe SSDs & NVMe-over-Fabrics targets (TCP/RDMA/FC) (port 4420)
Fibre Channel (SAN)
FC SAN fabric — HBA ports, WWNs, multipath
RDMA / RoCE / iWARP
Remote Direct Memory Access fabrics — RoCE & iWARP
InfiniBand Fabric
InfiniBand HCA/fabric — ports, SM, port-error counters
NVIDIA NVLink
GPU-to-GPU interconnect — per-link state & bandwidth
NVIDIA NVSwitch
NVLink switch fabric — Fabric Manager service
Liqid (Composable)
Composable PCIe/CXL fabric — pool & attach GPUs/NVMe (web UI)
GigaIO FabreX
PCIe/CXL memory fabric — composable GPU pooling (web UI)
WEKA
Parallel filesystem for AI/HPC (GPUDirect) (port 14000, web UI)
ownCloud
Self-hosted file sync & share (port 80, web UI)
Seafile
File sync & share with client-side encryption (self-hosted) (port 8000, web UI)
Resilio Sync
P2P file sync (BitTorrent-based) (port 8888, web UI)
Dropbox
Cloud file sync & share (app + API) (web UI)
Samba
SMB file sharing (+ Time Machine) (port 445, brew: samba)
Netatalk
AFP file sharing for legacy Macs and Xserve estates (port 548)
File Browser
Web file manager for a directory (port 8080, web UI)
Filestash
Web file manager for S3/SFTP/FTP/WebDAV/… (port 8334, web UI)
Unraid
NAS/server OS — storage array, VMs & Docker (port 80, web UI)
Box
Secure content, collaboration and governed agent workflows (SaaS) (web UI)
6.19Object Storage & S3-Compatible
MinIO
S3-compatible object storage (port 9000, web UI, brew: minio)
SeaweedFS
Fast distributed object/file store (self-hosted) (port 8888, web UI)
Garage
Lightweight self-hosted S3 object store (Deuxfleurs) (port 3900)
Ceph RGW (RADOS Gateway)
S3/Swift object gateway on a Ceph cluster (self-hosted) (port 7480)
OpenStack Swift
Highly-available object store (OpenStack, self-hosted) (port 8080)
Cloudflare R2
S3-compatible object storage with zero egress fees (cloud) (web UI)
Backblaze B2
Low-cost cloud object storage, S3-compatible (cloud) (web UI)
Wasabi
Hot cloud object storage, S3-compatible, no egress fees (cloud) (web UI)
RustFS
High-performance S3-compatible object storage (Rust) (port 9000, web UI)
6.20Mail
Mail Server
built-in tool
Message Delivery
built-in tool
Proton
Encrypted mail, VPN, drive & passwords (cloud) (port 1025, web UI)
HEY
37signals hosted email & calendar (Imbox, Screener, Paper Trail) (web UI)
Rspamd
Fast spam-filtering system (self-hosted) (port 11334, web UI)
Apache SpamAssassin
Rule-based spam classifier (self-hosted) (port 783)
MailScanner
Email security framework / gateway (self-hosted)
Proxmox Mail Gateway
Anti-spam/AV email gateway appliance (self-hosted) (port 8006, web UI)
mailcow
Dockerized full mail-server suite (self-hosted) (port 443, web UI)
Modoboa
Mail hosting & management platform (self-hosted) (port 443, web UI)
OpenDKIM
DKIM signing & verification milter (self-hosted) (port 8891)
OpenDMARC
DMARC policy filter & reporting (self-hosted) (port 8893)
Postfix
SMTP mail transfer agent (port 25)
Dovecot
IMAP/POP3 mail delivery server (port 143)
Stalwart Mail Server
All-in-one secure mail server (SMTP/IMAP/JMAP) (port 8080, web UI)
Maddy Mail Server
Composable single-binary mail server (SMTP/IMAP)
Inbox Zero
Open-source AI email assistant (self-hosted) (port 3000, web UI)
Hiworks (하이웍스, Gabia)
Gabia groupware — mail, approvals, SMS, HR (web UI)
Mailplug (메일플러그)
Korean business email hosting (web UI)
6.21Mailing Lists
Mailing Lists
built-in tool
Mailchimp
Hosted email marketing & audiences (cloud) (web UI)
Brevo
Email/SMS marketing + transactional (cloud) (web UI)
Loops
Email for SaaS — marketing, loops & transactional (cloud) (web UI)
MailerLite
Simple newsletter & subscriber lists (cloud) (web UI)
Klaviyo
E-commerce email/SMS & segmentation (cloud) (web UI)
Campaign Monitor
Designer-friendly email campaigns (cloud) (web UI)
Mailgun
Developer transactional email + lists (cloud) (web UI)
SendGrid
Twilio's email API & marketing lists (cloud) (web UI)
Amazon SES
AWS low-cost bulk/transactional email (cloud) (web UI)
Postmark
Fast, reliable transactional email (cloud) (web UI)
Resend
Developer-first transactional email API (cloud) (web UI)
MailPace
Fast, privacy-friendly transactional email (cloud) (web UI)
Nylas
Email/calendar/contacts API platform (cloud) (web UI)
Listmonk
Self-hosted high-performance newsletter manager (port 9000, web UI)
Mautic
Self-hosted marketing automation (port 80, web UI)
Mailtrain
Self-hosted Node.js newsletter app (port 3000, web UI)
Postal
Self-hosted full mail/delivery platform (port 5000, web UI)
NHN Cloud Notification — Email
NHN Cloud transactional email (web UI)
Stibee (스티비)
Korean email newsletter platform (web UI)
6.22Email Deliverability & Reputation
Email Delivery
built-in tool
DMARC Reports
built-in tool
DMARC Aggregate Reporting
Collect & parse DMARC RUA reports (self-hosted: parsedmarc)
BIMI
Brand logo in the inbox via DNS + VMC (standard)
MTA-STS & TLS-RPT
Enforce SMTP TLS and get TLS failure reports (standard)
GlockApps
Inbox-placement & spam-filter testing (cloud) (web UI)
MXToolbox
DNS, blacklist & email health lookups (cloud) (web UI)
Google Postmaster Tools
Gmail sender reputation & spam-rate data (cloud) (web UI)
Mailhardener
All-in-one email-security monitoring & reporting (cloud) (web UI)
EasyDMARC
DMARC management & deliverability platform (cloud) (web UI)
dmarcian
DMARC reporting & deployment platform (cloud) (web UI)
Suped
DMARC, SPF and DKIM monitoring with a free plan (cloud) (web UI)
6.23Message Queues & Streaming
Queue Operations
built-in tool
Supabase Realtime
Postgres change streams over WebSockets (port 54321, web UI)
NATS
High-performance messaging + JetStream (self-hosted) (port 4222, brew: nats-server)
Apache Kafka
Distributed event streaming (self-hosted) (port 9092, brew: kafka)
AKHQ
Web administration and observability console for Kafka (port 8080, web UI)
Apache ZooKeeper
Distributed coordination, quorum and leader election (port 2181, brew: zookeeper)
Redpanda
Kafka-compatible streaming, no JVM/ZooKeeper (port 9092)
Apache Pulsar
Distributed pub-sub & queuing with tiered storage (port 6650)
Apache RocketMQ
Low-latency distributed messaging (ordered, transactional) (port 10911)
Redis Streams
Lightweight log/stream with consumer groups (Redis) (port 6379, brew: redis)
Celery
Distributed task queue for Python (workers + broker) (web UI)
RabbitMQ
AMQP message broker with queue monitoring and optional MQTT (port 5672, web UI, brew: rabbitmq)
6.24Push Services
APNs
built-in tool
ntfy
Self-hostable pub-sub push (HTTP) (port 80, web UI, brew: ntfy)
Gotify
Self-hosted push server + Android app (port 80, web UI)
OneSignal
Hosted multi-channel push (cloud) (web UI)
Firebase (FCM)
Google's cross-platform push (cloud) (web UI)
Airship
Enterprise customer-engagement push (cloud) (web UI)
Matrix Notifications
Push via the Matrix chat protocol (web UI)
Synapse
Self-hosted Matrix homeserver (port 8008, brew: matrix-synapse)
Element
Flagship Matrix chat client
UnifiedPush
Open push standard (Google-free) (web UI)
PushDeer
Open-source, no-app-fuss push (web UI)
Pushover
Simple paid push to iOS/Android/desktop (web UI)
Apprise
One CLI/library → 80+ push services
NHN Cloud Notification — Push
NHN Cloud mobile push notifications (web UI)
6.25Chat & Collaboration
Discord
Community chat & voice (cloud) (web UI)
Slack
Team chat & workflows (cloud) (web UI)
Buzz
Group chat for humans + AI agents (Block; cloud or self-hosted) (web UI)
Matrix (Synapse + Element)
Open, federated chat — self-hosted (Docker) (port 8008, web UI)
Mattermost
Open-source Slack alternative (self-hosted) (port 8065, web UI)
Rocket.Chat
Open-source team chat platform (self-hosted) (port 3000, web UI)
Zulip
Threaded team chat (self-hosted or cloud) (port 80, web UI)
Ergo (IRCd)
Modern single-binary IRC server (IRCv3, built-in services) (port 6667)
InspIRCd
Modular C++ IRC server (self-hosted) (port 6667)
UnrealIRCd
Popular full-featured IRC server (self-hosted) (port 6667)
Solanum (IRCd)
The IRCd that runs Libera.Chat (charybdis fork) (port 6667)
ZNC (IRC bouncer)
IRC bouncer — stay connected, replay history (port 6697, web UI)
The Lounge
Self-hosted web IRC client (always-on) (port 9000, web UI)
KiwiIRC
Web IRC client + gateway (self-hosted) (port 7778, web UI)
Atheme (IRC services)
NickServ/ChanServ services for TS6 IRCds
Anope (IRC services)
IRC services (NickServ/ChanServ) for many IRCds
Libera.Chat
Public IRC network (FOSS communities) — connect, not self-host (port 6697)
Open OSCAR Server
Self-hostable AIM/ICQ (OSCAR) server — run your own AIM (port 5190)
AIM OSCAR Server
Alternative OSCAR server — make your own AIM chat network (port 5190)
Telegram
Cloud messaging with a powerful Bot API (cloud) (web UI)
TeamSpeak
Low-latency voice server (self-hosted) (port 9987)
Mumble
Open-source low-latency voice (self-hosted) (port 64738)
Jitsi Meet
Open-source video conferencing (self-hosted) (port 8443, web UI)
SimpleX Chat
Private messenger with no user IDs (self-hostable relays)
Session
Onion-routed private messenger (no phone number)
Prosody
Lightweight XMPP (Messages) server (port 5222, brew: prosody)
Sendbird
Chat, voice & video APIs for apps (Korean-founded) (web UI)
NAVER WORKS / LINE WORKS (네이버웍스)
Business messenger & groupware (LINE WORKS in Japan) (web UI)
NHN Dooray! (두레이)
NHN collaboration — projects, mail, messenger (web UI)
JANDI (잔디)
Korean team messenger (incoming webhooks) (web UI)
Flow (플로우)
Korean project & team collaboration (web UI)
Swit (스윗)
Korean-founded chat + task collaboration (web UI)
KakaoWork (카카오워크)
Kakao business messenger with bot API (web UI)
6.26SMS & iMessage Gateways
Gammu (gammu-smsd)
Send/receive SMS via a GSM modem (self-hosted)
Kannel
Open-source SMS/WAP gateway (self-hosted) (port 13013)
ModemManager
Linux modem daemon — SMS via mmcli (self-hosted)
SMS Gateway for Android
Turn an Android phone into an SMS HTTP API (self-hosted) (web UI)
SMSSync
Android SMS↔webhook relay (self-hosted)
Android + Tasker
DIY SMS gateway via Tasker automation (self-hosted)
Home Assistant SMS
SMS notify/receive in Home Assistant (Gammu)
AirMessage
Self-hosted iMessage bridge — server on this Mac (port 1359)
BlueBubbles
Self-hosted iMessage bridge — server on this Mac (web UI)
Aligo (알리고)
Korean SMS / LMS / MMS + KakaoTalk sending API (web UI)
NHN Cloud Notification — SMS
NHN Cloud SMS / LMS sending (web UI)
Bizppurio (비즈뿌리오)
Daou Tech business SMS & KakaoTalk API (web UI)
Ppurio (뿌리오)
Daou Tech SMS / KakaoTalk sending (web UI)
Munjanara (문자나라)
Legacy Korean SMS sending (plain-HTTP API) (web UI)
SureM (슈어엠)
Korean SMS & KakaoTalk sending (SureM) (web UI)
Solapi (솔라피, CoolSMS)
Korean SMS / LMS / MMS + KakaoTalk sending API (web UI)
6.27Business Messaging
KakaoTalk AlimTalk
Kakao business notification templates — Korea (cloud) (web UI)
LINE Official Account
Customer messaging & loyalty on LINE (web UI)
WhatsApp Business Platform
WhatsApp business messaging — templates, catalogues (live) (web UI)
WeChat Official Account
WeChat business account — China (broadcasts, menus, mini-programs) (web UI)
Zalo Official Account
Zalo business account — Vietnam (broadcasts & chat) (web UI)
KakaoTalk Channel
Kakao business channel — Korea (friend broadcasts & chat) (web UI)
Viber Business Messages
Branded business messages on Viber (web UI)
Facebook Messenger
Messenger business messaging (Meta) (web UI)
Instagram Messaging
Instagram DM API for business (Meta) (web UI)
Apple Messages for Business
Store↔customer chat inside iMessage (web UI)
RCS Business Messaging
Branded rich business messaging (SMS successor) (web UI)
Attentive
SMS & email marketing for retail/DTC (web UI)
Postscript
SMS marketing for Shopify stores (web UI)
Omnisend
Email & SMS marketing automation (e-commerce) (web UI)
SimpleTexting
Business SMS/MMS marketing & two-way texting (web UI)
ManyChat
Chat marketing bots — Instagram/Messenger/WhatsApp (live) (web UI)
Respond.io
Omnichannel customer-conversation inbox (web UI)
Gupshup
Conversational messaging API (WhatsApp & more) (web UI)
WATI
WhatsApp Business team inbox & broadcasts (web UI)
Charles
Conversational commerce on WhatsApp (web UI)
Trengo
Multichannel team inbox for customer chat (web UI)
Intercom
Customer messaging & proactive marketing (live) (web UI)
Gorgias
E-commerce helpdesk with chat & proactive messages (web UI)
NHN Cloud Notification — KakaoTalk Bizmessage
NHN Cloud KakaoTalk AlimTalk / FriendTalk (web UI)
BizM (비즈엠)
KakaoTalk AlimTalk / FriendTalk sending (BizM) (web UI)
Lunasoft / Luna M (루나소프트)
KakaoTalk business messaging (Luna M) (web UI)
BizGo by Infobank (비즈고 / 인포뱅크 OMNI)
Infobank SMS, AlimTalk, RCS & Naver TalkTalk API (web UI)
6.28Calendars
Calendar Discovery
built-in tool
Calendar Health
built-in tool
Event Server Monitoring
built-in tool
ICS Feeds
built-in tool
Radicale
Lightweight CalDAV/CardDAV server (port 5232, web UI)
Baïkal
PHP CalDAV/CardDAV server (SabreDAV) (port 80, web UI)
Nextcloud Calendar
Calendar app on a Nextcloud server (web UI)
DAViCal
PHP/PostgreSQL CalDAV server (port 80, web UI)
SOGo
Groupware (CalDAV/CardDAV/ActiveSync) (port 20000, web UI)
Apple Calendar Server
Migrate the old macOS Server CalDAV (port 8443)
Google Calendar
Hosted calendar (CalDAV / API) (web UI)
Outlook Calendar
Microsoft 365 calendar (Graph API) (web UI)
Calendly
Hosted scheduling / booking links (web UI)
Cal.com
Open-source scheduling (self-hostable) (web UI)
6.29Identity & Accounts
Accounts
built-in tool
Open Directory
Apple's built-in LDAP / Kerberos directory (port 389)
Dropbox Business
Team management & audit-log APIs for Dropbox Business (cloud) (web UI)
Keycloak
Open-source identity & access management (SSO) (port 8080, web UI)
FreeIPA
Open-source identity management (LDAP/Kerberos, self-hosted) (port 443, web UI)
Authentik
Self-hosted identity provider (Docker) (port 9000, web UI)
Okta
Workforce identity & SSO — live API health (web UI)
Microsoft Entra ID
Azure AD — cloud identity & SSO (live tenant health) (web UI)
Google Workspace
Google's identity & productivity suite (Admin SDK) (web UI)
Active Directory
On-premises AD DS — domain controller health (live) (port 389)
AD FS
Active Directory Federation Services (on-prem SSO)
Authenticate.com
Identity verification & KYC API (cloud) (web UI)
Univention Corporate Server
Open IAM, SSO, directory and application platform (port 443, web UI)
6.30Customer Identity
WorkOS
B2B auth — SSO, Directory Sync, AuthKit (live) (web UI)
Auth0
Hosted authentication platform (Okta) (web UI)
Clerk
Hosted auth & user management for web apps (cloud) (web UI)
Supabase Auth
Auth from the Supabase stack (cloud or local) (port 54321, web UI)
Better Auth
Framework-agnostic auth library for TypeScript apps
FusionAuth
Self-hostable CIAM / auth server (OAuth2/OIDC/SAML) (port 9011, web UI)
Ory Kratos
Headless identity & user management (self-hosted) (port 4433)
Ory Hydra
OAuth2 & OpenID Connect provider (self-hosted) (port 4444)
Zitadel
Self-hostable identity platform (OIDC/SAML, multi-tenant) (port 8080, web UI)
Authelia
SSO + 2FA auth gateway for your services (port 9091, web UI)
NAVER Login (네이버 로그인)
Sign in with Naver (OAuth 2.0) (web UI)
Kakao Login (카카오 로그인)
Sign in with Kakao (OAuth 2.0) (web UI)
6.31Decentralized Identity
Hyperledger Aries (ACA-Py)
Issue/verify Verifiable Credentials over DIDComm (self-hosted)
walt.id
Open-source SSI stack — issuer, verifier & identity wallet (web UI)
Veramo
JS/TS framework for DIDs & Verifiable Credentials
6.32Version Control
Git
built-in tool
Gitea
Lightweight self-hosted Git service (port 3000, web UI, brew: gitea)
Forgejo
Community fork of Gitea (Codeberg) (port 3000, web UI, brew: forgejo)
GitHub
Live account, repository, PR/review/issue, notification, API quota and recent release-asset download dashboard (cloud) (web UI)
Cursor Origin (Early Beta)
Cursor's Git forge — live repositories and pull requests (cloud, Early Beta) (web UI)
GitLab
Full DevOps platform — GitLab.com, Dedicated or self-managed (Linux, Docker, Kubernetes, GET) (port 443, web UI)
GitHub Enterprise
Self-hosted / managed GitHub for organizations (port 443, web UI)
Bitbucket
Atlassian Git hosting — Cloud or self-hosted (Data Center) (port 443, web UI)
Codeberg
Free community Git hosting (Forgejo, nonprofit) (port 443, web UI)
SourceHut
Lightweight, email-driven Git suite (cloud or self-hosted) (port 443, web UI)
AWS CodeCommit
Managed private Git repositories on AWS (API) (port 443, web UI)
Pierre
Fast code review & collaboration on Git (cloud) (web UI)
Graphite
Stacked-PR code review on top of GitHub (cloud + CLI) (web UI)
Phabricator / Phorge
Self-hosted code review & repos (now maintained as Phorge) (port 443, web UI)
SourceForge
Open-source project hosting & downloads (cloud) (port 443, web UI)
Google Code (archive)
Defunct — read-only archive for migrating old projects (web UI)
Subversion (SVN)
Apache Subversion — centralized version control (self-hosted) (port 3690)
Jujutsu (jj)
Git-compatible VCS with a simpler, more powerful model
gh-dash
Terminal dashboard for GitHub PRs & issues (gh extension)
code.storage
Code hosting / storage platform (cloud) — see code.storage (web UI)
Entire
Code collaboration platform (cloud) — see entire.io (web UI)
Gitea Actions Runner
CI runner for Gitea/Forgejo Actions
Webhook (git-deploy)
Push-to-deploy via webhooks (port 9000, brew: webhook)
6.33CI/CD
Woodpecker CI
Lightweight container-native CI (port 8000, web UI)
GitHub Actions
CI/CD in GitHub — live build & deploy monitor (cloud) (web UI)
CodeRabbit
AI code reviewer for pull requests (cloud + CLI/IDE) (web UI)
GitLab CI/CD
Pipelines built into GitLab — GitLab.com, Dedicated or self-managed (web UI)
CircleCI
Cloud CI/CD with fast parallelism (cloud) (web UI)
Depot
Remote build acceleration — Docker & GitHub Actions runners (cloud) (web UI)
Bitbucket Pipelines
CI/CD built into Bitbucket Cloud (cloud) (web UI)
Travis CI
Hosted CI for open source & teams (cloud) (web UI)
Buildkite
Hybrid CI — your agents, their dashboard (cloud) (web UI)
Jenkins
The classic self-hosted automation server (port 8080, web UI, brew: jenkins-lts)
Drone CI
Container-native CI server (self-hosted) (port 80, web UI)
Concourse
Pipeline-centric CI with reproducible builds (self-hosted) (port 8080, web UI)
TeamCity
JetBrains CI/CD server (self-hosted or cloud) (port 8111, web UI)
GoCD
Open-source CI/CD with value-stream pipelines (self-hosted) (port 8153, web UI)
Argo CD
GitOps continuous delivery for Kubernetes (self-hosted) (port 8080, web UI)
Flux CD
GitOps toolkit for Kubernetes (self-hosted)
Spinnaker
Multi-cloud continuous delivery (self-hosted) (port 9000, web UI)
Azure DevOps
Azure Pipelines, Repos, Boards & Artifacts (cloud) (web UI)
Buildkite Agent
Self-hosted runner for Buildkite pipelines
Jenkins Agent
Build node that connects to a Jenkins controller
GitHub Actions Runner
Self-hosted runner for GitHub Actions
Blacksmith
Managed high-performance CI runners for GitHub Actions (cloud) (web UI)
GitLab Runner
Self-hosted runner for GitLab CI/CD (works on this Mac) (brew: gitlab-runner)
6.34Build & Compile
Build & Render Farm
built-in tool
Workbox
Google's service-worker libraries for PWAs
Vite PWA Plugin
Zero-config PWA for Vite (vite-plugin-pwa)
Next.js PWA
PWA/service-worker support for Next.js
Nuxt PWA Module
PWA module for Nuxt (@vite-pwa/nuxt)
Xcode Build / Xcode Cloud
Apple's build system (xcodebuild) + Xcode Cloud CI
Bazel
Fast, scalable multi-language build system (Google)
Tuist
Xcode project generation & build optimization
Buck2
Meta's fast, hermetic multi-language build system
CMake
Cross-platform build-system generator (C/C++)
Ninja
Small, very fast build backend
Meson
Fast, user-friendly build system (Ninja backend)
Gradle
JVM/Android build automation with build cache
Apache Maven
Java build & dependency management
distcc
Distribute C/C++ compiles across machines
Icecream (icecc)
Distributed compiler with central scheduler
Bazel Remote Execution
Run Bazel actions on a remote farm (RBE)
BuildGrid
Open-source Remote Execution API server (self-hosted)
Incredibuild
Commercial distributed build acceleration
ccache
Compiler cache for C/C++ rebuilds
sccache
Shared compiler cache (C/C++/Rust) with cloud backends
Bazel Remote Cache
Shared HTTP/gRPC cache for Bazel (self-hosted) (port 8080)
Tuist Cache
Binary caching for Xcode builds (Tuist)
6.35Internal Developer Portals
Backstage
Spotify's open-source developer portal framework (self-hosted) (port 7007, web UI)
Port
No-code internal developer portal (cloud) (web UI)
Cortex
Service catalogue with scorecards & maturity (cloud) (web UI)
OpsLevel
Service maturity & ownership portal (cloud) (web UI)
Humanitec
Platform orchestrator for internal platforms (cloud + agent) (web UI)
Score
Open workload spec for portable deployments (CLI)
Roadie
Managed (hosted) Backstage (cloud) (web UI)
Kakao Developers (카카오 디벨로퍼스)
Kakao app keys for Login, Maps, Local & messaging APIs (web UI)
6.36Infrastructure as Code
Terraform
HashiCorp's declarative infrastructure as code (CLI)
OpenTofu
Open-source, community fork of Terraform (CLI)
Pulumi
Infrastructure as code in real languages (CLI / cloud)
Ansible
Agentless configuration management & automation (CLI)
Chef
Policy-as-code configuration management (Progress Chef)
Puppet
Declarative configuration management at scale (Perforce)
Salt
Event-driven remote execution & config management (CLI)
Packer
Build identical machine images for any platform (CLI)
AWS CloudFormation
Native AWS infrastructure as code (templates / CLI) (web UI)
AWS CDK
Define AWS infra in code, synth to CloudFormation (CLI)
AttuneOps
Reusable multi-step SSH and WinRM automation blueprints (web UI)
6.37API Testing & Synthetic Monitoring
Postman
API platform — build, test, mock & monitor (app / cloud) (web UI)
Bruno
Open-source, offline, git-friendly API client (app / CLI)
Insomnia
API client for REST, GraphQL & gRPC (app)
Grafana k6
Developer-centric load & performance testing (CLI)
Artillery
Load testing & smoke tests for APIs and services (CLI)
Checkly
Monitoring-as-code — API checks & browser synthetics (cloud + CLI) (web UI)
Changedetection.io
Website change detection & notifications (port 5000, web UI)
6.38Proxies & Load Balancers
Reverse Proxy
built-in tool
Debug Share
built-in tool
ProxySQL
High-performance MySQL proxy (port 6033, brew: proxysql)
MySQL Router
Routing for MySQL InnoDB Cluster (port 6446)
Nginx Proxy Manager
Web-UI reverse proxy (Docker) (port 81, web UI)
keepalived
VRRP virtual IP failover + LVS load balancing
6.39Proxy Gateways
HAProxy
TCP/HTTP load balancer & proxy (brew: haproxy)
Traefik
Container-native reverse proxy & LB (port 8080, web UI, brew: traefik)
Squid
Caching forward proxy (HTTP/HTTPS/FTP) (port 3128, brew: squid)
3proxy
Tiny multi-protocol proxy (HTTP/SOCKS) (port 3128)
Tinyproxy
Lightweight HTTP/HTTPS forward proxy (port 8888, brew: tinyproxy)
6.40CDN & Edge
Cloudflare
built-in tool
Akamai
Enterprise CDN, security & edge compute (cloud) (web UI)
Fastly
Real-time CDN with VCL/Compute edge (cloud) (web UI)
Imperva
WAF-first CDN & DDoS protection (cloud) (web UI)
Amazon CloudFront
AWS CDN tied to S3/EC2 origins (cloud) (web UI)
Google Cloud CDN
GCP CDN on global load balancing (cloud) (web UI)
Azure Front Door
Microsoft's global entry point: CDN + WAF + LB (cloud) (web UI)
NHN Cloud CDN
NHN Cloud content delivery network (web UI)
NAVER Cloud Global Edge (CDN)
NAVER Cloud CDN / edge (successor to CDN+) (web UI)
CDNetworks (씨디네트웍스)
Korean-founded global CDN & web security (web UI)
6.41Hosting
here.now
built-in tool
Hostinger
built-in tool
DigitalOcean
built-in tool
Vultr
built-in tool
Linode (Akamai)
built-in tool
Hetzner
built-in tool
Sakura Cloud
built-in tool
ConoHa
built-in tool
Cloudways
built-in tool
SiteGround
built-in tool
WP Engine
built-in tool
Kinsta
built-in tool
Pressable
built-in tool
Contabo
built-in tool
Cloud Servers
built-in tool
Abacus SuperComputer
Always-on Ubuntu VM from Abacus.AI (2 vCPU / 8 GB, SSH + root) (web UI)
Google Cloud CLI
Install gcloud, sign in and work with Google Cloud from here
Azure CLI
Install az, sign in and work with Microsoft Azure from here
Fly.io
Deploy apps as microVMs on Fly's global edge (cloud CLI)
Coolify
Self-hosted PaaS (Heroku/Netlify/Vercel alt.) (port 8000, web UI)
Dokploy
Open-source deployment platform (PaaS) (port 3000, web UI)
CapRover
Self-hosted PaaS on Docker Swarm (port 3000, web UI)
Kamal
Deploy containers to your own servers over SSH (37signals)
Dokku
Minimal self-hosted PaaS (git push deploy)
V2 Cloud
Managed cloud desktops, servers and isolated AI workspaces (web UI)
Zenlayer
Edge cloud compute and global networking (web UI)
cPanel & WHM
Commercial web-hosting server control panel (port 2087, web UI)
NAVER Cloud Platform (네이버 클라우드)
Naver's public cloud — servers, Global DNS, Object Storage (Korea) (web UI)
NHN Cloud (ex-TOAST)
NHN's public cloud (ex-TOAST) — OpenStack IaaS + app services (web UI)
KT Cloud (kt cloud, ex-ucloud biz)
KT's public cloud (ex-ucloud biz) (web UI)
KakaoCloud (카카오클라우드, ex-KIC)
Kakao Enterprise public cloud — VMs, Kubernetes, DNS, storage (web UI)
Samsung Cloud Platform (SCP, Samsung SDS)
Samsung SDS enterprise & public-sector cloud (web UI)
Gabia Cloud (가비아 클라우드 / g클라우드)
Gabia's IaaS cloud (CSAP public-sector zone) (web UI)
LG U+ Cloud (U+ 클라우드)
LG U+ enterprise IDC & cloud (web UI)
iwinv (아이윈브, Smileserv)
Budget Korean cloud, VPS & web hosting with an HMAC-signed API (web UI)
Cafe24 Hosting (카페24 호스팅)
Mass-market Korean web, WordPress & domain hosting (web UI)
Dothome (닷홈)
Free and low-cost Korean shared web hosting (web UI)
6.42AWS Control
S3 Buckets
built-in tool
EC2 Instances
built-in tool
Lightsail
built-in tool
CloudFront/CDN
built-in tool
Route 53 DNS
built-in tool
RDS Databases
built-in tool
DynamoDB
built-in tool
CloudWatch Logs
built-in tool
SNS Topics
built-in tool
Billing Alerts
built-in tool
IAM Key Warnings
built-in tool
6.43AI / LLMs
AI Administrator
built-in tool
AI Models
built-in tool
Spend & Billing
built-in tool
Ollama
built-in tool
LM Studio
built-in tool
Skill Manager
built-in tool
Open WebUI
built-in tool
RAG Manager
built-in tool
Firecrawl
built-in tool
Crawl4AI
built-in tool
Apify
built-in tool
Playwright
built-in tool
Browserbase
built-in tool
Vane (Perplexica)
Self-hosted AI answer engine — the open-source Perplexity alternative (port 3000, web UI)
MLX
Apple-silicon model serving — the MLX-LM CLI server, the oMLX inference server, or Inco AI's Splash engine (port 8080)
TurboFieldfare
Gemma 4 26B-A4B on Apple Silicon in ~2 GB of RAM (port 8080)
Cerebras
Very fast hosted inference on wafer-scale hardware (web UI)
MLX (Apple)
Apple's ML framework for Apple Silicon
vLLM
High-throughput LLM inference server (OpenAI-compatible) (port 8000)
llama.cpp Server
Lightweight local LLM server (OpenAI-compatible) (port 8080)
Mojo (Modular MAX)
Modular's AI language + MAX inference server (OpenAI-compatible) (port 8000)
LocalAI
Self-hosted, OpenAI-compatible inference server (port 8080, web UI)
Jan
Private, offline AI desktop app (OpenAI-compatible) (port 1337)
PrivateGPT
Ask questions of your documents, 100% offline (RAG) (port 8001, web UI)
IBM watsonx.ai
IBM's enterprise AI platform — Granite + third-party models (cloud/on-prem) (web UI)
Mem0
Memory layer for AI agents — self-hosted (Docker) or cloud (port 8888, web UI)
CrewAI (open source)
Multi-agent crews — Python framework + CLI (local)
Open Computer
Virtual OS for AI agents — QEMU VM per agent (Mintplex Labs) (web UI)
LiteLLM
Proxy/gateway for 100+ LLM APIs (OpenAI-compatible) (port 4000, web UI)
Tetrate Agent Router
Hosted LLM router — one OpenAI-compatible API (cloud) (web UI)
AnythingLLM
All-in-one self-hosted RAG chat app (port 3001, web UI)
Hugging Face
Model hub, Inference API & local tooling (web UI)
ChatLLM Teams
Abacus.AI's multi-model team chat & agent workspace (cloud) (web UI)
LibreChat
Self-hosted multi-provider AI chat UI (port 3080, web UI)
NotebookLM
Google's source-grounded research notebook (cloud) (web UI)
Open Notebook
Open-source, self-hosted NotebookLM alternative (port 8502, web UI)
OpenCode
Open-source AI coding agent (terminal)
Dyad
Local open-source AI app builder (desktop)
Papago Translation (NAVER Cloud)
Naver Papago machine translation (NAVER Cloud) (web UI)
CLOVA OCR (NAVER Cloud)
NAVER CLOVA OCR — general, template & document OCR (web UI)
FriendliAI (프렌들리AI)
Seoul-founded LLM inference cloud (hosts LG EXAONE) (web UI)
CLOVA Studio (HyperCLOVA X)
Naver HyperCLOVA X LLM API (OpenAI-compatible) (web UI)
Upstage (Solar)
Korean Solar LLMs + document AI (OpenAI-compatible) (web UI)
6.44AI Clusters
Exo Cluster
built-in tool
GPU Fabric
built-in tool
Petals
BitTorrent-style distributed inference of big models
Distributed Llama
Tensor-parallel Llama across cheap nodes (root + workers) (port 9998)
Slurm
HPC workload manager / job scheduler (port 6817)
Ray
Distributed compute for AI (training/serving/tuning) (port 8265, web UI)
Apache Spark
Distributed big-data processing engine (port 8080, web UI)
Dask
Parallel computing for Python (scales pandas/NumPy) (port 8787, web UI)
JupyterLab
Interactive notebooks for data & AI (Python) (port 8888, web UI)
Run:ai
GPU orchestration & fractional GPUs on Kubernetes (NVIDIA) (web UI)
NVIDIA Base Command Manager
GPU/HPC cluster provisioning & management (ex-Bright) (port 8081, web UI)
6.45Agent Platforms
Agent Operations
built-in tool
Runtimes
built-in tool
Activity
built-in tool
Routing & Integrations
built-in tool
Work
built-in tool
OpenClaw
built-in tool
Hermes
built-in tool
Odysseus
built-in tool
DeerFlow
built-in tool
CoWork OS
built-in tool
OpenAI Codex Runtime
built-in tool
Amp
built-in tool
DeepSeek Harness (Alpha)
built-in tool
Claude Code CLI
built-in tool
Gemini CLI
built-in tool
Factory Droid
built-in tool
OpenCode
built-in tool
Goose
built-in tool
LangGraph Platform
built-in tool
CrewAI Enterprise
built-in tool
Microsoft AutoGen
built-in tool
Genspark
built-in tool
Agent Zero
built-in tool
NVIDIA NemoClaw
built-in tool
OpenHuman
built-in tool
Apple Intelligence
built-in tool
Sandcastle
Orchestrate sandboxed coding agents (isolated containers)
SuperAGI
Open-source autonomous-agent framework (self-hosted) (port 3000, web UI)
OpenHands (OpenDevin)
Open-source autonomous AI software engineer (self-hosted) (port 3000, web UI)
E2B
Secure cloud sandboxes for AI agents (spin up / clone / kill) (web UI)
Browserbase
Headless browser infrastructure for AI agents (cloud sessions) (web UI)
Manus
Autonomous general AI agent (cloud API) (web UI)
Devin
Cognition's AI software engineer (cloud API) (web UI)
GitHub Copilot
AI pair programmer — live org seat/usage monitor (web UI)
OpenAI Operator
OpenAI's browser-using agent (cloud) (web UI)
Hyperagent
Airtable's fleet-of-agents platform (cloud) (web UI)
Herdr
Agent multiplexer — tmux for AI coding agents (terminal)
ChatGPT Work Sites
OpenAI's work agent + published Sites/web apps (alpha) (web UI)
Lakebed
Agent-native runtime for full-stack TypeScript capsules (alpha) (port 3000, web UI)
6.46FinOps & Cloud Cost
Infracost
Cost estimates for Terraform, in CI (self-hosted CLI / cloud)
OpenCost
CNCF open-source Kubernetes cost monitoring (self-hosted) (port 9003, web UI)
Kubecost
Kubernetes cost visibility & optimization (self-hosted / cloud) (port 9090, web UI)
CloudZero
Cloud cost intelligence & unit economics (cloud) (web UI)
Vantage
Multi-cloud cost reporting & optimization (cloud) (web UI)
Finout
No-agent FinOps platform with unified cost (cloud) (web UI)
CloudHealth
Multi-cloud cost & governance (VMware/Broadcom, cloud) (web UI)
AWS Cost Explorer
Native AWS cost analysis & forecasting (API) (web UI)
GCP Cloud Billing
Google Cloud billing reports, budgets & BigQuery export (API) (web UI)
Azure Cost Management
Native Azure (and AWS) cost analysis & budgets (API) (web UI)
6.47Containers
Containers
built-in tool
Kubernetes Clusters
built-in tool
Docker
built-in tool
OrbStack
built-in tool
Vagrant
built-in tool
Kamal
built-in tool
Proxmox VE
Open-source virtualization — KVM VMs + LXC containers (port 8006, web UI)
VMware vSphere
Enterprise virtualization — ESXi hypervisor + vCenter (port 443, web UI)
Microsoft Hyper-V
Windows Server hypervisor (Type-1)
XCP-ng
Open-source Xen hypervisor (XenServer alternative) (port 443, web UI)
Nutanix
HCI platform — AHV hypervisor + Prism management (port 9440, web UI)
Scale Computing HyperCore
SC//HyperCore HCI appliance (HC3) — REST API on :443 (port 443, web UI)
VergeOS
Verge.io — integrated virtualization, storage and networking (port 443, web UI)
HPE Morpheus
Hybrid-cloud management & orchestration (REST API) (port 443, web UI)
Platform9
Managed Kubernetes / private cloud (SaaS control plane) (port 443, web UI)
Azure Local
Azure Stack HCI successor — monitored via Azure ARM, no local API (web UI)
OpenShift Virtualization
Run VMs alongside containers on OpenShift (KubeVirt) (web UI)
OpenStack
Open-source private-cloud IaaS platform (web UI)
VMware vMotion
Live-migrate running VMs between ESXi hosts
Proxmox VE Live Migration
Live-migrate KVM VMs across Proxmox cluster nodes
Hyper-V Live Migration
Move running Hyper-V VMs between hosts with no downtime
Watchtower
Auto-update running Docker containers
Podman
Daemonless, Docker-compatible containers
Apple Container
Apple's native `container` tool — Linux containers in per-container VMs
Lima
Linux virtual machines (container machines) on macOS
Colima
Container runtimes on macOS via Lima (Docker/containerd/k8s)
OrbStack
Fast Docker & Linux machines for macOS
Kubernetes
The container orchestrator (kubectl) (port 6443)
Helm
The Kubernetes package manager (charts)
Dev Containers (VS Code)
Reproducible dev environments in a container
K3s
Lightweight certified Kubernetes (self-hosted) (port 6443)
minikube
Local single-node Kubernetes for development
kind
Kubernetes IN Docker — disposable clusters
k3d
k3s in Docker — lightweight multi-node clusters
k0s
Zero-friction single-binary Kubernetes (port 6443)
MicroK8s
Canonical's low-ops Kubernetes (snap) (port 16443)
RKE2
Rancher's security-focused Kubernetes (Gov-grade) (port 6443)
Talos Linux
API-managed immutable OS purpose-built for Kubernetes (port 50000)
kubeadm
The official cluster bootstrapper (vanilla K8s) (port 6443)
OpenShift / OKD
Red Hat's enterprise Kubernetes platform (port 6443, web UI)
Rancher Desktop
Desktop Kubernetes + container runtime for Mac
nerdctl
Docker-compatible CLI for containerd
Docker Swarm
Docker-native clustering (docker swarm / stack) (port 2377)
Portainer
Web UI for Docker & Kubernetes (self-hosted) (port 9443, web UI)
Rancher
Multi-cluster Kubernetes management (self-hosted) (port 443, web UI)
Nomad
HashiCorp workload orchestrator (self-hosted) (port 4646, web UI)
6.48Service Mesh (Kubernetes)
Istio
Envoy-based service mesh for Kubernetes
Linkerd
Lightweight, fast CNCF service mesh
Consul Connect
HashiCorp Consul service mesh & discovery (port 8500, web UI)
Cilium Service Mesh
eBPF-based, sidecarless service mesh & CNI
Kuma
Universal service mesh (Kong, CNCF) (port 5681, web UI)
Gloo Mesh
Istio-based multi-cluster service mesh (solo.io)
NGINX Service Mesh
Lightweight service mesh on NGINX/NGINX Plus (F5)
AWS App Mesh
Managed Envoy service mesh on AWS (ECS/EKS/EC2)
Kong Gateway
Cloud-native API gateway on Envoy/Nginx (self-hosted / cloud) (port 8001)
Tyk
Open-source API gateway & management (self-hosted / cloud) (port 8080, web UI)
Apache APISIX
Dynamic, high-performance API gateway (self-hosted) (port 9180, web UI)
Envoy Gateway
Gateway API management plane for Envoy Proxy (self-hosted)
6.49Apps & CMS
WordPress
built-in tool
WordPress Sites
built-in tool
RevenueCat
built-in tool
Drupal
built-in tool
Joomla
built-in tool
Statamic
built-in tool
Grav
built-in tool
Kirby
built-in tool
Craft CMS
built-in tool
ClassicPress
WordPress fork without the block editor (web UI)
Backdrop CMS
Drupal 7 fork for small-to-medium sites (web UI)
Bedrock (Roots)
Composer-managed WordPress boilerplate
Trellis (Roots)
Ansible server provisioning for WordPress
WordPress Playground
WordPress running in WebAssembly — no server needed (port 9400, web UI)
Ghost
Modern publishing & newsletter platform (port 2368, web UI)
Webflow
Visual website builder & hosted CMS (cloud) (web UI)
Framer
Design-first website builder with hosted CMS (cloud) (web UI)
STUDIO
Japanese no-code website builder with hosting and CMS (cloud) (web UI)
imweb (아임웹)
Korean website & online-store builder with hosting (cloud) (web UI)
Instatic
Self-hosted visual CMS with an AI page editor (open-source) (port 3001, web UI)
inblog
Korean SEO-focused blog builder with a REST API (web UI)
Oopy (우피)
Turns Notion pages into hosted websites (Korea) (web UI)
6.50Knowledge & Memory
Knowledge Folder
built-in tool
Knowledge Notes
built-in tool
GraphRAG
Graph-based retrieval-augmented generation (Microsoft)
Graphify
Turn a codebase into a queryable knowledge graph (AI coding-assistant skill)
Khoj
Self-hosted AI second brain — chat with your notes, docs and the web (port 42110, web UI)
Logseq
Local-first outliner & PKM (Markdown/Org)
Notion
All-in-one workspace — docs, wikis, databases (cloud)
DokuWiki
Flat-file PHP wiki — the closest macOS Server “Wiki” replacement (port 80, web UI)
MediaWiki
The wiki engine behind Wikipedia (PHP/MySQL) (port 80, web UI)
Wiki.js
Modern self-hosted wiki (Node.js) (port 3000, web UI)
BookStack
Self-hosted docs/wiki organised as books (PHP) (port 6875, web UI)
Outline
Self-hosted team knowledge base (real-time) (port 3000, web UI)
Trilium Notes
Hierarchical personal notes (self-hosted server + app) (port 8080, web UI)
Zotero
Reference & research manager (app + API)
Readwise
Highlights sync & read-later (cloud API)
Memos
Lightweight, privacy-first notes/memo hub (port 5230, web UI)
Linkding
Minimal, fast self-hosted bookmark manager (port 9090, web UI)
Karakeep
AI bookmark/read-it-later (formerly Hoarder) (port 3000, web UI)
Wallabag
Self-hosted read-it-later (Pocket alternative) (port 80, web UI)
Docmost
Open-source collaborative wiki & docs (Confluence/Notion alt.) (port 3000, web UI)
AFFiNE
Docs + whiteboard + database (Notion/Miro alt.) (port 3010, web UI)
AppFlowy
Open-source Notion alternative (docs/boards/DBs) (web UI)
Joplin Server
Sync server for Joplin notes (E2EE) (port 22300, web UI)
Shiori
Simple self-hosted bookmark manager (Go) (port 8080, web UI)
SurfSense
Self-hosted NotebookLM/Perplexity alternative (port 3000, web UI)
6.51E-Commerce
Store Health
built-in tool
Sales Channels
built-in tool
Square
built-in tool
WooCommerce
WordPress e-commerce plugin (PHP) (web UI)
Adobe Commerce (Magento)
Enterprise PHP commerce platform (port 80, web UI)
Shopware
Symfony-based commerce platform (PHP) (port 80, web UI)
Saleor
GraphQL-first headless commerce (Python) (port 8000, web UI)
Medusa
Node.js headless commerce engine (port 9000, web UI)
Vendure
Node.js/GraphQL headless commerce (port 3000, web UI)
Stripe
Payments & checkout API (cloud) (web UI)
PayPal
Online payments & checkout (cloud) (web UI)
DOKU
Indonesian payment gateway (cards, e-wallets, VA, QRIS) (web UI)
Mollie
European payments (iDEAL, cards, SEPA) (cloud) (web UI)
Paddle
Merchant-of-record for software sales (cloud) (web UI)
Lemon Squeezy
Digital-products storefront & MoR (legacy — moving to Stripe) (web UI)
Braintree
PayPal's card/wallet gateway (GraphQL API) (cloud) (web UI)
PAY.JP
Japanese card payments API (cloud) (web UI)
KOMOJU
Japanese multi-method payments (konbini, cards, wallets) (web UI)
Adyen
Enterprise payments platform (webhook/report-driven) (web UI)
Wise
Multi-currency business account & payouts (cloud) (web UI)
GMO Payment Gateway
Japan's largest PSP (per-order API; no list API) (web UI)
Shopify
Hosted commerce platform & channel (cloud) (web UI)
Amazon
Amazon marketplace selling channel (cloud) (web UI)
FedEx
Shipping rates, labels & tracking (cloud) (web UI)
UPS
Shipping rates, labels & tracking (cloud) (web UI)
DHL
Shipping rates, labels & tracking (cloud) (web UI)
eBay Seller Hub
eBay marketplace selling channel (cloud) (web UI)
Etsy
Handmade/vintage & POD marketplace (cloud) (web UI)
Walmart Marketplace
Walmart marketplace selling channel (cloud) (web UI)
Sixshop (식스샵)
Korean online-store builder (no public API) (web UI)
NHN Commerce godomall (고도몰)
NHN Commerce hosted e-commerce builder (고도몰) (web UI)
KakaoPay (카카오페이)
KakaoPay online & subscription payments (web UI)
Naver Pay (네이버페이)
Naver Pay merchant payments & settlement API (web UI)
NicePay (나이스페이)
NicePay PG — cards, transfers, virtual accounts (web UI)
NHN KCP (NHN한국사이버결제)
NHN KCP payment gateway (web UI)
KG Inicis (KG이니시스)
KG Inicis payment gateway (INIAPI) (web UI)
Bootpay (부트페이)
Bootpay PG aggregator + commerce API (web UI)
Payple (페이플)
Payple card & bank billing PG (web UI)
Hecto Financial (헥토파이낸셜, ex-Settlebank)
Hecto Financial (ex-Settlebank) payment gateway (web UI)
Steppay (스텝페이)
Korean subscription & recurring-billing platform (web UI)
PayApp (페이앱)
PayApp small-merchant payment links (web UI)
KICC EasyPay (한국정보통신 이지페이)
KICC EasyPay online payment gateway (web UI)
Danal (다날)
Danal payments (cards, mobile billing) (web UI)
Smartro (스마트로)
Smartro payment gateway (no public key API) (web UI)
KG Mobilians (KG모빌리언스)
KG Mobilians mobile-phone billing (web UI)
Cafe24 (카페24)
Korea's largest shop builder — Admin API for orders & products (web UI)
Naver SmartStore Commerce API (네이버 커머스API)
Naver SmartStore seller API — orders, products, claims (web UI)
Coupang Wing (쿠팡 윙)
Coupang marketplace seller API — orders & shipments (web UI)
11st Open API (11번가)
11st marketplace seller API (web UI)
Gmarket / Auction ESM+ (지마켓·옥션)
Gmarket & Auction seller API (ESM Trading API) (web UI)
MakeShop (메이크샵)
Korean shop builder with an Open API (web UI)
NHN Commerce shopby (샵바이)
NHN Commerce headless commerce (shopby) (web UI)
Lotte ON (롯데온)
Lotte ON marketplace seller API (web UI)
SSG.COM Open API (SSG닷컴)
SSG.COM marketplace seller API (web UI)
Kakao Shopping / KakaoTalk Store (카카오톡 스토어)
KakaoTalk Store seller centre (web UI)
Toss Shopping (토스쇼핑)
Toss Shopping seller API (web UI)
Zigzag / Kakao Style (지그재그)
Zigzag / Kakao Style seller GraphQL API (web UI)
Toss Payments (토스페이먼츠)
Toss Payments — Korean payment gateway (web UI)
PortOne (포트원, ex-Iamport)
PortOne — one API across Korean payment gateways (web UI)
6.52QR & Link Management
QR & Link Health
built-in tool
BL.INK
Enterprise link management (cloud) (web UI)
Bitly
Links, QR codes, analytics (cloud) (web UI)
Rebrandly
Branded short domains (cloud) (web UI)
Short.io
Teams, custom domains (cloud) (web UI)
Dub.co
Modern marketing links & QR (open-source core) (web UI)
QR Code Generator PRO
Dynamic QR codes (cloud) (web UI)
Beaconstac (Uniqode)
QR analytics & management (cloud) (web UI)
Flowcode
Marketing QR dashboards (cloud) (web UI)
Scanova
QR campaign management (cloud) (web UI)
QR TIGER
Dynamic QR management (cloud) (web UI)
GS1 Digital Link
Own your product-QR resolver (self-host or SaaS) (web UI)
6.53Student Information Systems
PowerSchool SIS
K-12 student information system (cloud) (web UI)
PowerSchool Attendance
Attendance tracking within PowerSchool (cloud) (web UI)
Blackbaud SIS
Independent/private-school SIS (cloud) (web UI)
FACTS SIS
Private/faith-based school SIS (cloud) (web UI)
Infinite Campus
K-12 SIS & state reporting (cloud) (web UI)
Veracross
All-in-one independent-school platform (cloud) (web UI)
openSIS
Open-source student information system (self-hosted) (web UI)
RosarioSIS
Open-source SIS (PHP/PostgreSQL, self-hosted) (web UI)
SchoolPass
Attendance, dismissal & safety (cloud) (web UI)
RFID/NFC Attendance
Tap-card attendance with RFID/NFC readers (self-hosted) (web UI)
6.54Learning Management
Canvas LMS
Instructure Canvas — courses, assignments, grading (web UI)
Blackboard Learn
Higher-ed LMS (cloud) (web UI)
Schoology
K-12 LMS by PowerSchool (cloud) (web UI)
Google Classroom
Google's classroom & assignment tool (cloud) (web UI)
Moodle
Open-source LMS (self-hosted, PHP) (web UI)
Open edX
MOOC-scale open LMS (self-hosted) (web UI)
ILIAS
Open-source LMS (self-hosted, PHP) (web UI)
BigBlueButton
Open-source virtual classroom (self-hosted) (web UI)
Zoom
Video meetings & online classes (app)
Google Meet
Google's video meetings (cloud) (web UI)
ExamSoft
Secure exam delivery & analytics (cloud) (web UI)
ProctorU
Online exam proctoring (cloud) (web UI)
TAO Testing
Open-source assessment platform (self-hosted) (web UI)
6.55Digital Library
EBSCOhost
Research databases & e-journals (cloud) (web UI)
ProQuest
Dissertations, e-journals & databases (cloud) (web UI)
JSTOR
Academic journals & books archive (cloud) (web UI)
Koha
Open-source integrated library system (self-hosted) (web UI)
DSpace
Open-source institutional repository (self-hosted) (web UI)
Greenstone
Open-source digital-library builder (self-hosted) (web UI)
6.56Campus & School Ops
aSc Timetables
School timetable generator (desktop)
Mimosa Scheduling
Timetabling / scheduling software (desktop)
FET Timetabling
Open-source automatic timetabling (self-hosted/desktop)
Slate Admissions
Admissions & enrolment CRM (cloud) (web UI)
OpenApply
Admissions & enrolment for K-12 (cloud) (web UI)
Finalsite Enrolment
School websites & enrolment (cloud) (web UI)
FACTS Tuition Management
Tuition billing & payment plans (cloud) (web UI)
Flywire Education Payments
Cross-border tuition payments (cloud) (web UI)
StarRez
Student housing & residential life (cloud) (web UI)
eRezLife
Residence life & housing management (cloud) (web UI)
Ellucian Banner
Higher-ed ERP / student system (cloud or self-hosted) (web UI)
Workday Student
Cloud ERP for higher education (cloud) (web UI)
ParentSquare
School-home communication (cloud) (web UI)
Remind
Teacher-family messaging (cloud) (web UI)
Asset Panda
Asset & device tracking (cloud) (web UI)
Incident IQ
K-12 IT helpdesk & asset management (cloud) (web UI)
ClassLink
Education SSO & rostering (cloud) (web UI)
6.57Sourcing & Suppliers
AliExpress
Global supplier marketplace for drop-shipping (cloud) (web UI)
Alibaba
B2B wholesale sourcing (cloud) (web UI)
CJdropshipping
Sourcing + warehousing + fulfilment (cloud) (web UI)
Spocket
US/EU-supplier drop-ship marketplace (cloud) (web UI)
Zendrop
Drop-ship sourcing & auto-fulfillment (cloud) (web UI)
SaleHoo
Vetted supplier directory (cloud) (web UI)
DSers
AliExpress order automation (official) (cloud) (web UI)
6.58Print-on-Demand
Printful
Print-on-demand & fulfilment (cloud) (web UI)
Printify
Print-on-demand marketplace (cloud) (web UI)
Gelato
Global/local print-on-demand network (cloud) (web UI)
Gooten
Print-on-demand fulfilment platform (cloud) (web UI)
6.59Shipping & Fulfilment
Drop-shipping Health
built-in tool
AfterShip
Universal shipment tracking across 1,000+ carriers (cloud) (web UI)
ShipStation
Multi-channel order & label management (cloud) (web UI)
Easyship
Global shipping rates, duties & labels (cloud) (web UI)
Shippo
Multi-carrier rates, labels & tracking API (cloud) (web UI)
Pirate Ship
Free, discounted USPS/UPS labels (cloud) (web UI)
6.60Inventory Sync
SkuVault
Warehouse & inventory management (cloud) (web UI)
Cin7
Inventory & order management (cloud) (web UI)
Zoho Inventory
Multi-channel inventory & order management (cloud) (web UI)
Katana Cloud Inventory
Manufacturing & inventory control (cloud) (web UI)
zaiko Robot
Japanese multi-store stock sync — Rakuten, Yahoo!, Amazon, carts, POS (cloud) (web UI)
Sabangnet (사방넷)
Korean multi-marketplace order & product hub (web UI)
PlayAuto (플레이오토)
Korean multi-marketplace order management (OMS) (web UI)
6.61Profit Analytics
Triple Whale
E-commerce profit & attribution dashboard (cloud) (web UI)
Lifetimely
P&L and LTV analytics for Shopify (cloud) (web UI)
BeProfit
Profit & expense tracking dashboard (cloud) (web UI)
6.62Mesh Networking
RNS Nodes
built-in tool
Reticulum
Cryptography-based mesh networking stack (any medium)
Nomad Network (NomadNet)
Resilient comms over Reticulum (pages, files, messaging)
Sideband
LXMF messaging app over Reticulum (desktop/mobile)
Meshtastic
LoRa mesh radio for text & location (off-grid)
RNode LoRa Devices
Open LoRa radio interface for Reticulum (flash & configure)
Yggdrasil
Self-arranging encrypted IPv6 mesh (experimental)
cjdns / Hyperboria
Encrypted IPv6 mesh routing (source-routed)
B.A.T.M.A.N.-adv
Layer-2 community Wi-Fi mesh routing (Linux)
OLSR (olsrd)
Optimized Link State Routing for MANETs
Babel (babeld)
Robust distance-vector mesh routing protocol
Briar
P2P messaging over Tor, Wi-Fi & Bluetooth
AREDN
Amateur-radio high-speed mesh (ham licence)
qaul
Internet-independent P2P mesh messaging app
Serval Mesh
Off-grid mesh comms (Serval Project)
Ratspeak
Private, account-free mesh messaging (Reticulum-based)
6.63Anonymity Networks
Tor
Onion-routing anonymity network (client/relay/bridge/onion service) (port 9050, brew: tor)
I2P
Garlic-routed network — router, tunnels, eepsites, messaging (port 7070, web UI)
6.64Secrets & Vaults
Vault Links
built-in tool
Bitwarden
Password manager — cloud or official self-host (web UI)
Vaultwarden
Self-hosted Bitwarden-compatible server (Docker) (port 8222, web UI)
HashiCorp Vault
Secrets, PKI & dynamic credentials (self-hosted) (port 8200, web UI)
Step CA
Your own private certificate authority (self-hosted) (port 8443)
Let's Encrypt
Free TLS certificates via ACME — health & renewal monitor
Infisical
Open-source secrets for app configs (cloud or self-hosted) (port 8080, web UI)
Doppler
Hosted secrets & config manager (cloud) (web UI)
1Password SCIM Bridge
Automated 1Password user provisioning (self-hosted bridge) (port 3002)
1Password
Password manager with developer secrets API (cloud) (web UI)
Keeper Security
Password manager & Secrets Manager (cloud API) (web UI)
6.65Monitoring
Unified Health History
HTTP/HTTPS, TCP, Ping, SIP, local processes, remote helpers and service APIs feed the same one-minute health board, response-time history, rolling uptime and transition log
Network-aware checks
Scope local targets to a saved network identity (router MAC, subnet and Wi-Fi identity); they pause outside that network without requesting the Mac's or phone's location
Private mobile widgets
Overview, multi-server, multi-service and single-service focus widgets, plus Lock Screen overview widgets; only sanitized health names and states enter the App Group
Cloud API monitoring
GitHub account/repository/Actions health, API quota and release-asset downloads; Anthropic and GitHub Copilot account monitoring; broad SaaS API metrics and thresholds
Disk Health
built-in tool
Service Guardian
built-in tool
Grafana
Dashboards for any data source (self-hosted) (port 3000, web UI, brew: grafana)
Prometheus
Time-series metrics & alerting (self-hosted) (port 9090, web UI, brew: prometheus)
Alertmanager
Route and deduplicate Prometheus alerts (self-hosted) (port 9093, web UI)
Node Exporter
Unix host metrics for Prometheus (self-hosted) (port 9100, web UI, brew: node_exporter)
Windows Exporter
Windows host metrics for Prometheus (remote) (port 9182, web UI)
Zabbix
Enterprise monitoring — agents, SNMP, triggers (self-hosted) (port 8080, web UI)
Nagios Core
The classic check-based monitor (self-hosted) (port 80, web UI)
Checkmk
Auto-discovering IT monitoring (self-hosted) (port 8080, web UI)
Paessler PRTG
Network, server and infrastructure monitoring (Windows or hosted) (port 443, web UI)
Healthchecks.io
Cron & heartbeat monitoring (cloud or self-hosted) (web UI)
Datadog
Hosted metrics, logs, traces and synthetics (SaaS) (web UI)
AppSignal
Application errors, performance, uptime and deploys (SaaS) (web UI)
New Relic
Hosted APM, infrastructure and logs (SaaS) (web UI)
Sentry
Error tracking and performance monitoring (web UI)
Honeycomb
Observability for high-cardinality events and traces (web UI)
Dynatrace
Enterprise observability and AIOps platform (web UI)
Matomo
Full-featured self-hosted web analytics (port 80, web UI)
Plausible
Lightweight, privacy-first analytics (port 8000, web UI)
Umami
Simple, privacy-focused analytics (Node) (port 3000, web UI)
GoAccess
Real-time access-log analyser (CLI/HTML)
Netdata
Real-time system metrics dashboard (port 19999, web UI, brew: netdata)
Uptime Kuma
Self-hosted uptime monitor (port 3001, web UI)
Scrutiny
S.M.A.R.T. drive health dashboard (port 8080, web UI)
Glances
Cross-platform system monitor (web/API) (port 61208, web UI)
Beszel
Lightweight server monitoring hub + agents (port 8090, web UI)
Speedtest Tracker
Scheduled internet speed tests + history (port 80, web UI)
UptimeRobot
Cloud uptime/SSL monitoring with status pages (web UI)
NUT (Network UPS Tools)
UPS monitoring server (upsd) for many devices (port 3493)
Homepage
Self-hosted services dashboard (gethomepage.dev) (port 3000, web UI)
PeaNUT
Modern web dashboard for NUT UPS servers (port 8080, web UI)
NinjaOne
Endpoint monitoring, patching and automation (SaaS RMM) (web UI)
Atera
RMM, patching, ticketing and automation (SaaS) (web UI)
Site24x7
Infrastructure, application, network and experience monitoring (SaaS) (web UI)
ManageEngine Applications Manager
Application, server, VM and capacity monitoring (port 8443, web UI)
ManageEngine OpManager Nexus
Unified network, server and IT operations management (port 8060, web UI)
Pulseway
Mobile-first RMM, patching and endpoint automation (web UI)
FirstWave NMIS
Open network fault, performance and configuration monitoring (port 8042, web UI)
N-able N-central
Unified endpoint management, RMM and patching (port 443, web UI)
Netreo
Full-stack infrastructure and business-service observability (port 443, web UI)
Pandora FMS
Infrastructure, application, log and synthetic monitoring (port 80, web UI)
Atatus
APM, logs, infrastructure and real-user monitoring (SaaS) (web UI)
Infraon IMS
Unified infrastructure, network and configuration monitoring (port 443, web UI)
Naverisk RMM & PSA
Cross-platform RMM, service desk and PSA (web UI)
Server Density
Hosted server, service and container monitoring (web UI)
WhaTap (와탭)
Korean SaaS APM, server, Kubernetes & DB monitoring (web UI)
JENNIFER APM (제니퍼, JenniferSoft)
Self-hosted Korean APM (JenniferSoft) (web UI)
Scouter (open-source APM)
Korean-origin open-source APM (web UI)
6.66Security Tools
Security
built-in tool
Security Audit
built-in tool
EDR Fleet
built-in tool
Fail2ban
Bans IPs after suspicious activity (intrusion prevention) (brew: fail2ban)
Suricata
High-performance IDS/IPS engine (self-hosted)
Snort
The classic network IDS (self-hosted)
CrowdSec
Behavioural detection + IP blocking (crowd-sourced) (port 8080, brew: crowdsec)
OSSEC
Host-based IDS: log, file-integrity & rootkit monitoring
LuLu
Free open-source outbound firewall (macOS app)
Burp Suite
Web app security testing — intercepting proxy & scanner (macOS app) (port 8080)
Vibe Proxy
AI-assisted web security testing & intercepting proxy
Yakit
Open-source web security testing platform & MITM (macOS app)
Strix
AI-assisted penetration testing from the local CLI
Fuzzilli
Coverage-guided JavaScript engine fuzzer (reviewed local binaries)
OWASP ZAP
Open-source web-app security scanner (DAST) — spider, active scan, proxy (port 8080)
Intego NetBarrier
Intego's two-way Mac firewall (NetBarrier X9 / Intego ONE)
Little Snitch
Commercial network monitor & firewall (macOS app)
Murus
GUI front-end for the macOS pf firewall (app)
Radio Silence
Lightweight macOS outbound firewall (app)
Vallum
Per-app outbound firewall & throttle (app)
Hands Off!
Per-app network + disk access control (app)
NetBarrier
Two-way macOS firewall (Intego, app)
ClamAV
Open-source antivirus engine (self-hosted) (brew: clamav)
YARA
Pattern-matching engine for file classification (self-hosted)
AbuseIPDB
Crowd-sourced IP reputation / blocklist (cloud API) (web UI)
Phishing Catcher
Catch phishing domains from CT logs (self-hosted)
URLhaus
Malicious-URL feed & lookup API (cloud · abuse.ch) (web UI)
OpenPhish
Live phishing-URL feed (cloud) (web UI)
MISP
Threat-intelligence sharing platform (self-hosted) (port 443, web UI)
CAPE Sandbox
Sandbox w/ config extraction (self-hosted) (port 8000, web UI)
Cuckoo Sandbox
Automated sample-analysis sandbox (self-hosted) (port 8090, web UI)
YARA-X
YARA rewritten in Rust — faster CLI scanner (self-hosted)
Volatility 3
Memory-forensics framework (self-hosted)
capa
Detect capabilities in executables (self-hosted)
oletools
Analyse malicious Office docs / OLE (self-hosted)
radare2
Reverse-engineering framework / disassembler (self-hosted)
binwalk
Firmware / embedded-file carving & analysis (self-hosted)
Nuclei
Template-based vulnerability scanner (self-hosted CLI)
OpenCTI
Cyber threat-intelligence platform (self-hosted) (port 8080, web UI)
TheHive
Security incident-response platform (self-hosted) (port 9000, web UI)
Cortex
Observable analysers & responders engine (self-hosted) (port 9001, web UI)
IntelOwl
OSINT / threat-intel analysis platform (self-hosted) (port 443, web UI)
AlienVault OTX
Open Threat Exchange IOC feed (cloud) (web UI)
GRR Rapid Response
Remote live-forensics / IR framework (self-hosted) (port 8000, web UI)
OpenEDR
Open-source endpoint detection & response (self-hosted) (web UI)
Santa
macOS binary allowlisting / blocklisting (self-hosted)
KnockKnock
Reveal persistently installed Mac software (self-hosted)
BlockBlock
Monitor & block persistence in real time (self-hosted)
ThreatLocker
Zero Trust app allowlisting & endpoint control (agent + cloud portal)
OPSWAT MetaDefender
Multi-engine file scanning & file CDR (self-hosted / API) (port 8008, web UI)
osquery
Query your endpoint like a database (agent)
Fleet
Self-hosted osquery fleet manager (web UI + API) (port 8080, web UI)
Velociraptor
Endpoint visibility & DFIR hunting (self-hosted) (port 8889, web UI)
Zeek
Network security monitor / traffic analysis (self-hosted)
OpenVAS / Greenbone
Vulnerability scanning (self-hosted) (port 9392, web UI)
CrowdStrike Falcon
Cloud-native EDR/XDR (macOS sensor + API)
SentinelOne
Autonomous EDR/XDR (macOS agent + API)
Microsoft Defender for Endpoint
Microsoft EDR for macOS (agent + Graph API)
Sophos Central
Endpoint protection / MDR (macOS agent + API)
Bitdefender GravityZone
Endpoint protection / EDR (macOS agent + API)
Huntress
Managed EDR/MDR for SMB & MSPs (agent + API)
Jamf Protect
Mac-native endpoint security (agent + API)
LimaCharlie
API-first SecOps cloud / EDR (agent + API)
Airlock Digital
Application allowlisting & execution control (agent + API)
Admin By Request
Endpoint privilege management / just-in-time admin (agent + API)
CyberArk EPM
Endpoint Privilege Manager (agent + API)
BeyondTrust EPM
Endpoint Privilege Management for Mac (agent + API)
AutoElevate (CyberFOX)
MSP privilege elevation & local-admin control (agent + API)
VirusTotal
Multi-engine file/URL reputation (API)
Cloudmersive
Virus-scan & content-protection API (cloud / self-host)
Hybrid Analysis
Sandbox (Falcon Sandbox) — API
Kolide
Device trust & posture (osquery-based agent + API)
AdGuard
Ad/tracker blocker app + AdGuard DNS & VPN (commercial)
CyberChef
The cyber-Swiss-army-knife for data (web UI)
Cloudbric WAF+ (Penta Security, 펜타시큐리티)
Penta Security cloud WAF, DDoS & bot protection (web UI)
6.67SIEM & Security Data
SIEM Overview
built-in tool
Wazuh
Open-source SIEM & XDR (self-hosted) (port 443, web UI)
Security Onion
NSM + SIEM + IDS Linux distro (self-hosted) (port 443, web UI)
Graylog
Centralized log management (self-hosted) (port 9000, web UI)
Splunk
Enterprise log search, SIEM and observability (port 8000, web UI)
Elastic Security
Elastic SIEM, XDR and cloud-security analytics (hybrid) (port 5601, web UI)
Microsoft Sentinel
Cloud-native SIEM and SOAR on Microsoft Azure (web UI)
Google Security Operations
Google SecOps SIEM and SOAR (formerly Chronicle) (web UI)
IBM QRadar SIEM
Enterprise SIEM for events, flows and offenses (hybrid) (port 443, web UI)
Sumo Logic Cloud SIEM
Cloud SIEM, detections and security analytics (web UI)
Rapid7 InsightIDR
Cloud SIEM with user behavior and incident detection (web UI)
LogRhythm SIEM
Enterprise SIEM, analytics and response platform (port 443, web UI)
Devo
Cloud-native security analytics and SIEM (web UI)
FortiSIEM
Fortinet SIEM for infrastructure and security events (port 443, web UI)
OpenText ArcSight
Enterprise SIEM and security operations platform (port 8443, web UI)
VirtualMetric DataStream
Security-data pipeline for collection, normalization and routing (port 443, web UI)
Cribl Stream
Vendor-neutral telemetry pipeline and security-data router (port 9000, web UI)
Logstash
ELK's ingest & transform pipeline (self-hosted) (port 9600, brew: logstash-full)
Vector
High-performance logs, metrics and security-data pipeline (port 8686, brew: vector)
Fluent Bit
Lightweight telemetry collector and forwarder (port 2020, brew: fluent-bit)
Fluentd
Plugin-rich log collector and routing layer (port 24224)
NXLog
Cross-platform Windows and Linux log collection
syslog-ng
Flexible syslog collection, filtering and forwarding (brew: syslog-ng)
OpenTelemetry Collector
Vendor-neutral telemetry collector and processor
6.68Secrets Scanning & Supply Chain Security
Snyk
Developer security — code, deps, containers & IaC (cloud + CLI) (web UI)
Dependabot
Automated dependency-update & security PRs (GitHub) (web UI)
Renovate
Automated dependency updates, any platform (self-hosted / app)
Trivy
All-in-one vuln, secret, IaC & SBOM scanner (self-hosted CLI)
Grype
Fast vulnerability scanner for images & SBOMs (self-hosted CLI)
Syft
Generate SBOMs from images & filesystems (self-hosted CLI)
Cosign
Sign & verify container images and artifacts (self-hosted CLI)
Sigstore
Keyless signing ecosystem — Cosign, Fulcio, Rekor (self-hosted / public)
Chainguard
Minimal, low/zero-CVE container images (cloud + chainctl) (web UI)
Socket
Proactive dependency / supply-chain attack detection (cloud + CLI) (web UI)
GitGuardian
Secrets detection across code & CI (cloud + ggshield CLI) (web UI)
Gitleaks
Open-source secrets scanner for git repos (self-hosted CLI)
TruffleHog
Find & VERIFY leaked secrets across code, git history, cloud & CI (self-hosted CLI)
OSV-Scanner
Dependency vulnerability scanner backed by OSV.dev (self-hosted CLI)
Lynis
Host security auditing & hardening for Unix/Linux/macOS (self-hosted CLI)
Semgrep Supply Chain
SAST + reachable-dependency (SCA) scanning (self-hosted CLI / cloud)
6.69Policy, Compliance & Governance
Vanta
Automated compliance — SOC 2, ISO 27001, HIPAA, GDPR (cloud) (web UI)
Drata
Continuous compliance automation & audit readiness (cloud) (web UI)
Secureframe
Compliance automation across 40+ frameworks (cloud) (web UI)
Sprinto
Compliance automation for fast-moving teams (cloud) (web UI)
Thoropass
Compliance + audit in one (formerly Laika, cloud) (web UI)
Hyperproof
Compliance operations & evidence management (cloud) (web UI)
OneTrust
Privacy, GRC & data governance suite (cloud) (web UI)
LogicGate Risk Cloud
No-code GRC & risk workflow platform (cloud) (web UI)
AuditBoard
Connected risk, audit & compliance platform (cloud) (web UI)
Eramba
Open-source GRC platform (self-hosted) (port 443, web UI)
SimpleRisk
Open-source risk management (self-hosted) (port 443, web UI)
OpenGRC
Open-source governance, risk & compliance (self-hosted) (port 8080, web UI)
OpenControl
Compliance-as-code documentation toolkit (self-hosted CLI)
Open Policy Agent (OPA)
General-purpose policy engine, Rego (self-hosted CLI) (port 8181)
Conftest
Test config files against OPA/Rego policies (CLI)
OPA Gatekeeper
OPA policy admission controller for Kubernetes (self-hosted)
Kyverno
Kubernetes-native policy engine, no new language (self-hosted)
HashiCorp Sentinel
Policy as code for the HashiCorp stack (CLI)
Checkov
Static policy scanning for IaC (self-hosted CLI)
Prowler
Open-source multi-cloud security & compliance scanner (CLI)
Scout Suite
Multi-cloud security-auditing tool (CLI)
CloudQuery
Cloud asset inventory as SQL (self-hosted CLI)
Steampipe
Query cloud APIs with SQL + compliance mods (CLI)
Cloud Custodian
Rules engine for cloud governance & remediation (CLI)
AWS Config
Native AWS resource configuration & compliance (API) (web UI)
AWS Security Hub
Aggregated AWS security findings & standards (API) (web UI)
OpenFGA
Open-source fine-grained authorization (Zanzibar-style, self-hosted) (port 8080)
Authzed / SpiceDB
Zanzibar-style permissions database (self-hosted / cloud) (port 50051)
Permify
Open-source fine-grained authorization service (self-hosted) (port 3476)
Aserto / Topaz
Authorization built on OPA + Zanzibar (self-hosted / cloud) (port 8383)
immudb
Immutable, cryptographically-verifiable database / audit log (self-hosted) (port 3322)
Securiti
Data privacy, security & governance platform (cloud) (web UI)
BigID
Data discovery, privacy & governance at scale (cloud) (web UI)
DataGrail
Privacy platform — DSR & data mapping automation (cloud) (web UI)
Transcend
Privacy & data-rights automation, incl. AI governance (cloud) (web UI)
MineOS
Data-governance & privacy operations platform (cloud) (web UI)
Osano
Consent management & privacy compliance (cloud) (web UI)
OpenMetadata
Open-source metadata, catalogue & lineage platform (self-hosted) (port 8585, web UI)
DataHub
Open-source metadata platform & data catalogue (self-hosted) (port 9002, web UI)
Amundsen
Open-source data discovery & metadata engine (self-hosted) (port 5000, web UI)
Apache Atlas
Metadata & governance for the Hadoop/data ecosystem (self-hosted) (port 21000, web UI)
Microsoft Purview
Data governance, compliance, retention & eDiscovery (cloud) (web UI)
Google Vault
Retention, legal hold & eDiscovery for Google Workspace (cloud) (web UI)
Smarsh
Communications capture, archiving & supervision (cloud) (web UI)
Logikcull
Self-service eDiscovery & legal hold (cloud, Reveal) (web UI)
Everlaw
Cloud litigation & eDiscovery platform (cloud) (web UI)
6.70MDM & Device Management
Apple Business Manager
built-in tool
Kandji
Apple MDM + endpoint security & compliance (agent + API)
Mosyle
Apple MDM + endpoint security (agent + API)
Jamf Pro
Apple MDM — device management & compliance (agent + API)
Microsoft Intune
Cross-platform MDM/MAM in Microsoft 365 (cloud + Graph API)
Addigy
Cloud Apple MDM for MSPs & IT teams (agent + API)
SimpleMDM
Straightforward Apple MDM with a clean REST API (cloud)
JumpCloud
Cloud directory + cross-platform MDM & SSO (agent + API)
Fleet (Apple MDM)
Open-source MDM + osquery for cross-platform device ops (self-hosted) (port 8080, web UI)
Munki
Open-source macOS software deployment (self-hosted)
MicroMDM
Open-source, self-hosted Apple MDM server — the Profile Manager replacement (port 8080)
NanoMDM
Minimal, scalable open-source Apple MDM server (port 9000)
AutoPkg
Automated macOS software packaging (CLI)
baramundi Management Suite
Modular UEM, patching, inventory and endpoint automation (port 443, web UI)
6.71Logging & Observability
Kibana
ELK's search & dashboard UI (self-hosted) (port 5601, web UI, brew: kibana-full)
Loki
Grafana's log store — like Prometheus, for logs (self-hosted) (port 3100, brew: loki)
Elastic Cloud
Hosted Elasticsearch, Kibana and observability (web UI)
Dozzle
Live Docker container log viewer (port 8080, web UI)
6.72Incident Management & On-Call
PagerDuty
On-call scheduling & incident response (cloud API) (web UI)
Opsgenie
Alerting & on-call by Atlassian (cloud API) (web UI)
incident.io
Slack-native incident response & on-call (cloud API) (web UI)
Rootly
Slack-native incident management (cloud API) (web UI)
6.73Status Pages
Statuspage
Atlassian's hosted status pages (cloud API) (web UI)
Better Stack
Uptime monitoring, incidents & status pages (cloud API) (web UI)
Gatus
Automated health checks + status page (port 8080, web UI)
6.74Mining
Mining Rigs
built-in tool
Braiins OS+
Open ASIC firmware (Antminer) — autotuning + API (port 4028, web UI)
Hive OS
Cloud mining fleet OS & dashboard (web UI)
Awesome Miner
Windows-based mining management for large fleets (web UI)
LuxOS / Foreman
ASIC firmware (LuxOS) & Foreman fleet management (port 4028, web UI)
6.75ML Workbench
MLflow
ML experiment tracking & model registry (self-hosted) (port 5000, web UI)
pandas
The standard Python DataFrame library
Polars
Fast multicore DataFrame library (Rust core)
scikit-learn
Classic machine-learning library for Python
XGBoost
Gradient-boosted decision trees (high-accuracy tabular ML)
PyTorch
Deep-learning framework (GPU/MPS accelerated)
Kaggle
Datasets, notebooks & competitions (CLI)
Kubeflow
ML toolkit & pipelines on Kubernetes (web UI)
ClearML
Experiment tracking, orchestration & MLOps (self-hostable) (port 8080, web UI)
Weights & Biases (Local)
Self-hosted experiment tracking & dashboards (port 8080, web UI)
DVC Studio
Data/model version control + experiment dashboard (web UI)
6.76AI Governance & Safety
Langfuse
Open-source LLM observability & tracing (self-hosted / cloud) (port 3000, web UI)
Helicone
LLM observability & gateway — logs, costs, caching (self-hosted / cloud) (web UI)
Arize Phoenix
Open-source LLM tracing & evaluation (self-hosted) (port 6006, web UI)
OpenLLMetry
OpenTelemetry instrumentation for LLM apps (SDK)
Promptfoo
Prompt/RAG testing, evals & LLM red-teaming (self-hosted CLI)
Ragas
Evaluation framework for RAG pipelines (Python)
Guardrails AI
Input/output validation guardrails for LLMs (Python)
NeMo Guardrails
Programmable guardrails for LLM conversations (NVIDIA, Python)
Lakera Guard
Real-time GenAI security — prompt-injection firewall (cloud / self-host) (web UI)
Protect AI
AI/ML security — model scanning & ML supply chain (cloud + OSS) (web UI)
garak
LLM vulnerability scanner / red-teaming (self-hosted CLI)
TruLens
Evaluation & tracking for LLM apps — feedback functions (Python) (web UI)
WhyLabs
AI observability & data/LLM monitoring (cloud + whylogs) (web UI)
Fiddler AI
AI observability & model monitoring with explainability (cloud) (web UI)
Credo AI
AI governance, risk & compliance platform (cloud) (web UI)
Holistic AI
AI governance, risk & audit platform (cloud + OSS) (web UI)
6.77GPU Infrastructure
NVIDIA DCGM
NVIDIA Data Center GPU Manager — telemetry & health (port 5555)
DCGM Exporter
Export NVIDIA GPU metrics to Prometheus (port 9400)
Backend.AI (Lablup, 래블업)
Lablup's GPU / AI-infrastructure orchestration platform (web UI)
6.78Speech AI
Handy
Free local push-to-talk speech-to-text (Whisper)
Wispr Flow
AI voice dictation that types into any app
Voicebox
Open-source local voice-to-text for macOS
Scriberr
Self-hosted audio transcription app (WhisperX) with speaker diarization (port 8080, web UI)
Whisper
OpenAI's speech-to-text model (Python)
Whisper.cpp
Fast C/C++ Whisper inference (CPU/Metal)
Faster Whisper
CTranslate2 Whisper — up to 4× faster
Coqui TTS
Open-source text-to-speech & voice cloning (port 5002, web UI)
Piper TTS
Fast, local neural text-to-speech
VibeVoice
Microsoft's long-form, multi-speaker TTS
Kokoro TTS
Small, fast, high-quality open-weight TTS (82M)
Meetily
Local AI meeting notetaker (desktop app)
CLOVA Speech (NAVER Cloud)
NAVER CLOVA long-form speech recognition (web UI)
CLOVA Voice / CLOVA Dubbing TTS (NAVER Cloud)
NAVER CLOVA Voice premium Korean/English TTS (web UI)
6.79Image & Video AI
ComfyUI
Node-graph Stable Diffusion / video workflows (port 8188, web UI)
AUTOMATIC1111 WebUI
Stable Diffusion web UI (txt2img/img2img) (port 7860, web UI)
Tesseract OCR
Open-source OCR engine — images/PDF scans to text (CLI)
InvokeAI
Pro Stable Diffusion studio (Unified Canvas) (port 9090, web UI)
Fooocus
Simplest Stable Diffusion — type a prompt, get art (port 7865, web UI)
AutoShorts
Local video → 9:16 short-clip finder (desktop)
Opus Clip
AI viral-clip generator (cloud SaaS + API) (web UI)
Twelve Labs (트웰브랩스)
Korean-founded video-understanding AI (Marengo, Pegasus) (web UI)
6.80MCP
MCP Servers
built-in tool
Fleet Skill
built-in tool
MCP Server
built-in tool
6.81Self-Hosted Apps
PhotoPrism
AI-powered photo library (port 2342, web UI)
ResourceSpace
Open-source digital asset management (self-hosted) (port 80, web UI)
Pimcore
Open-source PIM / DAM / CMS platform (self-hosted) (port 80, web UI)
Paperless-ngx
Scan, OCR & archive documents (port 8000, web UI)
Paperless-AI
AI auto-tagging & chat for Paperless-ngx (port 3000, web UI)
FreshRSS
Self-hosted RSS reader (PHP) (port 80, web UI)
Miniflux
Minimalist RSS reader (Go) (port 8080, web UI, brew: miniflux)
Mixpost
Self-hosted social media scheduling (port 80, web UI)
Mealie
Self-hosted recipe manager & meal planner (port 9000, web UI)
Tandoor
Recipe manager & meal planner (port 8080, web UI)
Grocy
Groceries & household ERP (port 80, web UI)
Dashy
Feature-rich homelab dashboard (port 4000, web UI)
Heimdall
Simple application start page (port 80, web UI)
Homer
Static, fast services dashboard (YAML) (port 8080, web UI)
6.82Web3
The Graph
built-in tool
Foundry
Fast Solidity toolkit (forge/cast/anvil) (port 8545)
Anvil
Local Ethereum testnet (Foundry) (port 8545)
Solidity
Smart-contract compiler (solc)
Hardhat
Ethereum dev environment (Node.js) (port 8545)
Ganache
Personal Ethereum blockchain (dev) (port 8545)
IPFS
Distributed file system (Kubo) (port 5001, web UI, brew: ipfs)
Ceramic
Decentralized data network (ComposeDB) (port 7007)
6.83Crypto
Bitcoin Core
Full Bitcoin node (bitcoind) (port 8332)
Ethereum Node
go-ethereum (geth) execution node (port 8545)
BTCPay Server
Self-hosted Bitcoin payment processor (port 23000, web UI)
XMRig
Monero (RandomX) CPU/GPU miner
6.84RPC Services
Alchemy
built-in tool
Infura
built-in tool
6.85Tools
Apache Tika
Content detection & text/metadata extraction (port 9998)
Gotenberg
Stateless API to convert documents to PDF (port 3000)
LanguageTool
Self-hosted grammar & style checker (offline Grammarly alternative) (port 8081)
LibreTranslate
Self-hosted machine-translation API (offline DeepL/Google Translate alternative) (port 5000, web UI)
SearXNG
Private metasearch engine (self-hosted) (port 8080, web UI)
Stirling-PDF
Self-hosted PDF toolbox (merge/split/OCR…) (port 8080, web UI)
IT-Tools
Handy developer/IT utilities in one page (port 80, web UI)
Excalidraw
Virtual hand-drawn whiteboard (port 80, web UI)
Penpot
Open-source design & prototyping (Figma alt.) (port 9001, web UI)
Whoogle Search
Private, ad-free Google results proxy (port 5000, web UI)
HTML Anything
Agentic HTML editor driven by your local AI CLI (port 3000, web UI)
Harper
Offline, Rust grammar checker (LanguageTool alt.)
Public Data Portal (공공데이터포털, data.go.kr)
Korean government open-data portal (one service key) (web UI)
NTS Business Registration Status API (국세청 사업자등록 상태조회)
NTS check: is a Korean business number active or closed (web UI)
6.86Home Automation
Apple Home
built-in tool
Power Control
built-in tool
Nori / SuperNori AI
AI family hub display + proactive family AI agent (cloud + device) (web UI)
Home Assistant
Open-source home automation hub (port 8123, web UI)
Music Assistant
Self-hosted music library + multi-room player server (Home Assistant companion) (port 8095, web UI)
Eve
Eve Energy smart plugs and Eve sensors (HomeKit / Matter) via Home Assistant
Node-RED
Flow-based automation wiring (port 1880, web UI, brew: node-red)
Homebridge
Bridge non-HomeKit devices to Apple Home (port 8581, web UI)
ESPHome
Firmware for ESP IoT devices (Home Assistant) (port 6052, web UI)
openHAB
Vendor-neutral automation platform (port 8080, web UI)
6.87Cameras
motionEye
Web frontend for motion (DIY NVR) (port 8765, web UI)
RTSP Cameras
Any RTSP-streaming IP camera (port 554)
ONVIF Cameras
Standards-based camera discovery & control (port 80, web UI)
go2rtc
Camera stream restreamer (RTSP/WebRTC/HLS) (port 1984, web UI)
Tapo Cameras
TP-Link Tapo Wi-Fi cameras (RTSP/ONVIF) (port 554)
Frigate
NVR with real-time object detection (port 5000, web UI)
Scrypted
High-performance camera hub (port 11080, web UI)
Shinobi
Open-source video management (CCTV) (port 8080, web UI)
ZoneMinder
Full-featured CCTV / video surveillance (port 8095, web UI)
Agent DVR
Cross-platform NVR with AI detection (self-hosted) (port 8090, web UI)
Blue Iris
Powerful Windows NVR (run on a Windows host) (port 81, web UI)
6.88IoT
SwitchBot
built-in tool
Zigbee
built-in tool
Zigbee2MQTT
Bridge Zigbee devices to MQTT (no vendor hub) (port 8080, web UI)
SMLIGHT SLZB (SLZB-OS)
Network Zigbee/Thread coordinators — SLZB-06, SLZB-07, SLZB-MR series, Ultima (port 80, web UI)
Z-Wave (Z-Wave JS UI)
Control Z-Wave devices via MQTT + web UI (port 8091, web UI)
Matter
Commission & control Matter devices (port 5580)
Thread
Low-power mesh for Matter devices
OpenThread Border Router
Run your own Thread border router (self-hosted)
Bluetooth (BLE)
BLE sensors & trackers
Bluetooth Beacons
iBeacon / Eddystone proximity beacons (BLE)
TP-Link Kasa & Tapo
Kasa & Tapo plugs/bulbs/strips + the kasa CLI
Amazon Alexa
Voice assistant ecosystem
Google Home
Google Home / Nest ecosystem
HomePod
Apple smart speaker & Home hub (AirPlay 2 / Matter / Thread)
Apple HomeView
Apple smart-home display & Thread border router (AirPlay 2)
6.89MQTT Brokers
MQTT Message Bus
built-in tool
Sidekiq
Background jobs for Ruby (threaded workers on Redis)
Mosquitto
Eclipse MQTT broker (port 1883, brew: mosquitto)
EMQX
Scalable, clustered MQTT broker (port 1883, web UI, brew: emqx)
HiveMQ
Enterprise MQTT broker (Java) (port 1883, web UI)
6.90POS Systems
Toast POS
Restaurant POS platform (cloud) (web UI)
Lightspeed
Retail & hospitality POS (cloud) (web UI)
Floranext
All-in-one florist software — POS, e-commerce & orders (cloud) (web UI)
Toss Place (토스플레이스)
Toss Place POS — store orders & payments API (web UI)
6.91CRM & Loyalty
Salesforce
The enterprise CRM (cloud) (web UI)
HubSpot
CRM + marketing/sales hubs (cloud) (web UI)
Zoho CRM
Affordable full-suite CRM (cloud) (web UI)
SuiteCRM
Self-hosted open-source CRM (PHP) (port 80, web UI)
EspoCRM
Lightweight self-hosted CRM (PHP) (port 80, web UI)
Odoo CRM
CRM inside the open-source ERP (Python) (port 8069, web UI)
Pipedrive
Sales-pipeline-first CRM (cloud) (web UI)
Square Loyalty
Points & rewards on Square (cloud) (web UI)
Loyalzoo
Digital loyalty for independents (cloud) (web UI)
Thanx
Guest engagement & loyalty for restaurants (web UI)
Punchh
Enterprise restaurant loyalty (PAR, cloud) (web UI)
VoucherVault
Self-hosted vouchers, gift cards & loyalty (port 8000, web UI)
6.92Helpdesk & Ticketing
Zammad
Open-source helpdesk & ticketing (self-hosted) (port 8080, web UI)
osTicket
Classic open-source support ticket system (PHP/MySQL) (port 80, web UI)
Freshdesk
Cloud helpdesk / customer support (API) (web UI)
Channel Talk (채널톡 / Channel.io)
Korean customer chat, CRM & helpdesk (web UI)
Happytalk (해피톡)
Korean chat-based customer support (web UI)
6.93IT Assets
GLPI
Asset inventory & ITSM with CMDB (PHP/MySQL) (port 80, web UI)
Snipe-IT
Open-source IT asset management (PHP/MySQL) (port 80, web UI)
AssetTiger
Cloud asset tracking with barcodes (API) (web UI)
Lansweeper
IT asset discovery & inventory (cloud/on-prem API) (web UI)
Workwize
Global IT equipment lifecycle & logistics (cloud API) (web UI)
6.94Project Management
Jira
Issue tracking & agile project management (cloud API) (web UI)
Linear
Fast issue tracking for product teams (cloud, GraphQL API) (web UI)
Taiga
Open-source agile project management (self-hosted) (port 80, web UI)
OpenProject
Open-source PM with Gantt & roadmaps (self-hosted) (port 80, web UI)
Plane
Open-source Jira alternative (self-hosted) (port 80, web UI)
Leantime
Open-source PM for non-project managers (PHP/MySQL) (port 80, web UI)
Basecamp
Project management & team collaboration (cloud API) (web UI)
monday.com
Work OS — boards, projects & workflows (cloud API) (web UI)
Vikunja
Self-hosted to-do / task manager (port 3456, web UI)
Planka
Realtime kanban board (Trello alternative) (port 1337, web UI)
Kimai
Self-hosted time tracking (port 8001, web UI)
Rize
AI time tracker (cloud, GraphQL API) — backend uptime, plan & AI-credit cost (web UI)
Focalboard
Self-hosted project boards (Trello/Notion alt.) (port 8000, web UI)
6.95PMS
Channel Manager
built-in tool
SuiteOp
built-in tool
SympleHost
AI property management for short-term rentals (cloud) (web UI)
Breezeway
Property operations & services for STRs (cloud) (web UI)
Operto
Smart-lock & guest-experience automation for STRs (cloud) (web UI)
PriceLabs
Dynamic pricing & revenue management for STRs (cloud) (web UI)
Beyond
Dynamic pricing, insights & direct booking for STRs (cloud) (web UI)
Wheelhouse
Dynamic pricing & market analytics for STRs (cloud) (web UI)
AirDNA
Short-term-rental market data & analytics (cloud) (web UI)
RankBreeze
Airbnb listing optimization & rank tracking (cloud) (web UI)
Truvi
Direct-booking website builder for STRs (cloud) (web UI)
Hostaway
Short-term-rental PMS & channel manager (cloud API) (web UI)
Guesty
STR property-management platform (Open API) (web UI)
OwnerRez
Vacation-rental PMS for owners & small managers (v2 API) (web UI)
Lodgify
Direct-booking website builder + channel manager (web UI)
Uplisting
STR PMS / channel manager (invite-only API) (web UI)
Streamline VRS
Enterprise vacation-rental management (partner-gated API) (web UI)
RemoteLock
Cloud access control for smart locks (REST API) (web UI)
Minut
Noise & occupancy sensors for rentals (Enterprise API) (web UI)
NoiseAware
Noise monitoring for rentals (partner-provisioned API) (web UI)
Hospitable
Guest-messaging automation & STR management (cloud) (web UI)
Hostfully
STR property-management platform & digital guidebooks (cloud) (web UI)
Boostly
SMS marketing & direct-booking growth for STRs (cloud) (web UI)
Cloudbeds
Hotel PMS, booking engine & channel manager (cloud) (web UI)
Beds24
PMS & channel manager with a deep API (cloud) (web UI)
AirHost
Japanese STR PMS & channel manager (cloud) (web UI)
HappyGuest
Digital guest directory & concierge for hospitality (cloud) (web UI)
Alexa Smart Properties
Managed Alexa for hotels & senior living (cloud) (web UI)
QloApps
Open-source hotel reservation system (port 80, web UI)
HotelDruid
Hotel/B&B management & bookings (port 80, web UI)
OpenHotel PMS
Open property-management system (web UI)
BookStack
Wiki/docs for SOPs & property info (port 80, web UI)
Easy!Appointments
Open-source appointment scheduling (port 80, web UI)
Turno
Vacation-rental cleaning & turnover scheduling (cloud) (web UI)
Rentals (Laravel)
Custom Laravel vacation-rental app (port 80, web UI)
6.96Meeting Rooms & Desk Booking
Skedda
Desk & space booking (cloud API) (web UI)
Robin
Room scheduling & desk booking (cloud API) (web UI)
Envoy Workplace
Workplace, visitor & desk management (cloud API) (web UI)
YAROOMS
Meeting room & desk booking (cloud API) (web UI)
OfficeSpace
Space management & desk/room booking (cloud API) (web UI)
Condeco (Eptura)
Enterprise room & desk booking (cloud API) (web UI)
DeskFlex
Desk & room reservation system (cloud API) (web UI)
Matrix Booking
Room, desk & resource booking (cloud API) (web UI)
6.97Coworking & Shared Spaces
OfficeRnD
Coworking & flex-space management (cloud API) (web UI)
Nexudus
Coworking management & white-label platform (cloud API) (web UI)
Optix
App-first coworking management (cloud API) (web UI)
Cobot
Coworking space management (cloud API) (web UI)
6.98Facilities & Maintenance
IBM Maximo
Enterprise asset management & CMMS (cloud/self-managed API) (web UI)
FMX
Facilities management & maintenance (cloud API) (web UI)
Archibus
IWMS — facilities, real estate & assets (API) (web UI)
6.99Accounting & ERP
Money Forward Cloud
Japanese cloud accounting & back office (cloud) (web UI)
freee
Japanese cloud accounting & HR (cloud) (web UI)
Xero
Cloud accounting for small business (cloud) (web UI)
ERPNext
Open-source ERP — accounting, inventory, HR (self-hosted) (port 8080, web UI)
Odoo
Open-source ERP suite — self-hosted (Python + PostgreSQL) (port 8069, web UI)
QuickBooks
Intuit cloud accounting (cloud) (web UI)
Plaid
Bank account linking & financial data (cloud API)
Expensify
Expense & receipt management (cloud API) (web UI)
Firefly III
Self-hosted personal finance manager (port 8080, web UI)
Actual Budget
Fast local-first envelope budgeting (port 5006, web UI)
Ghostfolio
Open-source wealth/investment tracker (port 3333, web UI)
Invoice Ninja
Self-hosted invoicing & payments (port 80, web UI)
Maybe
Open-source personal finance / net worth (port 3000, web UI)
Popbill (팝빌)
E-tax invoices, cash receipts, fax & messaging API (web UI)
Barobill (바로빌)
E-tax invoices, Hometax & bank data (SOAP API) (web UI)
Sendbill (센드빌)
Korean e-tax invoice API (web UI)
Bolta (볼타)
E-tax invoice SaaS with a REST API (web UI)
CODEF (코드에프)
Korean financial & public-data aggregation API (web UI)
Hyphen API Market (하이픈)
Korean financial & public-document data API market (web UI)
Douzone Bizon (더존) — Amaranth 10 / WEHAGO / Smart A
Korean ERP & groupware (Amaranth, WEHAGO) (web UI)
6.100E-Signature
Docusign eSignature
The market-leading e-signature platform (cloud API) (web UI)
Adobe Acrobat Sign
Adobe's e-signature service (cloud API) (web UI)
Dropbox Sign
E-signature API, formerly HelloSign (cloud) (web UI)
PandaDoc
Proposals, quotes & contracts with e-signature (cloud API) (web UI)
SignNow
Business e-signature from airSlate (cloud API) (web UI)
Zoho Sign
E-signature in the Zoho suite (cloud API) (web UI)
BoldSign
E-signature API from Syncfusion (cloud) (web UI)
SignWell
Simple e-signature with a straightforward API (cloud) (web UI)
Yousign
European eIDAS e-signature, simple to qualified (cloud API) (web UI)
Skribble
Swiss/EU qualified e-signatures — eIDAS & ZertES (cloud API) (web UI)
GMO Sign (GMOサイン)
Japanese e-contracts from GMO GlobalSign (cloud API) (web UI)
CloudSign (クラウドサイン)
Japanese e-contract service from Bengo4.com (cloud API) (web UI)
freee Sign (freeeサイン)
Japanese e-contracts from freee, ex-NINJA SIGN (cloud) (web UI)
Modusign (모두싸인)
Korean e-signature & e-contract platform (cloud API) (web UI)
eformsign (이폼사인)
Korean e-forms & e-contracts from Forcs (cloud API) (web UI)
DocuSeal
Open-source document signing (self-hosted or cloud) (port 3060, web UI)
Documenso
Open-source DocuSign alternative (self-hosted or cloud) (port 3000, web UI)
OpenSign
Open-source e-signature (self-hosted or cloud) (web UI)
6.101Healthcare
OpenEMR
Open-source EHR & practice management (PHP/MySQL) (port 80, web UI)
OpenMRS
Open-source medical record platform (Java) (port 8080, web UI)
GNU Health
Hospital & health information system (Python/Tryton) (port 8000, web UI)
LibreHealth
Open-source EHR / toolkit (PHP/MySQL) (port 80, web UI)
Orthanc
Lightweight DICOM server / PACS (REST API) (port 8042, web UI)
OpenDolphin
Open-source EHR / electronic karte (Japan) (port 8080, web UI)
ORCA
Japan Medical Association receipt/billing system (port 8000, web UI)
6.102Automation & Workflows
Automatio.ai
AI no-code web automation & scraping (cloud) (web UI)
Zite
AI app & workflow builder (cloud) (web UI)
AppSheet
Google no-code app builder from a spreadsheet/DB (cloud) (web UI)
Make (Integromat)
Visual scenario automation + AI agents — 3,000+ apps (cloud) (web UI)
Zapier
Cloud iPaaS — connect 7,000+ apps (cloud) (web UI)
n8n
Source-available workflow automation (self-hosted) (port 5678, web UI)
Pipedream
Developer-first workflow automation (cloud) (web UI)
Power Automate
Microsoft cloud + desktop automation (cloud) (web UI)
Activepieces
Open-source no-code automation (self-hosted) (port 8080, web UI)
Windmill
Scripts → workflows & internal apps (self-hosted) (port 8000, web UI)
Huginn
Self-hosted agents that watch & act (self-hosted) (port 3000, web UI)
Flowise
Drag-and-drop LLM app builder (self-hosted) (port 3000, web UI)
Langflow
Visual builder for LLM/agent flows (self-hosted) (port 7860, web UI)
Dify
Open-source LLMOps / AI app platform (self-hosted) (port 80, web UI)
Elgato Stream Deck
Hardware macro keypad with LCD keys
Touch Portal
Turn a phone/tablet into a macro deck (no extra hardware)
Bitfocus Companion
Open-source control surface for larger automation workflows (port 8000, web UI)
X-keys
Programmable keypads for NOCs & operations
Matric
Phone macro deck with live metric tiles
QMK / VIA
Open keyboard firmware + live key remapping
6.103Workflow Orchestration
Temporal
Durable execution platform for reliable workflows (port 8233, web UI)
Restate
Durable execution for resilient services (single binary) (port 9070, web UI)
Apache Airflow
Programmatic data-pipeline orchestration (DAGs) (port 8080, web UI)
6.104HRIS Integration
Unified.to (HRIS API)
Unified API across HRIS providers (web UI)
Apideck (HRIS API)
Unified HRIS API & integration platform (web UI)
Truto
Unified API for HRIS & more (cloud) (web UI)
Bindbee
Unified HRIS / employment API (cloud) (web UI)
flex (플렉스)
Korean all-in-one HR (people, attendance, payroll) (web UI)
Shiftee (시프티)
Korean shift scheduling & attendance (web UI)
Saramin (사람인)
Korean job-postings API (Saramin) (web UI)
Wanted (원티드)
Korean recruiting platform API (Wanted) (web UI)
6.105VoIP & Telephony
Asterisk
The open-source PBX engine (self-hosted) (port 5060, brew: asterisk)
FreePBX
Web GUI distro on Asterisk (self-hosted, Linux) (port 80, web UI)
FreeSWITCH
Carrier-grade softswitch (self-hosted) (port 5060)
FusionPBX
Multi-tenant web GUI on FreeSWITCH (self-hosted) (port 443, web UI)
Issabel PBX
Unified-communications distro on Asterisk (self-hosted) (port 443, web UI)
Kamailio
High-performance SIP server/proxy (self-hosted) (port 5060)
OpenSIPS
SIP proxy/router for large platforms (self-hosted) (port 5060)
PBXact
Sangoma's commercial PBX (appliance/cloud) (port 80, web UI)
Plivo
Voice & SMS API platform (cloud) (web UI)
Telnyx
Carrier-grade voice, SIP trunking & numbers (cloud) (web UI)
Bird (MessageBird)
Omnichannel CPaaS — SMS, voice, WhatsApp (cloud) (web UI)
Sinch
Global SMS, voice & verification CPaaS (cloud) (web UI)
Twilio Voice
Programmable voice calls & TwiML (cloud) (web UI)
VitalPBX
Modern Asterisk-based PBX distro (self-hosted) (port 443, web UI)
Vonage APIs
Voice, SMS & video APIs (cloud, ex-Nexmo) (web UI)
Wazo Platform
API-first open telecom platform (self-hosted) (port 443, web UI)
Yate
Flexible telephony engine — SIP/H.323/SS7 (self-hosted) (port 5060)
3CX
Commercial software PBX (self-hosted or hosted) (port 443, web UI)
6.106Contact Centre & IVR
Twilio Studio
Drag-and-drop IVR & call-flow builder (cloud) (web UI)
Twilio Flex
Programmable contact centre (cloud) (web UI)
Amazon Connect
AWS cloud contact centre (cloud) (web UI)
Genesys Cloud
Enterprise CX platform — Architect IVR (cloud) (web UI)
Five9
CCaaS with strong outbound dialing (cloud) (web UI)
Talkdesk
AI-forward cloud contact centre (cloud) (web UI)
RingCentral Contact Center
CCaaS on the RingCentral platform (cloud) (web UI)
8x8 Contact Center
UCaaS + CCaaS in one platform (cloud) (web UI)
Vonage Contact Center
Salesforce-centric contact centre (cloud) (web UI)
Dialpad Ai Contact Center
AI-native contact centre & real-time coaching (cloud) (web UI)
Aircall
Lightweight cloud call centre for teams (cloud) (web UI)
CloudTalk
Cloud calling for support & sales (cloud) (web UI)
GoTo Connect
Phone system + contact centre (cloud) (web UI)
Zoom Contact Center
Omnichannel CC on the Zoom platform (cloud) (web UI)
Freshdesk Contact Center
Freshworks phone channel (ex-Freshcaller, cloud) (web UI)
Zendesk Talk
Voice channel inside Zendesk Support (cloud) (web UI)
Intermedia Contact Center
CCaaS bundled with Intermedia Unite (cloud) (web UI)
6.107SEO & Marketing
Analytics
built-in tool
IndexNow Manager
built-in tool
Cloudflare Analytics
Privacy-first web & edge analytics (cloud) (web UI)
Ahrefs
Backlinks, keywords & rank tracking (cloud) (web UI)
Google Search Console
Search performance, indexing & sitemaps (cloud) (web UI)
Google Analytics
GA4 web & app analytics (cloud) (web UI)
PageSpeed Insights / CrUX
Core Web Vitals & Lighthouse scores per URL (cloud) (web UI)
Plausible Analytics
Privacy-first, self-hostable web analytics (port 8000, web UI)
Umami
Simple, self-hosted, privacy-focused analytics (port 3000, web UI)
Matomo
Full GA-style analytics, self-hosted (web UI)
GoatCounter
Minimal, open-source web analytics (port 8081, web UI)
PostHog
Self-hostable product analytics suite (port 8000, web UI)
Bing Webmaster Tools
Bing search performance & URL submission (cloud) (web UI)
Yandex Webmaster
Yandex search performance & indexing (cloud) (web UI)
Semrush
Keywords, competitors & site audit (cloud) (web UI)
Moz
Domain Authority & backlinks (cloud) (web UI)
Majestic
Backlink index — Trust & Citation Flow (cloud) (web UI)
DataForSEO
SERP, keyword & backlink data API (cloud) (web UI)
SerpApi
Real-time SERP scraping API (cloud) (web UI)
Yahoo! JAPAN Ads & Search
Japan's #2 search/ads ecosystem (cloud) (web UI)
Ptengine
Analytics + heatmaps, popular in Japan (web UI)
KARTE
Real-time user/CX analytics (PLAID, JP) (web UI)
AdEbis (アドエビス)
Ad attribution & marketing analytics (JP) (web UI)
Naver Search Advisor
Naver's Search Console (KR) — IndexNow partner (web UI)
Naver Analytics
Naver's free web analytics (KR) (web UI)
Beusable
Heatmap & UX analytics (KR) (web UI)
Airbridge
Mobile attribution & analytics (AB180, KR) (web UI)
adbrix
Mobile attribution & analytics (IGAWorks, KR) (web UI)
Google Lighthouse
Audit performance, PWA, SEO & accessibility
Shlink
Self-hosted URL shortener with REST API & analytics (port 8080, web UI)
YOURLS
Your Own URL Shortener (PHP) (port 80, web UI)
Kutt
Modern open-source URL shortener (port 3000, web UI)
Polr
Minimalist self-hosted link shortener (Laravel) (port 80, web UI)
Dub.co
Open-source link management for marketing teams (port 8888, web UI)
Nahpet
Self-hosted URL shortener with custom domains & analytics (port 3000, web UI)
Flink (URL Shortener)
Self-hosted shortener that keeps the path after the alias (port 8080, web UI)
Chhoto URL
Tiny, fast self-hosted URL shortener (Rust) (port 4567, web UI)
NAVER Search API (네이버 검색 API, Naver Developers)
Naver blog / news / shop / local search API (web UI)
Naver Search Ad (네이버 검색광고)
Naver keyword-ad account, bizmoney balance & stats API (web UI)
Kakao Moment (카카오모먼트)
Kakao display-ad platform API (web UI)
Kakao Keyword Ad (카카오 키워드광고)
Kakao / Daum keyword-ad API (web UI)
Mobon (모비온)
Korean retargeting ad network (web UI)
ACE Counter (에이스카운터)
Korean web analytics (ACE Counter) (web UI)
Daum Webmaster Tools (Daum 웹마스터도구)
Daum/Kakao site registration & search insights (web UI)
6.108Conversion Rate Optimization
Optimizely
Enterprise A/B testing & experimentation (cloud) (web UI)
VWO
A/B testing, heatmaps, surveys (cloud) (web UI)
AB Tasty
Personalization & experimentation (cloud) (web UI)
Statsig
Modern experimentation & feature flags (cloud, API) (web UI)
GrowthBook
Self-hosted A/B testing & feature flags (open-source) (port 3100, web UI)
Mixpanel
Product analytics & funnels (cloud) (web UI)
Amplitude
Product analytics & journeys (cloud) (web UI)
Hotjar
Heatmaps & session recording (cloud) (web UI)
Microsoft Clarity
Free heatmaps & session recording (cloud) (web UI)
FullStory
Digital experience & session replay (cloud) (web UI)
Lucky Orange
Heatmaps, recordings, live chat (cloud) (web UI)
Mouseflow
Session replay & heatmaps (cloud) (web UI)
Heap
Autocapture funnels & journeys (cloud) (web UI)
Contentsquare
Experience analytics & journeys (cloud) (web UI)
UserVoice
Product feedback & feature requests (cloud) (web UI)
Canny
Feature-request boards (cloud, API) (web UI)
Survicate
Website & in-product surveys (cloud) (web UI)
Qualtrics
Experience-management surveys (cloud) (web UI)
LaunchDarkly
Enterprise feature-flag management (cloud, API) (web UI)
Unleash
Self-hosted feature-flag management (open-source) (port 4242, web UI)
Hackle (핵클)
Korean A/B testing & feature flags (web UI)
Groobee (그루비)
Korean personalisation & on-site marketing (web UI)
6.109Social Media
Buffer
Social media scheduling & publishing (cloud API) (web UI)
Postiz
Open-source, self-hosted social media scheduler (port 4007, web UI)
Postly
AI-powered social media publishing platform (web UI)
Post Planner
Content discovery & social scheduling (web UI)
Postcron
Multi-platform social media scheduler (web UI)
Publer
Social media scheduling & analytics (web UI)
Hootsuite
Social media management suite (cloud API) (web UI)
Later
Visual social scheduling (Instagram-first, cloud API) (web UI)
Metricool
Social analytics, scheduling & ads (cloud API) (web UI)
SocialPilot
Social scheduling for teams & agencies (cloud API) (web UI)
Mastodon
Self-hosted federated microblogging (ActivityPub) (web UI)
strfry
Fast C++ Nostr relay (single binary, one-click Docker) (port 7777)
nostr-rs-relay
Rust Nostr relay on SQLite (one-click Docker) (port 8080)
Nostream
TypeScript Nostr relay — Postgres, paid relays (Docker Compose) (port 8008)
HAVEN
Personal Nostr relay suite + Blossom media (Docker Compose) (port 3355, web UI)
Blossom Server
Nostr media/blob server — images & files (one-click Docker) (port 3000, web UI)
Pixelfed
Federated photo sharing (Instagram alt.) (port 80, web UI)
Lemmy
Federated link aggregator (Reddit alt.) (port 8536, web UI)
Misskey
Federated microblogging (rich Mastodon alt.) (port 3000, web UI)
NAVER BAND (밴드)
Naver group community app (BAND) (web UI)
6.110Media Servers
MediaMTX
RTSP/RTMP/HLS/WebRTC/SRT media server (port 8554, brew: mediamtx)
SRS
Simple Realtime Server — RTMP/WebRTC/SRT (port 1935, web UI)
Owncast
Self-hosted live streaming + chat (port 8080, web UI)
Restreamer
Restream one input to many platforms (port 8080, web UI)
Icecast
Audio streaming server (net radio) (port 8000, web UI, brew: icecast)
AzuraCast
Complete self-hosted radio station (port 80, web UI)
Jellyfin
Free home media server (Plex alternative) (port 8096, web UI, brew: jellyfin)
Plex Media Server
Popular home media server (port 32400, web UI)
Emby
Media server with live TV/DVR (port 8096, web UI)
PeerTube
Federated, P2P video platform (ActivityPub) (port 9000, web UI)
Navidrome
Self-hosted music server (Subsonic-compatible) (port 4533, web UI)
Audiobookshelf
Self-hosted audiobook & podcast server (port 13378, web UI)
Tvheadend
TV streaming server & DVR (DVB/IPTV) (port 9981, web UI)
TSDuck
MPEG transport-stream toolkit (CLI)
Wowza Streaming Engine
Commercial streaming server (RTMP/SRT/HLS) (port 8088, web UI)
Immich
Self-hosted photo & video backup (Google Photos alt.) (port 2283, web UI)
Channels DVR Server
Whole-home DVR for live TV & streaming (self-hosted) (port 8089, web UI)
Jellyseerr
Media request manager (Jellyfin/Plex/Emby) (port 5055, web UI)
Bazarr
Automatic subtitles for Sonarr/Radarr (port 6767, web UI)
Tdarr
Distributed media transcoding/health automation (port 8265, web UI)
Komga
Comics & manga server (self-hosted) (port 25600, web UI)
Kavita
Fast ebook/comic/manga server (port 5000, web UI)
RomM
Self-hosted ROM manager & player (port 8080, web UI)
Overseerr
Media request manager for Plex (port 5055, web UI)
Ombi
Media request system (Plex/Emby/Jellyfin) (port 3579, web UI)
Airsonic-Advanced
Self-hosted music streaming (Subsonic API) (port 4040, web UI)
Calibre-Web
Web reader/manager for a Calibre ebook library (port 8083, web UI)
Tautulli
Plex monitoring, history & stats (port 8181, web UI)
6.111Download Automation
qBittorrent
Open-source BitTorrent client with Web UI (self-hosted) (port 8080, web UI)
Transmission
Lightweight BitTorrent client + daemon (self-hosted) (port 9091, web UI)
SABnzbd
Usenet (NZB) downloader with Web UI (self-hosted) (port 8080, web UI, brew: sabnzbd)
NZBGet
Lightweight, efficient Usenet downloader (self-hosted) (port 6789, web UI)
Sonarr
Automated TV series management (self-hosted) (port 8989, web UI)
Radarr
Automated movie management (self-hosted) (port 7878, web UI)
Lidarr
Automated music collection management (self-hosted) (port 8686, web UI)
Readarr
Automated book & audiobook management (self-hosted) (port 8787, web UI)
Prowlarr
Indexer manager for the *arr stack (port 9696, web UI)
Tube Archivist
Self-hosted YouTube archive (index + watch) (port 8000, web UI)
Pinchflat
Self-hosted YouTube media downloader/archiver (port 8945, web UI)
6.112AV & Stage
Show Network
built-in tool
Generators
built-in tool
AV Feeds
built-in tool
Dante (Audinate)
Audio-over-IP networking (AoIP)
Q-SYS
QSC's AV processing & control platform (port 1710, web UI)
QLC+
Open-source DMX lighting control (port 9999, web UI)
grandMA3
MA Lighting console / onPC show control
grandMA2
MA Lighting grandMA2 console / onPC
Depence²
Real-time 3D previz & show control (Syncronorm)
PixMob
Crowd LED wearables for stadium light shows
Xylobands
RF-controlled LED wristbands for events
OBS Studio
Live production, streaming & recording (port 4455)
NDI
Video-over-IP for production (NDI) (port 5959)
Resolume Arena / Avenue
VJ / media-server software (port 8080, web UI)
MadMapper
Projection mapping & LED control
Liquidsoap
Scriptable radio/audio stream engine
MPV
Scriptable media player (CLI)
Kodi
Media centre with JSON-RPC remote (port 8080, web UI)
VLC
Player with HTTP/telnet remote interfaces (port 8080, web UI)
Yodeck
Cloud digital signage (Pi players) (web UI)
Screenly / Anthias
Digital signage — cloud or open source (port 80, web UI)
Google Cast / YouTube Cast
Chromecast casting & control (port 8009)
ArKaos GrandVJ / XT
Live VJ mixing & video mapping
ArKaos MediaMaster (ChamSys)
Stage media server for lighting desks
Syphon
GPU frame sharing between Mac apps
SRT (tools)
Secure Reliable Transport for live video (port 9710)
WebRTC (WHIP/WHEP)
Sub-second video in any browser (port 8889)
AirServer
Turn this Mac into an AirPlay/Cast/Miracast receiver
Reflector
AirPlay/Cast screen receiver (Squirrels)
Chrome Remote Desktop
Free remote control of this Mac (web UI)
rekordbox
AlphaTheta (Pioneer DJ) library & performance software
PRO DJ LINK
Pioneer/AlphaTheta CDJ & DJM network (UDP 50000–50002)
Engine DJ (Denon StageLinQ)
Denon DJ / Engine DJ — StageLinQ network
Ableton Live / Link
DAW + Ableton Link tempo sync
Beat Link Trigger
Pro DJ Link → MIDI / OSC / Ableton Link bridge
ShowKontrol (TCNet)
TC Supply — TCNet timecode & DJ data for lighting/video
Spout
GPU texture sharing between Windows apps (Syphon's Windows twin)
QLab
Figure 53 — theatre & show playback (audio, video, lighting, OSC) (port 53000)
Millumin
Mac media server for theatre, dance & installations
VDMX
Vidvox — modular VJ software for macOS
disguise (d3)
Media server & show-control platform (designer / rx / gx)
PIXERA
AV Stumpfl media server
WATCHOUT
Dataton multi-display show control
Hippotizer
Green Hippo media servers
OLA (Open Lighting Architecture)
Open-source DMX/Art-Net/sACN/RDM server (olad) (port 9090, web UI)
sACNView
Free sACN (E1.31) monitor & test tool
ENTTEC DMX gateways
Ethernet → DMX nodes (ODE, Storm, DIN Ethergate, Octo)
Protokol
Hexler — OSC, MIDI & gamepad monitor
TouchOSC
Hexler — OSC/MIDI control surfaces
RTP-MIDI (Network MIDI)
MIDI over Ethernet/Wi-Fi (AppleMIDI)
WLED
ESP32/ESP8266 LED controller firmware (port 80, web UI)
Falcon Player (FPP)
Show player for pixel & SPI LED controllers (port 80, web UI)
Advatek PixLite
Art-Net/sACN → SPI pixel controllers
NovaStar / COEX
LED wall processors & receiving cards
Brompton Tessera
LED wall processors (SX40, S8, M2)
Colorlight
LED controllers & receiving cards
MADRIX 5
LED lighting control & pixel mapping
Lightjams
Real-time interactive DMX/LED lighting
Riverside.fm
Remote podcast & video recording studio (cloud) (web UI)
6.113Render Farm
AWS Deadline / Deadline 10
Render farm queue manager (VFX/3D)
OpenCue
Open-source render manager (self-hosted)
Qube!
Commercial render farm / job manager (PipelineFX)
6.114Tracking & Telematics
Traccar
Open-source GPS tracking server (self-hosted) (port 8082, web UI)
OwnTracks
Private self-hosted location tracking (MQTT/HTTP) (port 8083, web UI)
TeslaMate
Self-hosted Tesla data logger (Docker) (port 4000, web UI)
Samsara
Fleet telematics platform (cloud API) (web UI)
Geotab
Fleet telematics (MyGeotab API) (web UI)
Fleetio
Fleet maintenance management (cloud API) (web UI)
Onfleet
Last-mile delivery management (cloud API) (web UI)
Bouncie
Connected-car OBD tracker (cloud API) (web UI)
AutoPi
Programmable vehicle IoT dongle (cloud API) (web UI)
flespi
Telematics IoT gateway & MQTT broker (cloud API) (web UI)
第 7
サイト・ドメイン・Web
Mac 上の vhost からレジストラ、DNS、CDN、検索エンジンまで — ドメインが本当に健全かを一目で示し、そうでないときに直すためのツール群を 1 つのペインに。
動く Web サイトとは、ただ Apache が起動していること以上のものです。ドメインが名前解決され、証明書が有効で、正しいマシンが応答し、その前に CDN が立ち、検索エンジンがその存在を知っている必要があります。FrontierStack はそのすべてを Sites ペインと小さなツール群に集約し、レジストラ・DNS・TLS・CDN・ホスト・SEO という連鎖全体を 1 つのウィンドウから可視化し、修正できるようにします。本章はスタックの上にある Web を扱います。vhost と証明書そのものは第 4 章を参照してください。
7.1Sites ペインと Domain Health
サイドバーから Sites を開きます。最上部には Domain Health セクション、つまり FrontierStack が把握するすべてのホスト名を集めたライブダッシュボードがあります。定義済みのローカル Apache・Nginx vhost、連携サーバ上の vhost、トークンにあるすべての Cloudflare ゾーン、レジストラ監視のすべてのドメインです。各ドメインには状態バッジ付きの行が並び、行の Check、またはヘッダーの Check All を押すと、アプリがドメインを端から端まで検査し、バッジを緑または橙に色付けします。
このダッシュボードの目的は、1 つの問いに確実に答えることです — このドメインは本当に配信されているか、どこから配信されているか? 検査は公開インターネットに対して実行されるため(実際の DNS 検索、実際の HTTP リクエスト、実際の TLS ハンドシェイク)、ローカルの設定確認では決して見えない障害を捉えます — 誤った IP を指すレコード、期限切れの証明書、「pending」のまま固まった Cloudflare ゾーン、名前解決はできるが 502 を返すサイト。
| 検査項目 | 測定方法 | 問題の見え方 |
|---|---|---|
| DNS | ホスト名の実リゾルバ検索(host/dig)と返る IP。 | レコードなし、または自分のサーバでないアドレス。 |
| HTTP | ステータスコードを記録するライブリクエスト(curl -w %{http_code})。 | 200–399 以外 — 404、502、リダイレクトループ。 |
| SSL/TLS | 証明書の終了日を読む TLS ハンドシェイク(openssl s_client → x509 -enddate)。バッジに残日数を表示。 | 期限切れ、まもなく期限切れ、または名前不一致。 |
| HTTP/3 | サーバが Alt-Svc ヘッダで HTTP/3 を告知しているとティール色のバッジが付きます。Apache 自体は HTTP/3 を持たないため、Apache サイトでこのバッジを得る通常の方法はドメインの Cloudflare ゾーンペインにある HTTP/3 トグルです(ブラウザはエッジと QUIC で通信し、オリジンは h1/h2 のまま)。HTTP/3 は UDP 443 を使うことに注意——TCP のみのファイアウォールではブラウザは黙って HTTP/2 にフォールバックします。 | h3 を配信しているはずのサイトにバッジがない——エッジ設定がオフか、UDP 443 がブロックされています。 |
| Cloudflare | トークンから取得するゾーンの状態とプラン。例:active · Pro。 | レジストラでネームサーバを切り替えていないため「pending」のゾーン。 |
| 配信ホスト | 応答した IP と Server ヘッダーから判定。 | リモートを期待したのに「This Mac (Apache)」、あるいはオリジンを隠す「Cloudflare」。 |
7.2サイトごとの Search Console・アナリティクス・Ahrefs
Domain Health の各行には、ヘルスバッジの下に Search Console・GA4・Ahrefs の 3 つのチップを並べた行があります。灰色はそのサイトで未設定、緑は有効で問題なし、黄色は要確認、オレンジはアラートも出る問題です。チップにポインタを重ねると検出内容を表示し、クリックするとそのサービスのペインを開きます。ベンダーのコンソールを再現するものではありません。サイトごとに「サービスは有効か」「所有者が知るべき問題はないか」の 2 点に答えます。
確認できる内容は、接続しているサービスによって増えていきます。
- キーが無くても、公開中のトップページ、
robots.txt、ドメインの TXT レコードを読み取ります。Google アナリティクスと Tag Manager のタグ、Ahrefs Web Analytics のスクリプト、Google と Ahrefs の確認トークンを検出します。トップページにnoindex(meta タグまたはX-Robots-Tagヘッダ)がある場合や、robots.txtが Googlebot・AhrefsBot・AhrefsSiteAudit をサイト全体から締め出している場合は警告します。何も収集しなくなった旧 Universal Analytics(UA-)のタグも指摘します。 - Google にサインインしていれば(Search Console ペインのGoogle でサインイン、またはサービスアカウントキー)、各サイトを Search Console プロパティと照合し、次の点を確認します。
- プロパティの所有権確認がまだ有効か
- 送信済みのサイトマップにエラーがないか
- Google の URL 検査でトップページがどう判定されているか(取得できたか、robots.txt や noindex でブロックされていないか、インデックスされているか)
- 検索の表示回数が前週比で急減していないか
- Cloudflare トークンがあれば、ゾーンのファイアウォールイベントを読み、過去 1 日に WAF・レート制限・ボットのルールにブロックされた Googlebot・AhrefsBot・AhrefsSiteAudit のリクエストを探して、原因のルールを表示します。対象は Google と Ahrefs 自身のネットワークからのリクエストだけです。Googlebot を名乗るだけの偽物を Cloudflare がブロックするのは正常な動作なので、報告しません。
6 時間ごとに再確認するほか、チェックやすべて確認を押したときにも確認します。問題はアラートの検索・アナリティクスグループに、サイトとサービスの組み合わせごとに 1 項目として送られるため、解決すると復旧も通知されます。Ahrefs の問題は、実際に Ahrefs を使っているサイトでのみ通知します。使っていないクローラのブロックは障害ではなく選択だからです。
7.3ChatGPT Sites:監視、独自ドメイン、セルフホスト
ChatGPT Sites セクションは、FrontierStack 内のどこでも同じ一覧を使います。公開された name.openai.chatgpt.site URL を貼り付けると、他のサイトと同様にドメインヘルス、SEO、アラートの対象になります。ワークスペースまたは所有者限定 Site は非公開に設定すると、サインイン画面を障害と誤認しないよう外部プローブを停止します。
Import or Move には、所有者が選ぶ 2 つの経路があります。Use my domain は ChatGPT 上のホスティングを維持します。まず Site の ChatGPT 設定でドメインを追加し、ChatGPT が示す正確な DNS レコードをコピーします。FrontierStack は各レコードが選択した Cloudflare ゾーン内にあることを検証して DNS のみで公開します。別の DNS プロバイダでは、そこでレコードを追加して Save Domain を使います。どちらも元の Sites アドレスとカスタムドメインを記録します。DNS 反映後、ChatGPT に戻ってドメイン状態を更新します。
Self-host は Site のローカルプロジェクトフォルダから始めます。FrontierStack は .openai/hosting.json と package.json を読み、フレームワークと完成済み出力フォルダを特定し、D1/R2 バインディングと環境変数例の名前だけを表示して、確認済み Web 出力を管理対象 Apache ドメインへコピーします。パッケージスクリプトや秘密値は実行・読取せず、リンクとソース管理メタデータを除外し、50,000 ファイルまたは 5 GB に制限し、失敗時に戻せるステージングフォルダを使います。先にプロジェクトをビルドし、index.html を含む dist、build、out、public などを取り込みます。
7.4ドメイン所有権の証明
ベンダーは、所有者にしか作成できない DNS TXT レコードの公開を求めることでドメインの所有を確認します — ACME の DNS-01 チャレンジと同じ「DNS による証明」ですが、レコードの形式はベンダーごとに異なります。Domain Health 行の確認(Verify)ボタンはその形式を 1 か所に集約します。サービス — Google(Search Console/Workspace)、Microsoft 365、Meta、Apple Business Manager、Atlassian、OpenAI、Stripe、GitHub 組織、またはカスタムレコード — を選び、ベンダーのコンソールからトークンを貼り付けると、FrontierStack が TXT レコードをドメインの Cloudflare ゾーンに直接公開します。ドメインが Cloudflare トークンにない場合は、DNS ホストに追加すべきレコードをそのまま提示します。トークンだけを貼り付けても自動補完されます(Google で abc123 を貼ると google-site-verification=abc123 になります)。
シートには apex にすでに公開されている確認レコードも表示されます — このドメインが現在どのサービスに証明済みかの簡易監査です。Check DNS は公開 DNS(1.1.1.1)に新しいレコードを照会するので、ベンダー側で「確認」を押す前に証明が見えているか確かめられます。
証明書については、Let's Encrypt サービスペイン(セキュリティとシークレットカテゴリー)がもう一方のドメイン証明の常時ヘルスチェックです。ACME API・Let's Encrypt のステータスページ・ドメインの実際の証明書を監視し、ACME クライアントは残り 30 日で更新するため、証明書の更新遅延を警告します — certbot/acme.sh の自動更新の故障を、訪問者が期限切れ警告を目にする数週間前に捉えます。
7.5スパムブロックリスト:ドメイン、メールサーバ、ネットワークのパブリック IP
受信側は、公開のブロックリストに問い合わせてメールを受け入れるかどうかを判断します。Domain Health 行のブロックリスト(同じセクションは Cloudflare のゾーンのペインとメールサーバのペインにもあります)は、ドメインをドメインのリスト — Spamhaus DBL、SURBL、URIBL — で、メールサーバ(MX ホストと SPF の単一アドレス)をIP のリスト — Spamhaus ZEN、SpamCop、Barracuda、PSBL、Mailspike — で調べます。応答はリストごとに解読するので登録の理由が分かり、検索ボタンでリストの削除ページを開けます。行には最後の結果が表示されます。
| 結果 | 意味 | アラート |
|---|---|---|
| 登録あり | スパム・フィッシング・悪性ドメイン、SBL・CSS・XBL のアドレス、SpamCop・Barracuda・PSBL・Mailspike への登録 | スパムブロックリストのアラート(ダウン) |
| 注意 | Spamhaus PBL(エンドユーザ向けの範囲)または URIBL グレー(大量送信者) | 警告のみ |
| 応答なし | リストがこの Mac のリゾルバを拒否した(リスト自身のネームサーバに問い合わせても)、または応答しなかった | なし — 前回の実際の回答を保持 |
同じセクションの定期チェックで、ドメインを定期確認できます:オフ・毎日・毎週・2 週間ごと・毎月。アラートを出すのは定期チェック中のドメインだけです。リストは負荷の高いリゾルバを制限するため、確認は間隔を空けて 1 件ずつ行い、アラートの巡回では実行せず、結果は再起動後も保持します。Domain Health の下のスパムブロックリストセクションには、定期チェック中のドメインが頻度と最後の結果とともに並び、アラートのスイッチもあります。
同じセクションのネットワークのパブリック IPは、固定済みのルータやファイアウォールのパブリック(WAN)アドレス — デバイスの詳細で設定した外部 IP — を独自の頻度で IP リストと照合します。ゲスト Wi-Fi や LAN のマシンがスパムを送ると、その NAT アドレスから送ることになります。そこでの登録は、内部の誰かが気づくよりずっと早く、外から分かる最初の兆候であることがよくあります。
リンク済みサーバのペインのメールサーバポリシー監査(第 10 章参照)も、そのサーバのパブリックアドレスとメールを受信するドメインについて同じ照会を行い、登録を失敗、注意を警告、応答のないリストを情報として報告します。回答は 6 時間再利用するので、ペインを開き直してもリストへ問い合わせ直しません。
7.6AI SEO と「Fix My Site」
ドメイン行のバッジのうち 2 つは、単なる診断ではなくボタンで、問題を AI 管理者に引き渡します。Fix My Site は壊れた、あるいは不調なサイトを受け取り、決まった手順でアシスタントを動かします — Host ヘッダー付きでサイトをローカルに curl して障害を再現し、関連ログを読み、Apache・PHP・データベースの稼働を確認し、最も可能性の高い根本原因と具体的な次の手順を提示します。Allow changes がオフなら助言のみ、オンなら可逆的な修正(サービス再起動、設定ファイルの誤値修正、データベース修復)を適用できます。WordPress 向けの派生版もあり、定番の白画面、「Error establishing a database connection」、壊れたパーマリンク、固まったメンテナンスモードに対応します。
SEO アクションは端末上の読み取り専用監査を実行します — アシスタントがホームページ・robots.txt・サイトマップを取得し、100 点満点で採点し、短いレポート(タイトル、メタディスクリプション、見出し、クロール可能性、構造化データ)を書き出します。結果は SEO レポートシートで開き、所見を読んで対処できます。
7.7ワンクリック CMS インストール(Apps & CMS)
WordPress は、新しいサイトのインストールと既存サイトの運用を 1 つのペインで扱います — このMacでも、任意のフリートサーバでも。この統合には意味があります。従来のインストーラペインはこの Mac にしか書き込めませんでしたが、本ペインの処理はすべて、選択したホスト上の WP-CLI で実行されるため、リモートサーバも新規インストールの正式な対象になります。ペイン下部の新しい WordPress サイトをインストールは、選択したホストへ WordPress をダウンロードし、wp-config.php を書き出し、データベースを作成し、指定した管理者アカウントでセットアップまで完了します。この Mac から何かを転送することはなく、そのパスに既存のインストールがある場合は上書きせず拒否します。新しいフォルダを配信するにはバーチャルホストが別途必要です — ローカルなら Sites ペインで、リモートならサーバ側の Web サーバで作成してください。CMS のインストールは最初の一日にすぎず、残りも同じペインが受け持ちます。ホスト(このMacまたは任意のフリートサーバ)を選び、一般的なウェブルート配下の wp-config.php を検索すると、そのマシン上の全 WordPress が、コア・プラグイン・テーマのバージョンと更新待ちの項目とともに一覧表示されます。すべて更新は、何かに触れる前にデータベースを書き出します。不具合のあるプラグイン更新は復旧できますが、失われたデータベースは戻らないからです。整合性を検査は、コアファイルを WordPress.org が公開するチェックサムと照合します。改ざんやバックドアを最も手早く見つける方法です。無料の WPScan トークンを追加すれば、インストール済みプラグインとコアを脆弱性データベースと照合し、修正が未公開のものを明示します。マルチサイトではサブサイトも一覧します。各サイトにはプラグインを追加の一覧もあります。予約・コマース・メール配信・バックアップ・キャッシュ・セキュリティを網羅した厳選カタログで、ローカルでもリモートでも、そのサイトへ直接インストールでき、インストール後に有効化するかも選べます。この一覧は WordPress.org ディレクトリの写しではありません。掲載するのは、壊れたときに目に見えて失敗するもの、または FrontierStack が別の場所ですでに監視している何かを生み出すものだけで、稼働後にアプリが何を把握できるかも各項目に明記しています。インストールが、存在しない監視をほのめかすことはありません。すでにサイトに入っているものは「インストール済み」と表示され、二重に提示されることはなく、WordPress.org のスラッグを持たない有料プラグインは代わりに配布ページへリンクします。WordPress サイトがまだ無いホスト(または WP-CLI が無いホスト)でも、カタログはグレー表示・選択不可の状態で一覧されるため、空のペインに出会うことなく、何が使えるようになるかを確認できます。残る作業は、通常なら SSH とうろ覚えのコマンドを要するものばかりです。ロックアウトされた管理者のパスワード再設定、ドメイン移行のための検索置換(WP-CLI はシリアライズされた PHP 内の URL も正しく書き換えます。単純な SQL 置換ではデータが壊れるため、必ず予行演習から)、ステージングへの複製、データベースの書き出しと最適化です。複製はファイルをコピーし、複製側に専用のデータベースを与え、その中の URL を書き換え、検索エンジンよけを設定します。ステージングが本番に書き込んだり、検索順位で上回ったりすることはありません。すべて SSH 経由の WP-CLI で動作し、WP-CLI が無いホストにはインストールを提案します。サイトをピン留めすると、更新待ち・整合性検査の失敗・新たな脆弱性をアラートが知らせます。
GoDaddy から移したサイト。GoDaddy のマネージド WordPress はすべてのサイトに必須(must-use)のシステムプラグインと Memcached 用の object-cache.php を入れ、旧来のホスティングでは wp-config.php に gd-config.php の読み込みを加えます。どれもほかのサーバでは動かず、GoDaddy のバックアップを戻すと白い画面やデータベース接続エラーで止まるのが典型です。ペインは更新時にこれを見つけて「GoDaddy の残り物を取り除く…」を表示します。ファイルは wp-config.php のコピーと一緒にサーバの ~/frontierstack-godaddy-leftovers へ移され、読み込み行はコメントアウトされ、同じフォルダへデータベースを書き出したあと、仮ドメイン *.myftpupload.com のままのリンクをサイト自身のアドレスに向けます。これらのファイルが基盤そのものである GoDaddy 自身のサーバでは実行しません。
WordPress が自前のマシンではなくマネージドホスティングにある場合も、ホスティングの各ペインがサイトを一覧します。WP Engine・Kinsta・Cloudways・Pressable は API 経由でインストール(環境・主要ドメイン・状態)を取得し、Cloud Servers で VPS インスタンスと並べて集約されるため、運用中のすべてを 1 つのインベントリで把握できます。これらはマシンではなくサイトなので、電源操作はありません。
Apps & CMS セクションは、その他のセルフホスト CMS を Apache/PHP/MySQL スタックに 1 つのフローでインストールします。各アプリは専用ペインを持ちます:Drupal・Joomla・Statamic・Grav・Kirby・Craft CMS・FreshRSS。同じインストーラを使う Magento Open Source は E-Commerce に分類されています。インストーラはアプリをダウンロード(Composer ベースの Statamic・Craft は composer create-project)してドキュメントルートに展開し、データベースが必要なもの(Drupal・Joomla・Craft)はデータベースとユーザを作成して設定を所定の場所に書き出します。フラットファイル CMS(Grav・Kirby・Statamic)はデータベース不要です。続いてアプリのセットアップ/管理ページ(/admin・/panel・/cp・/admin/install など)を開いてアカウントを作成でき、周辺の vhost・PHP・信頼された HTTPS は FrontierStack が設定します。インストール先フォルダは、Apache が既に管理しているサイトをメニューから選ぶ(ドメイン・ドキュメントルート・ポートを自動入力)か、選択…で新しい空フォルダを指定できます。新しいフォルダには対応する vhost が作成され、既存サイトのドメインなら更新されます。不具合時は上記の Fix My Site(AI) でデバッグします。
FreshRSS だけは最後まで仕上げます。セルフホストの RSS/Atom リーダで、上記の CMS と違いセットアップウィザードは一切残りません。ペインでアカウント名とパスワードを指定すると、インストーラはリリースをダウンロードし、データベースを作成し、FreshRSS 自身のコマンドラインインストーラで設定を書き出してスキーマを構築し、そのアカウントを作成して、p/ を指すバーチャルホストを登録します。p/ は FreshRSS が実際に配信するサブフォルダで、残りのコードは本来あるべきウェブルートの外に置かれます。ブラウザはインストールの第一歩ではなく、動作するリーダのログイン画面を開きます。API が Google Reader 互換のため、公開すれば Reeder や NetNewsWire などのモバイルクライアントと同期でき、本書の他章で扱う HTTPS やリモートアクセスとも自然に組み合わせられます。
Magento Open Source も別の理由で最後までインストールします。Magento はブラウザ用インストーラを廃止したため、コマンドラインからしか入れられません。ペインは bin/magento setup:install に必要な情報(管理者のユーザ名・パスワード・メールアドレス・氏名、ストアの通貨、稼働中の OpenSearch(または Elasticsearch 8)のアドレス)を集め、発見に時間のかかる問題を先に確認します。PHP が 8.2 より古い、Magento の拡張が欠けている、検索サーバが応答しない、MySQL のバージョン、の各点です。そのうえで composer create-project を実行します。取得元は既定でキー不要の Mage-OS ミラー、または Marketplace のアクセスキーを使う Adobe の repo.magento.com で、キーはこの 1 回のダウンロードだけに使い保存しません。ダウンロードは数百のパッケージからなり、通常 5〜15 分かかります。続いてデータベースを作成し、入力したアカウントでセットアップを実行し、Magento が実行時に書き込むフォルダをウェブサーバから書き込めるようにして、pub/ を配信するバーチャルホストを登録します。管理画面は /admin_k3x9qz/ のようなランダムなパスになり、ログに表示されブラウザで開きます。Magento は通常、すべての管理者にメールのリンクから 2 段階認証を設定させます。メールを送れないローカルのテストストア向けに、これをオフにするトグルがあります(.local・.test の名前では最初からオフ)。ダウンロード後にセットアップが失敗した場合は、原因を直してインストールをもう一度押すと、再ダウンロードせずにデータベースの手順から再開します。最後に、Magento はインデックス作成やメール送信を cron で行うため、ストアが動いたらインストールフォルダで bin/magento cron:install を実行してください。
同じペインでライセンス版の Adobe Commerce(オンプレミス)もインストールできます。エディションを Adobe Commerce にし、ライセンスを持つアカウントの Marketplace アクセスキーを入力します。このエディションは repo.magento.com からしかダウンロードできないためです。MySQL settings for Magento セクションは、選んだインスタンスから 3 つの値を読み取ります。バイナリログが有効な間(MySQL 8 の既定)は必須の log_bin_trust_function_creators(ないと Magento のインデクサが作るトリガを MySQL がエラー 1419 で拒否します)、64 MB 以上の max_allowed_packet、チェックした場合は 1 GB の InnoDB バッファプールです。適用は SET GLOBAL でその場で設定し、日時付きのバックアップを横に保存してから、インスタンスの my.cnf の [mysqld] に書き込みます。再起動で黙って元に戻ることはありません。サイズは増やすだけで、別ホストのサーバには編集せず追加すべき行を示します。インストール時にも同じ処理を行います。インストール後は、ペインにストアのライブ売上モニタも表示されます。Adobe がホストする Adobe Commerce on Cloud Infrastructure・Adobe Commerce as a Cloud Service・Adobe Commerce Optimizer はカタログのサービスで、それぞれ専用のモニタがあります。
ペインの名前は Magento で、3 つのタブがあります。この Mac は上で説明したインストーラです。ストアは、この Mac やフリートのどのサーバ上でも、FrontierStack が把握するすべての Magento ストアを管理します(ストアを探すでサーバのウェブルートを検索)。各ストアについて、バージョンと新しいセキュリティパッチの有無、デプロイモード、ストアフロントの応答、メンテナンスモード、cron がインストールされているかと最後のジョブの完了時刻、古くなったインデクサ、無効なキャッシュ、サーバ上での既定の /admin/ パスや 2 段階認証の欠如、今日の例外を、重大なものから順に報告します。ボタンでキャッシュのフラッシュ、再インデックス、インデクサモードの切り替え、メンテナンスの切り替え、デプロイモードの変更、メンテナンスページを出したままの安全な setup:upgrade、cron のインストール、管理者のロック解除、ログの表示ができ、常にストアのファイルの所有者として実行します。ストアを修復(AI)はストアを AI エージェントに渡し、エージェントは ecommerce ツールで同じ情報を読み、1 つずつ承認できる変更を提案します。
サーバでホストは、稼働するストアへのワンクリックの道です。Ubuntu 24.04 以降または Debian 12 以降のサーバ、ドメイン、管理者アカウントを選ぶと、FrontierStack は 11 の段階を順に表示しながら進めます。サーバの確認(メモリ、ディスク、ポート 80 にほかのサービスがないこと)、Nginx・PHP-FPM・MySQL または MariaDB・Composer・Redis のインストール、ループバック専用の OpenSearch のインストール、Magento 用の MySQL 設定を含むデータベースの作成、専用の PHP-FPM プールを持つ magento ユーザの作成、Composer での Magento のダウンロード、setup:install の実行、Magento 自身の nginx.conf.sample からの Nginx サイトの構築、本番モードへの切り替え、cron のインストール、Let’s Encrypt の証明書の取得です。所要時間は 20〜40 分です。サーバの root 権限が必要で、生成したパスワードは非公開ファイルで渡され、最後に削除されます。段階が失敗するとその理由を示して止まります。原因を直してストアをホストを再度押せば、完了済みの段階はスキップされます。新しいストアは通知がオンの状態でストアタブに加わります。
7.8Domain Registrar 監視
Sites はドメインが今日動くかを教えます。Domain Registrars ペイン(DNS カテゴリ)は、それが動き続けるかを教えます。ドメインを追加すると FrontierStack は次の 3 つをスケジュールで監視し、いずれかがずれるとアラートを発します。
- 有効期限 — 登録の終了日、レジストラ、ネームサーバ。RDAP で取得(
whoisフォールバックあり)。レジストラを問わずあらゆるドメインで機能します。 - DNS — ドメインがまだ名前解決されるか(
dig)。 - SSL — 証明書の有効期限。
opensslで直接確認。
更新警告は、有効期限がリマインダー期間内、すでに過ぎている、または自動更新がオフのときに発火します。対応レジストラでは、ペインがドメイン一覧と自動更新の状態を API で取り込めます — GoDaddy、Porkbun、Gandi、Value Domain、Route 53(AWS CLI 経由)、Cloudflare(Cloudflare トークンを再利用)。使える一覧 API がないレジストラ(Namecheap、Squarespace、お名前.com、ムームードメイン)は手動で追加しますが、RDAP は引き続き監視します。
7.14.1ドメイン会社:レジストラの稼働監視
Cloudflare のゾーンからは、ドメインの登録をどこが持っているかは分かりません。FrontierStack はピン留めした各ゾーンを RDAP で照会し、ゾーンペインのドメイン会社セクションにレジストラと現在のネームサーバを表示します。Cloudflare ペインの各ゾーン行にも active · Pro · registered at GoDaddy のように表示されます。ドメインの背後にあるレジストラと DNS ホスト(GoDaddy、Namecheap、Porkbun、Gandi、Squarespace、DNSimple、Route 53、Value Domain、お名前.com、Name.com、Hover、Dynadot、IONOS、OVHcloud、さくらインターネット、Cloudflare)を 5 分ごとに次の 3 つで確認します。
- 公式ステータス — 各社のステータスページ(Statuspage/Instatus の JSON、Route 53 は AWS の RSS)。ページに載っていれば、ドメイン・DNS・メール・ホスティング・SSL・サイトビルダーなどサービスごとの状態も表示します。
- 到達性 — Web サイトと API ホストが応答するか。
- ネームサーバ — まだその会社に委任しているドメインについて、ネームサーバが応答するか。
サイドバーのゾーンの横に黄色の建物アイコンが出たらレジストラか DNS ホストが不調、赤なら停止です。会社をピン留めすると(ゾーンペイン、ゾーンのコンテキストメニュー、ドメインレジストラのドメイン会社一覧から)サイドバーに専用の行ができ、停止時はドットが点滅します。停止するとドメイン会社アラートが発生します。ステータスページのない会社は到達性だけで判定し、この Mac がどの会社にも到達できないときは誤った障害ではなくオフラインと表示します。
7.14.2ドメインを Cloudflare へ移す
Cloudflare トークンを設定していれば、レジストラに API がある場合は次の 2 つをワンクリックで行えます。
- DNS のみ — まだ Cloudflare にないドメインは、ドメインレジストラの「Cloudflare DNS に追加…」でゾーンを作成し、現在の公開レコードをコピーしてピン留めします。レコードを確認したら、ゾーンのドメイン会社セクションの「ネームサーバを切り替え」で、GoDaddy・Porkbun・Gandi・DNSimple・Route 53 に Cloudflare の 2 つのネームサーバを設定し、Cloudflare に有効化の再確認を依頼します。その他のレジストラではコピー用に 2 つのネームサーバを表示します。
- 登録そのもの — 「Cloudflare へ移管…」は、ドメインの現在の状態を読むチェックリストを開きます:Cloudflare で DNS が有効、60 日ロックの対象外、移管ロック解除(GoDaddy・DNSimple・Route 53 はロック解除ボタンあり)、認証コード(Route 53・Gandi から取得、DNSimple はメール送付)。最後のステップで Cloudflare の移管ページを開き、そこで 1 年分の更新料を確認・支払います(移管の開始に使える API は Cloudflare にありません)。
domain ツールで実行できます。check(読み取り専用)、suggest(キーワードや事業の説明から空いている名前を探す)、register があり、最後のものは明示的な確認が必要です。Porkbun や Namecheap のキーがなくても、確認と候補探しには GoDaddy の公開検索を使います(キー不要。ただし価格は出ず、購入はできません)。登録には、保存済みのレジストラ認証情報と、一度だけ記入する登録者連絡先プロフィールを再利用します。7.9Cloudflare:ゾーン・DNS・キャッシュ・トンネル・保護
Cloudflare ペインは、API トークンを貼り付け、どのゾーンをサイドバーに表示するかを選ぶ場所です。Pin to sidebar したゾーンはそれぞれ独自のペインになり、そのゾーンの Cloudflare/DNS/HTTP/SSL 健全性、DDoS・ボット保護、WAF ルール、Workers、CDN 分析、開発モード、キャッシュパージ(全体・URL リスト・プレフィックス単位)を備えます。トークンのスコープは慎重に — 読み取り専用トークンはゾーンを一覧できますが、DNS 編集、証明書の DNS-01 検証、開発モード、キャッシュパージ、ゾーン作成にはそれぞれ専用の権限が要り、新規ゾーンの作成にはアカウントレベルの Zone · Zone · Edit 権限が必要です。「トークンを作成…」ボタンは、アプリが使うすべての権限が入力済みの状態で Cloudflare のトークン作成フォームを開きます(任意のアカウントレベルのゾーン作成権限だけは手動で追加が必要です)。「トークンをテスト」ボタンは実際の API を検査して、トークンがこれらの権限のうちどれを持ち、どれを欠くかを一覧表示します(読み取りは直接実行、書き込みは意図的に無効なリクエストで検査するため、何も変更されません)。Dashboard ボタンは現在のゾーンの Cloudflare Web コンソールへディープリンクします。
ピン留めしたゾーンに警告が出たり HTTP チェックが応答しなくなったときは、ペインの診断ボタンが、色付きドットで終わらせずに原因を突き止めます。配信経路の各レイヤを順に調べます — Cloudflare 上のゾーン状態、公開ネームサーバ、DNS 解決、エッジ経由の HTTPS(Cloudflare の 52x エラーを解読:521 オリジン停止、522 タイムアウト、524 アプリまたはデータベースのハング、525/526 オリジン TLS)、オリジンサーバのポート 80/443 への直接プローブ、そして FrontierStack がそのドメインを配信していると把握しているマシン(この Mac ならローカルの Web サーバ、連携サーバならオンホストモニタのサービス状態 — 停止中の mysql はレポートにそのまま現れます)。公開経路が壊れている場合はフリートもスイープします。どの連携サーバが稼働中か、どれがオリジン IP をバインドしているか、どれがこのドメインの vhost を既に配信できるか — オフラインになってサイトの玄関口 IP を道連れにしたホストを名指しし、引き継げるサーバも提示します。各レイヤの合否を表示し、どのレイヤが壊れ、どう対処すべきかを平易な結論としてまとめます。
Cloudflare はアプリの随所に登場します。AI の dns_record ツールは管理ゾーンにレコードを書き込み、既存レコードのその場更新 — サブドメインのプロキシ(オレンジクラウド)と DNS のみの切り替えを含む — もでき、issue_certificate は Cloudflare DNS-01 で検証でき、email_auth_dns は SPF/DMARC を公開できます(第 13 章)。同じアカウントは、ローカルサイトを公開する Cloudflare DDNS と Cloudflare トンネルも支えます — どちらも第 9 章で扱います。
7.14.3サイトが攻撃を受けたとき:Under Attack Mode
ピン留めした各ゾーンのペインの先頭には「攻撃を受けている」ボタンがあります。ゾーンを Cloudflare の Under Attack Mode(セキュリティレベル under_attack)に切り替え、すべての訪問者がオリジンに到達する前に数秒のブラウザチェックを受けるようにします。ほとんどのリクエストフラッドはこれで止まります。オンの間は JavaScript を実行できないもの — API クライアント、Webhook、モバイルアプリ、死活モニタ — もブロックされるため、オンにする前に確認があります。同じ操作はサイドバーのゾーンの右クリックメニュー(攻撃を受けている…)と Cloudflare ゾーンミニパレットにもあり、ペインを探さずに実行できます。サイドバーの赤い盾とパレットの攻撃中バッジで対象ゾーンがわかります。解除は確認なしでオフにし、以前のセキュリティレベルに戻します(FrontierStack 以外でオンにされた場合は medium)。トークンには Zone · Zone Settings · Edit が必要です。AI 管理者も cloudflare_dev_mode の action=under_attack で同じ操作ができます。
7.14.4Email Routing と Email Service
ゾーンペインのメールセクションには、Email Routing のオン/準備状態、ルーティングルールとキャッチオール、未確認の転送先アドレス(確認されるまで転送メールは破棄されます)、直近 7 日間の Email Service イベント(失敗は強調表示)、ゾーンの MX が表示されます。メール用ホスト名がオレンジクラウドになっている場合も警告します。Cloudflare のプロキシはウェブ通信しか中継しないため、プロキシされたホストへの SMTP/IMAP は失敗します — DNS のみにしてください。メール配信モニタにも、ピン留めした全ゾーンを同じトークンで読む Cloudflare Email Service セクションがあります。トークンには Zone · Email Routing Rules · Read(転送先には Account · Email Routing Addresses · Read も)が必要です。AI は cloudflare_dev_mode の action=email_status で同じ情報を読みます。
7.14.5Core Web Vitals
ゾーンペインの Core Web Vitals セクションは、Cloudflare の無料 Web Analytics から、直近 7 日間に実際の訪問者が体感した値を表示します(ボットは除外)。
| 指標 | 測るもの | 良好 |
|---|---|---|
| LCP | Largest Contentful Paint — 主要コンテンツが表示されるまで | ≤ 2.5 秒 |
| INP | Interaction to Next Paint — 入力への応答の速さ | ≤ 200 ms |
| CLS | Cumulative Layout Shift — レイアウトのずれの大きさ | ≤ 0.1 |
| FCP · TTFB | 最初の描画とサーバの応答時間(参考表示) | — |
各値は 75 パーセンタイルで、「良好」だったページ読み込みの割合と緑/オレンジ/赤の評価が付きます。サイトで Web Analytics を有効にし、トークンに Account · Account Analytics · Read が必要です(「トークンを作成…」ボタンで入力済みになりました)。AI:cloudflare_dev_mode の action=web_vitals。
7.14.6レート制限と WAF ルール
ゾーンペインのルールセクションには、ゾーンのレート制限ルールとカスタム WAF ルールが、アクション・制限(例:「ブロック、IP ごとに 10 秒間で 20 リクエスト超」)・式とともに表示されます。スイッチでルールのオン/オフを切り替えます。編集では名前・式・アクション・制限を変更できます。⋯メニューには、直前の編集前のバージョンに戻す「以前のバージョンに戻す」(FrontierStack が保持します)と、アプリからは元に戻せない「ルールを削除」があります。変更は適用するとすぐ Cloudflare に反映され、解析できない式は Cloudflare が何も変更せずに拒否します。
オレンジの警告に注意してください。ホスト名の条件がないルールは、Web サイトだけでなくゾーン内のすべてのホスト名に適用されます。/djs/ のような URL パスで一致するルールは、同じパスを含むメディア/画像ホストにも一致するため、1 ページを読み込む訪問者が画像の途中でエラー 1015(HTTP 429)でブロックされることがあります。レート制限はキャッシュより前に実行されるため、キャッシュ済みの画像でも防げません。エディタには、式を (http.host ne "host") and (…) で包む <host> を除外ボタンがあります。
「新規ルール…」では、レート制限・カスタム WAF ルール・キャッシュルール(一定時間キャッシュ、またはバイパス)・リダイレクトを作成できます。パスだけでなくホスト名(任意でパスの先頭部分)の入力を求めるため、新しいルールが気付かないうちに全ホストに及ぶことはありません。式を手で書いた場合も同じ警告が出ます。ゾーンにマネージド WAF・URL 書き換え・リクエスト/レスポンスヘッダのルールがあれば一覧に表示されます。これらはオン/オフ、名前変更、削除ができますが、パラメータ(キャッシュ TTL、リダイレクト先、ヘッダ)は表示のみで編集できません。変更するにはルールを作り直してください。
種類ごとに別のトークン権限(Zone WAF・Cache Rules・Single Redirect・Transform Rules)が必要で、表示には Read、変更には Edit です。不足している権限はペインに表示されます。「Cloudflare でルールを開く」でダッシュボードが開きます。AI:cloudflare_dev_mode の action=rules でルールを一覧し、action=rule_create で作成、action=rule_update で変更します(いずれも変更を許可と確認が必要)。ルールの無効化はできますが、削除はできません。
7.14.7セキュリティイベントと Bot Fight Mode
ゾーンペインのセキュリティイベントセクションには、直近 24 時間に Cloudflare がゾーンでブロック・チャレンジ・ログ記録したものが、発生源(レート制限、カスタムルール、マネージドルール、DDoS、ブラウザ整合性チェックなど)・ルール・ホスト名ごとに表示されます。カスタムルールとレート制限ルールの ID は名前で表示されます。オレンジの三角は、メインサイト以外のホスト名で訪問者が止められたことを示します(ページ向けのルールにメディアや画像ホストが引っかかっている場合が典型)。画像が表示されない、エラー 1015 や 429 が出ると言われたら、まずここを確認し、ルールで修正してください。
一覧の下の Bot Fight Mode は、Cloudflare の無料のボットチャレンジの表示と切り替えです。オンにする前に確認があります。正当なボット・フィード・Webhook・モニタをブロックすることがあり、無料プランではルールで除外できないためです。Zone · Analytics · Read が必要です。AI:action=security_events と action=bot_fight。
7.14.8ホスト名ごとのキャッシュ
ゾーンペインのホスト名ごとのキャッシュセクションには、直近 24 時間の各ホスト名のリクエスト数と、キャッシュ可能なリクエスト(HTML と API 応答は除く)のうち Cloudflare がキャッシュから返した割合、そしてキャッシュから返されなかった上位ファイルが表示されます。ゾーン全体のヒット率では、まったくキャッシュされない画像ホストが隠れてしまいますが、ここでは見えます。100% を大きく下回るホストは、キャッシュルールがない、オリジンが Set-Cookie や Cache-Control: no-store を返している、またはルールがキャッシュに届く前にリクエストをブロックしている、のいずれかが多いです。AI:action=cache_hosts。
7.14.9Workers
アカウントペインの Workers セクションには、各 Worker とそのルート、直近 1 日のリクエスト数・エラー数・99 パーセンタイルの CPU 時間、そしてプランの公表されている使用枠(Workers Paid は月 1,000 万リクエスト、Free は日 10 万リクエスト)に対する使用量のバーが表示されます。70% でオレンジ、90% で赤になります。Account · Workers Scripts · Read、Workers Routes · Read、Account Analytics · Read が必要で、「トークンを作成…」ボタンで入力済みになります。AI:action=workers。
7.14.10プランと通知
アカウントペインのプランと通知セクションには、アカウントのサブスクリプション(プラン、料金、状態、更新日)と通知ポリシーが表示され、ポリシーが 1 つもない場合は警告します。その場合、障害・証明書の期限切れ・Workers の使用量を知らせるものがありません。表示のみで、請求と通知でダッシュボードが開きます。Account · Billing · Read(入力済み)と Account · Notifications · Read が必要です。後者にはトークンテンプレートのショートカットがないため、手動で追加してください。AI:action=plan_usage。
7.14.11Turnstile ウィジェット
Turnstile は、登録・ログイン・問い合わせフォーム向けの Cloudflare の無料 CAPTCHA 代替です。Cloudflare ペインの Turnstile セクションにはウィジェットが一覧表示され、それぞれにサイトキーをコピーボタンがあります。新規ウィジェット…では名前、最大 10 個のホスト名、モード(Managed(推奨)、Non-interactive、Invisible)を指定します。新しいウィジェットのシークレットはコピーとシークレットをスクリプトシークレットに保存付きで表示され、保存すると $TURNSTILE_SECRET_<NAME> としてスクリプトから使えます。既存のウィジェットのシークレットも各行の ⋯ メニューから扱えます。シークレットキーをコピー(クリップボードは 60 秒後に消去)、シークレットをスクリプトシークレットに保存、シークレットをローテーション…です。ローテーションすると Cloudflare が新しいシークレットを発行し、古いシークレットも 2 時間は有効なままなので、それまでにウィジェットを検証するすべてのサーバに新しいシークレットを設定してください。スクリプトシークレットにある場合は自動で更新されます。サイトキーはページに、シークレットはサーバに置き、サーバが Cloudflare の siteverify で各訪問者のトークンを検証します。ウィジェットを削除…も同じメニューにあります。
cfat_)を拒否します。Account · Turnstile · Edit を持つユーザトークンが必要です。「トークンをテスト」はこの権限とほかのオプションのアカウントレベル権限も検査し、ネットワーク障害や Cloudflare の 5xx を不正なトークンと区別し、複数アカウントのトークンがどのアカウントに対して動作するかも示すようになりました。7.14.12名前付きトンネル:状態・通知・Access
名前付きトンネル(第 9 章)の各行には状態行があります。Cloudflare から見たコネクタの状態 — healthy・degraded・down・inactive — に加え、この Mac で動かしているトンネルではローカルポートが応答するかも確認します。トンネルが正常でも背後のサービスが停止していれば失敗するためです。ベルをオンにすると、そのトンネルまたはサービスがダウンしたときに通知します(アラートグループネットワーク/ルーティング)。保護…はホスト名の前に Cloudflare Access のサインインを置きます。メールアドレスや @ドメインを列挙し、サインインの有効期間(1 時間〜30 日)を選ぶと、訪問者はメールで届くワンタイム PIN または ID プロバイダでサインインします。FrontierStack は再利用可能な許可ポリシーとセルフホスト型の Access アプリケーションを作成します。保護中のトンネルには青い鍵が付き、Access を解除で外せます。Access にはアカウントで一度 Zero Trust を設定しておくこと(無料プランで 50 ユーザまで)と Account · Access: Apps and Policies · Edit が必要です。
7.14.13Cloudflare MCP による AI アクセス
AI アクセス(Cloudflare MCP)セクションでは、保存済みのトークンを使って AI 管理者が Cloudflare 公式の MCP サーバ(mcp.cloudflare.com)を利用できるようにします。FrontierStack にペインのない製品(WAF ルール、Workers、R2、KV、D1、Access)に役立ちます。「AI管理者にCloudflare MCPの使用を許可」をオンにして接続をテストを押します。既定では読み取り専用で、AI は Cloudflare のドキュメントと API 仕様全体を検索できるだけです。既定でオフのAPI 呼び出しを許可(execute)をオンにすると本番 API に対して JavaScript を実行できますが、実行のたびに「変更を許可」とあなたの承認が必要です。FrontierStack に接続した MCP クライアントも、hosted_mcp ツールの provider=cloudflare で同じサーバを利用できます(第 13 章のツール表を参照)。他の MCP クライアント ▸ 設定をコピーは、Claude・Cursor などのアプリ向けにトークンを含まない設定を作ります(アプリ自身が OAuth で Cloudflare にサインイン)。
mcp.cloudflare.com に送信され、AI には表示されません。応答中の資格情報(トンネルトークン、Turnstile シークレット)は伏せ字になります。execute をオンにすると、AI はトークンが許すあらゆる操作ができます — トークンの権限は最小限にしてください。7.14.14Cloudflare 開発者ツール
Cloudflare ペインの開発者ツールセクションでは、Cloudflare 公式のエージェントセットアップガイドにあるツールをインストールできます。インストールは、アプリ内コンソールで npm により Cloudflare CLI(cf、ベータ)を追加します(必要なら先に Homebrew で Node を追加)。サインイン…は cf auth login を実行し、ブラウザでアカウントを承認します(保存済みの API トークンは使いません)。Claude Code プラグインの行は、cloudflare/skills マーケットプレースを追加して cloudflare プラグイン(Cloudflare のスキルと、API・ドキュメント・バインディング・ビルド・オブザーバビリティの MCP サーバ)をインストールします。第三者のプラグインコードをインストールするため、その後 Claude Code で /reload-plugins を実行してください。この Mac に Claude Code が必要です。
7.10ホスティングプロバイダ
運用するものすべてが Mac 上にあるわけではありません。Hosting カテゴリは VPS とマネージドのプロバイダを同じウィンドウに取り込みます。VPS プロバイダ — DigitalOcean、Vultr、Linode、Hetzner、さくら ほか — は API トークンでサーバを公開します。貼り付ければ、ペインが各サーバをプラン・ロケーション・状態・IP とともに一覧し、確認付きで起動・停止・再起動できます。ダッシュボード型のプロバイダはトークンを保存し、コントロールパネル・ドキュメント・サインアップへのクイックリンクを示します。Hostinger はさらに対応が進んでいます。hPanel ▸ アカウント ▸ API の API トークンを使って、VPS の一覧と電源操作、VPS スナップショットの作成(Hostinger は VPS ごとに 1 つ保持するため、新しいものに置き換わります)、有効期限付きのドメイン一覧とホスティングのウェブサイト一覧を表示し、AI 管理者は dns_record(provider=hostinger)で DNS レコードを読み取り・設定できます。AI アクセス(Hostinger MCP)セクションでは、同じトークンで AI を Hostinger 公式の MCP サーバに接続します。書き込みを許可をオンにするまでは読み取りツールのみです。いずれの場合も認証情報は Keychain に保存され、SSH で到達できるサーバはフリートの一部になります(第 8 章)。ConoHa はコントロールパネルの API ページにある 3 つの値(API ユーザ、そのパスワード、テナント ID)でサインインし、VPS 3.0(または旧 2.0)のサーバを一覧・電源操作し、ConoHa DNS のゾーンを扱う DNS セクションを追加します。レコードはここで追加・編集・削除でき、AI も dns_record(provider=conoha)で操作できます。ConoHa DNS は ConoHa の利用者なら無料で、DNS API を持たないお名前.com で登録したドメインを API で管理する定番の置き場所です。Tencent Cloud は API キーのペア(CAM ▸ API キーの SecretId と SecretKey。SecretKey は Mac の外に出ません)で各リクエストに署名します。全リージョンの CVM と Lighthouse のサーバを一覧・電源操作し、DNSPod のレコードを管理し(AI も provider=dnspod で操作できます)、SSL 証明書を期限順に、COS ストレージバケット(ACL で公開読み取りになっているものに警告)、CDN と EdgeOne のサイト、今月の料金を表示します。国際版と中国版はアカウントが別なので、アカウントのサイトを設定してください。Tencent Cloud で登録したドメインは、ほかのレジストラと同じくドメインレジストラで取り込み、新しいドメインもそこで購入できます。Tencent が価格を提示し、アカウントの登録者プロファイルで登録して、プレビューと確認のあとで残高から支払います。
Xserver(エックスサーバー)は XServer アカウントの API キー管理で発行した API キー 1 つ(移行用の SSH 設定以外は読み取り専用で十分)で、レンタルサーバ、XServerビジネス、Xserverドメイン、Xserver VPS、Xserver VPS Cloud、XServer for WordPress を扱います。ペインはすべての契約(VPS Cloud の VPS、DB サーバ、ロードバランサ、NFS、追加 IP を含む)をプランと更新日付きで一覧し、VPS と VPS Cloud のリソースは電源操作でき、各レンタルサーバのディスクとファイル数の使用率と、期限切れや期限間近の証明書を表示し、契約を Xserver が公開している 12 か月定価付きで支出と請求に取り込み、Xserverドメインの更新をドメインレジストラに取り込みます。ライブモニタは、契約の停止、自動更新オフのまま迫る更新、上限 90% への到達、証明書の期限切れ、API キーの期限切れ間近を通知します。この Mac に移行…はレンタルサーバのサイトを手元に移します。FrontierStack が API からドメイン、ドキュメントルート、データベース、WordPress を読み取り、専用の SSH キーを登録し、各ドキュメントルートを rsync でコピーし、各データベースを、サイトの wp-config.php のパスワードによる mysqldump のライブコピーか前夜の自動バックアップから Homebrew の MySQL にコピーします。/home/xs… のパスを書き換え、WordPress ごとにローカルの MySQL ユーザを作り、サイトを Apache に追加し(公開を選ぶまでは 127.0.0.1)、DNS ゾーン、cron ジョブ、メールアカウント、切り替え手順を XSERVER-IMPORT.md に書き出します。メールは移行しません。Xserver はメールボックスもそのパスワードもエクスポートしないためです。移行の実行にはライセンスが必要ですが、一覧の取得には不要です。
7.11IndexNow:検索エンジンへの即時送信
ページが変わったとき、クローラーが気づくのを待つ必要はありません。IndexNow Manager(SEO & Marketing)は、参加エンジン — Bing、Yandex、Seznam、Naver ほか — に即座に伝えます。管理サイトの 1 つを選び、Install Key File を押すと、FrontierStack はサイトのドキュメントルートに <key>.txt ファイルを書き込み、エンジンがキー所有を確認できるようにします。Verify で配信を確認します。あとは単一の URL を送信、pending キューを一括送信、またはサイトマップから供給し、スケジュールで自動送信もできます。すべては api.indexnow.org に送られ、参加エンジンへ展開されます。URL のホストは選択中のサイトとそのキーに一致している必要があります。
gsc_verify_domain と index_site ツールでドメインを Search Console に確認し、サイトマップを送信します。Google にサインインしていれば自動で行われます。各 Domain Health 行の Index ボタンは両方の経路を一度に駆動します。7.12OpenSEO と DataForSEO:自分の SEO ツールキット
OpenSEO(SEO & Marketing)は Semrush や Ahrefs のオープンソース代替です。キーワード調査、順位トラッキング、競合分析、被リンク、サイト監査、AI 可視性を備え、AI エージェントが同じデータを使える MCP サーバもあります。ペインはまずどこで動かすかを尋ねます。
- ホスト版 — app.openseo.so。無料で試用でき、プロジェクト支援は月額 $10。SEO データは OpenSEO クレジット(DataForSEO の価格+28%)で課金されるため、自分の DataForSEO アカウントは不要です。
- この Mac の Docker — セットアップして開始で
ghcr.io/every-app/open-seoを取得し、http://localhost:3001で起動します。プロジェクトはopen_seo_dataボリュームに保存されるため、設定を適用して再起動(キーやポートの変更後)とアップデート(最新イメージ)でも保持されます。OpenSEO のテレメトリは既定でオフです。OpenRouter キーを共有すると SAM エージェントを有効にできます。 - 他所でセルフホスト — 既存インスタンスの URL を入力するか、Cloudflare にデプロイ…を押します。FrontierStack はリポジトリを取得し、DataForSEO キーと Cloudflare Access で許可するメールアドレスを所有者のみ読める
.env.selfhostに書き込み、アプリ内コンソールでpnpm deploy:selfhostを実行します。初回は Cloudflare へのサインインがあり、OAuth スコープのカスタマイズに「はい」と答えてaccess:writeを有効にします。表示された Worker URL を Instance URL に貼り付けます。
ライブ監視はインスタンスの /api/health を読みます。ここには DataForSEO キー、データベース、認証モード、AI、Search Console のセットアップチェックが並びます。アラートを受け取るを固定すると、失敗したチェックでアラートが出ます。oseo_ API キーを貼り付けると MCP エンドポイントで検証されるため、失効したキーも検出できます。AI エージェント欄では MCP URL、claude mcp add コマンド、Claude Desktop/Cursor 設定をコピーできます。API キー版はシェルの $OPENSEO_API_KEY を読むため、FrontierStack がキーをクリップボードに置くことはありません。
DataForSEO は OpenSEO のデータソースで、独自のライブ監視を持ち、OpenSEO ペインにも組み込まれています。app.dataforseo.com ▸ API Access の API ログインとパスワード(ダッシュボードのパスワードではありません)を入力するか、ログインを空にして長い Base64 資格情報を貼り付けます。監視はプリペイド残高、本日の利用額、API 呼び出し数を表示し、本日の利用額がしきい値を超えたときや、設定した下限を残高が下回ったときにアラートできます。セルフホスト版 OpenSEO も同じ資格情報を使うため、入力は一度で済みます。
7.13サイトの複製:マシン間でのコピー
サイトの複製ペイン(セットアップと移行)は、Web サイト(ファイルと MySQL データベース)を現在の場所から別の場所へ、番号付きの 4 つの手順でコピーします。サイトの現在の場所(この Mac、ピン留めしたサーバ、または SFTP/FTPS で接続するホスティングアカウント)と、コピーの行き先(この Mac、ピン留めしたサーバ、新しいサーバ…、またはホスティングアカウント)を選びます。サイトとデータベースを探すは、サーバの Web サーバが公開しているフォルダとデータベースを一覧にするので、入力せずに選べます。新しいサーバは複製の開始時に SSH で連携され、サイドバーにピン留めをオンにするとその後もほかのサーバと一緒に残ります。データベースは 1 回だけコピーするか、MySQL レプリカとして同期し続けることができます。同期では、複製元にレプリケーション用ログインを作成し、バイナリログの位置がわかるダンプを読み込み、そのデータベースだけを運ぶレプリケーションチャネルをコピー側で開始します。確認は何も変更せずに先に両側をテストし、レプリカを妨げるもの(8.0.23 より古い MySQL、オフのバイナリログ、127.0.0.1 でしか待ち受けない複製元)を示します。
ほかにも、手作業の rsync なしにサイトを移す 2 つのツールがあります。Copy Websites Between Apache はローカルのケースを扱います — Mac に複数の Apache インストール(例えば Homebrew のものと古い Server.app のもの)があるとき、ソースのインストールを選び、移したいサイトにチェックを入れると、FrontierStack はそのドキュメントルートと vhost 定義を、現在選択中の Apache にコピーします。同じドメインのサイトは上書きされるので、移行後の再取り込みにも使えます。
サイトを別のマシンへ移すには、AI の promote_site ツールがローカルサイトを指定したフリートホストにクローンします — ドキュメントルートをアップロードし、向こう側に vhost(Apache または Nginx)を書き、Web サーバをリロードし、新しいホストを指す Cloudflare A レコードを追加できます。手動のフリートプッシュと同じ手順を、1 回の呼び出しで行います。
7.14新しい Web プロジェクトのプロビジョニング
以上の部品が組み合わさり、プロジェクトのインフラをゼロから立ち上げる単一のフローになります。発想は明快な役割分担です — あなたの AI ツール(MCP 経由)がコードを担い、FrontierStack がインフラを担います。組み込みの Provision Web Project スキルが、アシスタントをレシピの順に導きます。
- 確認 — ターゲット、特権アクセス、導入済み Apache/Nginx、接続済み DNS プロバイダを確認し、公開変更の前に不足する前提サービスを特定または導入します。
- ゾーン —
cloudflare_zone_createが Cloudflare ゾーンを作り、レジストラで設定するネームサーバを返します(トークンにアカウントレベルのゾーン作成権限がなければ率直に伝えます)。 - vhost とフォルダ —
vhost_createが Apache/Nginx サイトを定義します。ドキュメントルートが未指定なら、FrontierStack がプラットフォームに適した空フォルダを作成し、パスを返します。サイトのデザインやコンテンツ生成は行いません。 - DNS —
dns_recordが名前をホストに向けます。 - TLS —
issue_certificateが Let's Encrypt 証明書を発行します。 - プレビュー — localhost のテスト地点のための一時的な共有(第 9 章)。
- プロモート — 任意で
promote_siteがフリートホストにクローンします。
ドメインの登録は domain_register でこのレシピの先頭に加えられるため、エージェントは原理的に、名前を買い、ゾーンを作り、vhost を立て、証明書を発行し、フリートにクローンできます — 課金やシステム変更を伴う各手順は、必ず先にあなたの承認のためプレビューされます。
第 III
サーバを 1 つのフリートにまとめ、Mac・Linux・BSD・Raspberry Pi・Windows をひとつのウィンドウからネットワーク化・堅牢化・監視します。
第 8
サーバ連携:ロケーションとフリート
1 台の Mac は始まりにすぎません。FrontierStack は SSH で運用中の全サーバに手を伸ばし、そのとき自分がネットワーク上のどこにいるかも把握します。
ここまでは目の前の Mac の話でした。本パートでは視野を一気に広げ、運用環境全体を扱います。ラック内の Linux、いまも macOS Server が動く旧来の Xserve、棚の Raspberry Pi、クラウド VPS、そして Windows ホストまで。それぞれを SSH で一度連携すれば、FrontierStack はそれらを単一のフリートとして扱います。診断を実行し、コマンドを一斉展開し、サイトをデプロイし、健全性を見守ります。さらに、この Mac がネットワーク上のどこにいるかも把握するので、自宅・オフィス・カフェを移動するノートでも、いま単に見えないだけのサーバについて誤報を出すことはありません。
本章では連携とフリートの運用を扱います。第 9 章はネットワークと境界を、第 10 章は堅牢化とセキュリティ監査を、第 11 章は継続的な監視とアラートを掘り下げます。AI 管理者は同じツール群でここのほとんどを操作できます(第 13 章)。
8.1ロケーションとプレイス
Locations & Places ▸ Locations を開きます。ロケーションとは、名前を付けたネットワーク(Home・Office・On VPN)にすぎず、複数の信号から認識されます。Wi-Fi の SSID、ルータ(ゲートウェイ)の MAC アドレス、Wi-Fi の BSSID、IP アドレスのサブネットプレフィックス(例:192.168.1.)、グローバル IP のブロック、そして VPN が有効かどうかです。ヘッダーは今どこにいるか(Now: Office)を示し、その下にライブのスナップショット(Wi-Fi 名・IP・ゲートウェイ・VPN 状態)が並びます。検出は 30 秒ごとに走ります。
FrontierStack が見覚えのないネットワークを検出すると「新しいネットワークを検出」のバナーを表示します。「追加…」で保存できます。「現在のネットワークをロケーションとして追加」を押してから条件を調整することもできます。ロケーションは設定したすべての条件が成立したときに一致し(SSID とルータ MAC はいずれか一致)、空欄の項目は無視されます。複数が一致した場合は、リストの先頭ではなく最も限定的なものが採用されます。モードピッカーで自動検出の代わりに手動で固定することもでき、信号が曖昧なときに便利です。
信号の信頼度は同じではなく、この違いは見た目以上に重要です。サブネットは identity ではありません。家庭用ルータもカフェもホテルも 192.168.1.× を配るため、サブネットだけで定義したロケーションはまったく別の建物にも平然と一致します。ルータ MAC が最も強い信号です。1 台のハードウェアに固有で、特別な許可なしに読み取れます。ルータ照合が存在する前に保存したロケーションには、「現在のネットワークからすべての条件を更新」がワンクリックの修正になります。
8.22.1GPS で場所をピン留めする
やっかいなケース — 2 つの拠点が本当に同じサブネットを使っていて、MAC アドレスをいじりたくない場合 — では、ロケーションに GPS ピン を持たせることもできます。その場所に立って対象のロケーションを開き、「Pin This Spot (GPS)」を押します。半径スライダで「ここ」とみなす範囲を設定します(既定 150 m。屋内測位は粗く、拠点は点ではなく建物だからです)。
ピンは相互参照であり、必須条件ではありません。役割は 2 つです。弱い一致を裏付けること、そしてより有用なこととして、誤った一致を拒否することです。これにより、同じサブネットを使うカフェを Home と判定しなくなります。検出が悪化しないよう、共有されうる条件(サブネット、VPN の有無)だけで識別されたロケーションは、位置情報が得られていてそれと矛盾する場合、確定として報告されなくなりました。自信を持った誤答の代わりに Away / Unknown が表示されます。
デバイスもロケーションに属します。Device Discovery で、監視デバイスの ⋯ メニュー ▸ Assign to Location から特定の拠点に配置できます。自動のままにすると、そのサブネットを持つロケーションに入ります。デバイス自身のペインからも設定でき、各ロケーションの行には割り当て済みデバイスが一覧されます。プライベートサブネットは拠点間で重複するため、別の拠点でピン留めしたデバイスがサブネット別にロケーションへ入ることがあります。一覧の ×(または No Location)で除外すると、同じサブネットでも戻りません。Mac が認識済みのロケーションに到着すると、FrontierStack はそれらのデバイスを確認し(VPN 経由などで最近確認済みのものはスキップ)、状態を色で示します:緑=到達可能、赤=ここにあるはずなのに応答なし、オレンジ=この Mac が到達できない Wi-Fi セグメント上(別のアクセスポイントや帯域が典型。Mac が 5 GHz のときの 2.4 GHz 専用センサーなど)。オレンジは「消えた」ではなく「ここからは確認できない」という意味です。
リンクするサブネット。ロケーションは、Mac が直接つながっていないサブネット上のデバイスもまとめられます。リンクするサブネット欄に 10.20.0.0/24 のような IPv4 CIDR を入力するか、tailnet 上のサブネットルートを一覧する Tailscale ルートメニューから選びます。Tailscale のサブネットルータ経由で届く離れた拠点に、その拠点のデバイスを持たせる方法です。リンクしたサブネットはデバイスの配置だけに使われ、別のロケーションの同じように見えるサブネットプレフィックスより優先されます。ルーティングされたサブネットはどこからでも応答するため、Mac がそのロケーションに「いる」と判定されることはありません。tailnet の 100.x アドレスは tailnet 全体に散らばっているので、それらのデバイスは手動で割り当ててください。
同じアドレス、別のハードウェア。2 つの拠点がどちらも 192.168.0.1 にルータを置いていることがあるため、FrontierStack はアドレスだけを信用せず、ハードウェア(MAC)アドレスでルータとデバイスを識別します。ピン留めしたルータは MAC が一致したときだけ稼働中とみなし、ロケーションのルータ MAC と一致するルータはそのロケーションに属します。ルータ MAC なしで保存したロケーションは、次にアクセスポイント(BSSID)か、Wi-Fi 名とピン範囲内の GPS 位置で識別されたときに自動で MAC を記録します。トラベルルータはどこでも同じ名前になるため、Wi-Fi 名だけでは記録しません。デバイスのアドレスが変わったとき(多くは DHCP の新しいリース)は、MAC がわかっているピン留めデバイスが信頼済みロケーションの LAN で応答しなくなると、そのサブネット全体で MAC を探し、新しいアドレスにピンを移します(Followed by MAC from …)。この確認はサブネットごとに最大 5 分に 1 回で、見つからない間は 1 時間に 1 回まで間隔を延ばします。
これらすべての狙いは「ロケーション依存の監視」セクションです。Overview ▸ Alerts でデバイス・Wi-Fi・Cloudflare ゾーン・ウォッチを重要としてマークし、ここで「Office のときのみ」に絞ります。そのチェックは他の場所では一時停止され、ホテルから NAS が DOWN と鳴ることも、職場で自宅 Wi-Fi が失われたとアラートが出ることもありません。一時停止された項目は戻れば静かに再開します。ロケーション自体が変わったときは、ローカル通知の表示、Messaging Gateways 経由の「📍 Now at: Office」アラート送信、またはその両方が可能です。
get_location ツールでこれを読めます。アクティブなロケーション、判定方法(固定か自動検出か)、ライブのスナップショット、そして設定済み各ロケーションの条件です。これを使って、LAN 限定サービスが今いる場所から到達可能か、VPN で外出中かを推論します。8.2SSH によるサーバ連携
サーバは「Link a Server」シート(デバイスのペイン・Device Discovery・Cloud Servers/Remote Tools ペインから開けます)でフリートに加わります。名前、ホストまたは IP、ポート、SSH ユーザ名(root・ubuntu・ec2-user など)、ログインパスワードを入力します。そのパスワードは一度だけ使われます。アプリがこの Mac の管理対象 SSH 鍵をサーバの authorized_keys に入れ、以降は鍵のみで接続します。保存されるのはサーバのアドレスだけで、パスワードは破棄されます。
パスワードログインのない鍵専用サーバでは、「パスワードが使えない場合は鍵を手動でインストール」を展開し、表示された公開鍵を自分で authorized_keys にコピーしてから連携します。「監視ヘルパーも併せてインストール」にチェックを入れると、同じ手順でホストモニタを設定できます(後述)。
Windows と Tailscale のサーバ。OpenSSH を有効にした Windows PC も同じ手順で連携できます。FrontierStack が Windows のシェルを検出し、PowerShell で鍵をインストールします。管理者アカウントでは C:\ProgramData\ssh\administrators_authorized_keys(sshd が要求するアクセス権付き)に、それ以外ではユーザの .ssh\authorized_keys に追加します。サーバの SSH ホスト鍵は FrontierStack 独自の信頼ストアに記録されるため、~/.ssh/config が一部のアドレスのホスト鍵を破棄する設定(Tailscale 向けに Host 100.* と UserKnownHostsFile /dev/null を指定する例はよくあります)でも連携できます。
ログインシェルが sh 以外のサーバ。FreeBSD の root(FreeBSD 13 以前は csh または tcsh)、OPNsense のコンソールメニュー用シェル、fish を使うユーザでも、通常どおり連携してコマンドを実行できます。FrontierStack はアプリを起動するたびに、最初のコマンドの前にサーバのログインシェルを 1 回だけ確認します。sh 互換でなければ、スクリプトをそのシェルに解釈させず、そのまま /bin/sh に渡します。sh・bash・zsh・ksh・dash のサーバには、これまでどおりコマンドを送ります。
連携サーバには到達性を示す小さな緑/赤のステータスドットが付きます。Permission denied (publickey) で赤くなった場合(通常はサーバ再インストール後や鍵が未インストールのとき)、AI ツール repair_ssh_access が古いホスト鍵を消して管理対象鍵を再インストールします。一度きりのログインパスワードはボールトの秘密情報として保持され、ローカルで読み取られて鍵アクセスを再設定します。成功するとドットは再び緑になります。
ホストのステータスセクションには接続行も表示されます。サーバのデフォルトルートを実際に担うもの — ネゴシエートされたイーサネット速度(10 GbE、2.5 GbE、1 GbE)、Wi-Fi 世代(Wi-Fi 7 = 802.11be、Wi-Fi 6E/6/5)とチャネル幅、または VPN トンネル — を示します。Linux・macOS・FreeBSD ホストでは通常のステータスプローブ時に読み取り、エージェントのみのホストではホストモニタ(v1.17 以降)が報告します。同じ行は この Mac にも表示され、SNMP デバイスでは Interfaces クエリが各ポートのネゴシエート済みリンク速度を一覧表示するようになりました。
各サーバには対話型シェル用の接続方式設定(編集シート内)もあります。通常の SSH(既定)、mosh — SSH 設定でログインした後、独自の UDP トランスポートに切り替わり、スリープ・ネットワーク切替・不安定な回線でもセッションを維持 — 、または実験的な SSH3(QUIC/HTTP3 上で動作し、サーバは UDP 443 の秘密 URL の背後に隠せます)です。「シェルを開く」と「SSHを開く」はこの選択に従い、プローブとファイル転送は常に通常の SSH を使います。両クライアントはサービスカタログにあります(mosh は Homebrew、SSH3 は Go)。
repair_ssh_access ツールは一度きりのパスワードをローカルの .env ボールトから名前で読み取り、値が AI モデルに送られることはありません。8.3管理対象鍵と保存された sudo パスワード
鍵アクセスでアプリは接続できますが、多くの有用な操作(/var/log の読み取り、Apache 設定の編集、ファイアウォールのリロード)にはサーバ上の root が必要です。FrontierStack はホストごとの sudo パスワードでこれを扱い、macOS キーチェーンに保存します(平文ファイルには決して書きません)。サーバ連携時に自動取得され、後からホストのペインや Remote Tools のターゲットセクション(Sudo password 欄)で設定・変更できます。
root 限定のコマンドを実行するとき、ヘルパーは SSH セッション越しに保存済みパスワードで sudo の資格情報キャッシュを準備してからコマンドを実行します。パスワードが保存されていない場合、root 操作はパスワード不要の sudo -n にフォールバックし、それも未設定なら単に「needs sudo」と報告します。秘密情報は名前で参照されるため、複数を保持できます。たとえばサーバごとに異なる MySQL パスワードを .env ボールトに置けます。
sudo -S へ渡され、AI モデルに表示されることもログに書かれることもありません。欄を空にすれば失効でき、1 台だけ再登録・再鍵化しても他には影響しません。8.4Fleet Run — 全ノードへ 1 コマンド
Fleet & Remote ▸ Fleet Run は、単一の操作をすべての連携サーバ(または選んだ一部)へ一斉展開し、ホストごとのライブ結果を返します。Targets を選び(ホストをトグル。到達性ドットで起動中が分かります)、Operation を選んで「Run on N Server(s)」を押すと、すべてが SSH 上で並行実行され、各ホストが下に結果を返し、展開すれば全出力が見られます。
操作は OS を認識します。パッケージ更新はホストに応じて apt・dnf・pacman・zypper・apk・brew に割り当てられ、サービス再起動は systemd を試してから Homebrew にフォールバックします。OS ごとのコマンドを手で書く必要はありません。
| 操作 | フリート全体で行うこと |
|---|---|
| 全パッケージの更新/アップグレード | ホストのパッケージマネージャの update + upgrade を実行。展開前に確認します。 |
| パッケージのインストール | 指定パッケージ(例:htop)を選択した全ホストにインストール。 |
| サービスの再起動 | 指定ユニット(例:nginx)を systemd または brew で再起動。 |
| 再起動要否のチェック | 更新後に再起動待ちのホストを報告。 |
| ディスク使用量(df) | フリート横断の df で逼迫したディスクを発見。 |
| 稼働時間と負荷 | ホストごとの稼働時間とロードアベレージ。 |
| リポジトリの git pull | 各ホストの指定パスでリポジトリを pull。手早いデプロイ。 |
| カスタムコマンド | 選択した全ホストでシェルコマンドをそのまま実行。展開前に必ず確認。 |
| PHP のバージョンとセキュリティ修正 | 読み取り専用。各ホストの PHP をすべて一覧にし、php.net にあるそのブランチの最新リリースと比べます(下記)。 |
Fleet Run はドリフトを見つける最速の手段です。ディスク使用量や稼働時間と負荷を実行してホストをひと目で比較するか、次の Remote Tools にあるファイルチェックサムやヘルスチェックで、フリート間で食い違った設定を見つけられます。
PHP のバージョンとセキュリティ修正は、PHP のセキュリティリリースのたびに生じる「どのサーバにまだ必要か」という問いに答えます。各ホストの PHP(Homebrew、MacPorts、MAMP、Apple 標準、ディストリビューションのパッケージ、SSH 経由の OPNsense や pfSense のファームウェア)をすべて一覧にし、ホストが php-fpm、php-cgi、mod_php で Web に PHP を提供しているかを示し、それぞれを php.net にあるそのブランチの最新リリースと比べます。セキュリティリリースより古いものや、修正が提供されなくなったブランチのものには、結果に印が付きます。何も変更しません。印が付いたら、AI プロンプトをコピーで Claude Code、AI 管理者、またはほかのエージェント向けのプロンプトをクリップボードに入れます。見つかったサーバとバージョンを示し、各サーバの入手元から PHP を 1 台ずつアップデートし、変更のたびに確認を求め、PHP を提供しているものを再起動して新しいバージョンを確かめるよう、エージェントに依頼する内容です。
8.5コンテナの作成 — この Mac にも、サーバにも
FrontierStack がコンテナを一覧する場所には必ず コンテナを作成… ボタンがあり、いずれも同じシートを開きます。この Mac 用の Docker ペイン、ホストピッカーで連携サーバを選んだ同じペイン、サーバアクティビティウィンドウの Docker タブです。作成したものは、開始した対象で実行されます — ローカルなら docker バイナリ経由、サーバなら既存の SSH 接続経由です。
プリセットから始めることも、空から始めることもできます。プリセットにはプレーンなイメージ — nginx、PostgreSQL、MySQL、Redis、使い捨ての Ubuntu シェル — に加え、アプリが単一コンテナとして実行できるセルフホスト可能なサービス(n8n、Flowise、Langflow、Vaultwarden、Checkmk など)がすべて含まれます。選ぶとイメージ、ポート、ボリューム、環境変数が入力され、あとから変更できます。docker-compose スタックが必要なサービスは、この Mac 上の専用ペインからインストールします。対象はシートに明記されます。
| 項目 | 内容 |
|---|---|
| イメージ | イメージ参照。対象に既にあるイメージのメニュー付き。 |
| 名前 | 省略可。対象で使用中の名前と照合します。 |
| 公開ポート | 各行のこのマシンのみで 127.0.0.1 にバインド。指定しない限りネットワークには公開しません。 |
| ボリューム | 単なる名前は Docker 管理のボリューム、/ で始まるパスは対象上のフォルダ。 |
| 環境変数 | シークレット指定するとパスワードとして入力し、プレビューでは隠れます。 |
| 詳細設定 | 再起動ポリシー、ネットワーク、コマンドの上書き、追加の Docker 引数、バックグラウンド実行の有無。 |
実行前に、シークレットを伏せ字にした docker run のコマンドがそのまま表示され、コピーできます。作成時はまずイメージを取得し(オフにもできます)、続いて実行して出力をシートに表示します。
docker グループにいない場合、パスワード不要の sudo docker にフォールバックします — 新しい Linux サーバでの最初の試行が権限エラーになる典型的な原因です。8.22.2モニタとしての Containers ボード
Containers ペインは一覧であるだけでなく、この Mac のすべてのランタイムを 1 つの判定にまとめたステータスドットを持ちます。サイドバーを一目見れば、対応が必要かどうかが分かります。緑はインストール済みのものがすべて正常、オレンジは停止中または確認中、赤はインストール済みエンジンの停止、あるいはコンテナの unhealthy・再起動ループ・エラー終了です。一度もインストールしていないランタイムは異常とは見なしません — つまり緑は「すべて実行中」ではなく「存在するものがすべて正常」を意味します。
セクションの並びはサービス一覧と同じで、Apple Containers、Docker、Kubernetes、OrbStack、コンテナマシン、Vagrant の順です。Kubernetes はここでは読み取り専用で、Kubernetes Clusters でピン留めしたクラスタを表示します。ピン留めとクラスタごとの操作は同ペインに残ります — そちらはこの Mac の中だけでなく、どこで動いているクラスタでも監視するためです。未インストールのランタイムでは、ダウンロードページではなく導入用のペインを開くボタンが表示されます。
ヘッダのピンボタンは、小さなフローティングパレットを開きます。全体のドットと実行数を示すステータスバーが 1 行あり、その下に実行中のものの短い一覧、さらに設定済みで待機中のものを Waiting としてまとめます。画面の隅に置いたまま別の作業ができるよう、意図的に小さくしてあります。行をクリックすると、メインウインドウがその項目へ移動します。
8.22.3Docker Swarm
Swarm は別途インストールする製品ではなく、Docker エンジンに組み込まれています。FrontierStack が専用ペインを設けず Docker ペインから監視するのはそのためです。表示中のエンジンが swarm に参加していると Docker Swarm セクションが現れ、クラスタのノード(Ready か Down か、drain 中か、どれがマネージャか)とサービスをレプリカ数とともに一覧します — 必要なタスクがすべて揃っていれば 3/3、足りなければ 1/3 のように表示されます。サーバアクティビティウインドウの Docker タブにも Swarm セグメントとして同じ内容があり、連携サーバからクラスタを確認できます。
状態はペインがエンジンの健全性確認で既に実行している docker info から取得するため、swarm に参加していないマシンでは追加のコストがかかりません。表示内容を左右する Swarm の規則がひとつあります — クラスタを一覧できるのはマネージャだけです。ワーカーに尋ねてもデーモンが拒否するため、FrontierStack は失敗に見える空の表ではなく、その旨をはっきり表示します。
8.22.4既成のスタック
1 つのコンテナではなく、単独では役に立たない複数のコンテナで成り立つものがあります。Containers ペインとサーバアクティビティウインドウの Docker タブにある Install Stack… は、その一群をまとめて導入します。標準で 4 つを用意しています:*arr メディアスタック(他のアプリが参照するインデクサ一覧を持つ Prowlarr、連続ドラマの Sonarr、映画の Radarr、音楽の Lidarr、書籍の Readarr、字幕の Bazarr、そしてダウンロードクライアント)、監視(Prometheus、Grafana、node-exporter)、メディアサーバ(Jellyfin、任意でリクエスト用の Jellyseerr)、そして Immich(サーバ・機械学習・Redis・PostgreSQL の 4 つを本当に必要とするセルフホスト写真ライブラリ)。
含めるメンバー、設定とメディアのフォルダ、コンテナが書き込むユーザとグループ、そしてスタック全体を既存の待ち受けから一括でずらすポートオフセットを選べます。公開ポートは、指定しない限り 127.0.0.1 にバインドします。FrontierStack はプロジェクトフォルダに docker-compose.yml を書き出し、docker compose up -d を実行します。スタックをスタックたらしめているのが compose です — メンバーはネットワークを共有し、名前で互いに到達できます。Sonarr のインデクサ設定が単に http://prowlarr:9696 で済むのはそのためです。
docker compose up -d を実行することです — FrontierStack が何かを隠しているわけではありません。container CLI には compose 相当がなく、カスタムネットワークではまだ他のコンテナを素の名前で解決できないため、スタックに必要な相互参照が成立しません。8.22.5Apple コンテナと、推奨する GUI
Apple シリコンでは、Apple 自身の container コマンドにより macOS が Linux コンテナをネイティブに実行できます。1 つの大きな Linux VM を共有するのではなく、コンテナごとに軽量な仮想マシンが割り当てられます。Containers ペインの Apple Containers セクションがこれを担当し、実行中のものを一覧し、コンテナシステムを起動/停止し、イメージを取得し、新しいコンテナを作成します — 上記の Docker セクションと同じ構成です。Apple のツールはコマンドラインプログラムで、FrontierStack は GitHub のリリースから導入します。
Apple コンテナの日常的な操作には、Davit を推奨します。同じ container コマンドに本格的なグラフィカルフロントエンドを与える独立した macOS アプリで、サブコマンドを覚えなくても、コンテナとイメージの閲覧、起動と停止、ログの追跡ができます。Apple Containers セクションから Homebrew cask で導入し、そのまま開けます。Davit には Apple シリコンと macOS 15 以降が必要です。
container CLI を操作するため、両者の表示が食い違うことはありません — ただし、どちらにとっても対象となる Apple の container のインストールは必須です。Davit だけを入れても動きません。8.22.6サーバ上の Watchtower
Watchtower は新しいイメージを取得してコンテナを作り直し、Docker コンテナを最新に保ちます。連携サーバで動いていると、FrontierStack は定期ステータス確認でそのコンテナを見つけ、設定とログを SSH 経由で最大 1 時間ごとに読み取ります。サーバペイン、サーバアクティビティウィンドウの Docker タブ、コンテナの下の Watchtower ペインに、前回のスキャン(確認・更新・更新失敗したコンテナの数)を表示します。スケジュールとモード、それ以降のエラーも表示します。通知 URL や API トークンは読み取りません。Watchtower が停止したとき、Docker に拒否されたとき、更新に失敗したとき、スキャンが届かなくなったときにアラートが出ます。
containrrr/watchtower は 2025 年 12 月にアーカイブされました。Docker Engine 29 以降はその API バージョンを拒否するため、何も更新せずに再起動を繰り返します。FrontierStack はその原因を示し、アーカイブ済みのイメージのままのサーバに印を付けます。同じオプションを使える保守中のフォーク nickfedor/watchtower に切り替えてください。Watchtower ペインにそのまま使える docker run コマンドがあります。
8.6Remote Tools — ノード単位の診断
Fleet & Remote ▸ Remote Tools は、実際のフリートデバッグ作業から抽出した SSH 駆動の診断スイートです。まずターゲット(固定サーバ、または保存していないアドレス用の Other (IP / host)…。その sudo パスワードもキーチェーンに保持されます)を選び、次にツールとそのパラメータを選びます。読み取り専用チェックに root は不要で、保護されたログや設定を読むものは保存済み sudo パスワードをヘルパー経由で使い、一部はmutating(変更あり)と表示されます。
| ツール | 用途 |
|---|---|
| Ping・Traceroute・Whois | 選んだノードからの基本的な到達性・経路・登録情報の照会。 |
| Net Info・Netstat | インターフェイスとアドレス。ルーティングテーブル、インターフェイス/プロトコル統計、アクティブソケット。 |
| Port Scan・Port Check・Web Check | 範囲スキャン、単一ポートのテスト、HTTP/HTTPS エンドポイント取得とステータス報告。 |
| TLS Inspect・TLS Expiry | 証明書の検査。選択ノード横断で有効期限を一括チェック。 |
| System Resources・Listening Ports | ノードの負荷・メモリ・ディスク。待ち受け状況(必要なら sudo で)。 |
| Tail Log・Config Test | 任意のログパスを tail。Web サーバ設定を検証。 |
| File Diff・Healthcheck | ファイル内容をノード間で比較(ドリフト)。各ノードでループバック越しに vhost のパスを叩く。 |
| rsync Deploy | ローカルフォルダをリモートパスへ送信。ドライランのプレビューと任意の --delete 付き。 |
| Security・SSH・Exposure・Auth・User 監査 | 任意のノードや IP に対する読み取り専用監査(第 10 章)。 |
| Flush DNS・Restart Backend | リゾルバキャッシュのフラッシュ。macOS Server の Web バックエンドを再起動(mutating — サイトが一瞬途切れます)。 |
一部のツールは複数の選択ノードに同時に働きます。File Diff・Healthcheck・TLS Expiry・配信経路診断(Serving Path Diagnosis)(どのノードが稼働中か、各ノードがどの公開 IP をバインドしているか、プロセス単位の CPU 飽和と停止中サービス、そしてピン留めした全 Cloudflare ゾーンのオリジン IP との照合)は設計上フリート横断で、すべての Web ノードが同じ内容を有効な証明書で配信していることを確認するのにまさに使えます。ペイン下部では、/etc/hosts(root、ヘルパー経由)と SSH ユーザ自身の ~/.ssh/known_hosts を SSH 越しに安全に編集でき、各保存はまず .fsbak にバックアップします。
8.7ホストモニタ(リモートエージェント)
SSH 診断はオンデマンドです。継続的な可視性にはホストモニタをインストールします。サーバ上に常駐する小さな読み取り専用の Go ヘルパー(fsagent)で、サイクルごとの SSH なしに自分の健全性を報告します。連携ホストのペインからインストールを選ぶ(または Link a Server のチェックボックスをオンにする)と、既存の鍵越しにアプリがホストの OS とアーキテクチャに合ったバイナリを送り、プラットフォームのサービス(systemd・launchd・BSD の rc.d)を設定し、その TLS 証明書をピン留めします。AI ツール install_monitor も要求に応じて同じことを行います。
LAN と Tailscale の両方で待ち受け。モニタは、この Mac がインストールに使ったアドレスに加えて、サーバ自身の LAN アドレスと Tailscale アドレスで待ち受けます。すべてのインターフェイスや、グローバルアドレス・コンテナのブリッジアドレスでは待ち受けません。一方のアドレスで応答しなくなると(オフィスを離れて Tailscale 経由で接続している場合など)、同じ固定済み証明書を示す別のアドレスに自動で切り替えます。バージョン 1.22 より前にインストールしたモニタは 1 つのアドレスでしか待ち受けません。モニタを検出が「動作中だが届かない」状態を知らせ、「SSH経由でインストール・登録」で更新できます。
登録されると、モニタはライブのメトリクスをストリームします。CPU・メモリ・マウントごとのディスク・起動中のネットワークインターフェイス、検出されたサービス、ファイアウォールと fail2ban の状態、そして GPU ホストでは GPU ごとの温度と使用率を報告し、マイニングや ML のリグでも温度が把握できます。list_monitors はフリートのヘルパー、バージョン、最新メトリクスを報告します。重要なのは、モニタは Mac アプリがオフラインのときでも監視を続けてアラートでき、自前のチャネルで直接通知し、アプリが戻れば蓄積分を再送します。ログウィンドウもモニタを優先します。サーバ上で root として動くため、sudo パスワードなしで特権ログを読めます。
登録済みホストのペインには動作と履歴チャートも表示されます。CPU・メモリ・ディスク・温度を5分解像度で最大30日分描画し、学習したベースラインで異常を検出します。温度は専用の摂氏スケールを使うため、パーセント表示のリソース使用率と並べても読み違えません。赤い縦線が同じタイムライン上にインシデントを示します。実線の赤はサーバの再起動(報告された稼働時間から導出)、オレンジの破線はウォッチドッグの問題 — サービスの強制再起動、データベース破損警告、再起動エスカレーションです。OS のクラッシュレポータが CPU を使い始めた場合(プロセスが繰り返しクラッシュしている状態)はオレンジの Crashes 曲線も加わり、「昨夜 MySQL が2回強制再起動され、何かがクラッシュループしていた」ことが一目で分かります。グラフの下のクラッシュログを開く…で、サーバのクラッシュ・ハング・パニックレポート(macOS の DiagnosticReports)をログビューアで開き、その曲線がどのプロセスによるものか確認できます。

モニタは既定で読み取り専用です。Host Monitor ペインでAllow actionsをオンにすると、小さく固定された制御動詞(任意シェルは決して含みません)が解放され、ゲートされた monitor_action ツールで駆動されます。許可リスト内サービスの restart/reload/start/stop、DNS フラッシュ、ファイアウォールや fail2ban のリロード、再起動です。各アクションはサーバ上に記録されます。対象は Linux(amd64/arm64/arm — あらゆる Raspberry Pi を網羅)、macOS(OS X 10.11 El Capitan までさかのぼるレガシー Intel ビルドを含む)、FreeBSD(pfSense/OPNsense/TrueNAS)、Windows です。
モニタを長期的に健全に保つ作業は自動化されています。モニタ認証情報をローテーションはベアラー認証情報をその場で差し替えます。新しいシークレットは Mac 上で生成され、承認済みの FS1 署名鍵で送られ、表示や AI への引き渡しなしにサーバ上で有効化されます。自己アップデートを許可が有効なら、新しいビルドの配布は構造的に安全です。候補バイナリのリリース署名を検証し、root 権限を与える前に互換性セルフテストに合格する必要があり、直前のバイナリはロールバック用に保持されます。新しいバイナリがヘルスチェックに応答しなければ、FrontierStack が自動的に元へ戻します。プルモードの更新は、恒久トークンではなく短命・単回使用の付与でバイナリを取得します。モニタが FS1 署名リクエストを検証しているときは、そのペインに FS1 signed バッジが表示されます。
8.8サーバが応答しないとき:FrontierStack が最後に見た情報
応答しなくなったサーバこそ、詳細が必要なサーバです。別経路で試すためのアドレス、ラックで探すためのハードウェア、影響範囲を知るための稼働サービス。そこで FrontierStack は、連携サーバごとに応答していた間に最後に確認した内容を記録し、空欄の「確認中…」が並ぶペインの代わりにその記録を表示します。
サーバが応答しなくなると、ペインの先頭にオレンジ色の行 — 「応答なし — 以下は FrontierStack が最後に確認した内容です」とその日時 — が表示され、記録済みの値が時計アイコン付きの淡色で並びます。サービスの下には最終確認時に稼働中として、その時点で動いていたサービスが一覧されます。淡色の値はライブの読み取りではなく、その時点の事実です。その後サーバ側が変わっている可能性があります。サーバが再び応答すると、すぐにライブの値に置き換わります。
| 記録する項目 | 内容 |
|---|---|
| システム | OS バージョン、ハードウェア、最終確認時の稼働時間。 |
| アドレス | IPv4 とすべてのアドレス、安定した IPv6 アドレス(リンクローカルと一時的なプライバシーアドレスは、変わるか他のマシンから使えないため除外)、Tailscale の IP と MagicDNS 名、公開名。 |
| ネットワーク | DNS リゾルバと接続種別(Ethernet の速度、Wi-Fi の世代、VPN)。 |
| サービス | 最後に確認したときに動いていたサービス。 |
| 定期再起動 | OS 自身に設定された再起動:省エネルギー設定の繰り返し再起動(pmset)、reboot や shutdown を呼ぶ LaunchDaemon、cron、systemd タイマー、unattended-upgrades の Automatic-Reboot。設定なしも記録するので、定期再起動の可能性を除外できます。 |
| モニタの設定 | モニタのバージョン、Allow actions と Allow reboot、監視中のサービス、ロックアップ再起動の設定、再起動センチネルの状態、有効な直接通知の種類。通知 URL やトークンは決して記録しません。 |
Status セクションには新しい行が 2 つあり、サーバが応答している間はライブで表示されます。IPv6 は安定した IPv6 アドレスを、定期再起動は OS が自動で行うよう設定された再起動を表示します。サーバが毎週同じ時刻に「謎の」再起動をするとき、最初に確認すべき項目です。
AI 管理者も同じ記録を、最終確認の日時付きで参照します。そのため「さっき落ちたサーバの IP は?」という質問に、サーバ自身が答えられなくても回答できます(第 13 章)。
8.9ロックアップ再起動:電源は入っているのに誰も入れないとき
サービスウォッチドッグ(第 11 章)はサービスを 1 つずつ復旧します。しかし、内部から見ると各サービスが正常なまま、マシン全体が使えなくなる障害があります。SSH と画面共有が応答しなくなった Mac や、いつの間にかネットワークを失ったサーバです。外からは誰も届かないため、復旧はサーバ自身が行うしかありません。サーバのペインのサービスウォッチドッグパネルにあるロックアップ再起動がそれを担います。モニタ 1.23.0 以降が必要で、古い場合はパネルにその旨が表示されます。
| 設定 | 動作 |
|---|---|
| SSH が応答しなくなったら再起動 | モニタが SSH ポート(変更しなければ 22)に接続し、ポートが開いているかだけでなく sshd の SSH グリーティングを待ちます。ハングした Mac は、ポート 22 で TCP 接続を受け付けたまま、何も返さずに切断することがよくあります。ポート確認ではこれを正常と判定してしまいます。 |
| サーバがネットワークを失ったら再起動 | モニタがデフォルトゲートウェイに届くかを確認します。追加の確認先を host または host:port で指定でき、いずれかが応答すればオンラインとみなします。 |
| N 分間失敗が続いたら再起動 | 既定は 10 分。その間に 1 回でも成功すると、カウントはやり直しです。 |
| 自動再起動は N 分ごとに最大 1 回 | ブートループ防止です。障害がどれだけ続いても、自動再起動はこの間隔に 1 回までです。 |
各チェックは、モニタの起動後に 1 回成功してから初めて有効になります。sshd のないサーバや、モニタがゲートウェイを見つけられないサーバが、このチェックで再起動されることはありません。チェックは待ち続けるだけです。また、ペインのリモートアクションで Allow actions と再起動を許可の両方がオンでなければ、サーバは再起動を拒否します。オフの場合はパネルに警告が出ます。
ロックアップ再起動がオンの間、パネルには各チェックのライブ状態(応答あり · 有効、最初の成功確認を待機中、○○ から失敗中)、ネットワークチェックが使っているゲートウェイ、最後の自動再起動の日時が表示されます。
8.22.7root で動く再起動センチネル
この機能のきっかけになったハングは、クラッシュより奇妙なものでした。サーバのポートは接続を受け付けるのに、sshd も画面共有もまったく応答しない。マシンが新しいプロセスを起動できなくなっていたのです。そうなると、shutdown コマンドの起動から始まる再起動も実行できません。モニタ 1.24.0 からは、macOS と Linux でモニタと一緒に再起動センチネルがインストールされます。同じバイナリを root で動かすもので、ネットワークの待ち受けもトークンもありません。
センチネルは独自のポリシーを持ちません。モニタ自身のロックアップ再起動の設定と権限だけに従うバックストップです。モニタによる再起動が行われるはずだったのに行われていなければ、その 3 分後に再起動します(既定の 10 分なら障害発生から 13 分後)。この経路ではプログラムを一切起動せず、ディスクも待たず、カーネルの再起動を直接呼び出すため、サーバが新しいプロセスを起動できない状態でも動作します。再起動の直前には、プロセスを起動できたかどうかを記録します。「プロセス枠が尽きていた」ことを後から裏付ける証拠になります。パネルには、センチネルがインストール済みで報告しているか、いつ動作するか、最後の再起動が表示されます。未インストールと表示された場合はモニタを更新してください。
8.22.8プロセス数
プロセス枠が尽きると、サーバは接続を受け付けても sshd や画面共有を起動できなくなります。モニタは 1.24.0 から毎分プロセス数を記録します。カーネルの上限に対する総数、ユーザごとの上限、プロセスの多いユーザです。ロックアップ再起動の欄にあるプロセスの行には、現在の値、ピーク付きの直近 24 時間のグラフ、そして総数または特定ユーザの数が上限に近づいたときのオレンジ色の警告が表示されます。ロックアップになる前に暴走を見つけるタイミングです。
8.10Cloud Servers・Server Clone・リモート Apache
コンピュート系のペインに加え、AWS ▸ DynamoDB は選択中のリージョンのテーブルを、ステータス・アイテム数・サイズ・パーティションキー/ソートキーとともに一覧します。実際にコストや事故につながる 2 点を重視しています。キャパシティモードのカプセルは、アクセスの有無にかかわらず読み書きキャパシティに継続課金されるプロビジョンドのテーブルと、リクエスト単位で課金されるオンデマンドのテーブルを区別します。PITR無効の表示は、ポイントインタイムリカバリが無いテーブルを示します。新規テーブルでは既定で無効であり、誤った書き込みから巻き戻す唯一の手段です。ポイントインタイムリカバリは各行のメニューから切り替えられます。DynamoDB には一括の describe が無いため、テーブルごとに問い合わせ、リージョンあたり 40 件を上限としています。
Fleet & Remote ▸ Cloud Servers は、API トークンを設定したクラウドプロバイダ(DigitalOcean・Vultr・Linode・Hetzner・Sakura・Contabo)と AWS の EC2・Lightsail・RDS を横断する 1 つのインベントリにまとめます。読み取り専用のロールアップです(電源制御は各プロバイダのペインに残ります)。IP を持つ起動中インスタンスごとに、待ち受けを調べる Services ボタンと、SSH で連携してモニタを一手にインストールする + Helper ボタンがあります。シートで正しいユーザ名と鍵を設定するだけです。
Google Cloud は Google Cloud CLI ペイン(Hosting)を通じて同じインベントリに加わります。そこでインストールするとブラウザで gcloud auth login も実行され、以後 FrontierStack はキーを保存せず、お使いのログインを利用します。プロジェクトまたはすべてのプロジェクトを選び、Compute Engine の VM を SSH、開始、停止、リセットできます。停止とリセットは実行前に確認します。AI Administrator は diagnose で読み取り、list コマンド以外はユーザの承認が必要です。
Microsoft Azure も Azure CLI ペイン(Hosting)を通じて同じように加わります。そこでインストールするとブラウザで az login も実行されます。サブスクリプションまたはすべてのサブスクリプションを選び、Linux VM に SSH で接続したり、VM を開始、停止、再起動したりできます。停止と再起動は実行前に確認します。Azure では電源を切っただけの VM にもコンピューティング料金がかかるため、停止は VM の割り当てを解除します。AI Administrator は diagnose で読み取ります。秘密情報を返す Azure の list が多いため、実行できるコマンドは決められたものに限られ、それ以外はユーザの承認が必要です。
Server Clone は、フリートサーバをこの Mac に合わせて立ち上げるガイド付きウィザードです。検出した Homebrew スタックをインストールし、設定とサイトファイルを元のパスにコピーし、ドメイン設定をプッシュして Web サーバをリロードし、MySQL データベースをクローン(ローカルの mysqldump を SSH 越しにターゲットの mysql へパイプ)できます。各ステップは鍵ベースの SSH で実行され、再実行しても安全で、既存データは削除されません。
単一サイトを公開する準備ができたら、(ドメインのコンテキストメニューからの)Promote to Production プッシュが、その vhost 設定をローカルと同じパスへ送り、必要ならドキュメントルートとデータベースをコピーし、Cloudflare 経由で DNS をターゲットに向け、certbot で本物の Let's Encrypt 証明書を発行できます。ファイル・データベース・vhost・DNS・HTTPS を 1 回のプッシュで。
リモートサーバの Apache も直接管理できます。リモートホストが 1 つでもあると Apache ペインにホストセレクタ(This Mac/各連携サーバ)が現れます。サーバを選ぶと FrontierStack が SSH 越しにその Apache を検出し(バージョン・設定構成・実ログパス付きの全アクティブ vhost)、vhost・モジュール・MIME タイプ・ポート・WebDAV を編集できます。各変更は検証(httpd -t)して優雅にリロードしてから確定し、設定が無効ならロールバックします。レガシーの macOS Server.app の Apache ツリーも理解します。Sites リストの Push to Server… は、ローカルサイトの vhost をモニタ連携サーバにドキュメントルートを差し替えて展開します。これらが対応するローカル Apache と Sites のワークフローは第 7 章が扱います。
サイトが 5 つ以上あるリストには、連携サーバでもこの Mac でも、横にすべてテストが表示されます。各サイトにこの Mac から 1 回ずつ、そのサーバへ直接接続してリクエストし、それぞれの応答を問題のあるものから順に一覧表示します。Web サーバを開始または停止するには、サイドバーのサーバを Control クリックして Web サーバを開始または Web サーバを停止を選びます。停止するときは確認があります。
8.11ホストへの画面共有
各サーバのペインは、プローブが検出したリモートアクセス手段を提供します — Mac なら Apple 画面共有/VNC、Windows なら RDP、クライアントがあれば AnyDesk・TeamViewer・RustDesk・NoMachine。この Mac に Apple Remote Desktop がインストールされていると vnc:// ハンドラを乗っ取るため、ペインは代わりに Apple 標準の画面共有クライアントを必ず開く画面共有(macOS)アクションを別途提供します。ホストが複数のアドレスで到達可能な場合 — 例えば LAN の IP と VPN/Tailscale のアドレス — このアクションはどのネットワークで接続するかを選ぶメニューになります。各選択は数値 IP に直接接続するため、ホスト名が解決しないとき(mDNS、split-horizon DNS、VPN の癖)でも機能します。ペインが解決しないかもしれない名前を使う場合は、VNC と RDP にも同様の「— by IP」ボタンが現れます。
8.22.9自分の RustDesk サーバ
RustDesk はすべてを自前で運用できるオープンソースのリモートデスクトップで、そのペイン(Fleet & Remote ▸ RustDesk)はクライアントを開くだけではありません。セルフホストの RustDesk サーバを認証情報なしで監視します — ID サーバ(hbbs、TCP 21115。無関係なポートが開いているだけでは合格しません)との実際のランデブー通信、TCP 21116、リレー(hbbr、TCP 21117)を確認し、応答しなくなるとアラートを出します。
この Mac の RustDesk クライアントが使っているサーバも表示し、RustDesk の公開サーバのままのときや、キーがない・異なるときに警告します。クライアントを移行するには、サーバごとに公開キー(id_ed25519.pub)を貼り付け、RustDesk ▸ Settings ▸ Network で取り込む設定文字列か、Windows インストーラを自動設定させるファイル名をコピーします。RustDesk Server には macOS 版がないため、独自の RustDesk サーバを運用では Linux サーバや VPS 向けの Docker compose ファイルを提供します。ポートは明示的に割り当て、hbbr -k _ によってリレーは自分のキーを持つクライアントだけに応じます。
RustDesk2.toml のサーバ設定だけを読み、デバイスパスワードを含むファイルは読みません。セルフホストにすると「誰が誰に接続したか」の記録が RustDesk の公開サーバに残りません。セッションはどちらの場合もエンドツーエンドで暗号化されます。8.12KVM-over-IP:コンソールと電源、無人運用
SSH や画面共有は、マシンが起動しネットワーク上にあることが前提です。そうでないとき — カーネルパニック、BIOS/ファームウェア画面、ネットワークスタックが上がらない — に必要なのがアウトオブバンドアクセス、すなわち OS に依存せず実際の HDMI 出力を取り込み USB キーボード/マウスを注入する KVM-over-IP 機器です。リモート KVMペインは、所有する機器(PiKVM・JetKVM・TinyPilot・NanoKVM・GL.iNet Comet・汎用機)を好きなだけ登録でき、各機器はピン留めでき、Web コンソール(BIOS レベルまで)にワンクリックで接続できます。
電源制御を持つ機器はループを閉じます。ATX ボード付き PiKVM、ネットワーク PDU、あるいは GL.iNet の Comet Pro(GL-RM10) — KVM とスマート電源プラグを 1 台に兼ねる — は主電源を切り替えられ、本当にフリーズした機体を強制的に電源サイクルできます。こうした機器はサーバの電源セクション(SwitchBot・UPS・PDU コマンドと並ぶ)で電源ソースとしてリンクでき、オン/オフ/サイクルが可能です。AI 管理者からも操作できます:list_kvms・kvm_power・server_power(最後のものは reboot_host に応答しないハングしたサーバを、リンク済みのプラグ/PDU/KVM で再起動します)。
8.13コンソール接続:シリアルとコンソールサーバ
ネットワーク設定を失ったルータやスイッチには、SSH・Web UI・KVM では届きませんが、コンソールポートはまだ使えます。コンソール接続ペイン(Fleet & Remote)は FrontierStack に組み込まれたシリアルターミナルです。USB シリアルアダプタ(FTDI、Silicon Labs CP210x、WCH CH340/CH9102、Prolific)か、機器本体の USB コンソールポート(Cisco の USB mini-B/USB-C、Netgate のファイアウォール)を接続すると、数秒以内に接続中のシリアルポートにチップ名付きで表示されます。クイック接続は何も保存せず、選んだ速度で開きます。保存…はベンダのコンソール設定で接続を保存します。対応ベンダは Cisco、Juniper、Arista、Aruba CX、ProCurve、Ruckus、Fortinet、Palo Alto、SonicWall、WatchGuard、pfSense/OPNsense、MikroTik、Ubiquiti、TP-Link Omada、Dell OS10、Allied Telesis、APC、Raspberry Pi、Linux、OpenWrt や GL.iNet ルータの基板 UART です。
設定はすべて変更できます。速度(460800、921600 などアダプタが対応する任意の値)、データビット、パリティ、ストップビット、フロー制御に加え、Return の送信内容(CR、CR LF、LF)、Backspace を ^H にする設定、ローカルエコー、表示が階段状にずれる機器向けの LF → CR LF があります。アダプタを別の USB ポートに挿し替えて macOS が名前を変えても、USB シリアル番号で再検出します。コンソールサーバ(Lantronix、Opengear、Digi、Avocent ACS、Cisco ターミナルサーバのリバース telnet、Raspberry Pi の ser2net)は、telnet、raw TCP、SSH の接続として追加します。
セッションはそれぞれ個別のウィンドウで開きます。Break は BREAK 信号を送ります。Cisco の ROMMON、Juniper、多くのブートローダはパスワード回復時にこの信号を待っています。DTR と RTS も切り替えられます。貼り付け間隔を設定すると、貼り付けた設定を 1 行ずつ送るため、9600 bps のコンソールでも文字が欠けません。セッションログは機器から受信したすべてを ~/Library/Logs/FrontierStack/Console に保存し、書き出しで画面を保存・メール送信できます。接続をピン留めデバイスにリンクすると、そのデバイスのページのコンソールセクションに表示されます。そこから追加した接続には、プラットフォームの標準設定が最初から入ります。AI 管理者はコンソールと接続中のアダプタを一覧できます(kvm の consoles アクション)が、セッションを開いたり入力したりはしません。
8.14Boot Media:ネットワーク越しに OS をインストール
かつてサーバの再インストールといえば、USB メモリを持ってラックまで行くことでした。Boot Media ペイン(フリートとリモート)は USB メモリの代わりになります。インストーライメージをこの Mac のライブラリにまとめておき、選んだものを FrontierStack が仮想 CD として対象マシンに提示します — サーバの管理コントローラ、PiKVM、Proxmox VE 仮想マシンの CD ドライブ、またはネットワークブートメニューを通じて。Mac は扱いが異なります。Apple がもうこの方法での起動を認めていないためです。後述のMacを参照してください。
8.22.10イメージライブラリ
Add ISO or Disk Image… はローカルファイルを登録します。ファイルはその場所のままで、コピーはしません。Add Image URL… は Web サーバやファイルサーバ上にすでにあるイメージ(http・https・nfs・cifs)を登録します — リモート URL は対象にそのまま渡されるので、この Mac がデータを中継する必要はありません。Compute SHA-256 はファイルのチェックサムを記録し、インストール前にベンダが公開している値と照合できるようにします。各項目は名前の変更、Finder での表示、ライブラリからの削除ができ、Copy Image URL で配信アドレスをコピーできます。保存した場所にファイルがなくなった項目には、見つからない旨の印が付きます。
8.22.11内蔵メディアサーバ
管理コントローラは ISO を HTTP で少しずつ読みながらマウントし、インストールが続く間ずっと読み続けます。ペインの Media server は、まさにそのためにライブラリのローカルイメージを配信します。仮想 CD に必要なバイト範囲リクエストとキープアライブに対応し、最近のリクエストのログとイメージごとの配信バイト数を表示するので、コントローラが実際に読んでいることを確認できます。ローカルイメージを必要とする対象があれば自動的に開始し、Start Serving で手動で開始することもできます。
| 設定 | 内容 |
|---|---|
| Stop serving after | 1・3・6・12・24 時間、または Until I stop it(停止するまで)。読み込みがあるたびに時間はリセットされるため、遅いインストールが途中で切られることはありません。FrontierStack を終了したときも配信は止まります。 |
| Address in image URLs | Automatic は、この Mac が各対象へ到達するときのアドレスを使います。別の管理用 VLAN にあるコントローラにも、実際に届くアドレスが渡されます。固定アドレスを 1 つ選ぶこともできます。 |
| Port | 既定は 8742。 |
| Open Port… | pf またはアプリケーションファイアウォールが有効で、コントローラからの接続を遮る可能性があるときに表示されます。管理者の確認のうえでポートを開きます。 |
403 を返します。各イメージは推測不能な 128 ビットのトークン URL で、配信がオンの間だけ公開されます。インストーラ ISO はふつう秘密ではありませんが、カスタマイズしたイメージには鍵や応答ファイルが含まれることがあります。共有ネットワークでは Until I stop it を選ばず、タイマを使ってください。8.22.12サーバ管理コントローラ(Redfish)
多くのラックサーバは、イメージを仮想 CD として提示できるベースボード管理コントローラを備えています。FrontierStack は標準の DMTF Redfish API でこれを操作します:Dell iDRAC 8/9、HPE iLO 4/5/6、Lenovo XClarity Controller(XCC)、Supermicro X12 以降、そして標準の Redfish 仮想メディアを実装したその他のコントローラです。
- Add Controller でアドレス・ポート・ユーザ名・パスワードを入力します。パスワードは Keychain に保存され、コントローラにだけ送られます。必要ならフリートのサーバとリンクして、両者を並べて表示できます。Virtual Media と Control の権限を持つアカウントを使ってください。
- Read Controller で管理対象を検出します:各システムのモデルと電源状態、各仮想 CD スロットと現在マウントされているもの。
- System・Virtual CD・Image を選びます。Boot from it once をオンのままにすると CD から 1 回だけ起動し、その後は通常の起動順序に戻ります。
- Then で Don't restart(再起動しない)・Graceful restart(正常再起動)・Force restart(強制再起動)を選び、Mount(または確認を求める Mount and Restart)を押します。
- インストールが終わったら仮想 CD を Eject します。
| コントローラ | 仮想メディアに関する注意 |
|---|---|
| Dell iDRAC 8/9 | Enterprise または Datacenter ライセンスが必要。 |
| HPE iLO 4/5/6 | iLO Advanced が必要。 |
| Lenovo XClarity(XCC) | XCC Advanced または Enterprise が必要。 |
| Supermicro X12 以降 | 標準の Redfish 仮想メディア。X10/X11 のボードは独自コンソールでしか仮想メディアを提供しないため、コピーした URL を使ってそちらでマウントします。 |
| その他の Redfish コントローラ | 標準の VirtualMedia 挿入/取り出しアクションを実装したもの。 |
8.22.13IPMI コントローラとネットワークから 1 回起動
古いボードには、Redfish がない、または Redfish はあっても仮想メディアがないコントローラがあります(Supermicro X10/X11、ASRock Rack、Gigabyte、Intel、iDRAC 7)。そうしたコントローラはProtocolを IPMI over LAN に設定します。FrontierStack は ipmitool で操作します(Install ipmitool でアプリ内コンソールから Homebrew でインストール)。パスワードはキーチェーンに保存したまま、コマンドラインではなく環境変数で ipmitool に渡します。Read Controller で電源状態を表示します。IPMI には標準の仮想メディアがないため、OS のインストールにはネットワークを使います。ネットワークから 1 回起動は次回の起動を PXE に設定し(chassis bootdev pxe。レガシー BIOS 起動にチェックしない限り UEFI モード)、必要に応じてハードリセットを送ります。電源が切れていれば電源を入れます。IPMI には正常な再起動はありません。
Redfish コントローラにもネットワークから 1 回起動があります。1 回限りの Pxe 起動指定のあと、選んだ方法で再起動します。下の内蔵 PXE サーバと組み合わせれば、仮想メディアを使わずにリモートのサーバをこの Mac の ISO メニューから起動できます。
8.22.14PiKVM 仮想メディア
PiKVM は、接続先のマシンに対して USB ドライブをエミュレートできます。Boot Media は PiKVM の公開 /api/msd インタフェースを使い、ATX 電源制御と同じ PiKVM API アカウントで接続します(KVM-over-IP を参照)。まずイメージを PiKVM 自身のストレージにコピーします:ローカルファイルは進捗バー付きでストリーミング転送し、リモート URL は PiKVM が自分でダウンロードします。コピー開始前に空き容量を確認します。続いて保存済みイメージを As CD-ROM(ISO 用)または As Flash(raw の .img 用)で接続し、マシンの起動メニューで選ぶか Power Cycle…(確認付きのハード ATX サイクル)を使い、コンソールを開いてインストールを見守ります。後片付けは Disconnect Drive と削除で行います。
8.22.15Proxmox VE 仮想マシン
Proxmox VE 上の仮想マシン(後述の Proxmox VE のとおり接続済みのもの)では、Node・Virtual machine・ISO storage を選び、次に Source を選びます。Image from the library は Proxmox 自身にイメージを ISO ストレージへダウンロードさせる(download-url 呼び出し)ため、ローカルイメージはこの Mac のメディアサーバから取得されます。ISO already on Proxmox はすでにある ISO を使います。FrontierStack は ISO を VM の CD ドライブに接続し、CD を起動順序の先頭にすることもできます — 元の順序は記憶され、取り出し時に復元されます。最後に、VM をそのままにする・起動する・リセットする(確認を求めるハードリセット)から選びます。
API トークンには、ダウンロード用に Datastore.AllocateTemplate と Sys.AccessNetwork、VM に対して VM.Config.CDROM・VM.Config.Options・VM.PowerMgmt が必要です。ペインの操作部の横にもこの一覧が表示されます。
8.22.16ネットワークブート(PXE/iPXE)
コントローラも KVM もないマシンでも、ネットワークから起動できます。Serve an iPXE boot menu from this Mac をオンにすると、メディアサーバは iPXE メニューも公開します。このメニューはライブラリの ISO を HTTP で SAN ブートし、インストーラのカタログを持つ netboot.xyz へチェーンし、iPXE シェルとローカルディスクから起動も備えます。Download iPXE Boot Loaders は boot.ipxe.org から公式ローダ(ipxe.efi・undionly.kpxe・arm64 版 ipxe.efi)を取得し、UEFI HTTP Boot のクライアントがこの Mac から直接 iPXE を読み込めるようにします。
残るのは、起動するマシンの行き先を DHCP サーバに伝えることです。DHCP server を選んで Copy Settings を押すと、そのまま使える設定例がコピーされます:
| DHCP サーバ | 使う場面 |
|---|---|
| dnsmasq | dnsmasq が DHCP サーバの場合。TFTP サーバも内蔵しています。 |
| dnsmasq (proxy-DHCP) | ルータがアドレス配布を続け、dnsmasq は PXE クライアントにだけ応答する場合。 |
| ISC dhcpd · Kea | 自分で編集する Linux の DHCP サーバ。 |
| OPNsense / pfSense | ファイアウォールが DHCP サーバの場合。設定例はネットワークブート欄の項目名で示します。 |
| UEFI HTTP Boot (no TFTP) | ファームウェアが TFTP を使わず、この Mac から HTTP で iPXE をダウンロードする場合。 |
8.22.17内蔵 PXE サーバ
ネットワークに dnsmasq がなく、DHCP サーバも変更したくない場合は、ネットワークブート設定のこの Mac から PXE クライアントに応答をオンにします。配信中、Mac は 2 つの小さなサービスを動かします:
- ProxyDHCP(UDP 67 と 4011)は、ネットワーク起動を求めるマシン(PXE ファームウェア、UEFI HTTP ブート、iPXE)にだけ、ブートファイルだけを返します。アドレスは配らないため、ルータの DHCP はこれまでどおり動作します。
- TFTP(UDP 69、読み取り専用)は 3 つの iPXE ローダだけを配信します。BIOS マシンには
undionly.kpxe、UEFI x64 マシンにはipxe.efi、ARM64 マシンには ARM64 版ipxe.efiを渡します。UEFI HTTP ブートのクライアントには HTTP でローダを渡します。iPXE が起動すると、もう一度問い合わせてメニューを受け取ります。
応答するネットワークを選び(サービスはその 1 つのインタフェースにだけ結び付けます)、必要なら応答するマシンの MAC アドレスを指定します。各要求と転送はスイッチの下に表示されます。ローダは初回に自動でダウンロードします。pf またはアプリケーションファイアウォールがオンの場合、サーバセクションのファイアウォールボタンで UDP 67・69・4011 も開放します。
8.22.18その他の KVM-over-IP 機器
JetKVM のファームウェア。JetKVM、JetKVM Mini、Mini W では、リモート KVM にインストール済みのファームウェアとアップデートの有無が表示されます。FrontierStack はログインなしで KVM の Web インターフェイスからバージョンを読み取り、最新リリースを JetKVM のアップデートサーバに問い合わせ、30 分ごとに再確認します。0.5.4 より前のファームウェアは、ダウンロードしたアップデートが本当に JetKVM のものか検証しないため(CVE-2026-32294)、要アップデートと表示されます。JetKVM で MQTT をオンにしてベーストピックを入力すると、代わりに KVM 自身のアップデート状態と、オンライン状態・CPU・温度・メモリ・ストレージを読み取ります。JetKVM は通常アップデートを自分でインストールしますが、自動アップデートがオフの場合や常に誰かがコンソールに接続している場合は保留のままになります。KVM の行の通知するをオンにすると、応答しなくなったとき、脆弱なファームウェアのとき、アップデートが 1 週間以上保留されているときにアラートします。
KVM のストレージ。小型 KVM の多くは SD カードまたは内蔵 eMMC から動作し、カードの消耗は起動しなくなる原因としてよくあります。各 KVM のストレージセクションには、動作元(microSD・SD・eMMC・USB・SSD)、容量、カードのメーカーとモデル、取り付け日、予備の保管場所などのメモを記録します。3 年以上使っている着脱式カードには消耗の警告を表示します。PiKVM では PiKVM から読み取るで、ATX 電源と同じ API アカウントを使ってカードのイメージパーティションの空き容量を表示します。JetKVM のストレージ使用率は MQTT をオンにすると表示されます。FrontierStack がカード自体を読み書きすることはありません。
JetKVM・GL.iNet Comet・NanoKVM・TinyPilot・Raritan・ATEN・Avocent・Lantronix・Adder には、仮想メディア用の安定した公開 API がありません。そのため FrontierStack は操作できるふりをしません。代わりに Copy URL が配信を開始して KVM から到達できるイメージアドレスをコピーし、ペインはそのベンダ自身のコンソールのどこに貼り付けるかを示します。
8.22.19Mac
Mac はインストーラ ISO から起動できず、ネットワークブートももうありません:Apple シリコンにはそもそもなく、Intel の NetBoot は macOS Server 5.7 でサーバ側を失い、T2 搭載 Mac は「完全なセキュリティ」ではこれを拒否します。そこで Mac については、Apple がサポートする方法で macOS をインストールします — Apple のフルインストーラを SSH 経由でその Mac 自身にダウンロードし、実行します。フリートの各リモート Mac にカードが表示されます(先に Remote Servers で Mac を追加してください):
- Refresh は macOS のバージョン、Apple シリコン・Intel・T2 付き Intel の別、モデル、空き容量、既存のインストーラ、コンテンツキャッシュの状態を読み取ります。
- List は利用可能なフルインストーラを Apple に問い合わせ(
softwareupdate --list-full-installers)、Download on その Mac はバックグラウンドで進捗付きに取得します(--fetch-full-installer)。 - Install… は
startosinstallを 2 つのモードのどちらかで実行します:Upgrade / reinstall (keeps data)(アップグレード/再インストール、データは保持)または Erase and install(消去してインストール)。Apple シリコンではボリューム所有者しかインストールを開始できないため、管理者ユーザとそのパスワードを入力します。パスワードは標準入力でstartosinstallに渡され、保存されません。 - Turn On Content Caching(この Mac または任意のフリート Mac)は Apple のアップデートとインストーラのコピーを LAN 内に保持し、他の Mac が Apple からではなくそこからダウンロードするようにします。
- KVM をリンクした Intel Mac では、Internet Recovery… が確認のうえで Apple 自身のネットワークリカバリへ再起動します。リカバリには画面共有も SSH もないため、操作には KVM が必要です。
8.22.20AI 管理者から
AI 管理者と MCP クライアントは、既存の kvm ツールで Boot Media を使えます:media_list(読み取り専用)はライブラリ、メディアサーバの状態、各コントローラの電源とマウント中のイメージ、各 PiKVM のドライブを報告します。media_attach は対象 — 名前で指定するコントローラや PiKVM、または proxmox:<vmid> — にイメージをマウントし、boot=true ならそこへの再起動も行います。media_eject は取り外します。接続・取り出し・再起動には Allow changes が必要で、必ず確認を求めます(第 13 章)。
8.22.21シリアルコンソールでのインストール
アプライアンス、UP Squared のような小型 x86 ボード、コンソールポートしか配線していないサーバには、インストールに使える画面がありません。インストーラをシリアルで動かす必要があります。ブートメディアでシリアルコンソールでインストールをオンにし、マシン側のポート(ttyS0〜ttyS7。UP Squared のデバッグ UART は ttyS4)と速度(9600・19200・38400・57600・115200 bps、対応する UART とアダプタなら 230400〜921600)を選びます。以後 iPXE メニューは、netboot.xyz から起動するすべての Linux インストーラに console=tty0 console=ttySn,baudn8 を設定し、netboot.xyz に画面消去コードを送らないよう指示します。
ISO 自身のブートメニューは外から変更できないため、インストーラごとに正確な編集内容を示します。Ubuntu、Debian(設定がインストール後のシステムにも引き継がれるよう --- の後ろに追加)、Rocky/Alma/RHEL(inst.text 付き)、その他の Linux ISO の GRUB/ISOLINUX カーネル行、Proxmox VE の Terminal UI, Serial Console 項目(ttyS0・115200 固定。別のポートや速度は編集)、pfSense の memstick と OPNsense のシリアル用イメージ(別の速度なら FreeBSD ローダのコマンド)、シリアル用のセットアップがない Windows にはインストール後の EMS コマンドです。インストール後のシステム用 GRUB 設定をコピーで、インストール後もシリアルに出力し続けるための /etc/default/grub の行が得られます。n bps でコンソールを開くは、この Mac に挿した USB アダプタで同じ速度のセッションを開き、速度の異なる保存済みコンソールはワンクリックで合わせられます。
8.15Proxmox VE:クラスタのライブ状態とゲストの電源
Proxmox VE ホストはサーバを詰め込んだサーバであり、ノードへの SSH だけではゲストのことはあまりわかりません。そこで Proxmox VE のサービスページ(Containers カテゴリ。第 6 章を参照)は Proxmox 自身の API と通信します。Add Connection でクラスタまたは単一ノードのアドレスと API トークンを入力します — user@realm!name 形式のトークン ID とシークレットで、シークレットは Keychain に保存され、Authorization ヘッダでのみ送信されます。Proxmox の自己署名証明書は、プライベートアドレスの場合に限り受け入れます。状態の確認だけなら PVEAuditor ロールのトークンで十分です。電源操作とブートメディアには、前述の追加権限が必要です。
接続すると、クラスタ名・Proxmox のバージョン・クォーラム、ノードごとの CPU・メモリ・ルートディスク・稼働時間、すべての VM とコンテナとその状態、ストレージごとの使用率バーが表示されます。各ゲストは起動・シャットダウン・再起動ができ、確認のうえでハード停止・リセットもできます。Show in Server Activity と Boot an ISO… で、Proxmox が現れる他の 2 か所へ移動できます。
サーバアクティビティウィンドウ(第 11 章)では、各ノードが All Servers・Cluster・Everything の各レイアウトにタイルとして表示されます。CPU・メモリ・ディスク・稼働時間のスパークラインと、「5/7 VMs · 2/3 containers running」のような行が付きます。ノードの詳細には KPI、CPU とメモリのグラフ、同じ電源操作付きのゲスト一覧、ストレージ、クラスタ情報が表示され、Open Web UI・Refresh・Boot an ISO… ボタンもあります。
アラートは各接続をバックグラウンドで約 5 分ごとに更新して監視します:API への到達性、各ノードのオンライン状態、クラスタのクォーラム、使用率 90% を超えたストレージ。AI 管理者も kvm ツールの proxmox_status アクション(読み取り専用)で同じ情報を見られ、proxmox_power でゲストの電源を操作できます(必ず確認を求めます)。
PVEAuditor で十分です。ここからインストーラを起動することにしたら、あとで VM とデータストアの権限を追加します。8.16Garage:オブジェクトストレージのクラスタをひと目で
Garage は、データを複数の小さなノード(多くは別々の場所)に分散させる軽量な S3 互換オブジェクトストアです。Garage のサービスページ(オブジェクトストレージのカテゴリ)は、Garage の管理 API を使って複数の Garage クラスタを監視します。クラスタを追加し、いずれかのノードの管理エンドポイントと管理トークンを入力します。LAN ではポート 3903 と平文 HTTP を前提にするので、10.0.0.5:3903 だけで足ります。1 つのノードがクラスタ全体の状態を報告します。別のノードを2 つ目のエンドポイントとして追加しておけば、1 つ目が停止してもクラスタを確認できます。トークンは Keychain に保存し、Authorization ヘッダでのみ送信します。平文の HTTP はプライベート・Tailscale・.local のアドレスに限り、それ以外は https:// が必要です。Garage 2.x(管理 API v2)と 0.9/1.x(v1)のどちらにも対応します。
セクションの最初の行で、すべてのクラスタを正常・要確認・停止に分けて数えます。続いて各クラスタの状態 — healthy、degraded(本来より複製の少ないデータがある)、unavailable(読み書きできないデータがある)— を、接続中のノード数、稼働中のストレージノード数、クォーラムのあるパーティション数と完全に複製されたパーティション数、レイアウトのバージョン、ゾーン、割り当て容量とともに表示します。その下に全ノードを、停止中のノードと使用率の高いディスクを先頭にして並べます:ゾーン、容量、Garage のバージョン(他と異なるバージョンのノードは強調)、ドレイン状態、データ/メタデータディスクの使用率。/metrics も読み取るをオンにすると、登録したノードで再同期に失敗したブロック数(常に 0 であるべき値)も数えます。
アラートは各クラスタを約 5 分ごとに確認します:管理 API への到達性、クラスタの状態、レイアウト内の各ノード、クラスタのしきい値(変更しなければ 90%)以上のデータ/メタデータディスク、エラーになったブロック。AI 管理者は get_server_health の area object_storage で同じ内容を読み取ります。ここからクラスタを変更することはありません。
admin_token ではなく、garage admin-token create で FrontierStack 用のトークンを作り、スコープを GetClusterHealth と GetClusterStatus に限定してください(そのトークンで /metrics も読む場合は Metrics も追加)。8.17古い Mac・Raspberry Pi・Windows ホスト
フリートの意義のひとつは、古い・風変わりなハードウェアを活かし続けることです。いまも macOS Server が動く旧来の Xserve や Mac mini は他のホスト同様に連携できます。リモート Apache 検出は Server.app 独自の Apache ツリーと内部ポートを理解するので、その Web サイトが表示され編集でき、モニタのレガシー Intel ビルドは OS X 10.11 El Capitan までさかのぼって動きます。棚いっぱいの Raspberry Pi は通常の Linux として連携できます。モニタの arm ビルドは Zero を含む全 Pi を網羅するので、CPU・ディスク・サービスを他のすべてと並べて監視できます。
Pop!_OS などの Ubuntu ベースのシステムは、OS 名に含まれる「Linux」という語ではなくディストリビューションで判別します。Pop!_OS は「Pop!_OS 24.04 LTS」と名乗るため、以前のリリースでは Linux と認識されず、(一部の Ubuntu と同様に)モニタの自動更新が拒否されていました。apt 系では、サーバのパッケージツール(Manage in Server Activity…)のアップデートを確認が、apt だけでは分からない次の情報も報告します:インストール済みでまだ起動していない新しいカーネル(Pop!_OS や一部の Debian のように /var/run/reboot-required が作られない環境でも検出)、EFI システムパーティションの空き容量 — Pop!_OS は systemd-boot で起動し、kernelstub がカーネルと initrd をすべてここへコピーするため、容量不足はカーネル更新が途中で失敗する典型的な原因です — そして Flatpak アプリの更新数。
Windows ホストは Microsoft の OpenSSH サーバ経由で参加します。SSH 診断のために Linux 同様に連携し、モニタはネイティブの Windows サービスとしてインストールします(Windows サービスはマシン環境変数を確実には継承しないため、設定は実行ファイルの隣のファイルから読みます)。Windows のモニタインストールは自動プッシュではなく、Host Monitor ペインから付属の PowerShell インストーラで手動で行います。
診断を超えた対話的な制御には、カタログにリモートアクセスツール(RustDesk・MeshCentral・Apache Guacamole・Windows Remote Desktop・WinRM)も揃っていますが、それらは SSH フリート自体ではなく運用するサービスです。フリートの強みは、すべてを 1 つのウィンドウから均一・スクリプト可能・低負荷で管理できることであり、第 13 章の run_script でノードを名前で指定すれば、AI がリモートサーバを 2 段階で診断・修正できます。読み取り専用のテスト、続いて最小限の修正、そして再実行で確認です。
UP Squared などの UP ボード。AAEON の UP ボード(UP Squared、UP Squared Pro/V2/6000/Pro 7000、UP 7000、UP Xtreme)は、ファイアウォール、Proxmox ノード、Linux 機としてヘッドレスで使われることの多い小型 x86 マシンです。ほかの Linux ホストと同じように連携でき、ステータスチェックがボードのファームウェア識別情報(DMI。シリアル番号は読み取りません)を読むため、サーバのページにモデル名、3.3 V デバッグ UART の位置と Linux での ttyS 名(UP Squared は ttyS4、初代 UP Xtreme は ttyS5)、ファームウェアのキー(F7 でブートメニュー、Del または Esc でセットアップ)、PXE を有効にする BIOS の場所が表示されます。コンソール接続には対応する UP Squared/UP ボードのプリセットがあり、デバイス検出は AAEON の MAC プレフィックスを認識し、あとはブートメディアのシリアルコンソールでのインストールで進められます。同じチェックでほかのハードウェア(Dell・HPE・Supermicro のサーバ、Raspberry Pi のデバイスツリー上のモデル名)も表示します。
8.18グループポリシーとドメインの信頼関係
Windows ドメイン向けのグループポリシーと信頼関係ペイン(ID とアカウントの下、フルフリート)は、連携済みのドメインコントローラを SSH で読み取ります。Windows Server の DC にはグループポリシーの管理機能と AD PowerShell モジュールが必要です(通常の DC には両方あります)。Samba AD の DC は samba-tool で読み取り、サーバの sudo パスワードを保存してあれば ldbsearch で各 GPO のリンク先も表示します。ペインには 3 つのタブがあります。
| タブ | 表示内容 |
|---|---|
| 概要 | ドメイン、フォレスト、NetBIOS 名、機能レベル、PDC エミュレータ、ドメインコントローラ、SYSVOL の複製方式(DFSR または廃止済みの FRS)、すべての検出事項。 |
| グループポリシー | すべての GPO とそのリンク(強制は鍵アイコン、無効なリンクは取り消し線)、ユーザ/コンピュータの設定が無効かどうか、バージョン番号、WMI フィルタ。 |
| 信頼関係 | すべての信頼関係:種類(フォレスト、外部、親子、レルム)、方向、推移性、セキュアチャネルのテスト結果、セキュリティ設定。 |
検出する内容。グループポリシー:Active Directory と SYSVOL のバージョンが一致しない GPO(続くなら複製が壊れています)、SYSVOL がまだ FRS か DFSR への移行途中、既定のポリシーがないかリンクされていない、情報としてリンクのない GPO・空の GPO・すべて無効の GPO。信頼関係:セキュアチャネルが失敗する信頼関係(Windows は nltest /sc_query、Samba は samba-tool domain trust validate)、外部信頼で SID フィルタリングがオフ、フォレスト信頼で SID 履歴を許可、信頼関係をまたぐ TGT 委任、RC4 のみの信頼関係、下位レベル(NTLM)の信頼関係、選択的認証ではなくフォレスト全体の認証を使う双方向の信頼関係。受信のみの信頼関係は相手のドメインからしかテストできません。
操作(Windows の DC のみ):レポートは GPO の全設定レポート(Get-GPOReport)をブラウザで開きます。すべての GPO をバックアップ…は DC 上の ProgramData\FrontierStack\GPOBackups の下に日付付きフォルダを作って Backup-GPO を実行します。コンピュータで強制更新…は 1 台のドメインコンピュータに Invoke-GPUpdate を実行します。FrontierStack が GPO や信頼関係を作成・編集・リンク・削除することはありません。
アラートで監視をオンにすると DC を 30 分ごとに確認し、信頼関係の失敗や DC の無応答をディレクトリサービスのアラートとして通知します。AI 管理者は get_server_health の area=domain で同じ状態を読めます。
8.19OpenCore Legacy Patcher の Mac:アップデートしても安全か
古い Intel Mac の中には、OpenCore Legacy Patcher(OCLP)のおかげで Apple が提供したことのない新しい macOS を動かしているものがあります。これは「再起動」の意味を変えます。通常のサーバ Mac は電源 → macOS → FrontierStack エージェントで起動しますが、OCLP Mac は電源 → ファームウェア → EFI/OpenCore → macOS → OCLP ルートパッチ → FrontierStack と起動します。リンクが増えるぶんだけ、無人起動が止まる場所も増えます。macOS アップデートは封印されたシステムボリュームを置き換えてルートパッチを消してしまい(再適用するまで Wi-Fi・グラフィックスアクセラレーション・Bluetooth が消えます)、メジャーアップグレードには先に対応する OCLP リリースが必要で、ファームウェアの起動エントリが OpenCore を指さなくなれば、誰かが Option を押して「EFI Boot」を選ぶまでブートピッカーで止まります — その Mac が別の建物にあれば、なおさら厄介です。
OpenCore Patcher ペイン(フリートとリモート)は、アップデートを押す前にそれを知るためにあります。この Mac か連携 Mac を選ぶと読み取り専用のプローブを実行し — OCLP アプリのバージョン、OpenCore の NVRAM スタンプ(実際に OpenCore 経由で起動したときだけ存在)、ルートパッチの記録、bless --getBoot、SIP、ソフトウェアアップデート設定、OpenCore が偽装したモデルの背後にある実機モデル — それをリモート起動の安全性リストにまとめます:ファームウェアの起動エントリ → OpenCore、デフォルト起動ボリューム設定済み、FileVault が無人再起動に与える影響、ルートパッチが存在し最新、OCLP リリースがインストール済み macOS に対応(GitHub の最新リリースと照合)、保留中の macOS アップデート、macOS 自動インストールがオフ、EFI/OpenCore のバックアップ。その上にひとつの判定が表示されます:macOS をアップデートしても安全、注意してアップデート、安全ではない — 理由付きで。
このペインは意図的に OCLP を管理しません — OpenCore の構築とルートパッチの適用は OCLP 自身のアプリの役目のままです。提供するのは固定で可逆な管理者アクション 3 つだけ:macOS の自動インストールをオフ(システム設定が OCLP Mac を無人でアップデートしないように)、EFI をバックアップ(EFI/OC フォルダのアーカイブをその Mac に保存)、OpenCore を再 bless(OCLP の「Install to disk」と同じ bless --setBoot。OpenCore.efi が実在しなければ拒否)。フリートのステータスプローブもピン留めしたすべての Mac で OCLP を検出します。ホスト行とサーバアクティビティウィンドウに表示され、ルートパッチが欠けているか起動エントリが OpenCore を迂回している場合はアラートにセキュリティ項目が上がります。
diagnose ["oclp"] は完全なレポートを返し、スクリプトはペインの判定が安全になるまで macOS アップデートのインストール — や、起動エントリが OpenCore を迂回する Mac の再起動 — を拒否します。「この Mac をアップデートしたら Wi-Fi が消えたのはなぜ?」と尋ねれば、公式サポート Mac に対する診断ではなく、OCLP = true、実機モデル、最近のアップデート、ルートパッチ = 欠落から推論します。8.20ビルド Mac:サーバでの Xcode ビルド
Xcode のビルドボタンは、いつも目の前の Mac でビルドします。コア数が多く、署名環境が安定し、誰のエディタも開いていないラックの Mac mini など別の場所でビルドしたいときは、連携中の Mac にビルド Mac の役割を与えます(フルフリートの機能)。サーバペインまたはサーバの編集画面のスイッチをオンにすると、ペインにビルド Mac の項目が加わります。
この項目には、その Mac がビルドに使える環境が表示されます。30 分ごとに SSH で読み取り専用で確認します:インストール済みの Xcode と選択中のもの、ライセンスへの同意と初回起動コンポーネントの有無、空きディスク、DerivedData・アーカイブ・シミュレータの容量、シミュレータランタイム、期限付きのコード署名証明書すべて。問題はアラートのビルド Mac に出ます:Xcode が無い、ライセンス未同意、空きが 30 GB 未満(変更可)、14 日以内に期限が切れる証明書。
プロジェクトはサーバごとに保存します:git の URL・ブランチ・プロジェクトまたはワークスペース(任意)・スキーム・デスティネーション。ビルド・テスト・アーカイブは、ビルド Mac の ~/fs-builds にリポジトリをクローンまたは更新し、コンソールで xcodebuild を実行します。ログはすべて目の前に表示され、途中で止めることもできます。ビルド Mac 自身がリポジトリにアクセスできる必要があります。SSH 越しの署名はロックされたキーチェーンを使えないため、アーカイブはまずログインキーチェーンのロックを解除します。
2 つのセットアップで本格的なビルドサーバになります。Gitea ランナーを設定は act_runner をインストールし、Gitea に登録して、ラベル macos-xcode で常駐させます。登録トークンはコンソールに貼り付け、FrontierStack は保存しません。あとはワークフローに runs-on: macos-xcode と書けば、プッシュのたびにビルドとテストが走ります。かつて Xcode Server が担っていた仕事です。ヘッドレス Xcode MCP をオンは Xcode 27 の xcrun mcp-server をビルドフォルダ用に有効にし、コーディングエージェントが Xcode のウインドウなしでその Mac の Xcode ツールを使えるようにします。
xcode ツールはビルド Mac とその状態を一覧にします(action=build_macs)。変更を許可すれば、保存済みプロジェクトを名前で指定してビルド・テスト・アーカイブできます。8.21移行ウィザード:スタックを新しいデバイスへ
古いサーバの引退が「すべて手作業で再インストール」を意味することは、もうありません。FrontierStack はレガシーマシンからスタックを取り出し、選んだ移行先——この Mac、別の Mac、あるいは Linux——に立ち上げる移行ウィザードを備えています。移行元は読み取るだけで、書き込みはすべて移行先に対して行います。
セットアップを移行は移行元から始まります:この Mac で見つかったスタック(MAMP、XAMPP、Pancake Stack)、Apple Server(Server.app マシン全体。後述)、Windows、Web サーバ(ほかの Web サーバ、開発ツール、開発サーバ)、その他のツール(Web サイト以外のもの:ほかのアプリのデータベース、Git サーバ、hosts ファイルやリポジトリ)。どれも作業の順に進み——移すもの、移行先、移す——最後にすべて確認してから廃止します。「古い Mac サーバのモダナイズ」の Apple の PHP の停止と同じく、名前を挙げて確認するまでは何も廃止できる状態になりません。読み込んだ各サイトのすべてのページとファイルを新しい Apache から取得し(ページは状態と PHP ソースで、普通のファイルは移行元のコピーとバイト単位で比較)、すべてのデータベーステーブルの行数を移行元と比べます。フォルダの index ページ以外のスクリプトは開きません(開くと実行されることがあるため)。違うものや確認できなかったものは名前で一覧表示し、確認が通るまで古い環境を残すよう案内します。別のデバイスへの移行ではファイル(rsync のチェックサム)とテーブルを同じようにコンソールで比べ、ほかのデータベースアプリからのコピーもテーブルごとに確認します。
Migrate Setups ペインは MAMP・XAMPP・Apple Server.app の Web スタックを扱います。移行元を自動検出し、何を引き継ぐかをチェックで選べます。Homebrew ツール、Web ファイル、MySQL データベース、サイト(vhost)、MIME の上書き、Apache モジュール、PHP 設定、WordPress の wp-config.php 修正、Git リポジトリなどです。Set up on ピッカーで移行先を選択します。This Mac のままならアプリ内で完全移行し、連携ホストを選べば SSH 経由でその新しいデバイスにスタックをインストールし、Web ファイル(rsync)とデータベース(SSH 経由のダンプ)をコピーします。Linux トグルで Homebrew の代わりに apt/dnf を使います。
その他のツール ▸ サーバと設定にはリポジトリからインポート…もあります。SSH 設定、Ansible インベントリ、.env ファイルを含むフォルダや git リポジトリを指定すると、確認のうえでサーバをフリートに、認証情報をスクリプトシークレットや対応するサービスに追加します。それ以外の形式は、値を一切見ることなく FrontierStack AI が読み取れます(第 13 章)。
ほかのツールから移行する場合は、Web サーバや開発ツールから読み込む…(セットアップを移行 ▸ Web サーバと、Apache ペインのサイトを読み込み…の隣)を使います。Laravel Herd・Laravel Valet・ServBay・AMPPS・DesktopServer・Devilbox・DDEV・Docksal・Lando・Local・DevKinsta、Web サーバ自身の設定ファイル(Caddy・nginx・Lighttpd・OpenLiteSpeed・H2O・Cherokee・Abyss・Tomcat・Jetty・WildFly/Undertow・CivetWeb・Mongoose)、そしていま動いている開発サーバ(Python http.server、Uvicorn、Gunicorn、Waitress、Vite、webpack-dev-server、BrowserSync、http-server、live-server、miniserve、Node.js、Bun、Deno)から、サイト・設定・データベースを読み込みます。各サイトはポート 80/443 の Apache サイト(ファイルを配信するか、動き続けるアプリサーバへ転送)または Localhost プロジェクトになります。ドメイン・エイリアス・HTTPS 証明書・リダイレクト・プロキシのパスを引き継ぎ、読み込む前にドメイン名を変えることもできます。データベースタブは、この Mac で動いている MySQL・MariaDB・PostgreSQL サーバ(DBngin、Herd、ServBay、MAMP、Local など)をすべて見つけ、選んだデータベースをそのサーバ自身のツールでダンプして、FrontierStack の Homebrew MySQL または PostgreSQL に読み込み、すべてのテーブルの行数を移行元と比べます(その他のツール ▸ データベースをコピー…から単独でも使えます)。Docker ベースのプロジェクト(DDEV・Lando・Docksal・Devilbox・DevKinsta)は各ツール自身のコマンドで書き出します。オプションで、コピーした各サイトの wp-config.php または .env を FrontierStack の MySQL に向けることもできます(.pre-migrate.bak のコピーを残します)。
Windows から移行する場合は、C:\laragon フォルダ全体を Mac にコピーし(USB ドライブ、共有フォルダ、Parallels/VMware の Windows ディスク、ZIP)、セットアップを移行 ▸ Windows ▸ Windows のスタックから読み込む…を使います。同じ読み込みで Windows 版 XAMPP、WampServer、AMPPS、Uniform Server、IIS もフォルダのコピーから読めます(IIS は applicationHost.config と各サイトのフォルダもコピー)。バーチャルホストのないフォルダは <フォルダ>.test になり、ASP.NET のサイトは参考としてコピーされます。www の各プロジェクトと etc/apache2/sites-enabled の各バーチャルホストが、Laragon のホスト名({name}.test または独自のテンプレート)の Apache サイトになり、Windows のパスはコピー先に変換されます。Laragon の data フォルダは Mac では再利用できないため、先に PC で各データベースをエクスポートし(HeidiSQL ▸ SQL としてデータベースをエクスポート)、Laragon フォルダかサイトのフォルダに保存してください。サイトに対応付けられ、データベースタブで読み込めます。
セットアップを移行 ▸ Apple Server(以前の Apple Server Migration ペイン)は Server.app マシン全体を扱います。移行元(この Mac またはリモート)を指定すると、serveradmin で全サービス——Websites・Mail・Calendar と Contacts・Messages(XMPP)・VPN・DNS・DHCP・NetInstall・Open Directory・File Sharing・Time Machine・Profile Manager ほか——に加えて、稼働中の git サーバ・データベース・Docker・単体の Nginx なども棚卸しします。各サービスに状態バッジと現代的な代替が示され、妥当な代替が複数ある場合(Calendar → Radicale/SOGo/Baïkal、VPN → WireGuard/strongSwan、DHCP → dnsmasq/Kea)はどれを使うか選べます。移行先マシンと OS を選ぶと、代替をインストールし、正確な引き継ぎチェックリストを表示します。この Mac の Web サイトも同じ場所で移し(vhost とファイルの完全コピー)、廃止する前に同じ確認を行います。サービスの実行がコピーした DNS ゾーンファイルも名前を挙げて移行元と比べます。Open Directory(ユーザとグループ)はアカウントペインへ、検出された git サーバは Git Server 移行へ引き継ぎます。Mac を手放さずに残すなら「古い Mac サーバのモダナイズ」(第 4 章)を使います。
serviceproxy が受け持ちますが、古いリリース——特に High Sierra——ではこのプロセスがハングします。接続は受け付け続けるのに、応答を返さなくなる状態です。ping は通り、ポートは開いて見え、SSH も使えるため、サイトは到達可能に見えながら、すべてが応答しません。この特徴ゆえに DNS やネットワークの障害と誤診されがちで、プロセス自体は生きているため「サービスは稼働中か」という確認でも検出できません。移行元マシンには http://127.0.0.1/ をサービス serviceproxy で監視する Service Guardian を設定してください(背後のバックエンドを見る場合は server-httpd)。移行を計画する間、ハングを検出して launchctl kickstart で自動復旧できます。サイトを素の Apache へ移行すれば、ハングしやすいプロキシを配信経路から恒久的に取り除けます。serveradmin を root で実行するため、まずそのホストの sudo パスワードを設定に保存してください(第 8 章「管理対象鍵と保存された sudo パスワード」)。一部の Apple サービスは設定を自動で引き継ぎ(DNS ゾーン、Apache vhost、Postfix の main.cf)、他はコピー先に代替をインストールして手順を提示します。各項目はAutomatic・Assisted・Manual と明示されます。
サイトビルダーから移るには。 セットアップを移行 ▸ サイトビルダー ▸ STUDIO から読み込む…は、書き出し機能のない STUDIO(studio.design)のサイトを移します。サイトのアドレスを入力すると、FrontierStack はサイトがすべての訪問者に見せている内容を読み(STUDIO へのサインインは不要)、ページ、CMS アイテム(記事として。日付、カバー画像、カテゴリ、タグつき)、画像を、この Mac の新しい WordPress サイトに追加します。FrontierStack が WordPress をダウンロードし、サイト専用のデータベースと MySQL ユーザを作成し、その名前の Apache サイトを追加してインストールします(WordPress ペインにすでにあるサイトも選べます)。古いアドレスからのリダイレクトも用意します。新しい STUDIO サイトは完成したページから読み、空のページとして届く古いサイトは、訪問者のブラウザと同じリクエストで STUDIO の公開ストレージと CMS サービスから読みます。デザイン、アニメーション、共有のヘッダーとフッター、フォーム、フォントは取り込まれず、読み込みの最後にそのチェックリストが表示されます。新しいサイトの準備ができたら、ホストに公開…で「サイトの複製」が開き、サイトとデータベースを STUDIO サイトと同じアドレスでサーバまたはホスティングアカウントにコピーする設定になります。WordPress のコピーには、その場所専用のデータベースログインを書いた新しい場所用の wp-config.php が用意されます。読み込みの実行にはライセンスが必要ですが、サイトの確認には不要です。
8.22Git サーバ:Gitea とリポジトリ移行
Git Server ペインは、任意の移行先——この Mac、連携サーバ、NAS、Docker ホスト、Linux——にセルフホストの Gitea(自動 HTTPS のため Caddy 背後)を立ち上げます。プラットフォームを検出して適切な方法でインストールします。稼働後はアクセストークンで接続すると、バージョン・リポジトリ数のライブ監視と、ミラーが元から遅れたときのバックアップ鮮度アラートが得られます。
同じペインで別の Git サーバを Gitea へ移行・ミラーできます。ディスク上のベアリポジトリ——レガシー macOS アプリ Simple Git Server、Xcode Server、Gitolite、素の git-daemon、任意のフォルダ——か、稼働中のリモートサーバ(git://・https://・ssh:// の任意のクローンベース。リポジトリ名は SSH で列挙するか貼り付け)を指定します。Scan でリポジトリを一覧し、Migrate で各リポジトリを全履歴・全ブランチ・全タグごとミラークローンし、API でリポジトリを作成して Gitea へ push します。コピーはこの Mac 上で実行されます。

第 9
ネットワークと境界
LAN 上のあらゆるデバイスを把握し、ルータのライブ状態を読み取り、外の世界からサービスへ到達する — ポートを 1 つも開けずに、あるいは開けて。
サービスを動かす Mac はネットワークの中に存在し、現実のトラブルの多くはそのネットワークから始まります — WAN リンクが切れたルータ、誤ったサブネットに紛れたデバイス、何か月も前に開けたまま閉じ忘れたポート。FrontierStack は、ネットワークとその境界(LAN とインターネットの境目)を一級のオブジェクトとして扱います。ルータを直接読み取り、LAN をスキャンしてインベントリを作り、データフロー図を描き、外部へサービスを公開するための規律ある複数の方法を提供します。
本章はサーバを取り巻くネットワークを扱います。サーバ自体を SSH で連携する方法は第 8 章、ホストファイアウォール・fail2ban・セキュリティ監査は第 10 章、Cloudflare の DNS と TLS は第 7 章を参照してください。
9.1読み取り・操作できるルータとファイアウォール
FrontierStack は、管理 API があればそれを通じて、なければ SSH で、ネットワーク機器と対話します。最も緊密な連携は OPNsense(フル REST API)と Cloudflare(第 7 章)の 2 つで、より広範なルータ・ファイアウォール群はライブ状態を報告します。Router & Network ペインでアドレス・ベンダー・API キーを指定してデバイスを追加すると、AI 管理者の router_info ツールが バージョンとモデル、稼働時間、CPU・メモリ、WAN リンクとゲートウェイ(上/下)、インターフェイス、クライアント数を読み取れます — さらに FrontierStack がマップしないフィールドの生の API JSON も。読み取り専用で、デバイス自身の API を照会し、SSH は使いません。
| デバイス | FrontierStack の到達方法 |
|---|---|
| OPNsense | フル REST API — ライブ状態、ファイアウォールルール、境界のポートフォワード(rdr) |
| pfSense | API パッケージ経由の REST |
| MikroTik RouterOS | REST API(RouterOS v7 以降) |
| Ubiquiti UniFi/EdgeOS | コントローラ/ゲートウェイの API キー |
| OpenWrt | LuCI/ubus API |
| DD-WRT | Web 管理/SSH |
| ASUSWRT | ルータ Web API/SSH |
| FRITZ!Box | TR-064/Web 管理 |
| TP-Link Omada | コントローラ API |
| Huawei LTE/5G(HiLink) | ルータの Web API — 接続状態、4G/5G、通信事業者、電波。切断時にアラート |
| Huawei Wi-Fi AX/BE、EchoLife/OptiXstar ONT | Web 管理画面(公開ローカル API なし) |
| Huawei VRP(AR、NetEngine、USG、S、CloudEngine)/AirEngine | Web 管理画面(HTTPS)/SSH/SNMP。AirEngine AP はコントローラ経由 |
router_info はそれがどこにピン留めされ、到達可能かを報告し — Router & Network で API キーを追加すればバージョン・ゲートウェイ・WAN・インターフェイスをライブで読み取れると案内します。Huawei の LTE/5G ルータ:Huawei の B シリーズ、E5186/E5785、5G CPE(H112/H122/H138)は、Huawei LTE/5G Router (HiLink) プラットフォームでピン留めします(既定のアドレスは http://192.168.8.1)。ステータス確認ではルータ自身の Web API を読み、接続状態、4G/5G のネットワーク、通信事業者、電波(RSRP・RSRQ・SINR と分かりやすい評価)、Wi-Fi クライアント数はパスワードなしで、機種、ファームウェア、電波の詳細はアクセスに Web パスワードを設定すると表示します。モバイル接続を監視をオンにすると、モバイルデータが切れたときにアラートを出します。光回線が落ちるまで誰も見ないバックアップ WAN に便利です。これらのルータは Web セッションを 1~2 個しか許可せず、ログイン失敗が続くと管理ページをロックするため、FrontierStack のサインインは最大 10 分に 1 回(状態ページまでログインが必要な機種ではスイープごと)で、毎回サインアウトし、拒否されたパスワードは 30 分間再試行しません。Huawei の Wi-Fi ルータ、光回線終端装置(ONT)、VRP 機器、AirEngine アクセスポイントにもそれぞれのプラットフォームがあり、適切な Web UI、SSH ユーザ、注記を設定します。デバイス検出は Huawei の製品名を認識してプラットフォームを提案します。
OPNsense と pfSense では、API キーを設定すると継続的なファイアウォール監視(ピン留めデバイスのペインにあるトグル)が使えます。アラートのスイープごとにファイアウォール自身へゲートウェイ状態・インターフェイスのキャリア・サービスの稼働を照会します — マルチ WAN ルータがサイレントにフェイルオーバーして WAN 回線の死を隠しても(サーバは外に出られるのにサイトへのインバウンドは全滅)、原因不明の赤いドットの海ではなく、どのゲートウェイが落ち、どのポートがキャリアを失ったかを名指しで通知します。ルータには何もインストールしません。OPNsense の REST API は標準搭載、pfSense は REST API v2 パッケージのみ必要です。同じペインから OPNsense ルータをテイルネットに参加させることもできます。Mac 側で Tailscale にサインイン(Google アカウント可)して事前認証キーを発行し、デバイスペインの Tailscale セクションに貼り付けるだけで、FrontierStack が必要に応じて os-tailscale プラグインをインストールし、キーとログインサーバ(Headscale も可)を保存してサービスを API 経由で再起動します。ルータでのブラウザログインは不要です。参加後はテイルネットアドレスがフォールバックとして記憶されます。LAN アドレスが応答しなくなったとき(社外にいる、VPN 経路が落ちた、LAN 側が死んだ)、ステータス確認・監視・証明書更新は自動的に Tailscale 経由で再試行してその旨を表示し、監視は別途「LAN アドレス」のアラートを上げるので、経路の障害をルータの故障と取り違えません。
攻撃と障害の兆候。ゲートウェイを監視するのと同じスイープが、ルータ自身のトラブルも監視します。異常のあるルータはサイドバーでオレンジ+警告三角になります — 理由はホバーで表示。侵入検知プラグインを有効にした OPNsense では、同じ API 経由で直近の Suricata アラートを読み取り、件数と上位シグネチャを表示します(ファイアウォール UI を開かずに攻撃の試みを可視化。pfSense の REST API は IDS を一律に公開しないため現状は OPNsense のみ)。すべての監視対象ルータ — OPNsense、pfSense、OpenWrt ほか — では各スイープが、予期しない再起動(稼働時間の急減:クラッシュ・電源イベント・攻撃)、ルータ管理/SSH への総当たりの急増(失敗ログインの連続。最も多い送信元 IP をルータ自身のログから名指し)、リソース逼迫(メモリまたは負荷が危険なほど高い — DoS・暴走/侵害されたプロセス)、利用可能なファームウェア更新(古いファームウェア=既知の穴)も検出します。それぞれアラートを上げ、あるプラットフォームが報告できない兆候は単にスキップします — 誤った「異常なし」にはなりません。OPNsense と OpenWrt が最も多く報告し、pfSense の API はより限定的です。
証明書の期限。同じスイープがファイアウォールのトラストストア — サービスが使うすべての CA と証明書 — を読み取り、期限切れの 1 か月前に、そして期限切れ後にもアラートを上げます。これは誰も想定しない障害です:OPNsense の既定 397 日で発行された OpenVPN サーバ証明書は 1 年後に静かにすべてのリモートユーザを締め出し、Web GUI 自身の HTTPS 証明書が切れれば管理画面はブラウザ警告に変わります。デバイスペインは期限の近い順に色付きドットで一覧し、更新…ボタンがルータの API 経由で証明書をその場で再発行します:秘密鍵・サブジェクト・CA は同じまま、有効期間は選択可能(最長 10 年)、必要なら OpenVPN サーバと Web GUI を再起動して読み込ませます。鍵とサブジェクトが変わらないため、既存の VPN クライアントのプロファイルはそのまま動きます — 再エクスポートは不要です。pfSense では REST API の更新アクションが同等の処理を行い、依存サービスも自動で再起動します。pfSense の API は認証局(CA)の有効期限を報告しないため、FrontierStack は CA 証明書そのものから期限を読み取ります。これにより pfSense の CA も他と同様に警告されます。CA はどちらの API でも更新できません。CA の期限が早めに通知されるのは、置き換えに証明書の再署名とクライアントプロファイルの再配布が必要だからです。OpenVPN サービスペインには同じルータ証明書が、Mac 上の各 .ovpn プロファイル(OpenVPN Connect、Tunnelblick、最後に使ったファイル)に埋め込まれた CA とクライアント証明書と並んで表示されるので、クライアント側とサーバ側の期限を一目で比べられます。Plan & Cost カードには OpenVPN 自体は無料であることと、Access Server と CloudConnexa の料金も記載しています。
ルータの操作と診断。AI 管理者は読み取り以上のこともできるようになりました:reboot_router はサーバの再起動と同じ方法でアプライアンスを再起動し(OPNsense/pfSense は API、OpenWrt は SSH)、「Allow changes」でゲートされます。ルータ自身のコンソールで行う方が本当に適したタスクのときは、アシスタントが open_web_ui でその Web UI を開くことを提案します — アドレスは推測せずデバイスペインから解決します。FrontierStack 自身はこれらアプライアンスのファイアウォールルールを意図的に編集しません — OPNsense/pfSense/OpenWrt は独自の設定システムでルールを管理するため、ペインとアシスタントは代わりにネイティブのファイアウォールページを案内します(ルータを右クリック ▸ Open firewall rules… が直接移動)。ペインの利便機能が 2 つあります:Diagnostics ボタンは API 不要の到達性チェック(ping、よく使う管理ポート 80/443/8443/53、逆引き DNS、ゲートウェイ)を実行するので、API キーがなくてもルータをトリアージできます。またルータ/ファイアウォールでは、Discover Services がポートスキャンではなく Web UI を開くことを提案します(自分の境界機器をスキャンするのは通常望ましくありません)。OPNsense や pfSense への SSH が拒否される場合、SSH が無効になっているか — より多いのは — 特定のインタフェース(多くは WAN ではなく LAN)でのみ許可されているためです:LAN 経由(例:VPN 経由)なら通常つながり、外部からは通常ブロックされます。Web UI で SSH と待ち受けインタフェースを有効にしてください(OPNsense は System ▸ Settings ▸ Administration ▸ Secure Shell)。SSH ボタン自体が非表示になるのは、管理シェルをまったく持たない民生用ゲートウェイ(NTT、一部の TP-Link/FRITZ!Box)だけで、その場合は Web UI が唯一の入口です。
9.2ファイアウォールの状態・グラフ・電源
監視を有効にしたピン留め済みの OPNsense・pfSense・OpenWrt ファイアウォールは、自身の API から状態を報告します。そのペインでグラフ表示されるようになりました。CPU とメモリを 0〜100 の 1 つのチャートに、そしてロードアベレージと温度です。サンプルはすでに実行中の監視ポーリングから取得するため、追加の API 呼び出しは発生せず、アラートのスイープが進むにつれてグラフが埋まり、セッションのおよそ直近 6 時間分をカバーします。
プラットフォームごとに提供される情報は異なり、ペインには実在する値だけが表示されます。pfSense は瞬間的な CPU 使用率を、OPNsense は代わりにロードアベレージを報告します。温度は FreeBSD が読み取れるセンサをハードウェアが備えているかに依存します——仮想環境や ARM の構成では搭載されていないことが多く、値がない場合は「センサなし」であり故障ではありません。
ピン留めしたあらゆるデバイスに、サーバと同じようにスマートプラグをリンクできます。オン・オフ・電源再投入、そして計測対応プラグならリアルタイムの消費電力も表示されます。これはファイアウォールで特に重要です。動作不良時に SSH で到達できない唯一の機器だからです——到達に使うネットワークこそ、その機器が提供しているものです。OPNsense も pfSense も自身の消費電力は報告しない(FreeBSD が公開するのは温度センサであり電力ではない)ため、計測対応プラグがファイアウォールで得られる唯一の実測値です。電源再投入は確認を求め、ファイアウォールを通過する全接続が切断されることを警告します。まず API 再起動をお試しください。
API で連携した OPNsense ファイアウォールは、ファームウェアがインストールした PHP も報告します。OPNsense の Web GUI は PHP を root として動かし、キャプティブポータルはゲストの端末に PHP のページを返すので、これは境界にある PHP です。FrontierStack は毎日のファームウェアチェックでファームウェアのパッケージ一覧からバージョンを読み取り、php.net にあるそのブランチの最新リリースと比べます。セキュリティリリースより古い場合や、修正が提供されなくなったブランチの場合は、ファイアウォールのセキュリティの行に警告と対処が表示されます。OPNsense が修正を含むリリースを出したら System ▸ Firmware ▸ Updates で更新し、それまでは GUI に信頼できるネットワークからだけ接続できるようにします。ファイアウォールに PHP のパッケージを手で入れないでください。
9.3通信量、使用量の急増、無断使用の可能性
監視中のルータは WAN の通信量も報告します。アラートのスイープごとに、FrontierStack はルータがすでに公開している累積バイトカウンタ(OPNsense のインターフェイス統計、pfSense のインターフェイス情報、OpenWrt のデバイス統計、MikroTik RouterOS のインターフェイス、Huawei HiLink ルータのモバイルデータ合計)を読み取り、2 回の読み取りの差を速度に換算します。WAN インターフェイスは合算します(インターネットの通信はすべて、そのどれかを必ず 1 回だけ通過します)。WAN を特定できない場合は最も通信量の多いインターフェイスで代用し、ペインの計測対象の行にどれを使ったかを表示します。UniFi コンソールはカウンタではなくゲートウェイの現在のアップリンク速度を報告するため、1 日の通信量は推定値です。1 時間ごとの通信量はこの Mac に約 60 日間保持されます。
ルータのペインには、現在の速度とこの時間帯の通常の速度、今日の通信量と通常の 1 日、ルータが報告する場合は接続デバイス数、直近 6 時間の速度グラフ、2 か月分の 1 日の使用量の棒グラフが表示されます。これをもとに 2 つのアラートがあり、どちらも既定でオン、しきい値は控えめです。それぞれにスイッチと控えめ/標準/最も敏感のメニューがあります。
| アラート | 発生条件(既定の「控えめ」) |
|---|---|
| 使用量の急増 | 同じ曜日・時間帯の通常の速度の 8 倍以上、かつ 25 Mbps 以上の状態が 20 分続いたとき。下限があるため、静かな回線がスマートフォンのバックアップ程度で通知されることはありません。 |
| 長期使用量 | 丸 1 日の使用量が直前 28 日の中央値の 2 倍以上、かつ 1 日あたり 5 GB 以上多い状態が 3 日連続したとき。大きな日が 1 日だけ(ゲームのダウンロード、クラウドバックアップ)では発生しません。 |
重く受け止めるべきなのは長期使用量のアラートです。誰かが黙って回線を使っている場合(Wi-Fi パスワードを知った近所の人、開いたままのゲストネットワークなど)、急増は起きずに毎日の通信量だけが増えます。そのためアラートは無断使用の可能性として通知し、接続デバイス数を通常値と比べ、接続デバイスの一覧と Wi-Fi パスワードを変更…(多数のルータの Wi-Fi パスワードをまとめて変更するを参照)を案内します。想定どおりの増加であれば、新しい基準として受け入れるで両方の基準を直近数日から取り直せます。全履歴を使うで元に戻ります。
9.4Device Discovery:LAN のインベントリ
Device Discovery を開き、Find Monitors を押します(先にサブネットを選んでも構いません)。FrontierStack は選んだ /24 を利用可能なすべての方法で一斉にスイープし、ルータ・アクセスポイント・スイッチ・NAS(Synology、QNAP、ZimaCube/ZimaOS など)・プリンタ・カメラ・他のサーバをまとめて浮かび上がらせます。
- Ping/ARP — ICMP スイープ。ARP/MAC が各ホストのベンダーを示します。TCP Probe をオンにすると、ICMP をフィルタするホストも見つかります。
- Bonjour(mDNS)と SSDP/UPnP — アドバタイズされたサービスとそのフレンドリ名。
- SNMP と LLDP/CDP —
net-snmpとlldpdをインストールするとモデル・ポート・近隣の詳細が加わります(ペイン内のボタンでインストール)。 - Windows サービスポート — ICMP をフィルタするマシンも、特徴的なポート(RDP・WinRM・SMB など)を探ることで見つかるため、Windows PC がスイープから隠れることはなくなりました。
スキャンは各ホストの到達方法も記録します。ローカルで AnyDesk が稼働中、または既定ポート 7070 で応答すると AnyDesk バッジが付き、この Mac 自身の tailscale status から Tailscale バッジ(ピアがオンラインなら緑)が付いてメッシュのピアを検出デバイスに対応付けます(保持するのはエンドポイント・ホスト名・OS のみで、ログイン名は保持しません)。直接接続の LAN では、macOS が既に Bonjour で把握している Mac やデバイスが低速な IP スイープより先に現れ、一覧がすばやく埋まります。デバイス詳細には対応する AnyDesk/Tailscale 行とアプリを開くショートカットがあります。
以前のスキャンで見つかったデバイス。スキャンは、このネットワークで過去 90 日間に記憶したデバイスから始まり、応答しないものを Expected · not yet seen と表示します。完全になくなったデバイスは、スキャン終了後に ⋯ メニューの このデバイスを忘れる で削除できます。一覧とスキャン履歴から消えますが、後のスキャンで応答したデバイスは、また検出されます。
別のアドレスでピン留めしたルータ。ファイアウォールはネットワークごとに異なるアドレスとハードウェアアドレスを持つため、スキャンで見つかったゲートウェイが、別のインターフェースでピン留めした OPNsense と同じものに見えないことがあります。API キーを設定すると、FrontierStack は OPNsense が報告するインターフェース一覧を保存し、そのハードウェアアドレスを持つスキャン行を ピン留め済み のルータとして表示します。ほかのメーカーのルータは、まだこの方法では照合されません。
接続先の Wi-Fi 機器。この Mac の Wi-Fi が接続している機器は、macOS が報告する無線アドレス(BSSID、位置情報へのアクセスが必要)をもとに、Access Point として この Mac の Wi-Fi バッジ付きで表示されます。ワイヤレスブリッジは中継するサブネット上にアドレスを持たないことが多く、その場合、行には このサブネットにアドレスなし と表示され、管理用アドレスを IP で追加するまでピン留めや監視はできません。
スキャンせずに tailnet のデバイスをピン留めするには、Tailscale サービスペインを開きます。Tailnet のデバイスに、この Mac の Tailscale から見える tailnet 上の全デバイスが並びます(API トークン不要。この Mac で Tailscale が未接続のときは Tailnet ペインの API 一覧を使います)。各デバイスの LAN(Wi-Fi/Ethernet)アドレスも、Tailscale の直接接続・tailscale ping・Tailscale API・Bonjour から検出します。ピン留め済みのデバイスやサーバに登録済みのデバイスには印が付き、クリックで開けます。Mac とサーバにはサーバに追加(デバイス検出と同じ登録先)、それ以外にはピン留めボタンがあります。この Mac と同じネットワークのデバイスは LAN アドレスで追加され、外出中も tailnet アドレスで監視されます。別の場所のデバイスは tailnet アドレスで追加されます。Mac・Windows PC・サーバ・NAS は、ピン留めしたときや種類をそれらに変えたときにも自動でサーバに追加され、MAC アドレス・ベンダ・アイコン・色・電源と UPS の連携・保存したパスワード・場所・サイドバーのグループが引き継がれます。「識別情報」のサーバで開くでその項目に移動できます。
別の tailnet デバイスのサブネットルート経由で到達する LAN 上のルータは ping に応答しますが、トンネル越しではハードウェアアドレスでどのルータが応答したかを確認できません(192.168.1.1 は複数の拠点にありえます)。そのため確認するまではオフラインのままです。ルータのペインに、そのサブネットをルーティングしているデバイス名とともに Tailscale サブネットルート欄が表示されるので、このルータは … のネットワーク上にあるをクリックすると、以後そのルート経由の応答でオンラインと判定します。1 つのルートを紐付けられるのは、同じアドレスのピン留めルータのうち 1 台だけです。
AI 管理者の discover_devices ツールは同じスキャンを実行し、種別を確信を持って識別できたデバイスを自動でピン留めします。あいまいなものは推測せず一覧に戻すので、アシスタントはそれが何かをあなたに尋ね、pin_device でピン留めできます。ピン留め(監視)されたデバイスはその種別のサイドバーセクションに現れ、ダブルクリックでペインを開けます。行の Open Web UI・Discover Services・Reclassify・Remove も使えます。アドレスが分かっていれば Add a device by IP フィールドが直接プローブしてピン留めします — 全体スキャンは不要です。
スキャンの完了を待たずにピン留め。すでに高い信頼度で識別された行には、スイープ実行中でも Pin が表示され、識別が不確かな行は Review & Pin… で種別を選んでピン留めできます。スキャン中にピン留めしたデバイスはそのまま残り、スキャンが完了するか Stop を押すと、残りのスキャンで判明した情報がピン留めの記録に反映されます。1 台をじっくり調べたいときは Stop を押し(それまでに見つかった行は残ります)、その行の Review & Pin… または ⋯ メニューから 識別してピン留め を選びます。FrontierStack はそのアドレスだけをフィンガープリントし、結果の信頼度が高ければピン留めし、そうでなければフィンガープリントの結果を表示したまま確認待ちとして残します。
POS 機器。Square Terminal や Register はポートを開かず Bonjour でも告知しないため、Square 自身の MAC アドレスブロックで識別し、POS(販売時点管理)として表示します。Square ペインのハードウェアセクションには、Square の API が報告するデバイス(状態、バッテリー、Wi-Fi、IP)と並べて表示されます。Square のカードリーダは Bluetooth で接続するため、ネットワークには現れません。Star Micronics や Epson TM のレシートプリンタはベンダとモデル名で識別します。
Android TV・Google TV ボックス。NVIDIA Shield、Chromecast with Google TV、Mi Box、onn などのボックスは、告知する Android TV Remote サービスで識別され、Android TV/Google TV として固定されます。プラットフォームを Android TV / Google TV (adb) にすると、状態を確認で adb 経由で状態を読み取ります:モデル、Android のバージョンとセキュリティパッチの古さ、稼働時間、ストレージ、メモリ、画面のオン/オフ、温度、前面のアプリ。1 年以上古いパッチ、90% を超えたストレージ、熱による性能制限は警告します。デバイスペインから Google の Platform Tools をインストールし、TV で開発者向けオプション ▸ USB デバッグをオンにして、「USB デバッグを許可しますか?」を一度だけ許可してください。FrontierStack は読み取るだけです。サイネージやサブネットルータとして使うボックスにはオフライン通知も設定できます。
Chromecast と Google Cast。Chromecast や Cast 内蔵のテレビ・スピーカは、告知する Google Cast サービスで識別されます。デバイスのページは、サインインも事前の設定もなしに、名前、モデル、Cast ファームウェア、ネットワーク、稼働時間、キャスト中の内容、スタンバイ状態、音量を読み取ります。キャストを停止… は確認のうえで現在のキャストを止めます。Fire TV のような再起動はありません。Google が Google アカウントの認証を必須にしているためです。再起動は Google Home アプリで行うか、スマートプラグを紐付けて電源を入れ直してください。Chromecast with Google TV は Android TV ボックスとして扱います。
Aqara と Thread ボーダールータ。Aqara にはローカル API がないため、FrontierStack は各機器が報告する場所でそれを捉えます。ハブ(M1S、M2、M3、M100、M200)はスマートハブとして固定され、HomeKit・Matter・Thread ボーダールータを告知しているかを表示します。ハブが止まると配下の Zigbee センサがすべて止まるため、オフライン通知をオンにしてください。カメラとドアベルは Aqara Home で RTSP をオンにするとポート 8554 で RTSP 配信します。AV フィードでベンダ Aqara を選んで追加してください。FP シリーズのレーダ人感センサ(FP1、FP1E、FP2、FP300、FP400)は Zigbee2MQTT 経由(製品名で表示され、在室、照度、温度、湿度、電池残量低下の通知付き)、または Home Assistant 経由(センサごとに 1 行にまとめて表示)で報告します。Thread ボーダールータとして告知しているデバイスにはネットワーク名付きの Thread バッジが付き、Apple TV のペインではそのモデルが Thread 無線を搭載しているかも示します。
Apple ホームのホームハブ。ホームハブになっている HomePod や Apple TV には、デバイス検出で名前の横にバッジが付きます。今ホームを動かしているハブには緑のホームハブ、他のハブにはスタンバイハブ、この Mac のホームデータにどれがアクティブか記録されていない場合は単にハブと表示します。デバイスペインには同じ状態を示す Apple ホームセクションが加わり、Apple ホームペインには各ホームのハブが一覧されます。Apple ホームはアクティブなハブを自分で選び、ハブの再起動、アップデート、ネットワークの切断などでいつでも別のハブに移ることがあります。優先するハブはホーム App のホーム設定 ▸ ホームハブとブリッジで選べます。FrontierStack はこの情報を Mac のホームデータから読み取り専用で読み、ハブとデバイスを名前で照合します。macOS がアクセスをブロックした場合は、システム設定 ▸ プライバシーとセキュリティでフルディスクアクセスを許可してください。
9.5あらゆるメーカのカメラ
カメラペインは、FrontierStack が把握しているすべてのカメラを、映像を表示できるかどうかに関係なく 1 つにまとめた状態ボードです。Device Discovery で見つかったカメラ(ピン留め済みと、見つかったが未ピン留めのもの)、AV Feeds のストリーム、SwitchBot のカメラ、Smart Life のカメラ、UniFi Protect のカメラを集めます。カメラが何十台あっても、上部の台数とオフラインフィルタですぐにわかります。オフラインのカメラが先頭に並び、ピン留めしたカメラと同じアドレスのストリームは、2 つに分かれずそのカメラのタイルに表示されます。ピン留めしたカメラと同じ MAC アドレスの Protect カメラは、そのカメラのタイルに表示します。各タイルのベルでオフラインのアラートを切り替えられ、すべてにアラートで確認できるカメラすべてをまとめて対象にできます。アラートはアラートペインを通るので、連絡先のプリセットで現地の技術者を呼び出せます。
カメラは、RTSP(ポート 554)、Web ポート(80)、ONVIF(2020)のいずれかに応答すれば稼働中とみなします。Ring・Nest・Blink・Arlo などクラウド専用のカメラは、自社アプリからしか届かないため状態を表示しません。
Tapo カメラを外出先から確認(非公式)。サービス ▸ カメラ ▸ Tapo Cameras で TP-Link ID でサインインすると、Mac が自宅のネットワークの外にあっても各 Tapo カメラのオンライン / オフラインがわかり、アラート経由でオフライン通知を受け取れます。TP-Link は公式 API を提供していないため、FrontierStack は Tapo Android アプリと同じ方法でサインインします。そのため TP-Link がアプリを変更すると動かなくなることがあり、利用が TP-Link の規約に反する可能性があります。読み取るのは状態だけです。パスワードは保存せず、2 回続けてオフラインと確認されたときだけオフラインとみなします。TP-Link のクラウドに接続できないときは状態を取得できませんと表示し、オフラインにはしません。ピン留めした Tapo カメラは、クラウドがオンラインと報告している間はネットワークの外でも緑の表示のままです。その他の Tapo デバイスや、2 つ目のサインインで Kasa デバイスも監視できます。
SD カード。Tapo、Hikvision/Annke、Dahua/Amcrest/Lorex、Reolink、Axis のカメラでは、各タイルにカメラ自身が報告するメモリカードの状態も表示します:SD ✓ 42% 使用、SD カードなし、未フォーマット、SD カードのエラー、不明のときは SD —(理由はポインタを重ねると表示)。FrontierStack はクラウドではなくカメラ自体のローカル API に、Mac がカメラのネットワーク上にいる間だけ問い合わせます。ネットワークの外では、最後の結果を確認時刻とともに表示したままにします。確認は 30 分ごとに 1 台ずつ、カメラごとに最短 10 分間隔で行います。Tapo 以外のカメラは、AV Feeds のストリームのログインか、カメラのデバイスペインで入力したログインを使います。Tapo カメラには admin と TP-Link アカウントのパスワードが必要で、Tapo Cameras ▸ ローカルカメラアクセスで一度入力します。パスワードはキーチェーンに保存し、TP-Link のクラウドに送ることはありません。カメラがログインを拒否すると、ログインを直すか再試行を押すまで問い合わせを止めます。カメラはサインインの失敗が続くとアカウントをロックするためです。接続やサインインができないカメラを「カードなし」と報告することはありません。SD のアラートは任意で、満杯に近いときのアラートは初期設定でオフです。ほとんどのカメラはループ録画のため、常に満杯に近いからです。eufy、WTW、Eseecloud のカメラにはストレージを読み取るローカル API がありません。
Tapo カメラの再起動。Tapo カメラのデバイスペインにはカメラを再起動…があります。Tapo アプリの「再起動」と同じ操作で、SD の確認と同じローカルサインインを使い、同じ条件(カメラのネットワーク上のみ、固定した証明書、ログイン拒否やロック後は実行しない)で送ります。再起動中の約 1 分間、録画とストリーミングは止まります。
メーカごとに必要なこと:
| メーカ | できること | 設定方法 |
|---|---|---|
| Anker eufy | 多くの機種で RTSP。ONVIF と公開 API はなし | eufy Security アプリで、カメラ ▸ 設定 ▸ ストレージ ▸ NAS(RTSP)を開きます。ユーザ名とパスワードをそこで設定し(既定はランダム)、表示されるリンクをコピーします。通常は rtsp://user:pass@ip:554/live0 です。連続録画を選んでください。イベントモードやバッテリ式カメラでは、イベント中にしかストリームがないため、オフラインのアラートが誤報になります。同時に見られるのは最大 4 台です。 |
| WTW(塚本無線) | PoE/IP シリーズは RTSP と ONVIF に対応。EAGLE Wi-Fi シリーズは非対応 | 下記を参照。 |
| Eseecloud(EseeCloud/IP Pro アプリ) | レコーダは Web ポート 80 で RTSP | レコーダ本体のネットワークメニューで RTSP サーバをオンにし、rtsp://user:pass@nvr-ip:80/ch0_0.264 を使います。チャンネルは 0 から数え(ch0 がカメラ 1)、_1 はサブストリームです。単体の Eseecloud Wi-Fi カメラの多くは RTSP がありません。既定のログインは admin、パスワードは空です。 |
9.22.1WTW のカメラとレコーダ
古い IP カメラ。WTW 自身の 2018 年版 IP カメラ取扱説明書では、メインストリームが rtsp://ip:554/live/0/main、サブストリームが /live/0/sub です。ポート 554 が既定で、変更できます。RTSP はカメラの Web 設定のネットワーク設定でオンにします。現行の PoE/IP モデルと NV4 シリーズのレコーダは、仕様に RTSP と ONVIF を記載しています。上記のパスで接続できない場合は、NVR アプリで ONVIF として追加して URL を調べてください。
EAGLE Wi-Fi シリーズ。RTSP にも ONVIF にも対応していません。WTW のサポートサイトはあるカメラについてそう明記しており、レコーダの仕様には TCP/IP・DHCP・P2P しか記載がありません。これらでできるのは、レコーダが Web ポートに応答するかの確認までです。Device Discovery で WTW Camera / NVR としてピン留めし、オフラインのアラートをオンにしてください。
初期パスワード。NV4 レコーダは 00000000 で、工場出荷時に戻すと wtwjapan になります。古いカメラは admin で空パスワード、または admin/admin です。ネットワークにつなぐ前に変更してください。
9.22.2スマートホームのクラウド
Smart Life(Tuya)の機器は、Tuya 公式の Cloud API で読み取ります。iot.tuya.com でアカウントのデータセンタ(日本のアカウントは Western America)に Cloud プロジェクトを作り、Devices ▸ Link Tuya App Account で Smart Life のアカウントを連携し、プロジェクトの Access ID と Secret を Smart Life ペインに貼り付けます。これで各機器のオンライン状態とプラグの電力が見え、プラグや照明のオン/オフ(電源タップはコンセントごと)ができ、どの機器もオフラインになったらアラートを出せます。TESSAN、BN-LINK、Edison Smart、OHMAX、MEAPUXIN のプラグも Smart Life 機器です。サーバの電源再投入に使うには、電源コントロールで Smart Life / Tuya コンセントとして追加してください。無料トライアルは月に約 26,000 回の呼び出しまでで、数か月ごとに延長が必要なため、FrontierStack は 10 分ごとに確認します。
Minut のセンサは、賃貸物件の騒音・在室人数・温度・湿度を報告します。Minut ペインは、センサのオフライン、バッテリ残量の低下、物件で騒音トラブルが進行中のときにアラートを出します。Minut は承認したアカウントにしか API を開放しておらず、ヘルプ記事ではエンタープライズプランが条件とされています。
SmartThings、Govee、LIFX、Sensibo、Nuki には、それぞれ専用のペインがあります。アカウントのデバイスを一覧にして、状態を色で示します。緑はオンライン、赤はオフライン、灰色はクラウドが状態を返していないことを表します。デバイスの横のベル、またはすべてアラートをオンにすると、オフラインになったときにアラートを出します。Govee、LIFX、Sensibo、Nuki に必要なのは、各社のアプリやサイトで発行する API キーかトークンだけです。SmartThings では、SmartThings CLI で自分用の OAuth アプリを一度作っておくと、サインインが切れずに使えます。個人用アクセストークンでも使えますが、24 時間で失効します。キーが拒否されたりサインインが期限切れになったりすると、アカウントのアラートを 1 件出します。クラウドに到達できないときは、そのデバイスを不明として扱います。どちらの場合も、デバイスのオフラインとは報告しません。賃貸物件では Nuki のロックを監視しておくと安心です。接続が切れたロックは、ゲストのために遠隔で開けられません。
キーパッドコード。キーパッドをペアリングした Nuki のロックは、Nuki ペインでコードを表示を押すとコードを一覧にします。数字は表示するまで隠れています。コードの追加、数字や名前の変更、期間・曜日・時間帯の制限、無効化、削除ができます。Nuki のコードは 1〜9 を使った 6 桁で、12 から始めることはできません。API トークンには、ロックの閲覧に加えてスマートロックの認可を管理する権限が必要です。変更はブリッジ経由で約 1 分以内にロックに届きます。SwitchBot ペインでは、キーパッドや Lock Vision の行にパスコード一覧があり、6〜12 桁の常時・期間限定・ワンタイム・緊急パスコードを追加したり削除したりできます。SwitchBot はパスコードを編集できず、読める形で返すこともないため、変更するときは新しいパスコードを追加してから古いものを削除し、追加するときに控えておいてください。どの変更にも実際の操作が必要で、人間の操作による承認が求める場合は Touch ID も必要です。画面を操作する自動化がドアのコードを発行することはできません。変更はすべて、数字を含めずに監査ログに記録されます。
9.6電話機・PBX・SIP トランク
VoIP・電話はフルフリートの機能です。スタンダードでは以下はすべて表示のみです。Device Discovery は卓上電話機と ATA(Yealink、Poly、Grandstream、Snom、Fanvil、Cisco、Avaya、Mitel、Panasonic、Gigaset、2N や Algo のインターホンなど)と、PBX 装置と SBC(Grandstream UCM、Yeastar、Avaya IP Office、NEC UNIVERGE、Panasonic KX-NS、AudioCodes Mediant、FreePBX や 3CX のサーバなど)を認識し、IP電話機 / ATA または PBX / 電話システムに分類します。FRITZ!Box のように電話ポート付きのルータはルータのままです。デバイスページの VoIP セクションには、実際の SIP OPTIONS リクエストを送る SIPを確認、アラートで監視、電話機ではオフライン時のアラートがあります。
SIP チェックはポートが開いていること以上を確かめます。401 や 404 でも SIP の応答があれば SIP スタックは動いていますが、503 などの 5xx は動いていても通話を受け付けていない状態なのでダウンとみなします。ツール ▸ SIPヘルスチェックで UDP・TCP・TLS を指定して手動で実行でき、アラートの SIP (OPTIONS) 監視は毎回のチェックで実行します(ポート 5061 は TLS)。PBX、SIP トランク事業者のプロキシ、SBC に使います。
VoIP・電話カタログには、通話が止まる原因そのものでアラートするライブモニタがあります。Asterisk、FreePBX、PBXact、Issabel、VitalPBX のオフラインの内線とトランク(LAN か VPN 経由で、読み取り専用の Asterisk REST Interface ユーザを使用)、3CX の未登録トランク・期限切れのライセンス・停止したサービス、Zoom Phone と Webex Calling のオフラインの電話機、Telnyx・Plivo・Vonage・VoIP.ms の下限を下回ったプリペイド残高です。
国内・韓国の製品。Device Discovery は国内のビジネスホンメーカも認識します:サクサ PLATIA、岩崎通信機 Frespec、ナカヨ NYC、沖電気 CrosCore・DISCOVERY neo、日立 NETTOWER、NTT スマートネットコミュニティ α、IPECS(旧 Ericsson-LG)、Samsung OfficeServ。メーカ名だけでは判定しないため、OKI のプリンタ、NTT のホームゲートウェイ、Samsung のテレビは元の種類のままです。カタログには BIZTEL、MOT/TEL、MiiTel、ソフトバンク ConnecTalk、KDDI 光ダイレクト、Arcstar IP Voice、LG U+・KT・SK ブロードバンドの法人向けインターネット電話も加わりました。BIZTEL モニタは BIZTEL の API(履歴取得API オプションと API トークン)で通話履歴を読み、直近 1 時間の応答なしの着信がしきい値を超えるとアラートします。毎回新しい通話だけを取得するので、アカウントの月間 API 上限をほとんど消費せず、その利用量も表示します。
9.7Data Map
Data Map ペインはロケーションごとのデータフロー図を描きます。1 つの拠点で、データがどこに存在し、デバイスやサービスを横断してどう流れるかを示します。FrontierStack はそのロケーションのインベントリ — 検出したデバイス、その役割、(任意で)スキャンしたポート — をシリアライズし、秘密情報を伏せて、ローカルの claude CLI を通じてあなたのサブスクリプション Claude に渡します(アプリ内ハーネスが使う従量課金 API ではありません)。返答は Mermaid フローチャートと短い説明として戻り、ペイン内でオフライン描画されます。各ロケーションの最新図は保持され、Obsidian ボールトにランブックとして保存できます。ロケーション自体は第 8 章で説明します。
9.8ポートを開く:UPnP と NAT-PMP/PCP
従来の方法でインターネットからサービスへ到達するには、ルータのポートを Mac へフォワードする必要があります。手作業でルータにログインさせる代わりに、FrontierStack はルータがアドバタイズする標準プロトコルでマッピングを依頼できます。
- UPnP IGD(
miniupnpc経由)— 一般的な家庭用ルータの方法。 - NAT-PMP/PCP(
libnatpmp経由)— Apple 由来の方式とその現代的後継。 - OPNsense — その API を通じて境界ルールとポートフォワードを直接設定。
これらのツールは初回使用時にオンデマンドでインストールされます。一時セッション用に作ったマッピング(Debug Share 参照)は、セッション終了時に自動で撤去されます。
9.9ダイナミック DNS:変化する IP を追う
家庭や小規模オフィスの回線は静的 IP を持たないことが多く、今日のアドレスに向けたホスト名は明日には古くなります。Dynamic DNS ペインはホスト名を現在のパブリック IP に追従させます。Name、Hostname(例 myhost.duckdns.org)、プロバイダのアカウント情報でエントリを追加し、Update Now で即時公開するか、Update automatically をオンにします。更新を FrontierStack の実行中のみ行うか、システムサービスとして恒久的に行うかを選べるので、アプリを閉じてもレコードは最新に保たれます。Cloudflare ユーザにはより緊密な経路があります — パブリック IP を追う Cloudflare DDNS A レコードで、第 7 章と同じ Cloudflare 連携が動かします。他プロバイダは更新 URL による汎用インターバル更新がカバーします。
9.10DHCP サーバ:スコープ・リース・フェイルオーバー
DHCP サーバペイン(DNS の下、フルフリート)は、ネットワークでアドレスを配るサーバを見守ります。連携済みサーバを選ぶと、既存の SSH 接続を通じて、そこで動いている DHCP サーバを見つけます:Windows Server の DHCP 役割(PowerShell の DhcpServer モジュールで読み取り)、Kea(kea-dhcp4.conf とリースファイル)、ISC DHCP(dhcpd.conf と dhcpd.leases)、dnsmasq(Pi-hole 内蔵のものを含む)。Linux でリースファイルを読むには、通常そのサーバの sudo パスワードをリモート管理に保存しておく必要があります。
| セクション | 表示内容 |
|---|---|
| サーバ | DHCP サーバの種類・バージョン・動作状況。ドメイン参加済みの Windows サーバでは Active Directory で承認済みかどうか。 |
| 検出事項 | 重大度順の問題:サービス停止、ほぼ満杯のスコープ、フェイルオーバーの不一致、予約アドレスが別の機器に貸し出されている、1 台に DHCP サーバが 2 つ設定されている。 |
| スコープ | すべての IPv4 スコープ/範囲と使用率バー:プールサイズに対する使用中アドレス数と予約数。 |
| フェイルオーバー | Windows のフェイルオーバー関係と ISC のフェイルオーバーピア。このサーバとパートナーの状態。 |
| 予約/リース | 固定アドレスと、有効なすべてのリース(MAC アドレス・ホスト名・期限)。IP・MAC・名前で絞り込めます。 |
予約。Windows の DHCP サーバでは予約の追加(スコープ・IP・MAC・任意の名前)と削除ができます。リースを右クリックしてこのアドレスを予約…を選ぶとフォームに入力されます。Kea・ISC・dnsmasq の設定ファイルを FrontierStack が編集することはありません。リースを右クリックして予約行をコピーを選び、設定に貼り付けてサーバを再読み込みしてください。
ピン留めデバイスのアドレスを予約する。DHCP の更新のたびにアドレスが変わるデバイス(Wi-Fi が切れがちなカメラ、ルータ再起動後の PC など)は、アドレスを固定できます。デバイスのペインでこのアドレスを予約…を押すか、AI 管理者に頼みます(ツールは dhcp_reservation)。FrontierStack はデバイスの MAC から、そのリースを持つ DHCP サーバを探します。API キーのある OPNsense では Dnsmasq または Kea を API で変更し、すぐに適用します。キーには「Dnsmasq DNS/DHCP: Settings」または「DHCP: Kea(v4)」の権限が必要で、Dnsmasq の予約ではその名前がローカルで名前解決されるようにもなります。ここにある Windows サーバは PowerShell で変更します。OPNsense の ISC DHCP や設定ファイル型のサーバでは、静的マッピングの場所か設定行を示します。それ以外は、デバイスのロケーションのルータについて Web UI の手順を示します。TP-Link Archer や Deco などの家庭用ルータには API がないためです。確認するまで何も変更されません。
アラート。サーバのアラートで監視をオンにすると 30 分ごとに確認します。DHCP サービスの停止、スコープがアラート水準(既定 95 %、ペイン上の警告は 85 % から)に達したとき、フェイルオーバーが partner-down になったときにアラートが届きます。水準はペイン下部で変更できます。AI 管理者は get_server_health の area=dhcp で同じ状態を読めます。
9.11トンネルとメッシュ:開けずに届く
外部からサービスへ到達するより良い方法は、受信ポートを完全に省くことです。トンネルは外向きの接続を張り、外部エンドポイントがそれに乗って戻ってくることで、何もフォワードせず NAT を越えます。
- Cloudflare Tunnel — クイックトンネルはアカウント不要で公開
*.trycloudflare.comURL を、名前付きトンネルは恒久的なホスト名を与えます。 - Tailscale — Serve はサービスを tailnet 内で非公開に保ち、Funnel は Tailscale ノードを通じてインターネットへ公開します。
マシン間の継続的な接続には、メッシュ/VPN ネットワークが、どこへ移動しても各ノードに安定した私的アドレスを与えます。FrontierStack は一般的なものを管理します — 対応ルータ(OPNsense)では API で、サーバでは SSH で。
| ネットワーク | 内容 |
|---|---|
| WireGuard | 現代的で高速なカーネル VPN トンネル — 他の多くが土台にする基盤層 |
| Tailscale | 出口ノードとサブネットルータを持つ WireGuard メッシュ。SSH または OPNsense API で設定。VPN ペインでは FrontierStack の起動時に Tailscale を自動接続でき、ルータのフォールバックアドレスやテイルネット監視が最初のスイープから機能します |
| Headscale | セルフホストのオープンソース Tailscale コントロールサーバ |
| NetBird | オープンソースのゼロトラストネットワーク。セルフホスト可能 |
| Nebula | 軽量なオーバーレイメッシュ(Slack/Defined Networking) |
| ZeroTier | ゼロトラスト SD-WAN/仮想ネットワーク — エージェント+API |
9.22.3テイルネット:Tailscale 全体のビュー
サーバごとの Tailscale 操作は各サーバのペイン内にあり、SSH 経由で「そのマシンでデーモンが動いているか」を確認します。テイルネットペインは、Tailscale 自身の API でしか分からないネットワーク全体の状況を扱います。API アクセストークン(このペインは書き込みを行わないため、デバイスの読み取り権限だけで十分)を貼り付けると、各デバイスのアドレス、OS、クライアントバージョン、所有者、タグ、最終確認時刻が一覧表示されます。
このペインの価値は「要対応」リストにあります。期限が近づいたノードキー(キーが失効するとデバイスは静かにテイルネットから外れ、再認証するまで戻りません=予定された障害)、承認待ちのデバイス、承認されていないルートを広告しているデバイス(ノードは正常なのにサブネットへ到達できない典型的な原因)、そして数週間チェックインしていないデバイスを表示します。キーの期限切れと承認待ちはアラートにも通知されます。
9.22.4セルフホストの DERP リレー
Tailscale や Headscale の機器同士が直接つながれないとき — たいていはどちらかがハード NAT の内側にあるため — 通信は DERP リレーを経由します。Tailscale は世界各地でリレーを運用していますが、遅延を減らすため、あるいは中継される通信を自分で管理するハードウェアに留めるために、自前の derper を運用することもできます。Tailscale DERP リレーペイン(VPN ▸ Tailscale DERP リレー)は両方を扱います:
- この Mac から見た状況。ローカルの
tailscale netcheckから、UDP が使えるか、ネットワークがハード NAT か、ホームリージョンと各リージョンへの遅延、tailnet の DERP マップにあるセルフホストのリージョン、そして直接接続やピアリレーではなくいま DERP 経由で中継されているピアを表示します。 - 自分のリレー。追加した
derperを認証情報なしで確認します — HTTPS の/derp/probe、DERP ハンドラが有効か、証明書の有効期限、UDP 3478 での実際の STUN バインディング — 応答しなくなったときや証明書の期限が 14 日以内になったときにアラートを出します。 - 運用に組み込む。リレーごとに起動コマンド(
go install tailscale.com/cmd/derper@latest。必要なら-verify-clientsを付けて自分の tailnet の機器だけに使わせる)、tailnet ポリシーファイル用のderpMapブロック、Headscale 用の DERP マップファイルを生成します。
tailscale_control の op=derp で同じレポートを読みます。9.22.5Apple TV を入口に:ロックされた ISP ルータへ届く
NTT の XG-100NE などフレッツのホームゲートウェイのような ISP 支給ルータには Tailscale も VPN も入れられず、設定画面は LAN からしか開けません。IPoE(MAP-E/DS-Lite)の回線では外から使える IPv4 ポートもないため、ポート開放も従来型の VPN サーバも使えず、静的ルートはネットワーク内の経路を決めるだけです。答えは、ルータの内側で常時稼働する機器に Tailscale を入れてサブネットルータにすることです。外向きの接続しか使わずインターネットには何も公開しません。テレビにつないである Apple TV は手軽な選択肢です。
- Apple TV の App Store で Tailscale をインストールし、Install VPN Configuration を選んで QR コードでログイン。
- アプリのサブネットルータをオンにし、LAN を入力(例:
192.168.1.0/24)。 - Tailscale 管理コンソールの Machines 一覧で Apple TV の ⋯ ▸ Edit route settings… を開き、範囲にチェックを入れて保存。同じメニューで Disable key expiry。
- tailnet 上のどこからでもルータの LAN アドレスを開く(例:
http://192.168.1.1)。
| モデル | Tailscale |
|---|---|
| Apple TV 4K(2021・2022) | 完全対応(tvOS 27) |
| Apple TV HD(2015)、Apple TV 4K(2017) | 動作するが tvOS 26 止まり。HD の Ethernet は 100 Mbit |
| Apple TV 第 3 世代以前 | App Store がなく不可 |
Apple TV をホームハブにしてスリープ中も届くようにし、ポートのあるモデルでは Ethernet を使い、出かける前に電源の抜き差しを試してください(tvOS のアップデートで勝手に再起動します)。自宅の LAN は珍しい範囲にして(NTT のゲートウェイでは Web設定 ▸ LAN設定)、接続元の 192.168.1.x と衝突しないようにします。tvOS には SSH がないため FrontierStack は Apple TV 自体を設定できませんが、Tailnet ペインでオンラインかどうかと、承認待ちのルートを確認できます。
9.22.6自前の ZeroTier コントローラを運用する
ZeroTier のクライアントはメンバ側だけで、ネットワークの管理は通常 my.zerotier.com で行います。しかし zerotier-one はどのインストールでも、そのネットワークのコントローラ自体になれます。完全にセルフホストでき、メンバ一覧を第三者に預ける必要もありません。ただしこの構成にはローカルの管理 UI が一切付属しません。ZeroTier コントローラペインがその欠けた部分を埋めます。
コントローラの identity と所有するネットワークを表示し、メンバの承認キューをワンクリックの承認/取り消しで処理できます。承認済みでも 2 週間確認されていないメンバには印が付きます。使われていない許可はネットワークの穴になり続けるためです。ネットワーク名、公開/非公開、ルート、IP 割り当てプールを編集でき、ZeroTier 独自のルール言語でフロールールを記述できます。入力しながらローカルでコンパイルされ、よくある構成のテンプレートに加えて、全員を締め出すルールセットを保存する前に警告が出ます。
すべての操作はコントローラ自身のループバック API に対して SSH 経由で行われます。コントローラは 127.0.0.1:9993 で待ち受け、root 権限で読めるトークンで認証するため、FrontierStack はコントローラ API を外部に公開する必要がなく、むしろ公開しない設計です。内蔵の監査は、誰かが公開してしまっている場合や、ファイル権限が緩い場合、バックアップがない場合に警告します。Prometheus への書き出し、ウォームスタンバイのバックアップ/復元、ZeroTier Central からの移行アシスタントも用意しています。
identity.secret は代替不可能です。失うと、そのコントローラが持つすべてのネットワーク ID が孤立します。暗号化して別の場所にバックアップしてください。9.12UniFi:クラウドゲートウェイ、Dream Machine、Superlink
Ubiquiti のコンソールには専用ペインを用意しています。UniFi ゲートウェイは、汎用のルータ監視では見えない仕事をしているためです。Dream Machine(UDM、UDM Pro、UDM SE)、クラウドゲートウェイ(UCG-Ultra、UCG-Max、UXG)、Superlink ゲートウェイ、Cloud Key、セルフホストのコントローラのいずれにも対応します。UniFi ペインは Ubiquiti の 2 つの API を扱います。両者は答える問いが異なります。Site Manager キー(unifi.ui.com で作成する 1 つのキー)は、アカウント内の全コンソールを機種・ファームウェア・オンライン状態とともに一覧します。遠隔サイトが電源やインターネットを失ったことを知る唯一の方法です。ネットワークから切り離されたコンソールは、ローカルでは何も伝えられないからです。コンソール側(設定 ▸ 管理者とユーザ)で作成するローカル API キーは、ゲートウェイの現在の動作を明らかにします。
ローカル接続では、WAN 回線を ISP・レイテンシ・スループットとともに表示し、実際に通信を担っている回線を示します。この点が重要です。プライマリ回線が落ちると UniFi は無言でバックアップに切り替えますが、バックアップは多くの場合低速で従量課金です。通常これに気付くのは翌月の請求書です。さらに、アダプト済みデバイスとファームウェア、ゲートウェイが評価する順序どおりのファイアウォールルール、クライアント一覧、そしてすべてのポートフォワードを表示します。有効なポートフォワードはいずれもファイアウォールに意図的に開けた穴なので、任意の送信元アドレスからの接続を受け付けるものには印を付けます。公開ウェブサーバなら妥当ですが、それ以外では確認する価値があります。
アラートは、コンソールのオフライン、WAN 回線のダウン、バックアップ回線での稼働、デバイスのネットワーク離脱、インターネットに開放されたポートフォワードを対象とします。このペインは意図的に読み取り専用です。ルールやネットワークの変更は、その検証機構がある UniFi コンソール側に残します。PoE のポート制御は次節が扱い、コンソールの単純な到達性は従来どおり Router & Network にも表示されます。
Site Manager キーで UniFi Protect のカメラとドアベルも一覧します(最大 5 分ごと)。カメラのアラート、またはすべての Protect カメラでアラートをオンにするとオフラインを通知します。更新中のカメラや、コンソール自体がオフラインのカメラは、ダウンではなく不明と表示します。
9.13多数のルータの Wi-Fi パスワードをまとめて変更する
Wi-Fi のパスワードが漏れたとき(退職者、客室に掲示したパスワード、誰かが黙って使っているネットワークなど)、対策はそのネットワークを配信しているすべてのルータとアクセスポイントで、一度にパスワードを変えることです。Wi-Fi パスワードを変更…(ルータとネットワーク ▸ ルータ、または Wi-Fi アナライザ)はこれを一度に行います。Full Fleet の機能です。FrontierStack はピン留めした各ルータにサインインして配信中のネットワークを一覧表示し、選んだネットワークを配信しているルータにチェックを入れます。新しいパスワードを入力するか生成で読み上げやすいランダムなパスワードを作り、確認します。ルータは 1 台ずつ変更され、この Mac のゲートウェイになっているルータは最後になります。各行に変更内容が表示されます。
| プラットフォーム | パスワードの変更方法 |
|---|---|
| OpenWrt | ubus 経由の LuCI ログイン:該当する wifi-iface のキー、uci commit、Wi-Fi の再読み込み |
| MikroTik RouterOS 7 | REST 経由のルータログイン:ネットワークが使うセキュリティプロファイルまたはインラインのパスフレーズ(wifi、wifiwave2、従来の wireless) |
| UniFi コンソール | UniFi ペインのローカル API キー(Network 10.1 以降)。コンソールが管理下のすべてのアクセスポイントに反映 |
| その他 | 各ルータの Web UI へのリンク付き手動で変更チェックリスト |
変更するのはパーソナル(WPA2/WPA3 の事前共有キー)ネットワークだけです。エンタープライズ、オープン、アップリンク(ステーション)のネットワークには触れず、別のネットワークも使っている RouterOS のセキュリティプロファイルは、そのネットワークのパスワードまで変わってしまうため拒否します。変更後はこの Mac を再接続でこの Mac を接続し直し、参加用コードを表示でスマートフォンが読み取れる QR コードを表示し、失敗したものを再試行用に選択で失敗したルータだけをやり直せます。
9.14Power over Ethernet:電源ボタンのない機器の電源ボタン
アクセスポイント、カメラ、ドアコントローラ、デスクフォンには電源スイッチがありません。唯一の電源は接続先のスイッチポートです。そのため、応答しなくなった機器の復旧手段である「電源を入れ直す」には、通常ベンダの Web UI にログインするか、キャビネットまで歩く必要があります。
Power over Ethernet ペインは、そのポートをボタンに変えます。管理スイッチを IP で追加すると、ポートごとに PoE の状態(給電中、検索中、障害)、受電機器のクラス、優先度、スイッチが報告していれば消費電力が表示され、電源のオン/オフと電源の入れ直しが行えます。さらにスイッチの電力バジェット(総容量、使用中の電力、スイッチ自身の使用率しきい値の超過警告)も表示します。しきい値を超えるとスイッチは優先度の低いポートから給電を止めるため、ポート優先度もここで変更できます。
幅広く動作するのは PoE が標準化されているからです。RFC 3621 の POWER-ETHERNET-MIB は、ほぼすべての管理スイッチ(Cisco、Aruba/HPE、Netgear、TP-Link/Omada、Ubiquiti、MikroTik、D-Link、Zyxel)が実装しています。読み取りにはデバイス検出の SNMPv2c/SNMPv3 プロファイルを使います。SNMPv2c のポート電源操作には別の読み書きコミュニティをスイッチごとに設定し、Keychain に保存します。SNMPv3 は、認証済みユーザにスイッチ側で書き込み権限がある場合だけ同じプロファイルを使います。電源を切る操作には意図的な権限と確認が必要で、任意 OID 書き込みは公開しません。監視を有効にすると、障害状態のポートや電力バジェットを超えたスイッチがアラートに上がります。
ベンダーのコントローラ。エントリを追加するときに種類を選びます。SNMP のほか、コントローラ自身の API も使えます:UniFi コンソールまたはコントローラ(ローカル管理者アカウント、または Network API キー)、TP-Link Omada コントローラ、REST 経由の MikroTik RouterOS 7、NETGEAR Smart Managed Plus スイッチ(GS305EP、GS308EP、GS316EP。API がないためスイッチ自身の Web ログイン経由。Smart Managed Pro は SNMP)、Dashboard API キーによる Cisco Meraki。ポートはスイッチごとにまとめ、使用中のワット数と、コントローラが把握していれば各ポートの給電先デバイス名も表示します。UniFi、MikroTik、NETGEAR、Meraki はスイッチ自身がポートをサイクルするので、サイクル中のアクセスポイントがこの Mac 自身の接続を担っていても電源は戻ります。Omada のポートは一度オフにしてから元の設定どおりに戻します。自己署名証明書のコントローラは最初に SHA-256 フィンガープリントを表示します。コントローラと照合して一度承認してください。後で証明書が変わると、新しいものを承認するまでコマンドを送りません。
Web のみのシステム、ピン留め、スイッチ全体。公開 API のないクラウド管理製品(Aruba Instant On、Zyxel Nebula、NETGEAR Insight、EnGenius Cloud、Grandstream GWN、RUCKUS One、D-Link Nuclias)はWeb UI のみとして追加します。FrontierStack はそのポートを切り替えられないため、リンクしたデバイスにはボタンの代わりに… を開いて電源サイクルのリンクが表示されます。ピン留めすると、コントローラ、スイッチ、Web のみのシステムがピン留めデバイスと Places に Web ページへのリンク付きで並びます。すべてサイクル…は 1 台のスイッチの PoE デバイスをまとめて再起動します。ポートをまとめてオフにし、一度だけ待ってから、まとめて戻します。
デバイスから。どのデバイスのページでも、電源コントロールを追加… ▸ PoE スイッチポートで給電元のポートにリンクできます。コントローラがそのデバイスを検出したポートが最初に表示されます。これで電源コントロールのコンセントが作られ、デバイス自身の電源セクションでオン、オフ、サイクルができ、ヘルスチェックの失敗後に自動で電源サイクルでき、確認のうえで FrontierStack AI からもサイクルできます。
9.15Mellanox/NVIDIA ネットワーク
NVIDIA の Mellanox 製品群によるデータセンタのスイッチングには、専用のパネル Mellanox Networking(フルフリート)があります。読み取れるのは 6 種類です:Onyx(JSON API)または Cumulus Linux 5.x(ポート 8765 の NVUE REST API)の Spectrum イーサネットスイッチ、MLNX-OS の Quantum/SwitchX InfiniBand スイッチ、ファブリックマネージャ UFM、BMC の Redfish 経由の BlueField DPU、連携ユーザで SSH して読むフリートサーバの ConnectX NIC。
各デバイスは管理アドレスと読み取り専用アカウントで追加します:Onyx/MLNX-OS は monitor 権限のユーザ、Cumulus は nvue-monitor ユーザ、UFM は Monitoring Only、BMC は ReadOnly アカウント。自己署名証明書は指紋つきで表示されるので、コンソールと照合して承認してから、初めてパスワードが送られます。デバイスはアラートの巡回で 3 分ごとに確認され、確認のたびにセッションをログアウトします。
ポート。最初の読み取りで UP のポートがすべて監視対象になります。監視中のポートはリンクが落ちたとき、そして 2 回の確認の合間に落ちて戻ったときにもアラートを出します — 各ポート自身のリンクダウンカウンタを読むので、確認時に UP でも不安定なケーブルは見つかります。管理者が無効にしたポートはアラートを出しません。InfiniBand では LinkUp なのに Active でないポートを指摘します。通常はサブネットマネージャが動いておらず、有効なのに動いていない組み込み SM はそれ自体がアラートです。
ハードウェアとファブリック。電源・ファンの故障、臨界値(NIC と DPU は設定したしきい値)を超えたセンサ、エラー状態の devlink health レポータ、Arm OS がクラッシュした BlueField、UFM の Critical/Major アラーム(ファブリックごとに 1 件にまとめます)が、いつものアラートチャネルに届きます。NVIDIA の MFT を入れ、mlxfwmanager にパスワードなしの sudo を許可すれば、ConnectX のファームウェア更新も表示します。AI Administrator は router_info の report=mellanox で同じ状態を読めます。
9.16Show Network:クラブ・ステージ・ショーの監視
ショーは、誰も見ていないネットワークの上で動いています。何かが静かになるまで、気づかれることはありません — CDJ がリンクから外れる、照明ノードが応答しなくなる、タイムコードが止まる、NDI フィードがメディアサーバから消える。Show Network ペイン(サイドバー ▸ AV & Stage)は、この Mac をそのネットワークの監視役にします。ショーを動かすのではなく、ショーを動かしているものすべてを見守り、どれかが消えた瞬間に知らせます。
9.22.7センサス(一覧の要約)
ペインの上部には、Mac が接続している各ネットワーク/VLAN ごとに、機器自身のアナウンスから数えた平易な 1 文が表示されます。例:「en5 · 2.0.0.0/8 上に Art-Net ノード 14 台、使用中のユニバース 73、sACN ソース 2、NDI ビデオソース 1 があります。」会場に入ったときの「全部そろっているか?」への最短の答えであり、ケーブルを動かした後に最初に読む場所です。
9.22.8Show Dashboard
センサスの下の Show Dashboard は、ショーの各要素をタイルで表示します。
| タイル | 表示内容 |
|---|---|
| プレーヤーとミキサー | Pro DJ Link の各プレーヤーを番号で(CDJ 1 online)、DJM ミキサー、rekordbox。 |
| テンポ | ビートパケットからの BPM。プレーヤーステータスのパケットがこの Mac に届く場合はマスターデッキ、届かない場合は再生中のデッキ。 |
| Resolume | Web サーバが応答する、この Mac で動いている、または NDI 出力が見えるときにオンライン。 |
| NDI | ネットワーク上の NDI ビデオソースの数。 |
| Art-Net/sACN | 使用中のユニバースと、それを送っている Art-Net ノード・sACN ソース。 |
| タイムコード | CoreMIDI の任意のソースからの MIDI タイムコードと Art-Net タイムコードによる 正常/停止。 |
| LED システム | 見つかった、または追加した WLED コントローラ・ピクセルコントローラ・LED プロセッサ。 |
| 制御 | OSC エンドポイント、RTP-MIDI セッション、TCNet ノード。 |
その下の一覧には各タイルの背後にあるすべての機器が並び、行ごとに Watch ボタンがあります。SMPTE LTC は音声信号のため直接は読みません。MTC または Art-Net タイムコードに変換すれば(多くの LTC インタフェースや ShowKontrol が変換します)タイムコードのタイルに表示されます。
9.22.9Arm Show
開場前に Arm Show を押します。FrontierStack はその時点でオンラインのもの — デッキ、ミキサー、照明ノード、sACN ソース、NDI ソース、LED コントローラ、Link セッション — をすべて監視し、どれかが消えればいつものチャネル(第 11 章)で Show Network グループのアラートを送ります。ショーが終わったら Disarm で監視一覧をクリアします。機器を個別に監視・解除することもできます。
9.22.10受信のみの検出と、ポートを譲る動作
ほぼすべては、問い合わせではなく受信によって見つけます。
| プロトコル | 受信する場所 |
|---|---|
| Pro DJ Link(CDJ/XDJ、DJM、rekordbox) | UDP 50000–50002:キープアライブとビートパケット |
| Denon StageLinQ(Engine DJ) | UDP 51337 |
| Ableton Link | マルチキャスト 224.76.78.75:20808:ピア、テンポ、セッション |
| TCNet(ShowKontrol) | UDP 60000 |
| sACN/E1.31 | 239.255.250.214:5568 のユニバースディスカバリ。データユニバースは指定した場合のみ |
| NDI、OSC、WLED、RTP-MIDI | Bonjour |
| MIDI ソースと MIDI タイムコード | CoreMIDI(入力のみ) |
FrontierStack が送信するのは Art-Net の ArtPoll だけです。1 回のディスカバリブロードキャストを 30 秒ごとに繰り返し、新しいノードが自動で現れるようにします。自分で Poll Art-Net Now を押したい場合は、Settings の Poll for Art-Net nodes automatically をオフにします。
ショーソフトは UDP ポートを専有する必要があります。rekordbox、Engine DJ、ShowKontrol、Beat Link Trigger、PRO DJ LINK Bridge、QLC+、Resolume、MadMapper、QLab などが同じ Mac で動いている間は、対応するリスナが閉じ、ペインにその旨が表示されます。ソフトとネットワークの両方を見るには、ショーネットワーク上の 2 台目の Mac から監視してください。
9.22.11Show Servers
Show Servers の Add Server で、メディアサーバ・LED コントローラ・照明デーモンのアドレスを追加します。各サーバは 30 秒ごとに HTTP で確認し、応答しなくなるとアラートを送ります。いくつかは実際の状態を報告します。
- Resolume — Web サーバ経由(Preferences ▸ Webserver)。
- WLED — LED 数、フレームレート、消費電流、Wi-Fi 信号、Art-Net/sACN のライブ入力。On/Off と明るさも操作できます。
- Falcon Player(FPP) — プレーヤーの状態と現在のシーケンス。
- OLA と QLC+ — デーモンや Web アクセスの応答。OLA はバージョンとユニバース数も表示します。
NovaStar/COEX、Brompton Tessera、Colorlight、MADRIX 5、Lightjams は、Web UI またはリモートポートの応答を確認します。受信カード、キャビネット温度、トポロジは各ベンダのツールで扱います。
9.22.12プリセット
9.22.13警告灯、ピン留め、電源
舞台監督は一晩中画面を見ていられないので、Show Network はライトを点滅させて知らせることができます。警告灯 で WLED のストリップや回転灯、ローカルブリッジの Philips Hue(ブリッジのリンクボタンを押してからペアリング)、または HTTP リクエスト(アラーム URL と解除 URL。PATLITE のネットワーク対応積層信号灯、回転灯を切り替える Shelly リレー、Home Assistant の Webhook など)を追加します。監視対象がダウンしている間(設定した短い待ち時間の後)ライトは赤く点滅し、復帰するか確認を押すと元の状態に戻ります。1 分ごとのアラート巡回ではなく、秒単位で反応します。
ピン留め すると、プレーヤ、ミキサ、Art-Net ノード、WLED、Falcon Player、LED プロセッサがデバイス検出に加わり、デバイスパネルで電源コンセントや PDU、SwitchBot プラグ、UPS をリンクできます。ピン留めはプランの機器数の上限に含まれます。ピン留めした監視対象には 電源を入れ直す… と、任意の 自動再投入(待ち時間を選んだ場合のみ、最大 2 回、30 分間隔)が表示されます。ショー機器の UPS はタイルに表示され、バッテリ運転になると警告灯が点滅します。LED ウォールプロセッサ(NovaStar/COEX、Brompton Tessera、Colorlight)と MADRIX は Full Fleet の「ハイエンドのショーシステム」です。
Clubs & Bars プリセットには Show Network、AV Feeds、Power over Ethernet が含まれます。フェス・ツアー・企業イベントには、ショーネットワークの基盤(Places、VPN、メッシュネットワーク)を加えた Stage & Shows から始めてください。他の構成には Show Supervisor アドオンを追加できます。Pro DJ Link のプレーヤーとミキサー、LED ウォールプロセッサ、WLED、ピクセルコントローラは、到達性の確認のためデバイス検出にピン留めすることもできます。
9.17発電機:イベントと非常用の電源
コンサート、フェスティバル、屋外イベントはレンタルの発電機で動いており、発電機が止まればステージは静まり返ります。発電機 ペイン(AV & Stage の Show Network の隣)がそれを見守ります。レンタル機材はメーカーが混在するため、接続方法は 3 つあります。
- このネットワーク上のコントローラ。 多くのセットは Deep Sea Electronics、ComAp、DEIF、CRE、Datakom のコントローラで制御され、これらは Modbus TCP で通信します。コントローラを制作ネットワークにつなぎ(DSE は Ethernet ポートか DSE855 ゲートウェイ経由)、IP を追加すると、FrontierStack が機種を識別して数秒ごとに読み取ります。クラウド契約もモバイル回線も不要です。対応マップ:DSE(GenComm。機種ファミリーごとにアラーム名を表示)、ComAp InteliLite 4、DEIF AGC 150、CRE GENSYS Compact、Datakom D-300/500/545/700。
- ComAp WebSupervisor:ComAp のクラウドに報告しているセット向け。API キーとアプリケーションのクライアント ID・シークレットで接続し、監視するユニットを選びます。値は 1 分ごとに更新されます。
- AEMP 2.0 テレマティクス(ISO 15143-3):レンタル業界で広く使われる Trackunit、Atlas Copco FleetLink など、多くの建機メーカーのポータル。アカウントを接続し、フリートから監視するセットを選びます。スナップショットは 5 分ごとに更新され、Trackunit の拡張データでは発電機自身の電圧、周波数、負荷も得られます。テレマティクスは燃料や「まだ運転しているか」の確認には向きますが、セット途中のトリップを捉えるには遅すぎます。
各セットについて、運転状態とモード、kW と負荷(コントローラが負荷を報告しない場合は 定格 kW を設定)、燃料(運転データが 20 分たまると残り時間の目安も表示)、相ごとの電圧と電流、周波数、冷却水温、油圧、バッテリ電圧、運転時間、コントローラ自身のアラーム名を表示します。
開場時に 運転中のセットをアーム を押します。その時点で運転中のセットはすべて運転し続けるべきものとして扱われ、停止、故障、応答なしになるとアラート(グループ「発電機」)が送られます。燃料低下、設定時間内の燃料切れ予測、高負荷、欠相、許容範囲外の周波数・電圧もアラートになります。周波数は既定で 50 Hz と 60 Hz のうち近いほうを基準にします(両方が使われる日本では重要です)。電気的な異常は 15 秒続いたときだけ扱うため、ステージの機材を一斉に投入しても誤報しません。警告灯 をオンにしたセットは、重大な問題で Show Network の警告灯を点滅させます。
Stage & Shows プリセットと Show Supervisor アドオンには発電機ペインが含まれます。AI 管理者は ups_status(kind: generator)ですべてのセットを読み取れます。
9.18インターネットヘルスと速度テスト
Internet Health ペインは回線そのものを見るための画面です。Targets の一覧(既定では Cloudflare の 1.1.1.1、Google と Quad9 の DNS、AWS の 2 リージョン、Tailscale のコーディネーションサーバ)を継続的に ping し、レイテンシとパケットロスを表示して 30 秒ごとに再テストします。ICMP をブロックするホストは :443 への TCP 接続レイテンシにフォールバックします。対象一覧の編集は、Internet セクションのヘッダにある歯車ボタンで開くダイアログから行います。一度設定すれば邪魔になりません。同じセクションには IPv6 の判定も表示されます。スイープごとに、グローバル IPv6 アドレスの割り当て、IPv6 トラフィックが実際に機能するか(Cloudflare/Google の v6 エニーキャストへの ping)、ネットワークが広告する IPv6 DNS サーバが応答するかを確認します。最も強く警告するのは広告されているのに壊れている IPv6 です。ルータがアドレスと IPv6 DNS サーバを配布し、接続は IPv6 を先に試すため、IPv4 へのフォールバックまですべてが固まる状態です。ペインは分かりやすい言葉で状況を示し、応答しない DNS サーバを名指しし、ルータが原因であることを示します。AI 管理者は internet_speed(check=ipv6)で同じ診断を実行でき、diagnose ツールの ping6/dig/scutil でさらに詳しく調べられます。サイドバーのインターネットヘルス行にはステータスドットが表示され、軽量なバックグラウンドスイープ(起動時、その後 5 分ごと)で更新されます。正常なら緑、IPv6 の故障や大きなパケットロスはオレンジ、すべての対象に到達できない場合は赤になります。Live Traffic は全アクティブインターフェイスのリアルタイムスループットをグラフ化し、Addresses & Networks は各インターフェイス、そのサブネット(直接到達できるネットワーク)、ゲートウェイを一覧します。組み込みの traceroute は、トラフィックが横切る ISP やトランジット事業者を示します。Speed Test セクションで Test Now を押す — または AI に internet_speed を頼む — と、ダウンロード・アップロード・レイテンシ・応答性を測定します。Ookla の speedtest CLI があればそれを、なければ Apple の networkQuality を使います。実行中は speedtest.net 風の 2 つのメータがダウンロードとアップロードをリアルタイム表示します — 針・フェーズ・現在の Mbps を Ookla のストリーミング出力から更新します(内蔵の networkQuality は最後にしか結果を返さないため、メータは待機表示になります)。また、接続したテストサーバ(プロバイダと都市)を実行中と結果の両方に表示します。テストが失敗した場合は、何も表示せず終わるのではなく理由を表示します。ただし Wi-Fi 接続の Mac では、ISP と同じくらい Wi-Fi 自体を測ってしまいます。そこで同じセクションからテストをルータや有線サーバ上で実行できます。ルータ/サーバからでデバイスを選ぶと、FrontierStack が SSH(鍵認証。ルータは root)でそのデバイス上にプローブを実行します。Ookla/speedtest-cli があればそれを、なければ curl による単一ストリームの推定値を使います。ルータ側の測定値が Mac より大幅に速ければ、ボトルネックは回線ではなく無線区間です。AI も internet_speed の source で同じ比較ができます。
1 回のテストで分かるのはその瞬間だけです。その下の Speed History(速度の履歴)セクションでは、回線が遅くなってきているかどうかが分かります。スピードテストを定期的に実行をオンにし(テストのたびに実際の帯域と、従量制の回線では実際のデータ量を使うため、初期設定はオフ)、6 時間ごと・毎日(推奨)・2 日ごと・毎週から選びます。実行時刻はランダムな分にずらされ、毎日以上の間隔では実行する時間帯で 02:00〜05:00 のような静かな時間帯に限定できます。結果を比べやすくなり、誰かのビデオ会議を邪魔することもありません。インターネットに接続できない、従量制の回線や省データモード(iPhone のインターネット共有など)、Mac がバッテリー駆動、別のテストを実行中のときは、失敗にはせずスキップして後で再試行します。指定した時刻に Mac がスリープしていないことが必要です。Ookla CLI がなければ内蔵の networkQuality で測定し、各結果にはどのエンジンで測ったかを記録します。ルータやサーバからもテストでは、ルータ自身のテストも同じスケジュールで実行でき、この Mac の Wi-Fi を介さずに回線を測定できます。履歴はデバイスごとに分かれ、2 台以上を定期テストするには Full Fleet が必要です。各結果(日時、ダウンロードとアップロード、エンジンが報告する場合はレイテンシとジッタ、エンジン、テストサーバ、この Mac が Wi-Fi(とそのネットワーク)か Ethernet か)は測定元ごとに最大 400 件保存され、基準の帯と一緒にグラフ表示されます。直近 7 日間の中央値(2 日以上にわたる定期テスト 4 件以上)が、その前の 28 日間の中央値(8 件以上)の 65% を下回ると、アラートの「Network & Routing」に長期的な低下の警告が、最近と基準の Mbps と変化率付きで表示されます。比較するのは同じ測定元・同じエンジン、この Mac の場合はさらに同じ接続種別と Wi-Fi ネットワークの結果どうしだけです。そのため、ノート型 Mac で自宅とオフィスを行き来しても低下とは判定しません。手動テストはグラフには表示しますが、遅いと感じたときに行うことが多いため傾向の判定には使いません。低下の原因は 2 通り考えられ、警告にも両方を示します。回線やプロバイダの品質が落ちたか、ネットワーク上の何かがひそかに帯域を大量に使っているかです。ルータのデバイス画面で使用量と見比べ、見覚えのない機器がないか確認してください。安いプランへの変更など意図した変化のあとは、新しい基準として受け入れるで今の速度を基準にし、警告を解除できます。AI 管理者も internet_speed(check=history)で同じ履歴と判定を読み取れます。
9.19ネットワークパス:スイッチ・ハブとホップごとの遅延
ネットワークパスペインは、IP ツールでは答えられない物理的な問い — この通信は実際にどの機器を通り、どれが遅くしているのか? — に答えます。LAN パスはマネージドスイッチのブリッジテーブルと LLDP 隣接情報を SNMP で読み取り、この Mac と LAN デバイスの間のつながりを図示します。各リンクにポートと速度を表示し、最も遅いリンクを強調。1 つのポートを複数のデバイスが共有している箇所には、直接問い合わせできない隠れたアンマネージドスイッチ/ハブを推定として破線で描きます。デバイスを特定は 1 台を突き止めます:IP・MAC・メーカー・種類、そして接続されているスイッチポートまで。ビジュアルトレースルートは各ホップの往復時間をグラフ化し、遅延を最も追加しているホップを強調します。スイッチの読み取りにはデバイス検出で設定した SNMPv2c/SNMPv3 プロファイルを使います。アンマネージド機器は本質的に見えないため推定表示します。開くと、この Mac とルータの間を自動で図示し、デバイスリンク速度は既知デバイスのネゴシエート速度をスイッチポートから調査して、遅いリンクと半二重を先頭に表示します。
9.20サブネットと VLAN
サブネットペインは、FrontierStack が把握しているすべてのネットワーク — この Mac のインタフェースと VPN 経路、ルータの LAN、サーバやデバイスがつながっているネットワーク — と、それぞれに何があるかを一覧します。上部の切り替えで同じネットワークを 3 通りに表示します:リスト、VLAN 別、図で示す VLAN レイアウトです。
各サブネットは、手に入るいちばん確かな根拠で VLAN に置かれます。最優先は自分の指定です。何も報告しないネットワークは、サブネットを右クリックして VLAN に割り当て… を選びます(割り当てはほかの設定と一緒に保存され、設定のバックアップにも含まれます)。次に、API で VLAN を一覧できるルータ — OPNsense、REST API パッケージを入れた pfSense、MikroTik RouterOS、UniFi — と各 VLAN インタフェースのアドレス、そして igb0.10 のようにタグ番号を名前に含むルータのインタフェース。その次がこの Mac 自身の VLAN インタフェース。最後がマネージドスイッチで、サブネットのデバイスの大半がスイッチの転送テーブルで 1 つの VLAN 上に学習されていれば、そのサブネットをその VLAN に置きます。置いたサブネットにはどの根拠によるかを表示し、残ったものは VLAN タグ不明にまとめます。
VLAN レイアウトはその結果を描きます。上に VLAN を運ぶルータとスイッチ、その下に 802.1Q トランク、そして VLAN ごとに色分けした列 — サブネットとゲートウェイ、使っているスイッチポート(塗りはタグなしのアクセスポート、枠線はタグ付き)、その上のデバイスとサーバ。どれもクリックでそれぞれのペインを開きます。スイッチを読み取るはポートを埋めます。デバイス検出で見つけたマネージドスイッチに、VLAN 名、ポート所属、ネイティブ VLAN、VLAN ごとの転送テーブルを、ネットワークパスと同じ読み取り専用の SNMP プロファイルで問い合わせ、複数の VLAN をタグ付きで運ぶポートをトランクとして示します。スイッチの読み取り結果はセッションの間だけ保持されるので、配線を変えたら再度押してください。AI 管理者に「NAS はどの VLAN?」と聞けば、router_info で同じ内容を読み取ります。
9.21Debug Share:localhost サーバを一時的に公開
localhost で動く開発サーバを同僚やスマホに見せたいとき、Debug Share ペインがそれをセッション中だけ公開し、その後自ら閉じます。ポートを入力(または Scan localhost で稼働中のサーバを検出)し、Expose via で公開方法を選び、Auto-close 時間を設定して、Open debug session を押します。すべての共有は FrontierStack 終了時にも自動で閉じます。
| 方法 | 到達範囲 |
|---|---|
| Cloudflare Quick Tunnel | 公開 *.trycloudflare.com URL、アカウント不要 — クライアントやスマホへの手早いプレビューに最適 |
| Tailscale Serve | 非公開 — tailnet 内からのみ到達可能 |
| Tailscale Funnel | 公開、Tailscale ノード経由(tailnet で Funnel を有効化する必要あり) |
| LAN forwarder | 0.0.0.0:<自動> → 127.0.0.1:port ブリッジ。同一 LAN の他マシンがループバック専用サーバへ到達できる |
LAN フォワーダには 2 つの追加機能があります。ホストファイアウォールがオンなら、ペインに Open port in firewall が現れ、そのポートをセッション中だけ pf ルールで許可します。また Outside access ピッカーで UPnP・NAT-PMP・OPNsense API 経由の WAN ポートをマップし、DDNS host と組み合わせれば、LAN 共有をパブリックインターネットから到達可能にできます — マッピングは共有終了時に削除されます。AI 管理者もセッションの開始・一覧・終了ができます(debug_share_open/_list/_close)。「Allow changes」がオンなら MCP 経由でも可能です。
Debug Share のセッションはあくまで一時的です。自分の開発サーバを期限なしでテイルネットから開けるようにしておきたい場合は、Localhost ペインでサーバのTailscale でも公開をオンにします(第 4 章)。同じポートでこの Mac の Tailscale アドレスに公開され、LAN からは到達できず、サーバの停止とともに閉じます。AI 管理者は debug_share の action serve でフォルダをそのように起動し、開くべきアドレスを報告できます。
9.22名前付きトンネル:恒久的な公開ホスト名
クイックトンネルはあえて使い捨てです。この Mac のサービスを実際のアドレスで恒久的に到達可能にしたいとき — セルフホストのアプリ、社内ダッシュボード、Webhook 受信口など — は、代わりに名前付きトンネルを使います。サービスに自分の Cloudflare ゾーン上の安定したホスト名(例:app.example.com)を与え、再起動しても維持され、他のトンネル同様に着信ポートを一切開きません:Mac が Cloudflare のエッジへダイヤルアウトするため、フォワードするものも、ポートスキャンで見つかるものもありません。
Cloudflare ペインの名前付きトンネルセクションで作成します:新規トンネル…、続いて自分のゾーン配下のホスト名と、その前段に置くローカルポート。FrontierStack はすでに保持しているトークンを使い、Cloudflare API 経由でセットアップ全体を実行します — トンネルを作成し、イングレスルール(hostname → http://localhost:PORT)を書き込み、ホスト名を <id>.cfargotunnel.com に向けるプロキシ済み CNAME を追加し、cloudflared service install で永続デーモンをインストールします。最後の手順には一度きりの管理者プロンプトが必要です(/Library 配下に LaunchDaemon を書き込みます)。cloudflared 自体は初回利用時に Homebrew から取得されます。トンネルと DNS の作成だけを行い、cloudflared を別ホストで実行したい場合は、この Mac で今すぐ実行のチェックを外します。削除はそのすべて — デーモン、DNS レコード、アカウント側のトンネル — を巻き戻します。AI 管理者も同じ 3 つの動詞(tunnel_create/tunnel_list/tunnel_delete)を持ち、作成はサービスをインターネットに公開するため赤い確認でゲートされます。
cloudflared service install は Mac ごとに 1 つのシステムデーモンを実行するため、ローカルで一度に動く名前付きトンネルは 1 つです。追加の名前付きトンネルをアプリで作成・ルーティングし、その cloudflared コネクタを他のマシンで実行することは可能です — アカウント・ホスト名・DNS はいずれの場合もセットアップされます。各トンネルの行には、ライブの状態行とダウン時に通知するベル(任意)もあり、保護…でホスト名の前に Cloudflare Access のサインインを置けます — 第 7 章を参照。
第 10
セキュリティと堅牢化
境界を守るのは仕事の半分にすぎません。本章では、使っていない扉を閉じ、開いている扉を見張り、そこを通ってよい相手を証明する方法を扱います。
サーバが最も無防備になるのは、何かに攻撃されたときではなく、静かに状態がずれていったときです。開けっ放しのファイアウォール、誰も無効化しなかったパスワードログイン、先週切れた証明書、誰にでも中継してしまうメールサーバ。FrontierStack は堅牢化を一度きりのチェックリストではなく、継続的で観測可能な状態として扱います。セキュリティペインは目の前のホストのコンソールであり、AI 管理者(第 13 章)が同じチェックを SSH 経由でフリート全体に適用します。ここで扱う内容はすべて、変更を依頼するまで読み取り専用で、どの変更もあなたが手作業で行えるものです。
10.1ファイアウォール:Application Firewall と pf
macOS は 2 つのファイアウォールを備えており、FrontierStack は両方を読み取ります。Application Firewall(ALF)はシステム設定で構成するアプリ単位の層で、セキュリティペインはその状態(有効・ステルスモード・すべての受信をブロック・アプリルール数)を表示するので、有効になっているかひと目で確認できます。pf パケットフィルタはより下位のポート単位の層で、FrontierStack が直接管理するのはこちらです。
アプリが管理する pf ルールは専用ファイル ~/Library/Application Support/FrontierStack/pf-frontierstack.conf に置かれ、システムの /etc/pf.conf に冪等に組み込まれた専用の frontierstack アンカーに読み込まれます。ルールを専用アンカーに置くことで、FrontierStack が Apple の基本ルールセットを編集することはなく、あなたのルールはリロードしても他を壊さずに残ります。ルールの追加・削除では、認証付きの管理者プロンプトを通じて pf がリロードされます。
AI 側では firewall_rule ツールがポートに対する許可/拒否ルールを 1 つ追加・削除し、必要に応じて送信元アドレスで絞り込みます。まず対象の OS を判別し、This Mac とリモートの macOS ホストには pf(frontierstack アンカー)を、Linux サーバには ufw を使います。Mac に ufw コマンドを、Linux に pf ルールを送ることは決してありません。
ufw を締める前に、ルールが管理経路を許可していることを確認し、別の入口(コンソール、KVM-over-IP、Headless Setup の画面共有)を確保しておいてください。10.2侵入防止と開放ポートの監視
開いたままにせざるを得ないポートにも見張りは必要です。セキュリティペインは 2 つの侵入防止エンジンを統合します。fail2ban は不正なログパターンに合致した IP アドレスを禁止します — SSH や Apache へのブルートフォースが典型です。ペインには導入・稼働状況、jail 数、現在禁止中のアドレス数が表示され、ワンクリックのリロードと、既存の設定を上書きせずに健全な SSH jail を投入する「スターター jail.local を書き込む」アクションがあります。CrowdSec はその上に共有レピュテーションネットワークを加え、アクティブな決定数とメトリクスボタンを表示します。どちらも Homebrew で導入する root サービスです。
Open Ports セクションはホスト上のすべての待ち受けを一覧します。併設の監視 — リモート操作・画面共有の露出 — は、VNC/画面共有(:5900)、Apple Remote Desktop、AnyDesk、TeamViewer、Chrome Remote Desktop、Splashtop、RustDesk、Tailscale の exit-node 広告を特に検出し、今まさに誰かが接続していれば赤く表示します。Recent Intrusions と Active Bans セクションは fail2ban.log、CrowdSec、Suricata の eve.json、Wazuh の alerts.json からの検出を新しい順に集約し、動かしていないソースは単に飛ばされます。新たな禁止、新たな待ち受け、進行中の受信セッションはそれぞれアラートを上げられます — 配信は第 11 章で設定します。同じセクションはこの Mac の FileVault も確認し、Mac が何を保持しているかで判断します。リンク済みサーバへの SSH アクセスやアプリ管理の SSH 鍵があるのに FileVault がオフなら、行が赤くなりアラートが上がります — 紛失・盗難に遭ったノートがフリート全体の鍵を渡してしまうためです。フリートの資格情報がない Mac は放っておかれます。
10.3SSH の堅牢化
SSH は多くのサーバで最も価値のある扉なので、セキュリティペインには SSH Hardening Audit があります。sshd -T で実効構成を読み — ディスク上のファイルではなく、ドロップインを適用したあとにデーモンが実際に使う設定を読み — 重要な項目(PermitRootLogin、PasswordAuthentication ほか)を指摘します。SSH がネットワークから到達可能なときは、ペインがそれを明示します。まさにそこで指摘が効いてくるからです。
インターネットに面したホストの基本は、鍵ベース認証と PasswordAuthentication no です。修正は本体ファイルではなく /etc/ssh/sshd_config.d/ を編集して行えば、パッケージ更新でも堅牢化が残ります。FrontierStack 自身のフリートチャネルはすでにこれらに従っています。Ed25519 鍵、BatchMode=yes、IdentitiesOnly=yes、そして known_hosts に記録される初回接続時のホスト鍵信頼(第 8 章)を使います。ホストの鍵アクセスが壊れた場合、repair_ssh_access ツールがローカルのボールトに保管した一度限りのログインパスワードで管理鍵を再インストールします — パスワードは Mac 上で読まれ、AI に送られることはありません。
10.4サーバセキュリティ:リモートホストの状態チェック
ここまではこの Mac のセキュリティペインの説明でした。サーバセキュリティペインは連携サーバ向けの対になるもので — 同じ状態チェックを SSH 経由で、フリート内のどのホストに対しても行います。サーバの詳細を開いてセキュリティ横の チェック… をクリックするか、ペインを直接開いてホストメニューからサーバを選びます。1 回のスキャンで、重要な SSH ハードニング(PermitRootLogin、PasswordAuthentication、待ち受けポート)、ファイアウォールの有無と有効状態(ufw、firewalld、nftables、生の iptables)、稼働中の侵入防止エンジン(fail2ban、CrowdSec)、保留中のセキュリティ更新の件数(apt、dnf、yum)、全インタフェースで待ち受けるサービス、ホスト整合性の兆候(スティッキビットのない誰でも書き込み可能なディレクトリ、想定外の SUID バイナリ)を報告します。
各所見は High · Warning · Info · OK でスコア付けされ、1 行のサマリバッジにまとめられます。フリートを見渡して、どのホストが対応を要するか一目で分かります。ペインは何も変更しません:修正するリンクが、実際に変更を行うペインへ移動します — ファイアウォールを有効化・ルール編集するサーバファイアウォールペイン、リモートツールの SSH ハードニングレビュー、fail2ban/CrowdSec を導入するセキュリティツールなど。root またはパスワードなし sudo で最も深く読み取れますが、なければ可能な範囲で実行し、その旨を伝えます。相互リンクは双方向です:ローカルのセキュリティペインは macOS ファイアウォールへ、サーバセキュリティはサーバファイアウォールへ、ピン留めサーバのペインは両方へリンクします。
10.5セキュリティアップデートと侵害の警告
セキュリティアップデートペイン(セキュリティツール)は、この Mac と連携したすべてのサーバについて、適用待ちのセキュリティ修正を一覧にします。各サーバが自分で報告します:Debian と Ubuntu では apt の -security ポケット、Red Hat 系では CVE 番号付きの dnf/yum のアドバイザリ、zypper のセキュリティパッチ、FreeBSD の pkg audit、OSV.dev で照合した Alpine の更新、Mac ではソフトウェアアップデート。Homebrew はセキュリティ修正を区別しないため、古い formula は別に表示します。確認は読み取りだけで、6 時間ごとに、sudo パスワードを保存したサーバでは root で行います。唯一変えるのは、1 日以上古い apt のパッケージリストです。Host Monitor(1.28 以降)が入った Linux・FreeBSD サーバは同じ確認を自分で行い、SSH や sudo パスワードなしにモニタ経由で報告します。Mac は常に SSH で確認します。
緊急度は公開の情報源で判断します。適用待ちの更新が CISA の悪用が確認された脆弱性(KEV)リストの CVE を修正するものなら、サーバは赤くなりすぐにアラートを出します。OSV.dev から Debian・Ubuntu・Alpine の更新の CVE を取得し、送るのはパッケージ名とバージョンだけです。endoflife.date で修正が提供されなくなった OS やランタイムを示します(ディストリビューション付属の PHP や Python は、修正をバックポートするディストリビューションに任せます)。Enfour のパッチアドバイザリは侵害アドバイザリと同じ方式で専用の鍵で署名され、緊急の件についてブランチごとの修正済みバージョンを示します。通常のセキュリティアップデートは、設定した日数(既定 7 日)より長く待っているときだけアラートになります。
サーバの行の 自動アップデート… で、メンテナンス時間帯の中でのセキュリティ限定の更新を有効にできます。apt はセキュリティポケットのパッケージだけをインストールして設定ファイルを残し、dnf と yum は --security、zypper はセキュリティパッチ、FreeBSD は pkg audit が報告したもの、Alpine は OSV が示すもの、Mac は Enfour のアドバイザリが名指しした Homebrew の formula だけを(あなたのユーザで)更新します。時間帯ごとに実行は 1 回です。実行前に /var の空き容量を確かめ、実行後に止まったサービスがあれば報告します。悪用中の脆弱性の修正だけをすぐに入れることも、Mac では直近の Time Machine バックアップを条件にすることもできます。
侵害の警告は KeyRotate と同じ署名付きの情報源から届きます。API キーを貼り付けて使うサービスが侵害されると Enfour がアドバイザリを公開し、FrontierStack は 1 日 2 回確認して署名を検証し、そのサービスで作られたサイトをページから見分け、サービスのペインにベンダのチェックリストを表示し、対応済みにするまでセキュリティのアラートを出し続けます。影響を受けるソフトウェアがこの Mac にインストールされているときや、サーバが報告したときにもアラートを出します。どのキーをそのサービスに保存したかは KeyRotate が把握しており、置き換えを手伝います。
10.6エッジアプライアンス:NetScaler、BIG-IP、VPN ゲートウェイ
境界に置かれたアプライアンス — Citrix NetScaler ADC/Gateway、F5 BIG-IP、FortiGate、Palo Alto PAN-OS、Ivanti Connect Secure、Cisco ASA/FTD、Kemp LoadMaster、SonicWall SMA、SonicWall ファイアウォール — は、ここ数年の大規模侵害の多くの入口でした(CitrixBleed、2026 年の NetScaler ゼロデイ、FortiOS の SSL-VPN 脆弱性、GlobalProtect、Ivanti の 2024〜25 年の連鎖、ArcaneDoor、Akira・Fog ランサムウェアが突いた SonicOS の SSL VPN 脆弱性)。エッジアプライアンスペイン(「ルータ・ファイアウォール」内、および各ベンダのカタログペイン内)は、これらの攻撃が突いた点を継続的に確認します。
アプライアンスごとに稼働バージョンを読み取り、ベンダ自身の公開情報と照合します(実際に悪用された脆弱性を優先)。実際に有効な機能も考慮し、Gateway 仮想サーバや DTLS が前提の CVE は、設定上その機能がないと確認できた場合にだけ「該当するが未使用」とします。判断できない場合は最悪を想定します。サポート終了ブランチ、攻撃が利用した設定(データプレーン/WAN 側の管理アクセス、SSLv3/TLS 1.0、既定の SNMP コミュニティ、リモートログなし、暗号化されていない設定シークレット、攻撃者がよく使う名前の管理者アカウント)、仮想サーバ・HA ペア・証明書の状態も確認します。各指摘には修正済みバージョンとアドバイザリ、アップグレード後の手順(CitrixBleed 後の NetScaler セッション終了など)を示します。
接続。専用の読み取り専用アカウントを使ってください — read-only コマンドポリシーを割り当てた NITRO ユーザ、BIG-IP の Auditor、読み取り専用プロファイルの FortiOS API ユーザ、PAN-OS の「Superuser (read-only)」のキー、Ivanti の読み取り専用管理者、書き込み権限のない Kemp のキー。Cisco ASA/FTD と SonicWall SMA には安全な読み取り API がないため、バージョンを入力します。認証情報は HTTPS でのみ、アプライアンスが身元を証明した後にだけ送信されます:公的に信頼された証明書か、コンソールでフィンガプリントを照合して承認した自己署名証明書です。承認済みの証明書が変わると、何も送信せず重大アラートを出します。
SonicWall ファイアウォール。TZ・NSa・NSsp・NSv の各ファイアウォールは SonicOS で動き、多くの場合 SSL VPN も兼ねています(カタログ項目 SonicWall Firewall)。追加方法は 2 通りです:ファームウェアのバージョンを入力するか、SonicOS API(RFC-2617 Basic 認証)を有効にして、モデル・シリアル番号・WAN 側の管理アクセス・SSL VPN の設定も読み取らせます。SonicOS の API はフル権限の管理者しか使えないため、読み取り専用アカウントは作れません。FrontierStack は Web UI を使用中の管理者を追い出さずにログインし、チェックのたびにログアウトします。バージョンは SonicWall の PSIRT アドバイザリと照合し、悪用済みの CVE を優先します — CVE-2024-40766(管理画面と SSL VPN の不適切なアクセス制御。Akira・Fog ランサムウェアが悪用)、CVE-2024-53704(SSL VPN のセッション乗っ取り)、CVE-2020-5135(HTTP リクエストのバッファオーバーフロー)。SonicWall 固有のチェックが 2 つあります。ハードウェアモデルのサポート終了はファームウェアとは別に追跡します:6.5.5 ファームウェアがどれほど新しくても、Gen 6 の全モデルはすでにサポート終了です。また、2025 年 9 月に MySonicWall のクラウドに保存された設定バックアップが流出したため、MySonicWall ▸ Product Management ▸ Issue List でこのファイアウォールのシリアル番号を確認するようリマインダが表示されます。載っている場合、または判断できない場合は、SonicWall の Essential Credential Reset の手順に従ってください。
パッチ適用=侵害なし、ではありません。多くの組織がパッチを当てる前に悪用された CVE は、修正版でも「侵害チェックを実行し、機器が保持していた認証情報を変更し、古いセッションを終了する」リマインダが、対応済みにするまで残ります。NetScaler と BIG-IP は、SSH ホスト鍵を検証済みのフリートサーバに関連付けて侵害スキャンを実行できます。CISA・Mandiant・Citrix・F5 の指標に基づく固定の読み取り専用スクリプトです。途中で切れたスキャンやツールが足りないスキャンはその旨を表示し、「問題なし」とは表示しません。
10.22.1Riverbed SteelHead と SD-WAN ゲートウェイ
WAN 最適化装置や SD-WAN ゲートウェイもネットワーク境界にあり、フリートとして管理されるため、エッジアプライアンスで扱います。Riverbed SteelHead、Interceptor、SteelCentral Controller(SCC)は RiOS REST API に REST アクセスコード(Administration ▸ Security ▸ REST API Access ▸ Add Access Code)で接続し、FrontierStack はチェックのたびにそれを短時間有効なトークンへ交換します。モデル、シリアル、RiOS バージョン、最適化サービスが動作中かを表示します。1 台ずつではなく SCC を追加すれば、1 件で SCC 管理下のすべての SteelHead のヘルスと接続状態を一覧でき、degraded や critical になるとアラートが出ます。単体の SteelHead のヘルスとアラームは REST API にないため、デバイスの Riverbed SteelHead SNMP テンプレートで読み取り、アラートが必要なら Health の OID を監視対象にしてください。
Riverbed SteelConnect EX の SD-WAN ゲートウェイは、管理元の Versa Director(https://director:9182、読み取り専用の Director アカウント)経由で読み取り、全組織のゲートウェイの到達性、サービス状態、設定同期、重大アラームを表示します。バージョンには Director のリリースを入力します。Riverbed と Versa の修正済みバージョン表は同梱していないため、ペインは「アドバイザリなし」とは表示せずその旨をはっきり示します。CISA の悪用済み脆弱性リストとの照合は行い、2024 年の Versa Director ゼロデイ CVE-2024-39717 も含まれます。
販売終了でも監視は継続。SteelConnect CX(SDI-130・SDI-330・SDI-1030・SDI-2030・SDI-5030・SDI-USB ゲートウェイ、SDI スイッチとアクセスポイント、AWS/Azure の仮想ゲートウェイ)と SteelHead SD(570-SD・770-SD・3070-SD)は 2020 年に Riverbed の価格表から外れましたが、多くの拠点で稼働しています。管理元の SteelConnect Manager レルム(https://yourrealm.riverbed.cc またはオンプレミスの SCM)を、REST API を使える SCM アカウントで追加すると、チェックのたびに全アプライアンスをモデル、サイト、SCM から見てオンラインかどうかとともに一覧し、オフラインになるとアラートします。クラウド版 SCM は Riverbed の公開サービスなので、そのアドレスは露出した管理インターフェースとして扱いません。重要度「中」のライフサイクルの指摘が、確認済みにするまで Riverbed のサポート終了告知へリンクします。SteelHead SD の最適化側は Riverbed SteelHead としても追加してください。
10.22.2VPN コンセントレータと Citrix 環境
ペイン上部の表示切り替えで、VPN コンセントレータまたは Citrix に絞り込めます。上記のゲートウェイに加え、Check Point Quantum(Gaia トレインと Jumbo Hotfix の Take を入力。例:R81.20 Take 166。fw ver のビルド番号は Take ではなく、パッチ適用済みとは扱いません)、WatchGuard Firebox、Zyxel ATP / USG FLEX、Array AG、OpenVPN Access Server、Juniper SRX、Sophos Firewall、Barracuda CloudGen に対応します。アプライアンスの API が報告する場合(現在は NetScaler Gateway)、概要に VPN 接続ユーザ数を表示し、ライセンス上限の 90% に達すると指摘を出します。
Citrix では、NetScaler Console と NetScaler SDX を読み取り専用アカウントの NITRO で読み取ります。SDX では、ホストしている各 VPX インスタンスの NetScaler ビルドもアドバイザリと照合します。XenServer / Citrix Hypervisor はプールコーディネータの XenAPI を読み取り専用アカウントで読み取り、Virtual Apps and Desktops、ShareFile StorageZones Controller、Citrix SD-WAN はリリースを入力します。NetScaler 自体は、SAML の設定有無(2026 年 10 月のアドバイザリの前提条件)、未保存の設定、期限が近いライセンス、ディスクの空き不足、NTP 同期の無効化も報告するようになりました。
VMware ホストのハードウェア。組み込みの「読み取り専用」ロールを持つユーザで、管理下のすべての ESXi ホストを見る vCenter Server、または単体の ESXi ホストを追加します(ペインでホストの自己署名証明書を承認)。チェックごとに各ホストのファン・電源・温度・メモリ・CPU・ストレージのセンサと、接続状態・メンテナンスモードを読み取り、センサが黄色・赤になるかホストが切断されるとアラートを出します。ヘルス状態を返さないセンサは一覧に表示しますがアラートにはしません。サーバメーカの CIM プロバイダ(Dell、HPE、Lenovo のイメージ)を入れると、より詳しいハードウェア情報が得られます。ロックダウンモードのホストは、例外リストにないユーザの直接ログインを拒否するため、その場合は vCenter を追加してください。
10.7不審端末ウォッチ:ネットワークに隠されたメール送信元
2025 年 8 月、神戸のホテルにチェックインした 2 人が客室のネットワークにコンピュータをつなぎ、部屋の隅に隠してチェックアウトしました。共犯者がそれを遠隔操作し、ホテルのインターネット回線から数十万通のフィッシングメールを送ったため、メールはホテルから送られたように見えました。不審端末ウォッチペイン(ルータ・ファイアウォール)は、こうした端末を見つけるためのものです。Mac からは見えません。ゲスト Wi-Fi はクライアントを分離し、デバイス検出は Mac 自身のセグメントしか見ないからです。ルータはすべての接続を見ているので、FrontierStack はルータに尋ねます。
送信メール。API 資格情報のあるピン留めした各ルータ(OPNsense、REST API v2 パッケージを入れた pfSense、MikroTik RouterOS、OpenWrt)について、FrontierStack は 10 分ごとに接続テーブルを読み、内部の端末ごとに直近 1 時間に通信した外部メールサーバの集合を保持します。25 番ポートはサーバ間の SMTP で、ノート PC には不要ですが、メールサーバやスパムボットは使います。メールアプリは 587 か 465 で自分のプロバイダ経由で送るため、これらのポートは異常に多くのプロバイダへ広がったときだけ数えます。承認済みメールサーバではない端末が 25 番ポートで 5 台以上(ペインで変更可)のサーバに到達すると、セキュリティグループに「Hidden mail sender」アラートが出ます。アラートには IP と、ルータの DHCP リースから分かる MAC アドレスとホスト名、そして手順が示されます:MAC で探す(リース一覧、次にその端末がつながるスイッチポートやアクセスポイント)、切り離す、メールサーバ以外のゲストと LAN からの送信 TCP 25 をブロックする、WAN アドレスがスパムのブロックリストに載っていないか確認する。単発の接続はルータの下に一覧されますが、アラートにはなりません。
| ルータ | 読み取る内容 |
|---|---|
| OPNsense | ルータ側でポートで絞り込んだファイアウォールステート、DHCP リース(Dnsmasq、Kea、ISC)、1 日 1 回のファイアウォールルール |
| pfSense(REST API v2) | 宛先ポートで絞り込んだファイアウォールステート、DHCP リース、1 日 1 回のファイアウォールルール |
| MikroTik RouterOS | コネクショントラッキング(TCP のみ、アドレス項目のみ)、DHCP リース |
| OpenWrt | ubus 経由の conntrack と DHCP リース(LuCI のログインを使用) |
| UniFi | UniFi ペインが読み込み済みのクライアント一覧(長期滞在チェックのみ) |
承認済みメールサーバは IP アドレス、範囲、MAC アドレスで入力し、アラートを出しません。FrontierStack で管理しているサーバのうち Postfix、Exim、Dovecot などのメールサービスが動いているものは、ワンクリックの候補として表示されます。スキャンを直接メール送信する複合機も、よくある登録対象です。
離れない端末。各ルータの下でゲストネットワークを指定します。ルータが報告する名前(インターフェイス、DHCP サーバ、UniFi のネットワーク)を選ぶか、アドレス範囲を入力します。そのうえでゲストネットワークから離れない端末を検出をオンにします。そこに 7 日(変更可)を超えて途切れずオンラインのクライアントがあると「Long-stay guest device」アラートが出ます。宿泊客は入れ替わるからです。滞在はスキャンとスキャンの間で測るため、Mac がスリープ中や終了中でも滞在が途切れたり、存在しない滞在が作られたりすることはありません。ゲストネットワーク上のホテル自身の機器(スマートテレビ、客室のサーモスタットなど)は確認済みにします。このチェックは既定でオフです。
ポリシーの助言。OPNsense と pfSense では、ゲストネットワークを指定すると、そのネットワークがインターネット上の任意のサーバへ TCP 25 を開けるかをファイアウォールルールから 1 日 1 回確認します。開ける場合は、インターネット接続を許可するルールより上にブロックルールを置くよう勧めます。宿泊客のメールアプリは 587 と 465 で引き続き使え、隠された送信元は送れなくなります。ファイアウォールルールを開くでルータ自身の画面へ移動します。エイリアスが結果を左右する場合や、API にそのネットワークのルールが見えない場合は、推測せずに「判断できなかった」と表示します。
10.8LAN の乗っ取りチェック:乗っ取られたデバイスを見つける
スイッチで構成されたネットワークでは、各デバイスのインターネット接続をすべて見られるのはルータだけです。そこで、Rogue Device Watch が読み取れるルータ(OPNsense、pfSense、MikroTik RouterOS、OpenWrt)の接続テーブルを、今すぐ確認で、またはネットワークを継続的に監視で 2 分ごとに読み取り、6 時間分の接続先を記録します。ビーコン(一定の間隔で同じアドレスへの新しい接続)、Web 以外のポートでのドメイン名のないアドレスへの接続、公開脅威リスト(abuse.ch Feodo Tracker、Spamhaus DROP、Emerging Threats、CINS Army。Tor の出口ノードは弱い兆候)のアドレスとの通信、インターネットからの想定外の着信、リモートログイン用ポートのスキャン、プロキシのような拡散を検出します。各デバイスには 100 点満点の懸念度、わかりやすい説明、そのルータでインターネットを遮断する、隔離 VLAN に移す、ネットワークから外す手順が付き、いずれもそのデバイスだけのルールやネットワークです。自分のポートフォワードは想定内、知っているアドレスは信頼にできます。懸念度が高い・危険のデバイスは通知され、AI 管理者は security_audit の scope=lan_compromise でランク付けして説明します。スマートデバイスもメーカーのクラウドへ定期的に連絡するため、1 つの兆候は確認のきっかけであって証拠ではありません。
10.9プリンタのプライバシーとセキュリティの監査
プリンタのデバイスページにプライバシーとセキュリティの監査を実行があります。ネットワーク上のどのコンピュータでも尋ねられることだけを尋ねます:メーカー、モデル、ファームウェア(IPP、工場出荷時のコミュニティでの SNMP、Web ページ)、応答するサービス、設定ページにパスワードが必要か、文書名を含むジョブ履歴を渡してしまうか、保存ジョブ・FAX・スキャンの有無、メーカーのクラウドサービスの利用。グローバルアドレスをプリンタのポートで外部から確認し(Globalping 経由。オフにもできます)、モデルに言及する CVE を一覧します。データを露出させる設定をリスク順に示し、HP、Brother、Epson、Canon について、パスワードの設定、保存ジョブの消去、リモートアクセスの遮断、使わないサービスの停止をクリック単位で案内します。プリンタの設定は変更しません。AI 管理者は security_audit の scope=printer で同じ監査を実行します。
10.10より深いフォレンジックツール
クイックスキャンでは足りないとき、重い解析はSecurity Toolsカタログカテゴリの導入可能サービスとして用意されています — カタログのフィルタ(第 6 章)で表示できます。Volatility 3 は RAM キャプチャを調べるメモリフォレンジックフレームワーク、capa は実行ファイルに潜む機能を特定し、CAPE と Cuckoo は疑わしい検体を隔離環境で解析します。URLhaus・OpenPhish・OpenCTI などの脅威インテリジェンスは YARA やサンドボックスのルールを支えます。Wazuh のような SIEM は、後述する専用の SIEM & Security Data セクションにあります。
10.11EDR Fleet ボード
すでにエンドポイントで商用 EDR エージェントを動かしているなら、EDR Fleet ペインがすべてのコンソールを横断する読み取り専用の集約を提供します。Add Console… を選び、プロバイダを選んで API 資格情報を貼り付けます — キーチェーンに保管され、AI には見えません。エンドポイント数と未対応検出数は各ベンダーの REST API から取得され、対応は SentinelOne、Huntress、CrowdStrike、Sophos Central、Bitdefender GravityZone、Microsoft Defender for Endpoint。Jamf Protect と LimaCharlie は到達性のために接続し、その他のコンソールは Generic(到達性のみ)として追加できます。Fleet totals 行が全体を合算します。ボードは数分ごとに更新し、コンソールが到達不能になると Security グループのアラートを上げ、未対応検出数がアラートの詳細に同伴します。深い作業には Open Console でベンダー自身のダッシュボードへ移動します。
10.12SIEM & Security Data
SIEM & Security Data サイドバーセクションは、以前 Security Tools と Logging に分散していたセキュリティ運用をまとめます。先頭の SIEM Overview は、FrontierStack が把握しているプラットフォームとデータ経路はどれで、監視対象の管理エンドポイントに到達できるかを示します。設定済みになるのは、保存済み API 資格情報、検出されたローカル導入、リモートエンドポイント監視のいずれかという具体的な根拠がある場合だけです。保存したキーは「資格情報保存済み」、TCP 応答は「到達可能」と表示し、「接続済み」「正常」とは断定しません。
このセクションは 2 層です。
- SIEM プラットフォーム — Wazuh、Security Onion、Splunk、Elastic Security、Microsoft Sentinel、Google Security Operations、Graylog、IBM QRadar、Sumo Logic Cloud SIEM、Rapid7 InsightIDR、LogRhythm、Devo、FortiSIEM、OpenText ArcSight。
- セキュリティデータパイプライン — VirtualMetric DataStream、Cribl Stream、Logstash、Vector、Fluent Bit、Fluentd、NXLog、syslog-ng、OpenTelemetry Collector。テレメトリを収集・正規化・絞り込み・バッファ・転送する層であり、必ずしもインシデントを調査する SIEM 本体ではありません。
各サービスを開いて適切な設定を選びます。クラウド専用 SIEM は、アカウント/テナントと最小権限 API トークンを Keychain に保存する Connect を表示し、意味のないローカルインストールボタンは出しません。セルフホスト/ハイブリッド製品はベンダーの導入手順と管理コンソール用 Remote Instance 監視を提供します。本当に Homebrew formula があるコレクタだけをローカルでインストール/制御し、Linux/Windows エージェントやアプライアンスは対応パッケージへ案内します。
Sources & coverage は層を混同せずに結びます。EDR Fleet はエンドポイントコンソール、Security はホスト/ネットワーク検知と侵入防止、Logs はローカルトラブルシューティングに使います。イベントの長期保持・相関・ハンティング・インシデント対応は SIEM 側が担います。FrontierStack は健全性と制御の層として、資格情報をローカルに保ち、証明できる状態だけを表示し、到達性喪失を通知して、深い調査には正しいコンソールへ案内します。
10.13読み取り専用のセキュリティ監査
ホストの実態を最も早く知る方法は、AI の security_audit ツールです。This Mac または連携サーバに対し SSH 経由で、完全に読み取り専用の包括的なスイープを実行します。OS を自動判別し、保留中のセキュリティ更新、ディスク暗号化(FileVault または LUKS)、ファイアウォール(macOS では Application Firewall + pf、Linux では ufw/iptables)、SSH 堅牢化、待ち受けポート、UID-0 と特権アカウント、パスワード不要の sudo(NOPASSWD)項目、侵入防止、直近の失敗ログインを確認します。パスワード不要の sudo は使える場合のみ使い、使えない場合は優雅に縮退します。何も変更されません。優先順位付きの所見と具体的な修正案が得られ、自分で適用しても、通常の承認カードを介して AI に戻しても構いません。リモートで監査するには target にサーバ名を、ローカル Mac なら省略します。
10.14セキュリティ監査ペイン:サンドボックス内の「悪用可能なものだけ」監査
上記の読み取り専用 security_audit はホストがどう構成されているかを教えてくれます。セキュリティ監査ペインはより難しい問い — ここで攻撃者が実際に悪用できるものは何か? — に答えます。コーディングエージェントを敵対的な監査担当に変え、対象を把握し、多角的に攻撃を試みます — インジェクション、アクセス制御不備、認証・認可、ビジネスロジック、暗号、シークレット露出、SSRF、設定ミス、連鎖攻撃 — そして各所見を自ら反証しようと試み、具体的な攻撃経路があるものだけを残します。各所見には攻撃シナリオと修正案が付き、理論上のノイズはありません。
2 つのモードがあります。コードベースはエージェントをリポジトリや Web プロジェクトのフォルダに向け、ソースを監査します。インフラは FrontierStack が既に集めている信号 — Cloudflare ゾーンとその TLS/WAF 設定、ドメイン/証明書の健全性、ピン留めサーバの OS・公開サービス・リモートアクセス・MDM/アクティベーションロック/FileVault 状態、ローカルファイアウォール — を秘匿化したインベントリにまとめ、エージェントがそれを攻撃します。
実行全体は Sandcastle の Docker サンドボックス内で行われるため、信頼できないコードに向けた敵対的エージェントがホストに直接触れることはありません。初回監査時にサンドボックスのイメージとランナーをアプリが構築します(Docker または Podman の起動が必要)。以降は即座に開始します。所見は重大度バッジ付きで表示され、Obsidian に保存したり、重大/高リスクを アラートとして発報できます。他と同様、Mac から出るのは秘匿化済みのプロンプトのみ(シークレットは事前に除去)で、サンドボックス内のエージェントは claude setup-token のトークン(または Anthropic API キー)であなたの Claude サブスクリプションで認証します。
エージェントの開始前に、FrontierStack 自身が公開された .env ファイルと Git リポジトリを確認します(エージェントからはどちらも見えません)。コードベースモードではフォルダ内を探し(リポジトリでない Web コンテンツのフォルダでも可。Git が必要なのはエージェントの段階だけです)、そのフォルダを配信しているサイトに見つかった .env と .git を要求し、コミット済みや git-ignore されていない .env も指摘します。インフラモードでは把握しているすべてのドメイン(Cloudflare ゾーンを含む)に HTTPS で /.env と /.git/HEAD を要求します。どのアドレスにも同じページを返すサイトは該当とみなさず、記録するのは配信されているかどうかだけで、内容は保持しません。該当したものは 公開された .env と Git に重大な所見として表示されます。
.env、秘密鍵、service-account.json — を含むフォルダはサンドボックスにマウントせず拒否します。クリーンなチェックアウトを監査してください。
10.15Strix:AI ペネトレーションテスト
ここまでの監査は読み取り専用で、ホストの構成やコードのどこが悪用可能かを調べるものでした。Strix はさらに踏み込み、能動的なペネトレーションテストを実行します。セキュリティペインの Strix AI セキュリティテストセクションから、リポジトリフォルダ、Git URL、ドメイン、URL、IP アドレス(または連携ホストのいずれか)を指定し、深さを クイック・標準・ディープから選ぶと、攻撃対象領域をマッピングし、実際の攻撃経路を試み、ペネトレーションテストレポートを作成します。
FrontierStack はこれを、オープンソースの Strix コマンドラインエージェントを Mac 上でローカルに駆動し、そのディスク上の実行成果物 — 検出結果・実行メタデータ・レポート — を読むことで行います。ホスト型サービスをスクレイピングすることはありません。CLI が未導入ならその旨を示し Install Strix… リンクを提示します。Update Strix は uv または pipx 経由で更新し、スクリプトをシェルにパイプすることはありません。AI プロバイダキーは任意で、指定した場合は macOS Keychain に保存され、ローカルの Strix プロセスにのみ渡され、表示もクラウドモデルへの送信もされません — ペインはキーが設定済みかどうかのみを示します。
タイルは直近の実行を要約します:Critical・High・Medium の件数、所要時間、24 時間以内の新規、失敗したスキャン。実行中はライブのフェーズ表示と Stop ボタンが出て、新しい Critical/High の所見が現れると(アラートを消音が有効でない限り)ローカル通知が届きます。検出結果を開くとレポートを書き出すで詳細を確認でき、失敗したスキャンを再実行とスキャンエンジンを再起動で不調から回復します。重大な所見は機微情報として扱われ、クラウド AI に送られることはありません。AI アドミニストレーターからも strix_status・strix_scan・strix_control で駆動でき、第 13 章で扱います。
10.16Certificate Sources と TLS
証明書の失効は自ら招く障害です。Certificate Sources ダッシュボードは、ホスト上の発行スタックごとに 1 行を表示します — Let's Encrypt(acme.sh 経由)、Certbot、Step CA、Traefik、Cloudflare SSL — 失効日は openssl で証明書そのものから直接読み取ります。Cloudflare は分析用に構成したトークンとゾーンを使い、この Mac に存在しないソースは淡色で表示されます。Traefik はその acme.json を、Step CA はその URL をダッシュボードに指定できます。
証明書の発行には 2 つの経路があります。mkcert はローカルで信頼される証明書を作成します — 公的 CA が無関係な .localhost や LAN 名での開発に最適で、Certificates ペインの Get アクションは導入済みならこれを使います。一般に公開するものには Let's Encrypt を使います。AI の issue_certificate ツールが This Mac または連携サーバで acme.sh や certbot を実行し、DNS-Cloudflare 方式では実行時に注入される CF_TOKEN ボールトシークレットを読み — モデルに送られることはありません。商用証明書が必要なら、Certificates ペインの ACME セクションで認証局に GlobalSign Atlas を選び、Atlas ポータルの EAB キー ID と HMAC キーを入力して一度だけ登録します。以後の発行と更新は同じ手順で行え、HMAC キーはキーチェーンに保存されます。
10.17メールのセキュリティ
メールサーバには 2 つの異なるリスクがあります。なりすまされること(誰かがあなたのドメインとしてメールを偽造する)と、悪用されること(見知らぬ相手のためにメールを中継する)です。FrontierStack は両方に対処し、Postfix が下層にいる旧 Apple Server のケースも理解するツールを備えます。
- なりすまし対策の DNS —
email_auth_dnsが SPF、DMARC、(任意の)DKIM の TXT レコードを生成します。SPF はドメインの送信元を宣言し、DMARC は失敗時の扱いを受信者に伝え、DKIM は送信メールを暗号署名します。publish=cloudflareならレコードを作成し、そうでなければ BIND、dnsmasq、レジストラに貼り付ける正確なレコードを表示します。 - DMARC レポート — DMARC レポートペインは、Gmail・Microsoft・Yahoo などの受信側がレコードの
rua=アドレスへ毎日送る集計レポートを読み取ります。そのアドレスが届く IMAP メールボックスを追加すると、FrontierStack が 1 時間ごとに確認して zip・gzip・XML の添付ファイルを解析し、ドメインごとの合格率と、そのドメインとして送信しているすべてのサーバを表示します。サーバごとの判定で、ときどき失敗(一部のメールに DKIM か SPF が欠けている自社のサーバ。最初に直すべきもの)と、別ドメインとしてのみ認証されるメール、まったく認証されないメール(多くはなりすまし)を区別します。Suped からの取り込みにも対応します。メールボックスが読めないとき、自社サーバの失敗がしきい値を超えたとき、ドメインのレポートが止まったときにアラートします。ドメインをp=noneからquarantineやrejectに進める前にここを確認してください。AI はemail_auth_dnsaction=reportsで同じ概要を読み取ります。 - DKIM 鍵 —
generate_dkim_keyはサーバ上でドメインとセレクタに対しopendkim-genkeyを実行し、公開鍵を公開すべき TXT レコードとして返します。秘密鍵は OpenDKIM ミルターのためサーバに残ります。 - Postfix の堅牢化 —
harden_mail_postfixは SSH 経由でpostconfにより安全なデフォルトを適用します。中継には SMTP AUTH を必須化(これでオープンリレーを閉じます)、未知・未登録の送信元ドメインを拒否、任意で送信者/ログインの一致を強制します。Postfix をリロードし、実効設定を表示します。 - オープンリレーテスト —
test_open_relayは安全な SMTP 会話(EHLO/MAIL FROM/RCPT TO を外部ドメインへ、送信せず QUIT)を行い、外部宛先が拒否されたか(良好)受理されたか(オープンリレー — 不良)を報告します。 - 配送プローブ — サーバのメールサーバポリシーセクションから、タグ付きテストメッセージを 1 通だけリレー経由でエンドツーエンド送信し、正確な SMTP の結果を読みます:受理&キュー投入(キュー ID 付き)・遅延・拒否・TLS 証明書エラー。これで「受理後に無言で破棄」か実配送かを見分けられます。LAN の IP で指定したリレーで STARTTLS の証明書が検証できない場合は、LAN リレーを信頼オプションで暗号化はされるが検証はしない経路で再試行します。Apple Server.app のマシンでは、設定がログを syslog/ASL 任せにしていても Postfix の実際のログを見つけ、メールキューや Server.app の
/Library/Logs/Mail/ファイルも参照します。 - アカウントチェック — メールサーバペインで、メールアカウントの POP3・IMAP・SMTP の設定を入力して設定をチェックをクリックします。各サーバにメールクライアントと同じ手順で接続し、手順ごとに結果を示します。解決できないサーバ名、接続を拒否するポートやファイアウォールに黙って破棄されるポート、ポートに合わないセキュリティ方式(110 や 587 での SSL/TLS、995・993・465 での STARTTLS)、TLS 1.0/1.1、この Mac が信頼しない証明書を、その理由(期限切れ、別の名前用、自己署名、中間証明書なし)とともに指摘します。続いてサインインしてメッセージ数を読み取り、ログアウトします。ログインが拒否された場合はサーバ自身の応答を表示します。何もダウンロード・送信・削除せず、パスワードも保存しません。証明書が無効な場合や接続が暗号化されていない場合は、オンにしない限りパスワードを送信しません。
serveradmin によって管理されている場合があり、main.cf を上書きして harden_mail_postfix の変更を黙って取り消すことがあります。実行後に結果を確認し、戻ってしまった場合は同等の設定を Server.app から再適用してください。証明書の自動更新。メールサーバは Web ページではなく DNS で Let's Encrypt にドメイン名を証明します。メールサーバ ▸ 証明書の自動更新は、リンク済みサーバについて、Postfix と Dovecot が使う証明書を acme.sh が Cloudflare DNS で更新し、両者が読む場所にインストールしているかを確認します。自動更新を設定…は、そのゾーンの DNS に限定した Cloudflare トークンを使って足りないものを補い、一度更新して動作を確認します。以後は毎日確認し、証明書の期限まで 20 日を切るとアラートを出します。
メールボックスのサイズ。メール用ディスクがいっぱいになったら、まず誰のメールが原因かを確かめます。メールサーバ ▸ メールボックス ▸ メールボックスを一覧表示は、選んだサーバ上のすべてのメールボックスを大きい順に、合計とCSV としてコピー付きで表示します。Dovecot がユーザを一覧できる場合は、メッセージ数とクォータの使用率と共に Dovecot からサイズを取得します。そうでない場合はディスク上のメールフォルダを計測します。macOS Server.app のユーザ別フォルダも GUID ではなくアカウント名で表示します。読み取りのみです。リンク済みサーバでは、すべてのフォルダを計測できるよう sudo パスワードを保存しておいてください。
10.18パスワード自動入力とクレデンシャル交換
FrontierStack は、あなたが管理する Web ページのログインをすでに保存しています — ルータとネットワーク ▸ Web リンクに保存したルータやプリンタ、Synology や QNAP の管理アカウント、ブートメディアのサーバコントローラ、サービスのサインイン。パスワード自動入力ペイン(シークレット・ボールト)を使うと、Safari などのアプリでそれらを自動入力でき、アプリからパスワードをコピーする必要がなくなります。
- シークレット・ボールト ▸ パスワード自動入力を開きます。FrontierStack がオンになっていないと表示されたら、オンにする…を選び、システム設定 ▸ 一般 ▸ 自動入力とパスワードで FrontierStack を有効にします。
- FrontierStack に保存済みで、Safari に入力させたいログインの横の提供を選びます。アプリのほかの場所にないログインはログインを追加…で追加できます。
- デバイスの Web ページで FrontierStack の候補を選び(またはパスワードメニューから FrontierStack を選び)、Touch ID または Mac のパスワードで確認します。
クレデンシャル交換(macOS 26 以降)は、パスワードマネージャ間でパスワードを移すための FIDO の規格です。パスワード — または対応するパスワードマネージャ — でアプリへの書き出しを選び、FrontierStack を指定します。データは macOS がそのまま受け渡し、途中でディスクに書かれることはありません。FrontierStack は確認画面を表示します。アドレスがこのネットワークのもの(既知の FrontierStack ログイン、フリートのサーバ、プライベートアドレス)はチェック済みで、FrontierStack にログインはあるがパスワードが未保存の場合は、取り込んだパスワードを使えます。不要なものはチェックを外してください。パスキー、確認コード、カード、メモ、チェックのないログインは完了時にすべて破棄され、監査ログには件数だけが記録されます。
逆方向には、パスワードマネージャへ書き出す…で保存済みログインにチェックを付け、Touch ID またはパスワードの確認後にほかのアプリへ送れます。送り先は macOS のシートで選びます。
10.19外部から変更してよいのは誰か
ここまでは FrontierStack が面倒を見るマシンの堅牢化でした。本節は FrontierStack 自身の堅牢化です。フリート全体の SSH 鍵・データベースのパスワード・クラウドトークンを預かるアプリは、管理下のどのサーバよりも魅力的な標的だからです。
FrontierStack は複数の入口から外部操作できます。AI クライアント向けの MCP サーバ、Webhook やモバイルパネル向けの受信 HTTP 制御サーバ、ショートカットや Siri 向けの App Intents、そして有効化した場合のエージェント連携です。いずれも独自のトークンを持ちますが、その上位にリモート制御・ロック内の 2 つの設定があります。それぞれが答える問いは異なります。
アプリロックは「ロック中に何が残るか」に答えます。パスワードを設定してロックすると、ウィンドウは覆われ、すべての外部経路が完全ブロックか読み取り専用に制限されます。
10.22.3Fleet:物理セキュリティキーを必須にする
Fleet ライセンスでは、パスワードロック設定のすぐ隣に物理セキュリティキーが追加されます。Yubico YubiKey・Google Titan・FEITIAN ePass から選び、Apple のシステム画面でキーを登録します。FrontierStack が保存するのは公開認証情報だけで、秘密鍵がドングルの外へ出ることはありません。
有効にすると、FrontierStack は起動時からロックされ、バックグラウンドへ移るたびに再ロックします。登録済みキーを接続または提示してタッチするまで、ウィンドウもすべての外部制御経路もゲートされたままで、何も実行しません。App Lock パスワードも設定している場合は 2 段階となり、正しいパスワードと物理キーのタッチの両方が必要です。キーがないときにパスワードだけへフォールバックすることはありません。
最大 3 本を登録できるため、少なくとも 1 本は別の場所に予備として保管してください。対応ファミリーは YubiKey、Google Titan、FEITIAN FIDO2/ePass です。iPhone/iPad では、対応する USB-C または Lightning キーを接続するか、Apple の画面に従って NFC 対応モデルをかざします。ポリシーの解除にも現在登録されているキーの新しいタッチが必要なため、ロック解除済みセッションから密かに保護を弱めることはできません。
ペアリング済みデバイスとスクリプトシークレット
キーを登録すると、ペアリング済みデバイスにもキーを必須にするが既定でオンになります。ペアリングコードの作成、KeyRotate のペアリング、ペアリング済みデバイスの権限の引き上げ(上位レベル・リモートシェル・AI による変更)には、この Mac でのタッチが必要です。デバイスの権限を下げる操作や取り消しには不要です。スマートフォンからのシークレットやシェルの要求は、タッチでデバイスのキーセッション(既定 15 分)を開くまで拒否されます。セッションなしで要求が来ると、Mac にキーの確認が表示されます(最大 1 分に 1 回)。FrontierStack をロックするとセッションは閉じ、開いているかどうかはペアリング済みデバイスで確認できます。
AI のスクリプトシークレットもキーで封印できます。AI 管理者のセキュリティキーで暗号化…を使うと、値は secrets.env.fsenc に保存され、登録済みセキュリティキーへのタッチでしか取り出せない鍵で暗号化されます(FIDO2 PRF、macOS 26.4 以降)。名前は表示されたままです。値は起動やロックのたびにタッチが必要になり、1 時間で再ロックされます。シークレットを使うスクリプトは実行時にタッチを求めます。予備キーはすべてバックアップキーを追加…で追加してください。この機能より前に登録したキーは、いったん削除して登録し直す必要があります。シークレットが封印されている間は、すべてのキーを削除することはできません。
セキュリティキーによる SSH。連携サーバの設定を編集でセキュリティキーの SSH キーを作成…を選ぶと、セキュリティキー上に ed25519-sk キーを作成し、既存のアクセス方法でサーバに登録し、テストセッションが成功してからサーバを切り替えます。古いキーをサーバから削除することもできます。普段はキーセッションを開くで一度タッチすれば、監視・コマンド・ターミナルがそのセッションを共有し、タイムアウト(既定 60 分、サーバごとに設定)の間アイドルになるまで使えます。セッションが閉じている間、そのサーバの監視は停止扱いではなく一時停止となり、バックグラウンドでタッチを待つことはありません。Apple 標準の ssh は FIDO キーを使えないため、この Mac に Homebrew の OpenSSH が必要です(FrontierStack からインストールできます)。Linux や Windows を含むすべてのサーバで同じで、サーバ側には何も追加しません(サーバは OpenSSH 8.2 以降であれば使えます)。セキュリティキーの使用をやめる…で以前のキーに戻せます。
外部からの変更は別の問いに答えます。ロックしていない状態で、外部の呼び出し元が何かを変更するまでに何を要求するか、です。MCP サーバ・制御パネル・ショートカット・コマンドラインのすべての外部経路に同時に適用されます。レベルは 3 つ。全自動は確認なしで実行させます。接続するクライアントとその動作環境をすべて信頼できる場合にのみ妥当です。既定の操作ごとに確認は、変更のたびに呼び出し元を明示した承認パネルを表示します。要求が応答待ちで FrontierStack が最前面にないあいだは、Dock アイコンが跳ね続けます(応答しないまま別のアプリに移った後も同様です)。応答すると止まります。応答待ちの通知には拒否と1 回だけ許可のボタンがあります(ポインタを重ねると表示されます。システム設定 › 通知で FrontierStack を通知パネルにすると、常に表示されます)。拒否は通知から常に実行できます。1 回だけ許可は、人の操作の確認に Touch ID を使う設定では Touch ID を求め、ハードウェア入力の確認を使う設定ではパネルを開きます。通知のクリックは合成された操作と区別できないためです。時間指定の許可はパネルでのみ行えます。メールサーバの監査や DNS レコードの一覧など、読み取りだけの呼び出しは確認を求めません。パスワードが必要は、外部ツールがサーバに触れる前にパスワードを求めます。
確認レベルには、障害対応時に効く逃がし弁があります。承認時にこのセッションのみ許可を選ぶと 5 分間有効になりますが、その呼び出し元・その種類の操作に限られます。MCP クライアントからのサービス再起動を承認しても、同じクライアントでのシェル実行や、モバイルパネルからの再起動が許可されるわけではありません。この狭さこそが要点です。障害中に確認が繰り返されることが、人を「全自動」へ恒久的に切り替えさせる主因であり、横に漏れる許可はそれ以上に危険だからです。
どのレベルでも共通する 3 つの性質が、この設定を単なる設定項目ではなく信頼できるものにしています。読み取りは決して制限されません。障害中に暗転するダッシュボードは害にしかならないため、監視クライアントはどの設定でも動き続けます。認証情報・シェル・FrontierStack 自身の設定は、どのレベルでも外部から変更できません。これらは確認を出すのではなく拒否されます。パスワードの読み出しや任意コマンドの実行にとって、リモートツールからの要求はそもそも発生源として適切ではないという判断です。そしてセッション許可はディスクに書かれません。アプリの終了やロックで消えるため、5 分間の利便性が、与えたことを忘れた恒久的権限に変わることはありません。
10.22.4人間の操作による承認 — AI がマウスを動かせるとき
確認パネルは、クリックするのが人間であることを前提にしています。コンピュータ全体を操作する AI エージェント(「コンピュータ操作」)はその前提を崩します。合成のマウス/キーボードイベントを送信するか、アクセシビリティ経由でコントロールを直接押すことで、それを止めるために存在する承認カードの 承認 ボタンを、人間とまったく同じように押せてしまいます。同じリモート制御・ロックペインにある人間の操作による承認は、この経路を 2 つのレベルで塞ぎます。
実際のキーボードとマウスのみは、すべての承認の背後にある操作を検査します。本物のクリックやキー入力は、送信元プロセスを持たずに macOS から届きます。合成イベントには送信元アプリの情報が付き、アクセシビリティ経由の操作は入力イベントを一切伴いません。実際のハードウェア入力でないものは拒否されます。承認カードは開いたまま残り、カード上の注記が何が起きたかを示し、変更ログに記録され(特定できた場合は送信元アプリ名も残ります)、自動化が承認を試みたことが通知されます。
実際の入力 + Touch ID は決定的な証明を加えます。承認のたびに Touch ID(またはペアリング済み Apple Watch)を求め、パスワードへのフォールバックはありません。パスワードは合成キーボードがまさに入力できるものですが、指紋は Mac 上のソフトウェアには決して偽造できません。セキュリティキーが登録されていても Touch ID を求めるのは意図的です。Mac に挿したままのキーは、その Mac 上で動くソフトウェアの手が届く範囲にありますが、指紋には届きません。Touch ID も Watch もない Mac に限り、登録済みセキュリティキーのタッチで代替します。
このゲートはすべての承認 — スクリプトカード、セキュリティ確認、外部ツールの許可、AI が提案する修復、App Lock のパスワード — を対象とし、拒否に証明は不要です。したがってこの保護が止められるのは常に「承認」だけで、動いているものを止め続けることには使えません。意図的な副作用が 2 つあります。画面共有・VNC・KVM から注入される入力も合成入力として扱われます(Mac 本体で承認するか、画面共有越しでも Watch で通る Touch ID レベルを使ってください)。また Karabiner-Elements などのキーリマッパや、アクセシビリティ経由でコントロールを押す支援ツールも合成入力として扱われます。
10.22.5KeyRotate:キーのマスタ
Enfour の Mac App Store 向けキーマネージャ KeyRotate は、コンパニオンアプリ(資格情報のみ)レベルで FrontierStack とペアリングし、FrontierStack が使うキー(AI プロバイダキー、Cloudflare、ホスティング、メールリスト、エージェントトークン、CLI Proxy のクライアントキー、そしてキーを 1 つだけ使うサービスのペインや SaaS モニタのキー。Firecrawl、Supabase、Shopify、PagerDuty などが該当します。Stripe モニタの制限付きキーと GitHub・GitLab・Gitea・Bitbucket のトークンは、アプリのキーより権限が狭いことが多いため、選んだときだけリンクします)のマスタを保持します。ペアリング中、KeyRotate はこれらのキーを FrontierStack に送り、常に最新に保ちます。FrontierStack で入力したキーは、入力を終えて数秒後に KeyRotate に戻り、KeyRotate はそのキーを書き込んでいるすべてのファイルを更新します。この受け渡しには、アカウント1件に限定され2分で失効する使い捨てチケットを使い、引き換えられるのは署名付きのコンパニオンだけです。チケットを運ぶリンクにはアカウント名しか含まれず、値は含まれません。スクリプトシークレットも同じように同期しますが、セキュリティキーで保護したものは KeyRotate に送られません。PATH のようにスクリプトの動作を変える名前は同期せず、FrontierStack で削除したシークレットは削除されたままです。
FrontierStack の起動中に KeyRotate を初めて開くと、FrontierStack のキーを読み込むか確認します。FrontierStack はどのアプリにどのキーを送るかを表示します。既定のボタンは拒否で、許可には Mac で Touch ID が使える場合は必ず Touch ID が必要です(パスワードへの切り替えはできません)。Touch ID が使えない Mac に限り、Apple Watch、登録済みのセキュリティキー、それもなければログインパスワードを受け付けます。FrontierStack を開いておく必要はありません。非表示でもバックグラウンドのみで終了していても、KeyRotate からの要求があるとバックグラウンドサービスがアプリを起動します。フルコントロールのスマートフォンでもこの要求はできず、送信はすべて監査ログに記録されます。
KeyRotate によるローテーション。KeyRotate とペアリングしていると、AI 管理者が credentials ツールでキーをローテーションするときは既定で KeyRotate に依頼します。新しいキーは FrontierStack だけでなく、KeyRotate がそのキーを書き込むすべてのファイルに届きます。FrontierStack はアカウント名と使い捨てチケットだけを含む keyrotate://rotate リンクを開き、KeyRotate は署名付きのピン留め接続でそのチケットを確認してから動きます。KeyRotate は自身のルール(有効なサブスクリプション、ロック中は FrontierStack からの依頼であることを示す Touch ID)を適用し、新しいキーを FrontierStack に送り、自動更新の設定がオンならほかのターゲットファイルも書き換えて、待っているツールに結果を報告します。古いキーは無効化しません。FrontierStack 側でローテーションするには via: frontierstack を指定します。保存中のキーはどれでもローテーションできます。ベンダ API が新しいキーを発行できる場合(キー自身または保存済みの管理者キーで)は自動で、できない場合は手動です。FrontierStack か KeyRotate がベンダのキーのページを開き、貼り付けた新しいキーを確認します。保存中のキーが AI 管理者へのプロンプトに含まれていると、ローテーションを提案します。MCP 経由の外部 AI ツールや CLI(frontierstack keys・frontierstack rotate <サービス>)も、キーの漏えいに気づいたら同じ提案をするよう案内されています。
keyrotate:// リンクはどのアプリからでも開けるため、KeyRotate から求めていないペアリングは受け入れる前に確認します。10.20auth.md によるエージェントログイン
パスワードは自動化に最も向かない資格情報なので、FrontierStack はサードパーティサービスの長期パスワードを貼り付けるよう求めることは決してありません。代わりに auth.md を検出します — サービスが https://<host>/auth.md に公開できるオープン仕様(WorkOS 発)で、AI エージェントが代理でサインインする方法を伝えます。サービスの Connect ▸ Login Automation (auth.md) 開示と、AI の check_authmd ツールがその公開ファイルを取得し、広告されたフロー(agent-verified または user-claimed)、スコープ、OAuth エンドポイントを要約します — あるいは未公開と報告します。付与そのものはサービス側で行われ、短命で取り消し可能、スコープ付きのトークンが発行されます。FrontierStack はパスワードを保存しません。現在 Cloudflare と Firecrawl が auth.md を公開しており、対応サービスは増えつつあります。
10.21署名付きリクエストの信頼モデル(FS1)
FrontierStack 自身の制御面 — ローカルの制御サーバ、MCP サーバ、リモートの fsagent — は TLS 上のベアラートークンで保護されています。しかしトークン単体は共有秘密であり、再送可能で、誰が呼んでいるかの証明にはなりません。FS1 署名付きリクエストはその上に第二の要素を加えます。すべてのリクエストが承認済みのデバイス単位 Ed25519 鍵で署名され、サーバは公開鍵の許可リストを保持し、明示的に承認していない鍵で署名されたものを拒否します。漏れたトークンはそれ単体では何も制御できません — これはフリートがすでに信頼している SSH 鍵の HTTP 版です。
各リクエストはデバイスの鍵 ID、タイムスタンプ、ランダムなノンス、正規化文字列に対する署名を運びます。サーバは、鍵が承認済みであること、タイムスタンプが 60 秒の窓内であること、ノンスが未使用であること(署名が検証された後にのみ消費されるため、不正な署名でノンスを浪費できない)、署名が有効であることを検証します。同じ方式が macOS アプリ、Go エージェント、iOS クライアントで同一に実装され、言語横断テストで固定されています。
デバイスはサイドバー概要グループの Paired Devices ペインで管理します(以前はこのセキュリティペイン内にありました)。ペア済みの各電話・タブレットには、ラベル、鍵フィンガープリント、最終確認時刻、スコープ選択、Revoke ボタンが表示されます。ペアリングは数台ずつ持つ 1〜2 名を想定し — 登録は 4 台まで — 各デバイスはスコープを帯びます。
| スコープ | 状態・ログの閲覧 | サービス再起動 | フリート操作 | ツール/CLI/スクリプト |
|---|---|---|---|---|
readOnly | 可 | — | — | — |
restart | 可 | 可 | — | — |
operate | 可 | 可 | 可 | — |
full | 可 | 可 | 可 | 可 |
同じセクションには、制御サーバと MCP サーバそれぞれの署名要求(Require request signing)スイッチがあります。展開は意図的に緩やかです。署名が任意のあいだサーバはトークンまたは署名を受け入れ、すでに持っているトークンで最初の鍵を登録できるブートストラップ例外があるため — 強制を有効にしても全員を締め出すことは決してありません。
各行にはさらに 2 つのデバイス単位の制御があります。AI 管理者を許可(既定はオン、どのスコープでも)は、その電話が AI と会話できるかどうかを制御します — 信頼する 1 台にはチャットを許可しつつ別の 1 台をブロックできます。このスイッチは制限のみを行います:オンでも AI は依然としてアプリのロック解除、署名済みデバイス、変更を伴う操作には full スコープの「変更を許可」を必要とします。リモートシェルを許可は full スコープでのみ表示され、既定はオフです。これは電話がコマンドラインシェルを開き、さらにこの Mac がオフラインでも直接アクセスするために自身の SSH 鍵をサーバに導入するために必要な明示的許可です。電話を紛失した場合、紛失した電話を保護は端末と古いキュー操作を直ちに遮断し、セッションを終了し、到達可能なサーバから直接 SSH 鍵を削除し、プッシュトークンを無効化します。オフラインのサーバは復帰後にクリーンアップを完了できるよう一覧に残ります。
Bluetooth によるペアリングのフォールバック。新しい電話が Wi-Fi や Tailscale でこの Mac に到達できないとき — 制限されたゲストネットワーク、クライアント分離、キャプティブポータルなど — 登録は Bluetooth 経由でも完了できます。Bluetooth ペアリングを許可(既定はオフ)を有効にすると、Mac はペアリングダイアログを開いている間だけ短命の GATT サービスをアドバタイズします。電話は同じ一度きりの QR コードをスキャンし、まったく同じ署名付き登録ハンドシェイクを実行します — HTTPS の代わりに BLE で運ばれるだけです。FS1 署名はトランスポートに依存しないため、Bluetooth 経路は TLS チャンネルなしで同じ信頼保証を継承します。
どこからでも Mac に到達する。初期状態では、ペアリングした電話は同じネットワーク上にあるときだけ Mac に到達できます。Mac 上に Tailscale が見つからない場合、Paired Devices ペインはインストールを推奨します。Mac に Tailscale、電話や iPad に iOS 版 Tailscale を入れて両方を同じ tailnet にサインインすれば、ペアリングはどこからでも機能します — Mac は安定したプライベートアドレスを保ち、通信はエンドツーエンドで暗号化され、ルータのポート開放も不要です。
full ではなく restart で。すべてのデバイスを登録したら、両サーバで署名要求を(エージェントでは require_sign を)有効にします。その後は、漏れたりスクリーンショットされたトークンは何も制御できません。呼び出し側は承認済みの秘密鍵も持っていなければならないからです。電話を紛失したり担当者が離れたら、ただちにデバイスを取り消してください。10.22ヘッドレス Mac の堅牢化
ディスプレイのないサーバには固有のセキュリティ上のトレードオフがあり、Headless Setup ツール(詳細は第 8 章と第 17 章)はここで最も重要なものを表に出します。System Status セクションは FileVault が有効なとき警告します。キーボードも画面もない暗号化 Mac は起動時に解除できず — オンラインに戻る代わりに FileVault のプロンプトで止まるからです。ヘッドレス機では一般に、フルディスク暗号化と無人再起動のどちらかを選ぶことになり、FrontierStack はその選択を、次の停電後に気づくのではなく明示的にします。そうしたホストで画面共有やリモートログインを有効にすることは、まさに Open Ports 監視がその後見張る種類の露出です。

第 11
監視とアラート
継続的なヘルススイープが、気にかけるすべてのサービス・デバイス・サブシステムを見守り、トラブルの最初の兆候を、あなたが普段確認しているアプリへのメッセージに変えます。
変更しかできないコントロールパネルは、半分の道具にすぎません。もう半分は、何かがおかしくなったとき——できれば障害になる前に——それを知ることです。FrontierStack は、監視対象として登録したすべてを継続的にスイープし、トラブルの最初の兆候を、あなたが選んだチャネルへのメッセージに変えます。本章では、全体を要約する Local Health ボード、警告を発報・配信する Alerts ペイン、それを運ぶメッセージングゲートウェイ、そしてクラウドサービス・プロジェクトツール・電源・ストレージ向けの専用モニタを扱います。
11.1Local Health ボード
Overview ▸ Local Health を開くと、「今、何か壊れているか?」に答える 1 画面が現れます。監視対象のサービス・デバイス・サブシステムはすべて UP または DOWN の行として、領域別(Web・データベースサービス、フリート、サイトと証明書、ディスク、UPS・SNMP デバイス、接続済みクラウドアカウント)にまとまって表示されます。最上部には X up / Y down の形式で 1 行サマリーがあり、すべての行を読まずともフリート全体の状態をひと目で把握できます。
グループは折りたためますが、障害を含むグループは自動的に開きます。各行の履歴ボタンで直近 30 回のチェック、測定済み応答時間のスパークライン、24 時間・7 日・30 日の正確なローリング観測稼働率、最近の状態遷移を確認できます。各稼働率にはカバレッジを併記し、アプリ停止中・一時停止中・対象ネットワーク外の時間を正常と推測しません。フリート全体のイベントは、最初の観測、停止、復旧を最大 1,000 件、31 日間保持し、エンドポイント、認証情報、応答本文は保存しません。
このボードは、AI 管理者が get_server_health ツールで読むのと同じデータです。「何が落ちている?」と尋ねれば、この画面が示す内容をそのまま報告し、修正案を出す前に調査を申し出ます(第 13 章参照)。スイープはおよそ 60 秒ごとに走り、各 DOWN 項目はそれを所有するペインにも紐づけられます。これがサイドバーの行や Dock アイコンに赤いカウントのカプセルが現れる理由です——トラブルが「ある」だけでなく「どこにあるか」が分かります。
11.2Alerts ペイン:監視する対象

Local Health ボードは状態を表示します。Alerts ペイン(Overview ▸ Alerts)は、何がメッセージに値するかを判断して送信します。「重要なサービスを監視して通知する」をオンにすると、スイープがアラートを発報し始めます。監視する対象は次のとおりです。
- サイトとサービスの健全性 — HTTP/ループバックのチェック、TCP ポート、さらに踏み込んだプロトコルプローブ(SMTP/IMAP ログイン、データベースの
SELECT 1、LDAP バインド)。待ち受けてはいるが実際は壊れているサービスも検知します。MySQL プローブはさらに接続プール(max_connectionsに対する使用率と "too many connections" の拒否カウンタ)を読み取り、プールが 90% を超えたときやスイープ間にクライアントが拒否されたときに通知します。各スイープはデータベースヘルスペインの接続ヘルス履歴としてチャート化され、プール使用率の推移に、拒否バーストと停止が赤い線で刻まれます。 - 連携サーバ — 各フリートホストの SSH エンドポイントをスイープごとに到達性チェックします(ログイン試行なしの素の TCP 接続)。完全に停止したサーバは明確な「サーバダウン」アラートを発報し、復帰時には「サーバ復旧」を送ります。これはホストが稼働中に接続を制限しているときだけ出る SSH クールダウン通知とは別物です。
- 証明書とドメイン — フリート全体の TLS 有効期限に加え、レジストラ/DNS/SSL のチェックで、失効する当日の朝ではなく数日前に警告します(第 7 章)。
- ディスクの逼迫 — 後述の Disk Health モニタから、空き容量しきい値を下回ったボリュームを通知します。
- セキュリティの露出 — 新しい開放ポートや想定外のリスナー、VPN トンネルの切断、SSH がネットワークから到達可能な状態での重大な SSH 堅牢化の失敗。
- 決済の失敗と請求 — 接続した有料サービス(OpenAI・Anthropic・Cloudflare・Google Cloud)がクォータ不足・残高不足・認証エラーを返す——カード失効の症状です。
- 接続したクラウドサービス — Stripe・Shopify・Freshdesk・SendGrid などのライブ監視が、設定したしきい値を超えると発報します。
多くのチェックはしきい値ベースなので、「トラブル」の定義はあなたが決められます。証明書が残り N 日になったら、未対応チケットが一定数を超えたら、ディスクが一定割合を超えたら——。余裕を持ったしきい値にすれば、事後検証が事前の知らせに変わります。ペインには「侵入を通知」もあります。新しい fail2ban/CrowdSec のバン、高深刻度の Suricata シグネチャ、注目すべき Wazuh アラート(レベル ≥ 7)が発生時にメッセージされ、既存の履歴は再アラートされません。
SwitchBot デバイス。SwitchBot デバイスをピン留めすると、SwitchBot クラウド経由で監視します。プラグは 2 分ごとに確認し、Wi-Fi 不安定の警告も出します。ロック、センサ、カーテン、ボット、照明、ハブ 2/3 など状態を報告するデバイスは 10 分ごとに確認し、デバイスまたは接続先のハブがオフラインと SwitchBot が返したときにアラートします。カメラとハブミニは状態を報告しないため、オフラインとは表示しません。SwitchBot の 1 日 10,000 回の上限に収まるよう、ピン留めが多いと間隔を自動で延ばします。上限はアカウントごとなので、アカウント別に配分します。ピン留めした SwitchBot デバイスの点は、そのデバイス自身の状態確認に応答があったときだけ緑になり、未確認や状態のないデバイスは灰色のままです。SwitchBot ペインで SwitchBot の Webhook を受信を有効にしてインターネットアクセス(Cloudflare Tunnel、Tailscale Funnel、ルータのポート転送)を設定すると、Indoor Cam と Pan/Tilt Cam が動きを検知するたびに通知し、最終アクティブとして表示します。Pan/Tilt Cam 2K と Plus モデルは Webhook を送信しません。動きのないカメラをオフラインとは報告しません。
複数の SwitchBot アカウント。トークンで取得できるのはそのアカウントに追加されたデバイスだけなので、他の人が所有して共有しているホームにはその人のトークンを使います。SwitchBot ペインのその他のアカウントに追加してください。各デバイスの操作と確認には、そのデバイスを持つアカウントを使います。SwitchBot の API には部屋の情報がないため、グループ化では接続先のハブ、ピン留めした場所、アカウント別に並べます。
11.3メッセージングゲートウェイ
アラートは届いて初めて役に立ちます。Alerts ペインでは複数のゲートウェイを同時に有効化でき、チャネルごとに複数の宛先を指定できるので、相手が既に開いているアプリに確実に届きます。ボットトークンや Webhook URL を貼り付け、テストを送れば稼働します。KeyRotate とペアリングしていれば、Telegram のボットトークンと LINE のチャネルアクセストークンは KeyRotate と同期します。KeyRotate でローテーションしたトークンが次のアラートからすぐに使われ、LINE の 30 日間トークンは KeyRotate が自分で発行できます。AI 管理者は get_messaging_channels で有効なゲートウェイを列挙し、send_notification で送信できます(第 13 章)。
| ゲートウェイ | 適した用途 |
|---|---|
| Telegram | ボットトークン。ゲートウェイごとに複数チャット。高速・無料・確実な携帯プッシュ。 |
| LINE(Messaging API) | LINE を使う相手、特に日本・韓国に届ける。 |
| Slack / Discord | チームチャンネルへの受信 Webhook。チームが既に話す場所に運用アラートを流す。 |
| ntfy | 公式サーバまたは自前のセルフホスト ntfy 経由のシンプルな携帯プッシュ。 |
| Apprise | ひと手間で 80 以上の宛先(Pushover・Matrix・Gotify・Microsoft Teams・PagerDuty ほか)へ展開。 |
| メール(SMTP) | 受信箱に届けたいもの全般。スケジュール配信の AI 評価レポートも運びます。 |
| SMS / WhatsApp | Twilio または WhatsApp Business Cloud API 経由で電話に直接。 |
| Slack/Discord Webhook | すべてのアラートと復旧の、チームに見える永続履歴。 |
| KakaoTalk | KakaoTalk ユーザへの「自分宛て」アラート。 |
| iMessage(Apple メッセージ) | Mac から直接送るネイティブな「自分宛て」アラート——外部サービス不要。 |
| PagerDuty/Opsgenie(ページング) | エスカレーション付きの本物のオンコール呼び出し——下記参照。 |
11.18.1オンコールの呼び出し(PagerDuty・Opsgenie・緊急 ntfy)
上記のメッセージゲートウェイは送りっぱなしのテキストです。ページングチャンネルは質的に異なり、ステートフルです。監視項目がダウンすると、FrontierStack はその項目にキー付けされたインシデントをトリガします——PagerDuty(Events API v2 のルーティングキー)または Opsgenie(GenieKey)がエスカレーションポリシーを実行し、誰かが応答するまでオンコール担当者にプッシュ・SMS・電話をかけ続けます。項目が復旧すると、FrontierStack は同じインシデントを自動的にリゾルブします。インシデントは項目ごとにキー付けされるため、フラッピングするサービスは 1 つのインシデントを更新するだけで当番を何度も呼び出さず、すでに終わった障害で誰も起こされません。オンコールサービスがない場合は、ntfy ゲートウェイのダウン時にページトグルで「ダウン」アラートを ntfy の最高優先度で送信できます——より大きく繰り返し鳴り、多くのスマホのサイレント設定を突破します(復旧とレポートは通常優先度のまま)。各ページングチャンネルのテストページを送信ボタンは実際のインシデントを発生させ、約 10 秒後に自動リゾルブして、エスカレーション経路全体を端から端まで検証します。
11.18.2ほかの人にも知らせる:連絡先・プリセット・エスカレーション
上記のチャネルが届くのはあなただけです。実際の障害では、メールで知りたい上長、もう一人のサポート担当、現地に向かう技術者など、ほかの人にも連絡が必要なことがよくあります。アラート ▸ 連絡先とエスカレーションは、これを 3 つの要素で扱います。
| 要素 | 内容 |
|---|---|
| 連絡先 | あなた以外の人。名前、役割(上長・現地技術者など)、使う宛先(メール、携帯番号(SMS と電話)、WhatsApp、Telegram チャット ID、メッセージのハンドル、ntfy トピック、LINE ユーザ ID)を登録します。 |
| プリセット | 「誰に・どの方法で・いつ知らせるか」を再利用できる形にしたものです。各ステップで連絡先、1 つ以上の方法、遅延、緊急かどうかを指定します。「サーバ室 B1 のラック 3 へ向かってください」のような、すべてのメッセージに添える指示も持てます。 |
| ルール | どのアラートにどのプリセットを使うか。すべてのアラート、カテゴリ(ストレージ、ネットワークとルーティングなど)、ロケーション、個別の監視項目から選べます。一致したルールはすべて適用され、複数のルールで指定された人にも連絡は 1 回だけです。 |
たとえばプリセット「上長にメール、現地技術者を呼び出す」は、上長にメールを送り、技術者には SMS と、アラートを読み上げる電話をかけます。「まず技術者、30 分で直らなければ上長」はエスカレーションです。上長へのステップは、30 分後も項目がダウンしたままで、誰も確認済みを押していない場合にだけ実行されます。待機中のエスカレーションはこのセクションとアラートパレット(確認)に表示され、項目が復旧すると自動的に取り消されます。故障を知らされた人には復旧も知らされます。良い知らせで電話が鳴ることはなく、代わりに SMS で届きます。新規プリセット ▸ テンプレートからを選ぶと、用意されたプリセットを使えます。まだいない役割には空の連絡先が追加されます。テストは遅延を無視し、TEST と明記してすべてのステップを直ちに送ります。ピン留めしたカメラやルータなどのオフライン時のアラートにはほかに誰がこのアラートを受け取るか…ボタンがあり、あなた以外の通知先を表示し、その機器のルールを入力した状態でこのセクションを開きます。あとはプリセットを選ぶだけです。
連絡先には、設定済みのゲートウェイがあなたの宛先の代わりに相手の宛先で使われます。上長へのメールにはあなたの SMTP アカウントを、SMS と電話には Twilio の番号を使います。Twilio の番号は音声通話に対応している必要があります。これらのゲートウェイは、あなた自身のアラートではオフのままでも構いません。各メッセージには相手の役割、ロケーション、プリセットの指示が書かれるので、受け取った人は理由がわかります。宛先の未入力やゲートウェイの未設定は、配信エラーに「SMS → Alex(現地技術者)」のように表示されます。ネットワークの失敗は 2 分おきに 2 回再試行してから報告されます。
IFTTT。メッセージングチャネルで IFTTT(Webhooks)をオンにすると、アラートごとに IFTTT のアプレットを起動します。value1 がタイトル、value2 がメッセージ、value3 はダウンのアラートなら critical、それ以外は info です。ダウンのアラートに別のイベント名を付ければ、照明の点滅など、復旧より目立つ動作を起こせます。連絡先に本人の Webhooks キーを登録すれば、プリセットのステップでその人のアカウントのアプレットを起動できます。IFTTT の Webhooks サービスには IFTTT Pro プランが必要です。
トークンと Webhook は macOS キーチェーンに保存され、Mac の外には出ません。スケジュール配信の AI 評価レポートも送れます。AI 管理者がライブの監視健全性から(読み取り専用の診断を実行して)サマリーを作成し、日次・週次でメール送信、あるいは有効なすべてのチャネルへプッシュします。重大項目が 2 件以上同時に DOWN のときは、任意でより詳しいレポートも送れます。
11.4配信エラーとその直し方
アラートが黙って送信失敗するモニタは無価値です。FrontierStack はすべての送信を検証します。ゲートウェイが失敗すると、Alerts ペインの配信エラーセクションに、平易な日本語の修正ガイドと、その下に生のエラー、そして設定の誤ったチャネルの設定へ直接スクロールする Fix ボタンとともに記録されます。サイドバーの Alerts 行と Dock アイコンに赤いバッジが現れて確実に気づけるようになり、クリアするまで残ります。AI 管理者は get_alert_errors で同じ一覧を読むので、「なぜアラートが届かない?」と尋ねるだけで済みます。
よくある原因は地味で、すぐ直せます。
| 症状 | 考えられる原因と対処 |
|---|---|
| メールが送信時に拒否される | SMTP の From アドレスが空、または宛先が未設定——Email チャネルで両方を入力。 |
| メール接続が拒否/タイムアウト | ポートやトランスポートの誤り。プロバイダに合わせる(587 STARTTLS または 465 SSL)とホスト。 |
| Telegram/Slack/Discord の 401 や 404 | 不正または失効したトークン/Webhook URL——新しいものを貼り付けてテスト送信。 |
| レポートが届かない | レポート配信が「メールのみ」だが Email チャネル未設定——「すべての有効チャネル」に切り替えるか Email を設定。 |
11.5オンホストの Service Watchdog とデータベースの健全性
ここまでのモニタはMac上で動作します。重要なサーバには、そのマシン自身に常駐するWatchdogも必要です。そうすればMacがスリープ・オフラインでも動き続けます。FrontierStackのService Watchdogはホストモニタとともに配備され(第8章)、短い間隔でサービスを確認し、失敗すれば再起動し、最後の手段として許可した場合だけマシンを再起動します。各ウォッチのチェック種別は、プロセス、HTTP/TCPプローブ、または専用のMySQL/PostgreSQLチェックです。各サービスは正常に見えるのにサーバ全体がハングした場合(SSH が応答しない、ネットワークを失った)は、同じパネルのロックアップ再起動がサーバ内部から再起動します。第8章を参照してください。
11.18.3ピン留めサーバの復旧エスカレーション
ピン留めサーバのService Watchdogパネルでは、通常のオンホスト復旧の後に2段階を追加できます。FrontierStackから再起動を許可すると、新しい「Recovery exhausted」イベントの後、指定時間を待ってMacが確認付きの再起動を1回送ります。Power Controlで制御可能なコンセントを関連付けると、サーバが指定時間まったく応答しない場合だけ、その次に電源サイクルを実行できます。再起動要求後は90秒待ってから判定を始め、電源断の判定時間は最低5分です。
電源サイクルはSSHログイン失敗だけでは実行されません。Mac側のネットワークが正常で、SSH、モニタ報告、ping、ARP、一般的なサービスポートのすべてが応答しない必要があります。1つでも生存信号が戻れば、そのインシデントは終了します。電源サイクルは1回だけです。有効化前の古いイベントは処理済みになり、watchdog_reboot_suppressedは再実行されないため、ヘルパのブートループ防止をアプリが迂回することはありません。
11.18.4Macを閉じている間も監視する
ハングしたサーバ自身のヘルパは、そのサーバのスマートプラグを操作できない可能性があります。Recovery observerで別の登録済みサーバを選ぶと、最終段階をそのマシンのヘルパへ委任できます。ObserverはFrontierStackを閉じても、対象のプライベートIPに対してpingと複数のTCPポートを確認し続けます。電源を切る前にプライベート電源コントローラの状態応答を確認し、ブートループ防止記録を保存してから、指定時間だけ電源を切って戻します。対象の復帰を確認するまでは2回目を実行せず、30分のクールダウンはObserverの再起動後も残ります。
fsck、xfs_repair、chkdskなどのファイルシステム修復では、システムディスク上の全サービスが一時的に停止して見えることがあります。ローカルのService GuardianとオンホストのService Watchdogは修復プロセスを検出し、保存済みポリシーを変えずに、サービス再起動やリモートの再起動エスカレーションを含む自動復旧を一時停止します。障害カウンタを消去し、修復終了後も60秒待ってから新しい状態で再開します。停止状態はデスクトップと端末に表示されます。必要な場合は、ユーザが確認した手動操作を引き続き実行できます。データベースのハートビートは、プロセス/ポート確認が見逃す故障を捉えます。MySQLハートビートはパスワードなしでSELECT 1を要求します。成功または「access denied」ならMySQLが応答中、接続拒否、タイムアウト、接続上限到達なら異常です。MySQLパスワードは保存せず、テーブルも読み取りません。空のプローブ名はrootではないfs_watchdogになり、このアカウントは実在しなくても構いません。PostgreSQLハートビートはユーザ名やパスワードなしでpg_isreadyを使います。エラーログの早期警告をオンにすると、データベース自身のエラーログも追尾して破損の兆候を重大イベントとして通知します。これらはサーバ上で動くため、MacがオフでもntfyやWebhookで自律的に通知できます。
Aborted_connectsに計上します(毎分約2回、1日で数千回)。異常ではありません。サーバは正常で、チェックも正しく動作しています。ただしカウンタがハートビート自身の通信で埋まるため、総当たり攻撃や設定を誤ったアプリなど、本当の兆候を隠す恐れがあります。MySQLハートビートのパネルには任意の対処があります。空パスワードで権限を一切持たない(USAGEのみ。データは読めず、サーバ外からは接続できません)アカウントfs_watchdog@localhostと[email protected]を作成すると、プローブは正常にログインし、通常の接続として計上されます。FrontierStackは要求された時だけ、Database Healthに保存したMySQL管理者パスワードで作成し、実行するCREATE USER文を事前に表示します。SQLをコピーして自分で実行することも、後から同じパネルで削除することもできます。何もしなくても構いません(カウントは表示上の問題です)。mysqlcheck、検証済みバックアップ、任意の自動修復には、ウォッチのテーブルチェックと自動修復を開く、またはDatabase Healthを開き、対象データベースのスキャンと修復の設定を展開します。rootではなくfrontierstack_health@localhostのような専用アカウントを使ってください。ログインとSELECT 1にはUSAGE、全接続の表示が必要な場合だけPROCESS、明示的に検査するスキーマだけにSELECTを付与します。接続元はlocalhostまたはモニタの正確なプライベートアドレスに制限します。クライアントはサーバ上で動くため、MySQLを広いネットワークへ公開する必要はありません。チェック専用アカウントを作るには、your_databaseと例のパスワードを置き換えます。
CREATE USER 'frontierstack_health'@'localhost' IDENTIFIED BY 'use-a-unique-random-password';
GRANT SELECT ON `your_database`.* TO 'frontierstack_health'@'localhost';
このログインをDatabase Healthに保存します。手動チェックと検証済みバックアップが両方成功するまで自動修復はオフにしてください。完全なバックアップや修復に追加権限が必要な場合は、MySQLが示したスキーマ単位の権限だけを追加し、*.*は使いません。別のマシンから接続するモニタでは、localhostをその1つの正確なプライベートアドレスに置き換えます。
ピン留めサーバのサービス行では、定期テーブルスキャンまたはサーバ自己修復が有効な間、緑のDBチェッカー:オンを表示します。対象はあるがどちらも動いていない場合は一時停止、MySQLスキャンを選択していてもパスワードがない場合は緑ではなくオレンジのログインが必要を表示します。Database Healthは低頻度でテーブルを検査し、ハートビートは停止を素早く検出してサーバ上でMySQLを再起動するため、両方は補完関係です。
データベースが停止ではなく遅い・詰まっているときは、Database Healthペインの各対象にある「Why slow/stuck?」ボタンがその場で答えます。サーバのライブ活動(MySQLはSHOW FULL PROCESSLIST、PostgreSQLはpg_stat_activity)を読み、実行中クエリを形状ごとにまとめます。リモート対象はSSH経由で調べるため、データベースのポートを公開する必要はありません。
11.18.5データベースのレプリカ(スレーブ)
ピン留めしたサーバのデータベースが別のサーバからデータをコピーしている場合、Database Health がそのコピーを監視します。各データベースにはレプリケーション欄があり、ピン留めサーバの MySQL/PostgreSQL の行にはレプリケーションメニューがあります。自動検出(既定。1 時間ごとに確認)、別のサーバのレプリカ(スレーブ)、レプリカではないから選びます。レプリカは 2 分ごとに確認します:MySQL は SHOW REPLICA STATUS(ログインに REPLICATION CLIENT 権限が必要)、PostgreSQL は WAL レシーバと論理サブスクリプション、Redis は INFO replication。レプリカが停止した、コピー元に接続できない、または上限(既定 300 秒)より遅れた場合は、メッセージングチャネルにレプリケーションアラートが送られます。サイドバーではレプリカのデータベースアイコンが点線のコピー付きの積み重ねアイコンになり、同期が遅れるとオレンジ、停止すると赤になります。サーバ行のアイコンにポインタを合わせると、その意味が表示されます。
MySQL のログインを自分で作る必要はありません。保存されたログインがなく、FrontierStack がサーバで root になれる場合は、読み取り専用アカウント frontierstack_health を作成し、ランダムなパスワードをキーチェーンに保存します。最新の結果はピン留めサーバのページのデータベースの下に表示されます。レプリカが Temporary file write failure で停止した場合は、大きな ALTER が小さな /tmp で容量不足になっています。一時領域を修正…で、InnoDB の一時ファイルをデータディスクに移してレプリカを再開するスクリプトが開きます。
11.18.6この Mac がインターネットにまったく接続できないとき
スリープ解除直後で Wi-Fi がまだ再接続していない Mac や、接続を失った Mac では、すべての機器・サーバ・サイトが一斉に失敗し、それぞれがアラートを出してしまいます。FrontierStack は毎回のスイープの前に、よく知られたホストが TCP 443 で応答するかを確かめ(数秒後にもう一度再試行)、インターネットにつながっていることを確認します。何も応答しなければ「インターネットに接続されていません」の通知を 1 件だけ表示し、すべての機器とサービスのチェックを一時停止します。30 秒ごとに再確認し、接続が戻ると自動的に再開して、新しい通知を出す代わりにその通知を削除します。機器の状態はそのまま保持されるため、ダウンと復旧が繰り返し表示されることはありません。一時停止と再開はアラートログに記録されます。
11.18.7保守のためにチェックを一時停止する
意図的にサービスを停止している最中に、再起動してくれるウォッチドッグはまさに邪魔です。保護をオフにして — そして自分で戻し忘れないことに頼る — のではなく、Guardian ヘッダーの 「Pause Checks…」、または各サービス行の一時停止ボタンを使います。15 分から 1 日までの範囲を選べます。
一時停止中、Guardian は対象のヘルスチェックも再起動も行わないため、作業と衝突しません。何も無効化されず、設定も失われません。Keep Alive、Auto Recover、しきい値、間隔はそのまま保持され、時間が過ぎれば自動的に再開します。「Resume Now」を押せば即座に再開できます。一時停止がその期間を超えて残ることはなく、アプリを終了して再度開いても同じです。
11.6ケーススタディ:High Sierra Server.app の serviceproxy ハング
High Sierra 上の macOS Server(Server.app)を今も動かしている古い Mac には、よく知られた故障があります。Web フロントプロキシ——実際のバックエンドの手前でポート 80/443 を握る launchd ジョブ com.apple.serviceproxy——が、ときどきハングするのです。TCP 接続は受け付け続けるのに一切応答しなくなるため、背後のすべてのウェブサイトが停止する一方、プロセスチェックはどれも正常に見えます。Apple からの修正はありません。このスタックはサポート終了です。Service Watchdog はまさにこのケースを念頭に作られています。
ウォッチの設定方法。サーバのペインでサービス名 serviceproxy のウォッチドッグ項目を追加し、——ここが重要ですが——プロセスチェックではなく、ターゲット http://127.0.0.1/ の HTTP チェックを設定します。本当の故障(接続は受けるが応答しない)を見抜けるのは HTTP プローブだけです。失敗すると、ウォッチドッグは launchctl kickstart で復旧します——管理者が手で打つ修復コマンドそのものです。HTTP ステータスが 500 未満なら生存と見なされ(プロキシが 403/404 を返しても応答している証拠です)、各プローブは 6 秒でタイムアウトするため、ハングしたプロキシはタイムアウトでチェックに失敗します。プロキシ背後のバックエンドも同様に server-httpd として監視できます。
推奨タイミング。チェックは 30 秒ごと、3 回連続で失敗したら再起動、再起動は最大 3 回、再起動後の猶予はデフォルト(約 20 秒。古いハードウェアの Apache にも十分)のまま。これで行動前に約 90 秒かけてハングを確認します——1 回の遅い応答や一時的な負荷スパイクでは kickstart せず、本物のハングなら約 2 分でサイトが自動復旧する長さです。サイトが重要なら 15〜20 秒間隔・2 回失敗(確認まで約 40 秒)に詰めても構いません。それ以上詰めても誤再起動が増えるだけです——古いマシンは負荷時に応答へ数秒かかることが普通にあるからです。「回復に失敗したらサーバを再起動」は、完全に無人のマシンでない限りオフのままに。実際には kickstart でハングは解消しますし、この種のマシンでの最終手段の再起動はダウンタイムを増やすだけです(ブートループ防止ガードにより、ウォッチドッグ再起動の間隔は最低 30 分が強制されます)。
なぜプロセスチェックではだめか。serviceproxy という名前のプロセスは存在しません——このジョブは特殊な設定ファイルを持つ httpd として動きます——そのため v1.6.1 より古いモニタは、正常なプロキシを恒久的に「停止中」と誤読し、何度も再起動を繰り返し、再起動へのエスカレーションを許可していれば正常なマシンを定期的に再起動していました。v1.6.1 からモニタは launchd にジョブの実状態を問い合わせるため、プロセスチェックも真実を伝えます。ただし本当のハングを捉えるのは引き続き HTTP チェックです。原因不明の再起動を繰り返す古いサーバがあれば、まずモニタのバージョンを確認してください。なお「なぜ再起動した?」はウォッチドッグ起因の再起動を明示的に帰属させます(v1.6 以降のモニタでは理由付き。それより古いモニタもスタンプを残し、それも報告されます)。
serviceproxy の引退です。セットアップを移行 ▸ Apple Server(第 8 章)が Server.app マシンを棚卸しし、ウェブサイトをサポート中のシステム上の素の Apache へ移して、ハングしがちなプロキシを配信経路から外します。それまでは HTTP ウォッチが古いマシンを健全に保ちます。配信についてもう 1 つの保証があります。アラートは決して沈黙しません。メッセージングゲートウェイに加えて、状態変化のアラートはすべて、ゲートウェイとは独立にネイティブの macOS 通知とプッシュも発報します——メールをオフにしすべてのチャネルを無効にしても、サービスの停止は Mac 上であなたに届きます。データベースのリカバリ——mysqlcheck/pg_amcheck の実行や AI ガイド付き再構築——は第 5 章で扱います。
11.7インシデント・オンコール・ステータスページ
すでに正式なインシデント対応を運用しているチーム向けに、FrontierStack はそれを置き換えるのではなく、お使いのツールへ接続します。各ツールはカタログのエントリから開けるライブペインを持ち、読み取り専用の API キーを貼り付けると現在の状態を表示します。
- インシデント管理・オンコール — PagerDuty(オープン/高緊急度のインシデント、オンコール担当、サービス)、Opsgenie(未対応/未確認のアラート、US/EU リージョン切替)、incident.io と Rootly(進行中のインシデント)。
- ステータスページ — Statuspage(未解決インシデントと DOWN のコンポーネント)と Better Stack(モニタの up/down/paused)。
各ペインでキーを設定し(例:PagerDuty ▸ Integrations ▸ API Access Keys)、接続を確認します。これらは同じ監視像に流れ込むので、PagerDuty のオープンインシデントやステータスページの DOWN コンポーネントが、自前の健全性と並んで表示されます。
11.8SaaS ライブ監視とプロジェクト管理ペイン
FrontierStack はインフラだけにとどまりません。設定駆動の SaaS ライブ監視が接続済みクラウドアカウントを見守り、数分ごとに更新します。各サービスには資格情報フォーム、ライブのメトリックタイル、「Alert me」トグル、しきい値があります。アラート対応サービスはメトリックが線を超えると DOWN アラートを発報し、残りは到達性を監視します。ライブ監視には Stripe(要対応の係争、残高)、Shopify と WooCommerce(未処理注文)、Adobe Commerce と Magento(オンプレミス・Cloud Infrastructure・Cloud Service のいずれも同じ V1 REST の注文 API で対応待ちの注文を監視。Cloud Service は Adobe IMS で認証)、Freshdesk と Zammad(オープン/保留/期限超過チケット)、SendGrid・Mailgun・Postmark(バウンスとブロック)、GitHub Copilot(非アクティブシート)、アイデンティティプロバイダの Okta と Microsoft Entra ID が含まれます。サービスをピン留めすれば、アラート設定に関わらず常時 Local Health に表示できます。
開発・コンプライアンス系のサービスも同じように監視できます。Sentry(過去 24 時間の新しい未解決の問題)、Grafana と Grafana Cloud(発火中のアラートルール)、Honeycomb(発動中のトリガー)、New Relic(アクティブな問題)、Make(無効なシナリオと未完了の実行)、MongoDB Atlas(未解決のアラート)、Vanta と Drata(失敗しているコンプライアンステスト)、CircleCI と Buildkite(過去 24 時間に失敗したビルド)、Netlify と Render(最新のデプロイが失敗したサイトやサービス)です。いずれも読み取り用のキーだけで済み、必要な権限はペインに表示されます。
Ahrefs(API v3、Lite プラン以上)は割り当てを消費せずに監視します。監視は無料の使用量エンドポイントだけを読み、今月の API ユニットが 90% を超えるとアラートし、ドメインを指定すると Domain Rating を 1 日 1 回取得します。
GMO グループのサービスにも専用のモニタがあります。カラーミーショップは developer.shop-pro.jp で登録したアプリの OAuth トークンで本日・今週・今月の売上を読み取り、販売チャネルダッシュボードに反映し、発送待ちの注文がたまるとアラートを出します。GMO トラスト・ログインは SCIM エンドポイントで確認します。Entra ID がすでに使っているエントリでクレデンシャルを生成するとその同期が切れるため、モニタ専用の SCIM IDP エントリを作ってください。GMOあおぞらネット銀行は口座残高を表示し、円残高の下限を下回るとアラートを出せます。OAuth のクライアント ID・シークレット・リフレッシュトークンがあれば 30 日で切れるアクセストークンを自動更新し、無料の sunabar サンドボックスで先に試せます。GlobalSign はキー不要で、Atlas の ACME ディレクトリ、GlobalSign のステータスページ、ドメインの実際の証明書を監視します。
社内ネットワークの Microsoft と Veeam。Active Directory のモニタは、エージェントなしでオンプレミスのドメインコントローラを監視します。DNS から DC を探し、Kerberos・LDAP・SMB のポート、同期の状態、この Mac との時刻のずれ、LDAPS 証明書を確認します。一般のドメインユーザを設定すると、各 DC の受信レプリケーションとロックアウト中のアカウント数も、LDAPS または StartTLS だけで読み取ります。Microsoft Entra ID は Entra Connect の同期が止まったとき、アプリ登録のシークレットの期限が近いとき、サブスクリプションが失効したとき、Microsoft 365 のサービス中断時にアラートします。同じアプリ登録で、アカウントペインからユーザをインポートできます。Veeam Backup & Replication・Veeam Backup for Microsoft 365・Veeam Service Provider Console はジョブの結果を表示し、失敗したジョブ(Backup & Replication では空きが 10% 未満のリポジトリも)をアラートします。Veeam の自己署名証明書は、フィンガープリントを承認するまで拒否され、何も送信しません。
専用の GitHub ペインは、アカウントとリポジトリの集計、Actions 関連の作業、PR、レビュー依頼、割り当て Issue、未読通知、残り API リクエスト数、最近更新された 5 リポジトリのリリースアセットダウンロード数を表示します。インストール済みアプリの権限セクションは、指定した GitHub App(トークンでは一覧できないため名前で追加)を監視し、前回確認したより多くのアクセス — 新しい権限、読み取り専用から読み書きへの引き上げ、所有者の変更 — を求めたときにセキュリティアラートを発生させます。読み取り専用で、承認や拒否は github.com で行います。Anthropic のアカウント/モデル監視と GitHub Copilot のシート利用状況は API 認証情報だけで接続し、クラウド専用サービスに架空のホストやポートを求めません。
AppSignal には専用の読み取り専用ライブ接続があります。アプリケーション ID と個人 API トークンを入力すると、トークンはキーチェーンに保存され、FrontierStack は AppSignal の GraphQL API からオープン中のエラーインシデント、稼働中のアップタイムアラート、最新デプロイ、取得可能な直近 1 時間のエラー/レイテンシ指標を表示します。アラートしきい値はオープンインシデントとアップタイムアラートの合計です。AppSignal は GraphQL URL 内の API トークンを要求するため、FrontierStack は URL を非公開で組み立て、認証済み URL をログへ書きません。より深い調査には MCP Servers の AppSignal プリセットを追加します。バージョン固定の OAuth ブリッジ経由で AppSignal のホスト型 MCP を開き、監視トークンを AI クライアントへコピーしません。書き込み可能なツールを確認するまでは AppSignal のアクセスを読み取り専用にしてください。
Paessler PRTG には、セルフホストの PRTG コアと PRTG Hosted Monitor の両方に対応する専用ライブ接続があります。PRTG サービスを開き、HTTPS のベース URL を入力して、Setup ▸ Account Settings ▸ API Keys で Read access のスクリプトキーを作成します。FrontierStack はキーをキーチェーンに保存し、上限付きのセンサー状態テーブルだけを読み、Up・Down・Warning・Paused・その他の合計を表示します。Alert me when this needs attention をオンにすると、Down センサーとプローブ未接続センサーが Alerts に流れます。この連携はアラームを確認済みにしたり、デバイス・センサー・プローブを変更したりしません。PRTG Network Monitor/Enterprise Monitor のコアは Windows 上で動かすため、連携済み Windows サーバと公式インストーラを使うか、Hosted Monitor を利用します。Windows リモートプローブとマルチプラットフォームプローブで、フリートの他の場所まで収集範囲を広げられます。
NinjaOne、Atera、Site24x7 にも、読み取り専用のライブ接続があります。NinjaOne は Monitoring スコープの Client Credentials アプリを使い、デバイス、オフライン端末、アクティブアラート、実行中ジョブを集計します。Atera は Agents と Alerts だけに限定した API キーを使います。Site24x7 はアカウントのリージョンにある Zoho データセンターで読み取りスコープのリフレッシュトークンを交換し、現在のモニタ状態を読み取ります。秘密情報はキーチェーンに保存され、応答サイズには上限があります。これらの接続が端末へパッチを適用したり、ジョブを実行したり、アラートを閉じたり、保守を開始したり、ベンダー設定を変更することはありません。
同じパターンがプロジェクト管理ツールにトークンログインのライブペインを与えます。Jira(オープン/未割当/ブロック/スプリント内の件数)、Linear、monday.com、OpenProject、Plane、Taiga。これらはアラート源というよりダッシュボードですが、チームの作業量を、それを動かすサーバと同じウィンドウに並べます。メール配信には専用の統合 Email Delivery ペインがあり、トランザクションプロバイダのメトリックと SPF/DKIM/DMARC チェックを統合します(第 7 章)。
11.9キュー運用
キュー運用は RabbitMQ、Kafka、NATS/JetStream、Redpanda、AWS SQS、Azure Service Bus、Google Pub/Sub、Celery/Flower、Redis Streams、Apache Pulsar、Apache RocketMQ の読み取り専用ダッシュボードです。ブローカ、名前空間、クラウドアカウントごとにモニタを追加します。プロバイダが公開する範囲で、キューまたはコンシューマグループ名、待機中・処理中・コンシューマ数、遅延、デッドレター数、最古メッセージの経過時間を表示します。メッセージ本文を読んだり保存したりすることはありません。
クライアントポートと管理ポートは分けて扱います。たとえば RabbitMQ クライアントは通常 AMQP の 5672、管理 API は 15672、NATS クライアントは 4222、監視は 8222、Pulsar クライアントは 6650、HTTP 管理 API は 8080 です。監視エンドポイントは非公開にしてください。オンホストの FrontierStack モニタを経由しない場合は TLS と監視専用アカウントを使います。
連携サーバでは導入済みモニタを選ぶと、署名付き接続を通じて、資格情報を受け取らないヘルパから上限付きサマリーを取得します。クラウドプロバイダは通常のローカル CLI プロファイル、またはキーチェーンに保存した権限を絞った資格情報を使います。重大しきい値は Alerts スイープに入り、同じサニタイズ済みサマリーを iPhone/iPad アプリと AI 管理者の読み取り専用 get_server_health ツールから確認できます。このダッシュボードには消去・削除・発行・確認応答・再生の操作はありません。
11.10UPS 監視と SNMP デバイス
Power Control の UPS セクションでバッテリーバックアップを監視します。FrontierStack は USB 接続 UPS を macOS の電源ソースから直接読み取り、NUT を upsc で、APC 製品を apcupsd の apcaccess で照会します。APC、Eaton、CyberPower、Vertiv(Liebert を含む)のほか、macOS または NUT が対応する機種を扱えます。NUT 経由ではシリアル接続やネットワーク UPS も監視できます。
NUT は無料のオープンソースソフトウェアで、サブスクリプションは不要です。状態取得に API キーは必要ないため、NUT サービスペインには API 認証欄やプラン/費用カードを表示しません。審査済み UPS 操作を有効にする場合だけ専用 NUT コマンドログインが必要で、有償サポートやホスト型ダッシュボードは別製品です。
同じペインで切替可能な Raritan/Legrand Xerus PDU も扱えます。プライベート HTTPS アドレス、コンセントに印字された番号、コンセント操作だけに制限した専用アカウントを入力し、パスワードは Keychain に保存します。正確なコンセント状態と対応機種の実測有効電力を読み、オン/オフと Xerus の原子的な cyclePowerState を使うサイクルに対応します。公開アドレス、URL 埋め込み認証情報、リダイレクト、任意 JSON-RPC メソッドは拒否します。オフとサイクルは毎回確認し、AI Harness にも同じ確認ゲートが適用されます。
Aviosys IP Power(9258 シリーズ、9820、9850、9858、9255)には Windows 用ユーティリティしかありませんが、どのモデルもそれらが送るのと同じローカル Web コマンドに応答するため、FrontierStack は何もインストールせずに Mac から操作します。Aviosys IP Power として、アドレス、本体に印字されたコンセント番号、ログインを入力して追加します。パスワードはキーチェーンに保存され、URL ではなくヘッダで送られます。状態、オン、オフ、本体自身のタイマー付き電源サイクルが使え、このコンセントがこの Mac へのネットワーク経路に給電していても電源は戻ります。初期の 9258 ファームウェアはコンセントを P60 から数えますが、FrontierStack は本体の応答から判別して正しいコンセントを切り替えます。工場出荷時のログイン(admin / 12345678)は変更してください。Web コマンドはそれを知っている人なら誰でも受け付けます。
各行には、その機種が提供する充電率、推定バッテリー残時間、負荷、実電力(W)、入力・出力電圧、バッテリー電圧、周波数、温度を表示します。UPS が実電力を報告する場合はその値を表示します。定格実電力と負荷率だけが得られる場合は、推定 と明記した W 値を表示します。皮相電力(VA)を W として扱うことはありません。
Alerts をオンにし、充電率・残時間・負荷のしきい値を設定します。商用電源喪失、残時間低下、低充電、高負荷、バッテリー要交換、強制シャットダウン、通信喪失は別々に追跡されます。そのため、最初のバッテリー駆動アラートが継続中でも、残時間の低下を追加で通知できます。切断した UPS は Comms lost として表示に残ります。UPS をピン留めすると、総合状態を Local Health と Places マップでも確認できます。必要に応じて NUT と apcupsd をボタンからインストールできます。
バッテリーシャットダウン規則で段階的な処理を実行できます。UPS が指定時間バッテリー運転を続けるか残量しきい値を下回るまで待ち、管理対象サービスと VM サービスを指定順に停止して各停止を確認し、最後に保護対象ホストをシャットダウンします。確認に失敗すればホストを動かしたまま中断し、商用電源が戻れば未実行段階を取り消します。PowerChute Network Shutdown が動くべきホストでは一般的なサービス名を自動検出するか手動で指定でき、停止時に別アラートを出して規則を停止するかフォールバックを続行します。
スキャン中は NUT と apcupsd の応答を待ちます。Stop を押すと待機を中止し、取得済みの値を保持したまま、Refresh を押すまで自動更新を一時停止します。
サーバまたは通常のピン留めデバイスの電源セクションには、2 つの設定ダイアログがあります。電源コントロールを追加…は切替可能な経路用で、SwitchBot Plug、設定済みの Home Assistant、Shelly、Tasmota、プライベート HTTP、Raritan PDU、Anker SOLIX コンセント、コマンド方式 PDU、電源対応 Remote KVM を選びます。ダイアログから SwitchBot、Home Assistant、Anker SOLIX、TP-Link Kasa/Tapo のペインと、Power Control 内で設定するプロバイダを直接開けます。バックアップ電源を追加…は、ピン留めした監視対象 UPS、Mini DC UPS、または管理不能/ダム UPS用です。PDU はコントローラとして扱い、Power Control で物理コンセントごとに印字番号を割り当て、その名前付き・番号付きコンセントをサーバまたはデバイスに選択します。SwitchBot のリモコンやセンサーは候補に表示しません。保護対象の 1 台にスマートプラグとダム UPS の両方を設定できます。スマートプラグとして登録したデバイス自体は電源コントローラなので、そのペインでは別のコントローラを選ばせず、電源セクション全体を表示しません。監視対象 UPS は実際の残量・残時間・警告を提供します。管理不能の選択肢はメーカーとモデルを記録する棚卸し専用で、FrontierStack と AI Harness は架空の値や操作を提供しません。TREEDIX は Raspberry Pi 用 5 V UPS コントローラとして Mini DC UPS に記録できます。
スマートプラグのブランド。TP-Link の Tapo と Kasa のプラグ・電源タップは、電源コントロールで TP-Link Tapo / Kasa として追加し、ローカルネットワークで操作します。プラグのアドレスと設定に使った TP-Link ID を入力し、コンセントを検索を押してください。電源タップのコンセントはそれぞれ別の項目になります。TESSAN、BN-LINK、Edison Smart、OHMAX、MEAPUXIN のプラグと電源タップは Tuya のホワイトラベル製品です。Smart Life ペインを接続してから Smart Life / Tuya コンセントを追加し、デバイスとコンセントを選びます(各ブランドのアプリで設定したプラグは、先に Smart Life に追加し直してください)。Smart Life の電源再投入ではコンセント自体のカウントダウンも開始するため、ルータに給電していても電源が戻ります。Onvis と Matter 対応の Amazon ベーシックのプラグは、Home Assistant の Matter 統合へ共有し、その Home Assistant のスイッチを追加します。Shelly のプラグは全世代(Gen 1 のリレー API と Gen 2/3/4 の RPC)を直接操作できます。
Meross のプラグと電源タップ。種類が Meross のコンセントを追加し、プラグのプライベート IP アドレスを入力します。Meross はローカルのリクエストをすべてアカウントのデバイスキーで署名するため、Meross アカウントのメールアドレスとパスワードを入力して Meross アカウントからキーを取得を一度選びます。FrontierStack は Meross のクラウドにサインインし、キーをキーチェーンに保存してからサインアウトします。パスワード(と確認コード)は保存しません。手元のキーを貼り付けることもできます。続いてコンセントを検索を選びます。MSS110・MSS210・MSS305・MSS310・MSS315 プラグと MSS420・MSS425・MSS620 電源タップをローカルネットワークで操作します。オン、オフ、電源再投入に対応し、計測対応の MSS305・MSS310・MSS315 は消費電力を報告し、電源タップはコンセント 1 つかタップ全体を選べます(電力はタップ全体の値)。デバイス検出は Meross のプラグを識別し、そのデバイスペインに Power Control に追加があります。
Shelly のリレー、プラグ、電源タップ、電力計。種類が Shelly のコンセントを追加し、デバイスのプライベート IP アドレスを入力します。Gen 1(Shelly 1/1PM/2.5、Plug S、EM、3EM)から Gen 2、3、4(Plus、Pro、Mini、Plug S Gen3、Plug US、Power Strip、Pro 3EM)まで、すべての世代に対応します。デバイスにパスワードがあれば入力します(Gen 1 はログイン名も入力。Gen 2 以降は常に admin)。パスワードはキーチェーンに保管され、Gen 2 以降は HTTP Digest で認証するため、パスワード自体はネットワークに流れません。チャンネルを検出でモデル、世代、ファームウェア、各チャンネルの名前、Matter の有無を読み取ります(チャンネルは 0 から数えます)。スイッチのない電力計(Pro 3EM、PM Mini)は消費電力を監視できますが、切り替えはできません。電源の入れ直しでは「オフ」と同時にデバイス自身のフリップバックタイマを設定するため、コンセントがこの Mac の経路となるルータに給電していても電源は戻ります。Gen 4 の Shelly は Matter 経由で同時に Apple ホームにも入れられ、FrontierStack はローカルのインターフェイスを使い続けるので両方の状態が一致します。パスワードのない Shelly には警告を表示します。デバイス検出は MAC ブロック、_shelly._tcp、名前から Shelly を識別し、Power Control に追加を表示します。
バッテリの通知。SwitchBot のロック・キーパッド・センサ、キーパッドとドアセンサを含む Nuki のロック、Seam のロック、Zigbee デバイスはバッテリ残量を報告します。それぞれ残量を表示し、少なくなったとき(既定 20 %)とほぼ切れたとき(5 %)の 2 回通知します。両方のしきい値はアラート ▸ デバイスのバッテリで設定でき、読み取ったすべての残量もそこに一覧されます。ピン留めした SwitchBot の Hub Mini、Hub、Hub Plus は、そのハブ経由で接続するデバイスを通じて確認し、オフラインになると通知します。
コンセントの到達確認。電源コントロールでコンセントを編集し、このコンセントに到達できないときにアラートをオンにします。FrontierStack はコンセントを 2 分ごとに読み取り専用で確認し、2 回続けて応答がなければアラートを出します。判定は、コンセントが最後に応答したのと同じ物理ネットワーク(ルータのハードウェアアドレスで識別)にこの Mac がいるときだけ行うため、外出先や同じアドレス帯を使う別のネットワークで、プラグが停止したと誤報しません。この Mac から届かないプラグには、Shelly Cloud ペイン(IoT)を使います。Shelly アプリの認証クラウドキーとサーバアドレスを貼り付け、デバイス ID を追加し、ベルをオンにするとオフラインアラートを受け取れます。両方で監視している Shelly は、そのネットワークにいる間はローカルの確認を優先します。
11.18.8デバイスを番号付き PDU コンセントへリンクする
- Power Control で、使用する PDU の物理ソケットごとにコンセント項目を 1 つ追加します。分かりやすい名前を付け、ソケット横に印字された番号を入力します(例:ラックサーバ · コンセント 4)。
- ピン留めしたサーバまたはデバイスを開き、電源 → 電源コントロールを追加…を選びます。設定済みコンセントが名前と物理番号で表示されるので、そのデバイスへ給電している正確なコンセントを選びます。
- 設定済みコンセントがない場合は、Power Control でスマートプラグまたは PDU を追加…を選びます。設定ペインが開き、コントローラのプライベート IP アドレスまたは URL とコンセントを追加できます。空の PDU リンクは作成しません。
- アドレスを持つ PDU はピン留め済みでも FrontierStack のネイティブなコンセント連携がない場合、コマンド方式 PDU/電源タップから選びます。サーバの電源セクションで、そのデバイスのコンセント番号と審査済み On/Off コマンドを入力します。コマンドは選択メニューではなく、この場所で設定します。
- UPS は別にバックアップ電源を追加…から選びます。ピン留めした UPS はデバイスのバックアップ電源を表すためここに表示されます。切替可能な PDU コンセントとは別です。
個別のコンセントを識別できる場合、サーバを PDU 全体へリンクしないでください。オフまたはサイクルの前に物理ソケットを確認できるよう、FrontierStack は行ラベルと破壊的操作の確認画面にコンセント番号を表示します。
11.11リモート KVM プラットフォームと電源
Remote KVM ペインでは、PiKVM、JetKVM、TinyPilot、NanoKVM、Raritan Dominion、ATEN、Vertiv Avocent、Lantronix Spider/SpiderDuo、Adder、GL.iNet、AWERAY、汎用 KVM-over-IP を複数登録できます。正確なモデル/ファームウェアを記録してピン留めし、プライベート Web コンソールを開きます。AWERAY は選択した専用アプリを起動します。
電源操作は審査済みの経路を設定した場合だけ表示します。PiKVM は公開ローカル ATX API を使い、破壊的操作の前に ATX が有効でビジーでなく、現在状態が期待どおりか確認します。JetKVM は共有 MQTT 接続と完全一致のベーストピックを使い、ATX は保持済み状態を読んでから短押し/長押しし、DC 拡張は明示的な ON/OFF を使います。コマンドは QoS 1 で非保持です。TinyPilot/NanoKVM の電源ハードウェアや企業向けベンダーの PDU 連携はモデル/ファームウェアで異なるため、明示的なプライベートエンドポイントがない限りコンソール/棚卸し専用です。Dominion に関連付けた Raritan PDU は Power Control の審査済み Xerus 項目を使います。KVM のオフとサイクルはペインでも AI Harness でも毎回確認します。
SNMP を話すその他のもの——マネージドスイッチ、プリンタ、ネットワーク UPS、NAS——には、デバイス詳細ペインの SNMP / OIDs セクションが直接問い合わせます。旧来の SNMPv2c または SNMPv3 を選択でき、推奨の v3 プロファイルは SHA 認証と AES 暗号化を使います。パスフレーズは Keychain に保存し、コマンド引数ではなく所有者専用の一時設定ファイルを介して net-snmp に渡します。組み込みのテンプレートを選んで Query を押すか、単一の数値 OID を取得できます。比較としきい値を付けて OID をウォッチすれば、条件成立時にアラートを発報します。
同じ SNMP プロファイルがデバイス検出、ネットワークパス、PoE 監視にも使われます。設定済み SNMPv3 ユーザに書き込み権限があれば PoE 操作もでき、SNMPv2c はスイッチごとの独立した書き込みコミュニティを使います。AI Harness は非機密のプロファイル状態、ピン留めデバイスの数値 OID、PoE 状態を読み取れます。書き込みツールに任意 OID 操作はなく、審査済み PoE オン/オフ/サイクルだけに限定され、変更許可と表示中画面での毎回の手動確認が必要です。
11.12Home Assistant エンティティ監視(ベータ)
すでに Home Assistant で建物を管理している場合、FrontierStack はその情報を監視できます。Home Assistant のサービスペインで URL と長期アクセストークンを入力すると、エンティティモニタセクションが表示されます。HA からエンティティを読み込むを押してエンティティを選び、ルールを設定します。温度・湿度・電力なら数値ルール(より大きい/より小さい)、バイナリセンサの on/off・wet/dry・home/not_home なら文字列ルール(と等しい/と異なる)です。各監視は通常のアラートとなり、いつものスイープで確認されます。
ここは、デバイスとしてピン留めできないセンサにとって適切な置き場所です。サーバルームの床下にある Zigbee 漏水センサ、ラックの Z-Wave ドアセンサ、Bluetooth 温度計——いずれも IP アドレスを持たないため ping できません。Home Assistant はこれらのプロトコルを扱えるため、読み取り値は HA 経由で届きます。Home Assistant 2026.9 の Modbus バス共有アクセスにより、ソーラーインバータ・PDU・電力計にも同じ考え方が広がります。HA がバスをポーリングし、FrontierStack が名前付きの値を読み取るため、1 本のシリアル接続を奪い合うことがありません。
意図的な動作が 2 つあります。unavailable や unknown を返すエンティティは、スキップせずアラートを発報します——沈黙した漏水センサこそ、知る必要があるものだからです。また、この監視は設計上、読み取り専用です。Home Assistant のサービス API を呼ばないため、建物の状態は読めても、照明の操作・解錠・バルブ開閉はできません。操作は電源コントロールに残され、すべて明示的な確認を伴います。
利用不可のデバイス。エンティティを 1 つずつ監視する代わりに、デバイスが利用不可になったらアラートをオンにします。FrontierStack は選択したドメインの全エンティティを 1 分ごとに読み込み、Home Assistant が unavailable(利用不可) とするものをアラートします。unknown(まだ値がない状態)は対象外で、Home Assistant 自体に接続できないときは何もオフラインとして報告しません。アラートまでの猶予(初期値 10 分)で、一時的な途切れや HA の再起動では通知しません。多数のエンティティが同時に落ちた場合(30% 超、または 50 件超)は、数十件ではなく「Home Assistant: N devices unavailable」の 1 件にまとめます。原因は通常 1 つ(HA の再起動、Zigbee/Z-Wave ブリッジの停止、ネットワーク障害)だからです。HA から削除していない使わなくなったデバイスは除外(各行のボタンでも可)に追加してください。
同じ接続がデバイス検出の Home Assistant から読み込む にも使われます。HA が把握しているネットワークデバイスを、HA で付けた名前のまま一覧表示し、個別または一括でワンクリックでピン留めできます。読み込んだデバイスはスキャン結果とまったく同じように扱われ、ヘルスチェック・Places・ライセンス上限が適用され、すでにピン留め済みのものは除外されます。どちらの機能も、Home Assistant 2026.9 のデバイスレジストリ API が安定するまでベータ扱いです。レジストリの詳細(エリア・モデル)の読み込みはその後に対応します。
11.13Eve アクセサリ
Eve(Eve Systems、旧 Elgato Eve)は Eve Energy スマートプラグや、Eve Room・Weather・Degree・Door & Window・Motion・Water Guard などのセンサを作っています。Eve にはクラウドやネットワークの API がなく、macOS は HomeKit を Apple 純正アプリに限っているため、FrontierStack は同じ Home Assistant 接続を通じて Eve アクセサリを読み取ります。Home Assistant の HomeKit Device 連携で追加するか、Eve アプリまたはホームアプリから Matter デバイスとして共有してください。どちらの方法でも Apple ホームに残ります。Eve サービスペインには Eve 製のすべてのデバイスが、オン/オフと電力、温度、湿度、空気質、ドア、動き、漏水、バッテリーとともに表示されます。
Power Control に追加で Eve Energy を Home Assistant コンセントにできます。確認付きの切り替え、電力の表示、給電先サーバとのリンクによる電源の入れ直しが可能です。各アクセサリのアラートルールメニューから、「35 °C 超」「漏水検知」「バッテリー 15 % 未満」などのルールをワンクリックでエンティティ監視に追加できます。ベルは、アクセサリがネットワークから外れたり、バッテリーが少なくなったりすると通知します。Eve デバイスの読み取りには Home Assistant のテンプレート API を使うため、管理者アカウントのトークンが必要です。
11.14Zigbee と Z-Wave デバイス
オフラインアラート。Zigbee ペインでデバイスのベルボタン(またはすべてアラート)をクリックすると、メッシュから外れたときにアラートします。Zigbee2MQTT では、Zigbee2MQTT の設定で availability をオンにする必要があります。オフになっていると、FrontierStack は応答のないデバイスと停止したデバイスを区別できないため、ペインにオレンジの注意書きを表示し、推測で通知することはありません。deCONZ ではライトの到達性を使います。監視中のデバイスはペインを閉じていても 1 分ごとにチェックします。
Zigbee ペインは、Z-Wave JS UI が制御する Z-Wave ノードも監視します。Z-Wave JS UI で、Zigbee2MQTT と同じブローカを使う MQTT ゲートウェイを有効にし(Settings ▸ MQTT)、Retain をオンのままにします。次に、ペインの Z-Wave セクションで MQTT 経由の Z-Wave JS UI をオンにし、同じプレフィックス(既定は zwave)を入力します。各ノードは稼働中・起動中・スリープ中・応答なしのいずれかで表示され、ベルを押すと応答なしになったときに通知します。バッテリ駆動ノードのスリープは正常で、稼働扱いです。ゲートウェイがオフライン、未報告、または最後の読み取りから 5 分以上たっている場合、すべてのノードを不明と表示し、通知は出しません。FrontierStack は不明な状態をオフラインとは報告しません。
SMLIGHT コーディネータ。SMLIGHT のネットワーク型 Zigbee/Thread コーディネータ(SLZB-06、SLZB-07、SLZB-MR シリーズ)は ESP32 上で SLZB-OS を動かしており、FrontierStack のモニタを入れられません。そこで Zigbee ペインが LAN 越しに読み取ります。コーディネータの IP アドレスか .local 名を追加してください。2 分ごとにモデル、ファームウェア、ラジオの役割、接続方式、温度、稼働時間を読み、応答しなくなったとき、高温になったとき、そして最も重要な障害として ラジオのソケットに Zigbee2MQTT・ZHA・Thread ボーダールータが接続していないとき(本体は正常に見えても家中のセンサが使えなくなる寸前の状態)にアラートを出します。SLZB-OS には HTTPS がないため、プライベートアドレスでのみ読み取ります。
11.15Music Assistant
Music Assistant は Home Assistant チームの音楽サーバです。ストリーミングサービスとローカルファイルを 1 つのライブラリにまとめ、AirPlay・Google Cast・Sonos・Squeezebox・Snapcast・DLNA のスピーカで再生します。障害が起きても何もクラッシュしません——ストリーミングのログインが期限切れになる、アップグレードでスピーカ統合が壊れる、スピーカがネットワークから消える——そして音楽が流れないときまで誰も気づきません。Music Assistant のサービスペイン(ホームオートメーション)を開き、サーバの URL(通常はポート 8095)と、Music Assistant ▸ 設定 ▸ プロフィールで作成した長期アクセストークンを入力します。
アラートのスイープごとに 3 点を確認します。サーバが応答しトークンを受け入れること、読み込みに失敗した音楽/プレーヤプロバイダや再サインインが必要なものがないこと、そしてオフライン時にアラートをオンにしたスピーカが利用可能であること。スマートフォンやノートパソコンは一日中出入りするため、スピーカの監視はオプトインです。一覧取得のコマンドしか送らないため、再生の開始・音量の変更・設定の編集は一切できません。
サービススキャンとサービスの検出は、ポート番号だけで推測せず、ポート 8095 の /info の応答から Music Assistant サーバを識別してバージョンを表示します。
11.16ディスク・RAID・SMART の健全性
ドライブは、耳を傾けていれば予兆とともに故障します。Disk Health ペイン(組み込みの監視ツール)は複数の層を組み合わせます。ボリュームの空き容量と Time Machine の状態は常に表示されます。smartmontools をインストールすると(ワンクリックの Install ボタン)、各物理ドライブがディープ SMART 属性——健全性、温度、通電時間、代替済み/保留中セクター、故障予測フラグ——で補強され、ドライブごとに Check ボタンと、生レポート用の Details シートで確認できます。ドライブは SMART 失敗または懸念される属性(代替済み/保留中セクター、故障予測)でアラートを発報し、完全な死亡時だけではありません。
ソフトウェアの AppleRAID セット(ミラー、ストライプ、連結)は、レベル・状態・メンバーごとの状態とともに独自のセクションに表示されます。セットが劣化したりメンバーがオフラインになるとアラートが発報します。Alerts & Thresholds でディスクアラートをオンにすれば、他のすべてのモニタと同様にチャネルへ流れます。
これらのモニタを合わせると、ひと目で見るボード 1 つ、調整するペイン 1 つ、あなたに届くチャネル 1 式が得られます——そして同じ健全性を読み、あなたに代わって同じ通知を送る AI 管理者(第 13 章)があります。フリート全体の CPU・メモリ・GPU メトリックをこの像に流し込むホストモニタは第 8 章で扱います。
11.17異常のあるパッケージとコンテナ
パッケージマネージャが入れたものは、その後は勝手に動きます——Homebrew のサービス、グローバルな npm ツール、pip で入れたサーバ、Docker コンテナ。そのどれかがコアを食いつぶし始めても、落ち続けても、知らせてくれるものはありません。FrontierStack はこの Mac 上でそれらを 30 秒ごとに監視します。負荷のあるプロセスがどのパッケージのものかをプログラムの置き場所(Homebrew の Cellar、node_modules、site-packages、gem、~/.cargo/bin)から割り出し、docker stats と各コンテナの最後の終了状態、macOS のクラッシュレポート、brew services を確認して、次のものに印を付けます。
- CPU やメモリの使いすぎ — 設定したしきい値の超過(CPU はアクティビティモニタと同じく 100% = 1 コアで、パッケージの全プロセスの合計)、またはメモリ上限の 90% に達したコンテナ。
- 過去 24 時間に記録されたクラッシュ、メモリ不足で強制終了されたコンテナやエラーで終了したコンテナ。
- 再起動の繰り返し、ヘルスチェックの失敗、エラー状態のままの brew サービス。
問題は Docker・Homebrew・Node.js・Python・Ruby・Rust の各ペイン上部の要注意セクションに表示され、そのパッケージの行にもバッジが付きます。サーバアクティビティウィンドウではこの Mac の Overview に表示され、タイルも色付きになります。アクティビティウィンドウの Processes タブには各プロセスがどのパッケージのものかが表示され、Docker タブはこの Mac だけでなくすべてのサーバで問題のあるコンテナに印を付けます。無視を押すと、そのパッケージの監視をやめます。
自分で見に行かなくても知らせてほしい場合は、アラート ▸ パッケージとコンテナをオンにします。CPU とメモリのしきい値、高い使用率が何分続いたら通知するか(ビルドで 1 分ほどコアが張り付くのは普通です)、リソース使用・障害のどちら(または両方)でアラートするかを選べます。アラートはほかと同じくチャネル・連絡先・エスカレーションルールで届き、Local Health のパッケージとコンテナに表示され、そのパッケージを扱うペインにバッジが付きます。
11.18サーバアクティビティウィンドウ
1 台を設定するのではなくすべてを同時に見たいときは、Monitors ▸ Server Activity Window(⇧⌘A、またはツールバーのゲージボタン)を開きます。ピン留めしたサーバと、ライブ状態を報告できるピン留めデバイス — ルータ/ファイアウォール、UPS、PoE スイッチ、マイニングリグ、KVM コンソール、スマートプラグ — だけを収めた独立ウィンドウで、アプリのそれ以外は含みません。各タイルは選んだメトリクスをスパークラインと状態ドット付きで表示し、注意が必要ならオレンジや赤になります。
レイアウトがボードの内容を決めます。組み込みは All Servers、Macs、CPU 順のコンパクトな Cluster グリッド、Mining Rigs & GPUs、Network & Power、AI Agents、Durable Objects、Everything。コピーをカスタマイズするか自作でき、対象の種類、サーバフィルタ、個別メンバ、メトリクスとその順序、タイルサイズ、グループ化、並び順、サンプリング間隔を選べます。値は FrontierStack モニタがあればそこから、なければ 1 回の SSH 往復で取得し、サンプリングはウィンドウを開いている間だけ動作します。
| タブ | できること |
|---|---|
| Overview | KPI、使用率グラフ(ライブ、またはモニタからの 24 時間/7 日)、ネットワークと温度のグラフ、システム情報、上位プロセス、セキュリティ状態チップ。 |
| Processes | 並べ替え、検索、kill/強制 kill。 |
| Services | systemd/launchd/OpenRC/FreeBSD の rc.d の開始・停止・再起動・有効化・無効化。 |
| Docker | CPU・メモリ・ネットワーク・ブロック I/O をライブ表示するコンテナ、ログ、開始/停止/再起動/削除、イメージ、コンテナを作成…と Install Stack…。 |
| Podman | Podman があるサーバで表示。ログインユーザのルートレスコンテナと、FrontierStack が sudo を使える場合は root のコンテナも、実行ユーザ付きで表示:CPU・メモリ・ネットワークのライブ値、ログ、開始・停止・再起動・削除。 |
| containerd | nerdctl または ctr がある containerd のサーバで表示(Docker ホストでは nerdctl がインストールされているか Kubernetes ノードの場合のみ)。Docker 自身のもの以外のすべての名前空間。nerdctl があればライブ統計、ログ、開始・停止・再起動・削除。ctr だけなら一覧と各コンテナの状態のみ。Kubernetes の k8s.io のコンテナは kubelet が管理するため読み取り専用でログのみ。containerd は root にしか応答しないので、サーバの sudo パスワードを保存するかパスワードなしの sudo を許可してください。 |
| Apple Containers | Mac ホストの Apple container CLI:実行中の一覧、開始と停止、ログ。CLI が存在しない Linux/Windows ホストでは非表示。 |
| Kubernetes | kubectl があるホストで、クラスタの状態を読み取り専用で表示:ノードと Pod をドット付きで、取得元のコンテキストとともに。 |
| Files | 閲覧、テキストファイルの編集、ドラッグ&ドロップでアップロード、ファイルやフォルダのダウンロード、新規フォルダ、削除。 |
| Ports · Logs · Terminal | 待ち受けポートと接続、ログビューア、複数セッションを持てるウィンドウ内ターミナル。 |
| Users · Packages · Cron · Firewall | サーバペインと同じリモート管理ツール。Mac では Packages タブの名前が Homebrew になります(Mac が実際に使うものだからです)。FreeBSD では Packages が pkg を使います。OPNsense と pfSense の一括アップグレードは行わず、それぞれ専用のアップデータを使います。 |
| Power | 再起動(SSH が固まったときはモニタ経由)、プラグ/PDU/KVM の電源、PDU コマンド、連携 UPS、Wake-on-LAN。 |
このウィンドウはキーボードで操作できるよう作られています。矢印キーで選択がボードや一覧を移動し、上下はタイル 1 行分進みます。⌘↑/⌘↓ で先頭・末尾へ、⇧⌘0 でボードに戻り、esc は詳細 → ボード → ウィンドウを閉じる、と一段ずつ戻ります。⌘1〜⌘9 でレイアウトを直接選択、⌥⌘←/⌥⌘→ で順に切り替え、⌘E で編集、⌘⌫ で選択中の対象を隠します。⌘F でフィルタ、⌘R で即時サンプリング、⌥⇥ でタブ移動、⌘T でターミナルウィンドウ、⇧⌘O でメインウィンドウ表示、⇧⌘K で全サーバにコマンド実行、⌃⌘S で一覧の表示切り替え。⌘/ でいつでも一覧を表示できます。
Run on All… はレイアウト内の全サーバでひとつのコマンドを実行します。デバイスにも専用の詳細があります:ルータのゲートウェイと IDS アラート、UPS のバッテリと電圧、PoE スイッチのポート制御、リグのハッシュレートとシェア、KVM のコンソールと電源、プラグの状態とワット。
サーバの Web Traffic タブ(Overview の隣)は、そのサーバ専用のウェブトラフィックパネルです。Apache/Nginx のアクセスログを SSH 経由で検出し、選んだ期間のリクエスト、ビジター、エラー率、人気ページ、リファラー、ボットを表示します。メインウィンドウでも同じ表示が使えます — ウェブトラフィックパネルのホストピッカーでサーバを選ぶか、サーバのサービスの Apache/Nginx 行にあるトラフィックを押します。root 専用のログには、サーバの SSH・rootアクセスでパスワードを保存しておく必要があります。

AI Agents レイアウトは、設定済みでステータス API を持つエージェントランタイム(T3 Code、OpenClaw、Hermes、Paperclip、Octop、LangGraph など)をボードに並べ、作業中のエージェント数と今日のトークン・コストを表示します。読み取り専用で接続した T3 Code は、さらにあなたの対応待ちのスレッド(回答されるまでタイルがオレンジになります)と、プロセスツリー全体の CPU・メモリ(この Mac 全体に対する割合)を加えます。詳細には対応待ち・作業中・失敗したスレッド、モデル別の使用量、負荷の高いエージェントプロセスが並びます。フリートのチェックでサーバ上に見つかった T3 Code ワーカーは、存在のみを示すタイルとして表示されます。
Durable Objects レイアウトは celld(Deno チームによる Cloudflare Workers と Durable Objects のセルフホスト型ランタイム)を表示し、celld ペインで追加したフリートノードごと、この Mac で動作中の celld dev サーバごとにタイルを並べます。各タイルには常駐セル数・所有セル数、CPU、メモリが表示され、ノードが容量不足を示すと(メモリプレッシャー、シェディング、常駐待ちのセル)オレンジに、オペレータ API が応答しない・ヘルスルートがドレイン中を返すと赤になります。詳細には WebSocket 数、復元待ち、デプロイメントのバージョン、セルのフェーズ、常駐セルの一覧が並び、Open Worker・Refresh、この Mac のサーバなら Stop ボタンもあります。
Proxmox VE クラスタを接続すると、All Servers・Cluster・Everything の各レイアウトにノードごとのタイルが加わり、CPU・メモリ・ディスク・稼働時間のスパークラインと、実行中の VM とコンテナの数が表示されます。詳細にはすべてのゲストが起動・シャットダウン・再起動・停止・リセットの操作付きで並び、ノードのストレージとクラスタのクォーラムが表示され、Boot an ISO… で Boot Media ペインへ移動できます。クラスタの接続方法は第 8 章で扱います。
AWS レイアウト(と All Servers)は FrontierStack 側の設定が要りません。aws CLI に認証情報があれば、~/.aws のすべてのプロファイルと、アカウントで有効な全リージョンをスキャンし、EC2 と Lightsail の各インスタンスを、CloudWatch の CPU・ネットワーク(5 分ごとの値)と稼働時間付きのタイルとして表示します。同じアカウントのプロファイルが 2 つあっても 1 回だけスキャンし、GovCloud と中国のアカウントにも対応、停止中のインスタンスは障害ではなく中立に表示します。詳細ページでは起動・停止・再起動(停止と再起動は確認あり)、AWS コンソールで開く、既に登録済みのサーバを開く、またはサーバに追加ができます。追加時はアドレス、Lightsail が設定したログイン名(またはイメージの標準ログイン)、~/.ssh にあればキーペアのファイルを入力済みにします。
サーバとして登録済みのインスタンスでは、ディスク拡張欄(サーバのページにもあります)がディスクの逼迫に対応します。ルートディスクがアラートのしきい値を超えると、FrontierStack が拡張内容(設定した増分による新しいサイズ、上限まで、月額の増加分)を計算し、確認を求めます(既定)。そのサーバで自動で拡張を選んでいれば、そのまま実行します:任意の EBS スナップショット、modify-volume、そして SSH で growpart と resize2fs または xfs_growfs。再起動は不要です。ディスクを拡張…で同じことを手動でも行えます。EBS ボリュームは拡張のみで、AWS ではボリュームごとに 6 時間に 1 回しか変更できないため、上限が重要です。LVM・Windows・Lightsail には自動化ではなく手順を案内します。
ウィンドウのタイトルバーには 3 つのコントロールがあります。外観はこのウィンドウだけをダークまたはライトにします(アプリの他の部分はライトのまま監視ボードだけ暗くしたい場合に便利)。アプリに従う → ダーク → ライトの順に切り替わります。タブ配置は、選択したサーバのタブをコンテンツ上部の横並びと、横の縦型リストとで切り替えます。縦型は背の高いウィンドウに向き、すべてのタブを一度に表示できます。キーボードはショートカット一覧を開きます。どちらの切り替えもレイアウトエディタと ⇧⌘D/⇧⌘L から行えます。
第 IV
スクリプトとスケジュール、AI 管理者、MCP、AI スタック。FrontierStack をコントロールパネルから「ひとりでに働く存在」へと変える 4 つの章。
第 12
スクリプト・cron・自動化
毎日使うコマンドを保存し、本物のシステム cron でスケジュール実行し、FrontierStack を Apple ショートカット・Siri・Mac の他の仕組みと連携。ワンクリックのスクリプトから、ハンズフリーの音声コマンドまで。
優れたサーバ管理者は、同じ数種類の作業を何度も繰り返します。バックアップを取る、キャッシュを温める、バックエンドを正しい手順で再起動する、vhost が思った通りのものを実際に配信しているか確認する。FrontierStack はそれぞれを保存済みスクリプトとして取り込み、ワンクリックで実行し、信頼できると判断したら cron に渡して無人で走らせます。そこからさらに外へ — Apple ショートカット、Siri、frontierstack:// URL スキーム、そしてアプリ自身がスケジュールで行うアクションへと広がります。
本章は自動化の機械的な側面 — スクリプト、スケジュール、macOS の自動化の入口 — を扱います。知的な側面、つまりこれらのスクリプトをあなたの代わりに書き・保存し・スケジュールする AI は、第 13 章です。ここで扱うものはすべて、AI 管理者が自身の監査済みツールを通じて操作できるため、両章は同じ仕組みを両端から説明しています。
12.1Scripts & Cron ペイン
サイドバーから Scripts & Cron を開きます。保存済みスクリプトのライブラリとスケジューラが 1 か所にまとまっています。上部の Saved Scripts セクションには保存した全スクリプトが、名前と本文の冒頭行とともに並びます。各スクリプトには 4 つのボタンがあります — Run(今すぐ実行)、Schedule(後述の cron に渡す)、Edit(エディタを開く)、そして削除のゴミ箱アイコン。Add Script… で新規作成します。
保存済みスクリプトは、アプリが解釈する断片ではなく、ディスク上の本物の実行ファイル(シェル・PHP・Python)です。分かりやすい名前と、目的を記したメモを付けておけば、半年後の自分(あるいはライブラリを走査する AI 管理者)が、何をするスクリプトかをひと目で把握し、正しいものを選べます。保存されたファイルそのものが実行されるので、手で試したものが、そのままスケジュール実行されます。
各スクリプトは既定の This Mac、ローカルの Docker コンテナ、または名前を指定した連携サーバを SSH 経由で対象にできます。資格情報が必要な場合、スクリプトはローカルの .env ボールトの名前付きシークレットを環境変数($DB_PASSWORD、"$SSH_SUDO_PASS")として参照します。アプリは実行時に実際の値を注入し、その値がクラウドモデルに届くことは決してありません(第 13 章)。
12.2cron でのスケジュール実行
Cron Jobs セクションは、本物のシステム crontab への分かりやすいフロントエンドです — アプリが独自に考えた別物のスケジューラではなく、何十年も Unix で無人作業を走らせてきた、まさにその cron です。各行はジョブの名前、スケジュールの平易な説明(FrontierStack が 5 フィールド構文を翻訳します)、実行するコマンドを表示し、有効/無効の切り替えと、Run(今すぐ実行)・Edit・削除のボタンを備えます。
保存済みスクリプトの Schedule、または任意コマンド用の Add Job… を押すとスケジュールビルダーが開きます。頻度(毎時・毎日の指定時刻・毎週)を選ぶと、FrontierStack が crontab エントリを書き込み、自身のジョブには # AC: コメントを付けて後から名前で見つけ・更新できるようにします。AI 管理者でも同様で、list_cron がジョブを読み、schedule_cron が作成・更新します(同名のジョブがあればその場で更新)。
完全に制御したい場合は、ペイン下部の Edit raw crontab を展開します。これはテキストエディタで開いた標準の crontab で、FrontierStack 管理のジョブは # AC: コメントとして現れるため、どの行がアプリの所有かが分かります。手で編集して Apply を押します。
FS_TRIGGER、FS_LOCATION、FS_DEVICE、FS_DISK…)を環境変数として受け取ります。時刻は cron、イベントはトリガーが担当します。12.3同梱のサンプルスクリプト
FrontierStack は、実績ある定番の管理スクリプトを小さな読み取り専用ライブラリとして同梱しています。あなたのスクリプトではなく — その場で編集はできません — が、どれも全ソースを読んで学び、自分のライブラリにコピーして手を加えられます。Mac の Web スタック(とくに旧 macOS Server バックエンド)の実地の癖を踏まえているため、自作の前に 1 つ読んでおくと不意打ちを避けられます。AI 管理者も list_sample_scripts と read_sample_script でまず読むので、その生成スクリプトも同じ苦労から得た知見を受け継ぎます。
| スクリプト | 機能 |
|---|---|
apache_real_docroot | vhost が実際に配信しているドキュメントルートを特定 — 設定が主張する場所ではなく、Apache が実行時に解決する場所。 |
apache_url_matrix | vhost 上のパス一覧の HTTP ステータスを、本物のホストヘッダーで検査して報告 — どの URL が健全かをひと目で確認。 |
fleet_file_diff | 1 つのファイルのチェックサムをフリート全体で比較し、設定ドリフト — ある 1 台が静かに他と食い違った箇所 — を発見。 |
macos_httpd_vhosts | macOS Server バックエンドの vhost → docroot マップをダンプ — その旧スタックが何を配信しているかを正確に把握。 |
macos_web_restart | macOS Server の Web バックエンドを正しい手順で再起動 — 雑な apachectl ではなく、正しい順序で。 |
node_healthcheck | 1 つの vhost のフリートドリフト/ヘルスチェックをノード横断で実施。 |
php_opcache_check | OPcache の状態を CLI と Web SAPI の両方について報告 — これらは別々に設定され、ずれやすい。 |
12.4Apple ショートカット・App Intents・Siri
FrontierStack はネイティブの App Intents を備えます — macOS の ショートカットアプリ、Spotlight、そして(いくつかは)話せる組み込み Siri フレーズとして現れるアクションです。ホットキー・メニューバー・フォルダアクションから起動するショートカットに組み込めます。Automator からも利用可能で(Automator はショートカットや AppleScript を実行できるため)。出荷時のアクション:
| アクション | 機能 | 組み込み Siri フレーズ |
|---|---|---|
| Run Server Script | 保存済みスクリプトを名前で実行。 | — |
| Start / Stop Service Group | グループ内の全サービスを一括で起動/停止。 | “Start my servers with FrontierStack” |
| Restart Service | Apache・Nginx・MySQL・PostgreSQL を再起動。 | “Restart a service with FrontierStack” |
| Restart Docker Container | 名前指定したコンテナを再起動。 | — |
| Get Local Health | ローカルヘルスの要約(サービスの up/down)を返す。 | “Check server health with FrontierStack” |
| Apply Sidebar Preset | サイドバーを保存済みプリセットに切り替える。 | — |
| Flush DNS Cache | macOS の DNS リゾルバキャッシュをフラッシュ。 | — |
| Send Notification | アラートチャネル経由で通知を送信。 | — |
| Ask Server Assistant | AI 管理者に普通の言葉で質問し、回答をワークフローに返す。 | “Ask FrontierStack…” |
カタログはさらに広く — Get Server Status、List Servers、List Docker Containers、Check a Website などもショートカット作成に利用でき、組み込みの Siri フレーズを持たないものも含めて使えます。
macOS 15 以降では、サーバ・Web サイト・マイニングリグ・Kubernetes クラスタ・保存スクリプト・サイドバープリセットを Spotlight のインデックスにも登録します(App Intents の IndexedEntity)。Siri と Apple Intelligence が「ステージングサーバを確認して」「夜間バックアップのスクリプトを実行して」を正しい項目に解決でき、各項目はライブな副題つきで Spotlight に表示されます。登録されるのはショートカットが既に読める名前・ホスト名・OS・状態だけで、認証情報やメモは含みません。アプリのロック中やライセンスがない場合、インデックスは空になります。
12.5スクリプトからアプリを操作する
App Intents は本物のショートカットアクションなので、macOS の shortcuts コマンドラインツールでシェルから呼び出せます — 保存済みスクリプト、cron ジョブ、Automator の「シェルスクリプトを実行」、あらゆるランチャの中で便利です。FrontierStack のアクションを一行のショートカットに包み、shortcuts run "My Shortcut" で呼び出して、スクリプトの他の処理と連鎖させます。
この組み立ては AI 管理者に任せられます。ショートカット経由でアプリを操作する自動化スクリプトを頼むと、list_app_intents を呼んで利用可能なアクションと各々の正確な shortcuts run 呼び出しを把握し、save_script でスクリプトを作成(または schedule_cron でスケジュール)します。ヒントではなく、完成して実行可能なスクリプトが手に入ります。
12.6スケジュールされたアプリアクション
cron ジョブはシェルコマンドを実行します。スケジュールされたアプリアクションはそれとは異なり、アプリ自身がスケジュールで行うタスクで、保存した資格情報と、あなたや AI 管理者が使うのと同じ監査済みツールを用います — 生のシェルコマンドではありません。連携サーバの再起動、アプリが制御するローカルサービスの開始・停止・再起動、DNS のフラッシュを時間割で行うのに使います。schedule_app_action で管理し、list_app_actions で一覧でき、ペインの Scheduled App Actions に現れます。作成の自然な方法は AI 管理者に頼むこと — 「web-03 を毎晩 3 時に再起動」— そして承認することです。
cron との重要な違いが 1 つあります。アプリアクションは FrontierStack が起動している間だけ実行されます。アプリを通じて動作するため、アプリが閉じている間に期限を迎えたものは取りこぼします。一方 cron は、アプリが開いていようといまいと、システムレベルで実行されます。何があっても起こさねばならないことは cron を、アプリ自身の資格情報とツールで行わせたいことはアプリアクションを選んでください。
12.7frontierstack:// URL スキーム
すべてのペイン・サーバ・サイト・コンテナ・Cloudflare ゾーンに frontierstack:// のディープリンクがあります。AppleScript、Automator のシェルステップ、ランチャ、あらゆるスクリプトランナーから、open frontierstack://pane/Security のような一行で、アプリを前面に出して目的のペインへ直行します。ヘッドレスでアクションを実行するのではなく、特定の場所でアプリを画面に出したいときに、FrontierStack を既存のワークフローへ組み込む最速の方法です。URL スキームの完全なリファレンスは第 18 章にあります。
12.8バックアップ・ログ・変更ログの自動エクスポート
定型自動化の最後のピースは、FrontierStack 自身が生成したファイルをスケジュールで Mac の外へ出すことです。Backups の概要にある Auto-export to a folder セクションは、生成された成果物を選んだ任意のフォルダへコピーします — オフサイト保全のための Dropbox フォルダ、または独自の後続ルールを駆動する Hazel 監視フォルダへ。3 つのフィードが組み込まれています:
- 設定バックアップ — 構成バックアップの zip。サイドバーのピン、Setups、Locations、アプリ環境設定のコピーも含まれます。
- 変更ログ — アプリを通じて行われた変更の記録。
- アプリログ — FrontierStack 自身のログの zip。
各フィードに間隔(毎時・6 時間・12 時間・毎日・毎週)を設定し、保存先フォルダを選び、必要なら Empty after export をオンにして、コピー後にソースをローテートできます(変更ログとアプリログに便利。際限なく肥大しません)。Export now はフィードを即時実行し、各フィードは前回の結果を表示します。ファイルは選んだフォルダに FrontierStack-<feed>-<timestamp> として置かれます。
これで機械的な道具一式がそろいました。保存して実行するスクリプト、それをスケジュール実行する cron とアプリアクション、ホットキーや音声で起動するショートカットと Siri、どこへでも飛べる URL スキーム、結果を箱の外へ送り出す自動エクスポート。次章では、これらすべてをあなたの代わりに書き・配線できるオペレータを紹介します — AI 管理者です。
第 13
AI 管理者
サーバを把握し、不具合を診断し、あなたの承認のもとで修正する、ツール使用アシスタント。秘密情報はモデルに渡しません。
AI 管理者 — AI ハーネス — こそが、FrontierStack を単なるコントロールパネル以上のものにしています。これはあなたの構成を正確かつライブに把握する、ツール使用アシスタントです。問題を普通の言葉で伝えると、読み取り専用の診断で原因を調べ、分かったことを説明し、実行前にあなたが承認する修正案を提示します。この Mac でも、SSH で連携したすべてのサーバでも動作し、パスワードを見ることは決してありません。本章では、その考え方、できること、安全に保つ方法を説明します。

.env 秘密ボールト、長期メモリ。13.1モデルを選ぶ
管理者は特定のベンダーに縛られません。ペイン上部で、駆動するモデルを選びます。
- FrontierStack AI — ゼロ保持サービスを利用できる場合の既定ハーネスエンジンです。自分の API キーは不要で、Enfour AI Cloud 経由で Qwen3 を実行します。FrontierStack AI サーバは現在ユーザに無料ですが、将来は有料サービスになる場合があります。上流キーとプロバイダ接続先は Enfour のサーバ内にあり、送信前に固定伏字化を行い、サービスはゼロ保持を証明する必要があります。最終ハーネス自体がゼロ保持のため、同じテキストを二重送信せず、別のクラウドプロンプトファイアウォール検査を省略します。ツール制限と操作承認は変わりません。
- クラウドモデル — 難しい診断や複数ステップの作業に最も適した選択肢。API キーを用意します(ローカル保存)。OpenAI キーでは、最も難しい作業向けの GPT-6 Astra、複雑なコーディングや専門的な作業向けの GPT-6.1 Sol(と GPT-6 Sol)、速くて低コストな日常作業向けの GPT-6.1 Terra、大量の定型処理向けの GPT-6 Luna に加え、従来の GPT-5.6 ファミリー(Sol・Terra・Luna)も選択できます。このバージョンの公開後にプロバイダが追加したモデルは、メニューの新しく掲載(未確認)に表示されます。FrontierStack はプロバイダがキーに対して返す一覧からこれらを取得し、キーの確認に合わせて 6 時間ごと、またはテストを押したときに更新します。自動で切り替えることはなく、ツール対応や料金は確認していません。プロバイダの一覧から消えた厳選モデルには(一覧になし)と表示されます。数百のモデルを掲載する OpenRouter などのホストは対象外です。
- 韓国のモデル — Upstage Solar(Solar Pro 4・Solar Mini 4)と CLOVA Studio 経由の NAVER HyperCLOVA X(HCX-007・HCX-005・HCX-DASH-002)は、ほかのクラウドプロバイダと同じく AI モデルでキーを登録します(CLOVA Studio では
nv-…のテストキーまたはサービスキー)。オープンウェイトのファミリーは Ollama ペインのモデルをダウンロードから Mac 上で実行できます:EXAONE(LG AI Research、非商用ライセンス)・Kanana(Kakao Kanana-2)・A.X(SK Telecom A.X 4.0 Light)。さらに大きな SK Telecom の A.X K1・K2 は、vLLM または SGLang を動かす GPU サーバをネットワークエンドポイントとして追加して使います。 - Perplexity — AI モデルで API キーを追加し、Sonar、Pro Search、Deep Research、Advanced Deep Research を選べます。Agent API の Web 検索、URL 読み取り、出典、通常のガード付きツールに対応します。モデルと調査の利用料は Perplexity API アカウントへ請求されます。
- ローカルモデル — Mac 上で動く Ollama・LM Studio、または OpenAI 互換サーバ(LocalAI・Jan・llama.cpp)、さらに Apple Intelligence:Apple シリコン+macOS 26 のオンデバイス・ファウンデーションモデルで、ネイティブに、あるいは Apfel(AI モデルペインがインストール・起動し、ログイン時やアプリ起動時の自動起動も設定できるワンコマンド)経由で利用します。ローカルモデルは作業を完全オフラインに保ち — データは Mac の外に出ないため、下記の送信前検査は不要となり非表示になります。ローカルモデルには短いプロンプト、リクエストごとに少なめのツール、32K トークンのコンテキストが使われ、ルールと会話の両方が収まります。ローカルモデルの実行は第 15 章を参照。
- MCP 経由の自前サブスクツール — すでに支払っている定額プランの Claude Code・Claude Desktop・Cursor からアプリ全体を操作。トークン課金はありません。第 14 章で扱います。
13.2画像対応モデルにペインを確認させる
設定が FrontierStack 上に見えていても管理者のツールではそのコントロールを確認できない場合は、プロンプト上のスクリーンショットを添付…をクリックします。Qwen 専用ではなくモデルの機能で、対応する OpenAI 形式、Anthropic、ローカル Ollama の画像モデルへ適切な形式で送ります。対応状況が不明なカスタムモデルや経路にも試行できますが、接続先が画像を拒否する場合があります。
FrontierStack が画面を自動撮影することはありません。画像を 1 枚選び、送信用プレビューを先に確認します。最大 1,800 ピクセルに制限し、再描画してメタデータを除去し、macOS の文字認識をローカルで行って、保存済み資格情報、個人アカウント名、非公開フリート識別情報、秘密らしいトークンを含む行を黒く隠します。OCR は多層防御であり保証ではありません。対象ペインだけに切り取り、送信前にプレビューを確認してください。
13.3会話の流れ
同僚に指示するように依頼します — 「なぜサイトが 502 を返すの?」、「shop.example.com の証明書がもうすぐ切れるか確認して」、「db-02 の Postgres を再起動して」。管理者は次のループで動きます。
- 足場を固める。動く前に、実際の構成(サービスカタログ、連携サーバとデバイス、現在のヘルスボード)を把握し、一般論ではなくあなたのマシンに合った回答をします。
- 読み取り専用で調べる。ログを読み、診断を実行し、ポートや証明書を確認し、設定ファイルを調べます。何も変更しません。
- 説明し、提案する。分かったことを伝え、変更が必要なら、実行したい正確なコマンドやファイル編集を提示します。
- あなたが承認する。システムを変更するものは、その操作を承認するまで実行されません。承認後に修正を実行し、再確認します。
ターンの終了を待つ必要はありません。作業中に次のメッセージを入力すると、アシスタントの次のステップで実行中の会話に追加されます。管理者はツールの結果と一緒に新しい指示を読み、同僚に方向転換を伝えるように、作業の途中で方針を調整します。ターンに間に合わなかったメッセージは直後に順番に送信され、停止後も保持されるため、入力した内容が失われることはありません。ツール呼び出しがハングした場合(到達できない SSH ホストや固まったサービスなど)は、進行表示の横のスキップを押してください。アシスタントは直ちに続行し、そのツールが壊れている可能性があると伝えられるため、再試行を繰り返さずに回避策を取ります。
13.4信頼モデル:既定は読み取り専用
本章で最も重要な節です。管理者は、コントロールを失わずに本番サーバを任せられるよう設計されています。
| 設定 | 解除されるもの |
|---|---|
| (既定) | 読み取り専用。ログ・ヘルス・設定・診断などすべてを見られますが、何も変更できません。 |
| 変更する | 変更を伴う操作(サービス再起動、ファイル書き込み、証明書発行、ファイアウォールのポート開放)を許可。各操作には依然として承認カードが出ます。 |
| スクリプトを実行 | 汎用シェルツールと保存済みスクリプトの実行を許可。スクリプトと平易な説明が実行前に承認のため表示されます。 |
これらのトグルの上に、2 つの原則があります。
- 操作ごとの承認。変更を許可していても、変更を伴うステップは必ず先に(実際のコマンドや差分が)表示され、その操作を承認するまで実行されません。場当たり的な変更に「すべて承認」モードはありません。
- リモート操作には個別の同意が必要。連携サーバを監視ヘルパー経由で操作するには、そのサーバ自身の「アクションを許可」スイッチ(Host Monitor ペイン、第 8 章)も必要です。
- 破損を伴うデータベース操作には高性能モデルが必要。データベースの修復・復元・再構築は取り返しがつかないため、FrontierStack はこれらのステップをフロンティアモデルにハードゲートします——小さなモデルやオンデバイスモデルでもログを読んで診断はできますが、高性能モデル(Claude Opus/Sonnet、GPT-4o/o シリーズ、Gemini Pro)に切り替えるまで、破損を伴うツールは拒否されます。
DELETE/TRUNCATE、データベース/テーブルの削除、対象を限定しない更新、ファイルの削除/上書き、ディスク消去、破壊的な保存済みスクリプト、cron ジョブ、イベントトリガは承認前に拒否されます。構造化されたファイル書き込みでは以前のファイルを退避します。vhost_remove は Apache/nginx の vhost を可逆的に無効にし、ドキュメントルートを保持します。名前付きバックアップから意図的に復元する操作だけは、別途厳しく制限されたローカル復旧フローで利用できます。13.5秘密情報のボールト
実運用には資格情報(DB パスワード、SSH の sudo パスワード、Cloudflare トークン)が必要です。FrontierStack はこれらをローカルの .env ボールトに保管し、モデルには決して見せません。
管理者の スクリプト秘密情報(.env) バーで名前付きの秘密を追加します — 例:DB_PASSWORD、CF_TOKEN、SSH_SUDO_PASS。アシスタントが必要なスクリプトを書くとき、参照するのは値ではなく名前です。
mysql -u root -p"$DB_PASSWORD" -e "SHOW DATABASES;"
実行時にアプリが実際の値を環境変数として注入します — ローカル、または対象サーバ上で SSH 経由で — しかもスクリプトが実際に参照する名前だけを注入します。モデルには(正しいスクリプトを書けるよう)秘密の名前は伝わりますが、値は決して渡らず、コマンド出力は送信前に秘密情報が伏せられます。
- シェル:
$NAME/"$NAME" - PHP:
getenv('NAME') - Python:
os.environ['NAME']
PROD_DB_PASSWORD、STAGING_DB_PASSWORD、サーバごとの BALTHAZAR_MYSQL_PW など。アシスタントは対象に合う名前を選び、対応が曖昧なら推測せず尋ねます。13.6リポジトリからのインポートと frontierstack run
エージェント用にネットワーク設定をリポジトリで管理する開発者もいます — SSH 設定、Ansible インベントリ、API キーだらけの .env ファイルなどです。FrontierStack は認証情報をリポジトリへ書き出さない方針です。リポジトリはクローン、CI、エージェントのサンドボックスすべてにコピーされ、ファイルを消しても履歴に秘密が残るためです。既存のリポジトリのインポートには対応しています。
セットアップを移行 ▸ サーバ ▸ リポジトリからインポート…を開きます(スクリプトシークレットバーにもあります)。フォルダを選ぶか、git アドレスを貼り付けます。クローンは一時フォルダに作られ、ウインドウを閉じると削除されます。
| リポジトリ内の内容 | インポート先 |
|---|---|
SSH 設定:Host、HostName、User、Port、IdentityFile | フリートのサーバ。リポジトリ内の鍵は ~/.ssh/frontierstack にコピー |
Ansible インベントリ(INI/YAML、group_vars/host_vars 含む) | 環境(本番、ステージングなど)付きのサーバ。become パスワードはサーバの sudo パスワードに |
.env、.env.*、.envrc | スクリプトシークレット。CLOUDFLARE_API_TOKEN などの定番名はサービス専用の保存先にも |
| SOPS、Ansible Vault、age、git-crypt のファイル | ご自身のツールと鍵で復号(メモリ内のみ) |
COMPUTERS.md のような Markdown のインベントリ(名前とアドレスの列を持つ表) | サーバ。退役・オフラインと書かれたマシンや、ssh user@host コマンドに出てくるだけのホストはチェックなしで表示 |
セットアップスクリプトの export NAME=value 行 | スクリプトシークレット |
AGENTS.md、CLAUDE.md、HOW_TO_*.md などの Runbook とスクリプト | シークレットの値を置き換えたうえで、ナレッジフォルダ(Runbooks、Recipes)にコピー |
FrontierStack のネットワークリポジトリ(frontierstack-network.json または .yaml) | 正確に読み取り、必要なシークレット名を一覧表示 |
サーバテンプレート(templates/*.yaml)と boxes/<name>/box.yaml | テンプレートは FrontierStack に保存。アドレスのある box は、そのテンプレートに従うサーバとして追加 |
それ以外(routers.yml、Terraform 変数など) | FrontierStack AI で解釈 |
AI の処理には常に FrontierStack AI のメインモデルを使い、AI が値を見ることはありません。シークレットらしい値はすべて ‹V7› のようなプレースホルダに置き換えられ、モデルはプレースホルダで答えます。実際の値はインポートをクリックしたときに Mac 上でだけ埋め込まれます。AI に送る内容を表示…で送信テキストをそのまま確認できます。
インポート後は、リポジトリの git 履歴に含まれるファイルを示し、API で新しいキーを発行できるサービスにはキーを置き換えを提示します。名前だけを書いた .env.frontierstack 参照ファイル(コミットしても安全)も保存できます:
DB_PASSWORD=fs://DB_PASSWORD
CLOUDFLARE_API_TOKEN=fs://CLOUDFLARE_API_TOKEN
スクリプトシークレットバーで frontierstack run にこれらのシークレットの使用を許可をオンにすると、エージェントは値を持たずにコマンドを実行できます:
frontierstack run -- ./deploy.sh
frontierstack run --secret API=CLOUDFLARE_API_TOKEN -- terraform plan
値はそのコマンドだけに環境変数として渡され、出力では伏せ字になります(対話型プログラムには --no-masking)。アプリを閉じていても動作し、アプリロックに従い、セキュリティキーで暗号化したシークレットは開けません。実行ごとに(名前のみ)変更ログへ記録されます。
SOPS で暗号化した .env・JSON・YAML・INI、または mise の .env.toml を値の取得元にすることもできます。frontierstack run --sops-file secrets.enc.env -- ./deploy.sh は最上位の値を sops exec-env と同じように設定し、同じく伏せ字にします。FrontierStack は sops や mise が使うのと同じ age キーで開き、PGP やクラウド KMS だけに暗号化されたファイルはご自身の sops ツールに渡します。上記のインポートも、これらのツールが未インストールなら SOPS・age ファイルを自身で復号します。
13.7プロンプトファイアウォール
プロンプトファイアウォールは、FrontierStack の常時オンの固定伏字化に加える任意の意味検査です。Ollama または対応するローカル OpenAI 互換モデルを使うこの Mac 上か、明示的に Enfour AI Cloud を選びます。検出時は、警告して確認、自動伏字化、送信ブロックのいずれかを行えます。
オンデバイス検査はすべてこの Mac 内で完結します。Enfour AI Cloud に渡るのは、既知の認証情報・ユーザ名・プライベートアドレス・秘密らしいパターンを FrontierStack が除去した後のテキストだけです。現在はユーザに無料です。クラウドサービスは毎回ゼロ保持を証明する必要があり、証明またはサービスが失われた場合は未検証となり、ブロックモードでは送信を停止します。上流プロバイダのキーと接続先はアプリへ渡らないため、Enfour は新しいキーを配布したりアプリに任意の接続先を指定したりせず、将来プロバイダを変更できます。
13.8管理者にできること:ツール
アシスタントは監査済みの固定されたツールを通じてのみ動作します。各ツールはガード付きで、読み取り専用ツールは常に動作し、変更ツールは上記トグルと承認を要します。役割別に示します。
| 領域 | 代表的なツール |
|---|---|
| 把握・足場固め | app_capabilities(管理対象)、search_app_help(FrontierStackの設定・コントロールに関する現在のヘルプ)、list_targets(サーバとデバイス)、get_server_health、get_location、get_sidebar_state |
| 診断(読み取り専用) | diagnose(ping・dig・curl・netstat・df・ps…)、read_logs/tail_log(Wi-Fi イベントログを含む)、get_location(ライブ Wi-Fi 電波詳細付き)、security_audit、port_check、cert_expiry_check、whois_lookup、ip_analysis、metrics_snapshot、php_test/python_test |
| サービス制御 | service_action(Homebrew サービス)、repair_service、reload_webserver、restart_app、monitor_action(サーバのヘルパー経由)、reboot_host |
| Web とデータベース | list_sites/read_site_file/write_site_file、vhost_create/vhost_remove、list_databases/run_sql、db_dump/backup_now/restore、issue_certificate |
| ネットワークと境界 | firewall_rule、flush_dns、dns_record(Cloudflare・DNSimple・GoDaddy・Hostinger・ConoHa・DNSPod)、cloudflare_dev_mode(開発モード・under_attack・email_status・web_vitals・rules・rule_update・rule_create・security_events・cache_hosts・workers・plan_usage・bot_fight)、router_info(状態・ヘルス・セキュリティ兆候)、reboot_router、open_web_ui、discover_devices/pin_device、internet_speed |
| メールセキュリティ | email_auth_dns(SPF/DMARC/DKIM)、harden_mail_postfix、test_open_relay、generate_dkim_key、install_mail_cert |
| セキュリティテスト | strix_status(Strix の導入状況・スキャン履歴・所見を読む)、strix_scan(許可済みのペネトレーションテストを実行)、strix_control(停止・再実行・再起動・消音)— 操作系の 2 つはローカル専用 |
| ファイルとシェル | read_remote_file/write_remote_file/upload_file、そして run_script — この Mac または任意の連携サーバ上の汎用シェル |
| スクリプトとスケジュール | list_scripts/run_saved_script/save_script、schedule_cron、schedule_app_action、list_sample_scripts |
| メッセージング | get_messaging_channels、send_notification、get_alert_errors |
| EC | ecommerce — 接続中のショップ・モール・決済チャネルすべて:通貨別の本日/今週/今月の売上、対応待ちの注文、楽天 RMS ライセンスキーの期限切れ間近などの警告、EC カタログ(読み取り専用) |
| ナレッジ | list_skills/load_skill、list_notes/read_note、obsidian_search/obsidian_read_note、remember/list_memory/forget |
| ベンダーの MCP サーバ | hosted_mcp — provider=zapier(Zapier MCP のアクション)、supabase(Supabase 公式の MCP サーバ)、hostinger(Hostinger 公式の MCP サーバ。Hostinger ペインで書き込みを許可をオンにしない限り読み取りのみ)、stripe、github、neon、posthog、datadog、pagerduty、resend、planetscale、n8n、grafana(各ペインに保存したキーを使用。同じルール)、各ペインでブラウザからサインインする 20 以上のベンダ(atlassian、linear、vercel、sentry、notion など)、cloudflare(Cloudflare 公式の MCP サーバ:ドキュメントと API 仕様の検索、Cloudflare ペインで execute を許可した場合は承認付きの API 呼び出し)。どのプロバイダでも、資格情報を返す・作成するツールは拒否され、結果の資格情報は伏せ字になります |
| アプリ自体 | open_pane、set_pane_visible、manage_palette、set_services_visible — アシスタントがサイドバーを案内・再構成できます |
汎用の run_script ツールはアシスタントのシェルです。固定ツールでカバーされないことは、小さく読みやすいスクリプトを書いてあなたに承認を求めて実行します。リモートサーバでは 2 段階で動きます — まず読み取り専用のテストスクリプトで問題を特定し、次に最小限の修正、そして再テストで確認します。
13.9スキル・ノート・メモリ
3 つの機能により、管理者は一般的な既定値ではなくあなた自身の知識から作業します。
13.12.1スキル
スキルは厳選された複数ステップのプレイブックです — フリートのセキュリティ監査、Web スタックの再起動手順など。AI Skill Manager で管理します。アシスタントは(名前だけで)安価に一覧し、必要なときにそのフル手順を読み込むため、即興ではなくあなたが承認した手順に沿って作業します。
13.12.2AI と共有したノート
ノートペイン(第 3 章)には資格情報・ランブック・手順を保管し、各ノートには既定でオフのロックが付きます。アシスタントが読めるのは、AI と共有で明示的にロック解除したノートだけです。存在を知るためにタイトルは見え、本文は作業に必要なときだけ読みます。
13.12.3長期メモリ
「LINE が私の優先チャネルだと覚えて」や「週末はメッセージを送らないで」と伝えると、ルールを永続的な memory.md に保存し、今後のセッションでも守ります。メモリはチャット(「何を覚えている?」、「donkey のルールを忘れて」)やパネル下部のメモリバーから、いつでも一覧・削除できます。
「絶対に〜しない」ルールは強制されます。「ルーター『donkey』の NAT 設定は絶対に変更しないで、と覚えて」と伝えると、FrontierStack はルールが守る対象(引用符で囲んだ名前と、名前が出てくるサーバやデバイス)を、名前・IP・MAC・オンラインモデルに見せる仮名のすべての表記で割り出します。その対象を含む変更は、モデルがルールを忘れていても、ルールを表示した確認カードであなたの承認を待ちます。読み取りだけの操作は止めません。自動化、エージェントジョブ、外部ツールは確認できる人がいないため、変更を拒否して理由を伝えます。照合は設定項目ではなく名前で行うため、止まった変更がルールに関わるかどうかはあなたが判断します。
インフラメモと自分で書くファイル。ネットワーク構成の事実(アドレス、VLAN、どのサーバが何を担うか、デバイスのくせ)は infrastructure.md にあり、すべてのリクエストに含まれるため、確認作業は既知の状態から始まります。どちらのファイルも自由に編集できます。見出し・リスト・表で独自のセクションを書くか、メモリバーのインポート…で Markdown ファイル(Obsidian のノートも可)を新しいセクションとして追加します。FrontierStack が書き込むのは専用の見出し(Learned by the assistant または Added in FrontierStack)の下だけで、あなたの部分は書き換えません。ほかのエディタでの変更は次のメッセージから反映され、<!-- --> コメント内のテキストは送信されません。あなたのセクションは常に送信され、学習済みの事実は先頭の部分が送信され、残りは必要なときにアシスタントが検索します。
13.12.4ナレッジフォルダ、Obsidian、Perplexity Brain
ナレッジフォルダペインでは任意のローカル Markdown フォルダを選べます。管理するインベントリ、インシデント、変更、SOP、ランブック、プロンプト、レシピは FrontierStack/ サブフォルダに保存されます。Obsidian は任意のエディタで、インストール済みボールトはショートカットとして表示されます。
外部モデルはローカルフォルダ全体を読めません。Perplexity Project/Brain には、Perplexity フォルダを準備で別の伏字済み書き出しを作ります。既定では伏字済みインベントリと機能一覧だけを含み、住所、MAC アドレス、アカウント名、認証情報、プライベートノート、ジャーナルを除外します。手順やジャーナルの共有には個別の同意が必要です。
13.10この Mac とフリート
ほぼすべてのツールはターゲットを取ります。省略するとこの Mac で実行され、連携サーバ名を指定すると、同じ診断・ログ読み取り・スクリプト・修正がそのサーバで SSH 経由で実行されます(読み取り専用ツールは読み取り専用のまま)。だから 1 つの会話が 「この Mac のディスクを確認」から 「同じことを web-01 と edge-03 でも」へ滑らかに移れます。サーバ連携とホスト監視ヘルパーは第 8 章で扱います。
特権作業の前に、ハーネスは選択したターゲットの秘密を含まないアクセス状態を読みます。連携サーバでは SSH/root/sudo パスワードが FrontierStack のキーチェーンに保存済みかを示します。モデルに届くのは利用可否だけで、値は決して届きません。この Mac では、承認済み特権ヘルパーが使えるか、または対応する操作で通常の macOS 管理者パスワード入力が表示されるかを示します。アクセス可能なら、アシスタントは説明だけで止まらず、あなたの承認後に限定ツールを試します。自由記述の AI スクリプトには、サーバの保存済みパスワードは自動で渡されません。
連携サーバが応答しなくなっても、list_targets は稼働中に FrontierStack が最後に確認した内容でそのサーバを説明します。OS、ハードウェア、安定した IPv6 と Tailscale を含むアドレス、DNS リゾルバ、接続、稼働していたサービス、OS に設定された定期再起動、モニタの設定です。いずれも最終確認の日時付きで示されるため、アシスタントが古い値をライブの値として扱うことはありません。この記録は Mac 上にだけ保存され、トークンや通知 URL は含みません(第 8 章)。
13.11カスタム指示と履歴
カスタム指示エディタ(第 17 章)で、アシスタントの恒常的な振る舞い(文体、要約の仕方、常に望む既定)を整えられます。過去の会話は履歴メニューに残るので、調査に戻ることができ、アシスタントは中断したところから再開できます。
13.12実例
全体像をつかむため、典型的なやり取りを示します — 「ショップが 502 で落ちている。」
アシスタントはget_server_healthを呼び、web-01 で Apache は稼働、PHP-FPM が停止していると分かります。read_logs(ターゲット web-01)で PHP-FPM のログを読み、設定編集後にプールが起動していないことを突き止めます。問題の行を示し、write_remote_fileでwww.confへの 1 行修正を提案し、— あなたの承認後 —reload_webserverでリロードし、ループバックでサイトを再確認。復旧。希望すればsend_notificationでチームに復旧の一報を送ります。
その間、パスワードはモデルに届かず、すべての変更はあなたの承認を待ち、全体があなたが手作業でできること — ただより速い — でした。
第 14
エージェント型ワークフローの FrontierStack
FrontierStack を、コーディングエージェント・自律コーディネータ・人/エージェントのワークフローを支えるガード付きインフラ権限として使います。サーバ認証情報をモデルへ移す必要はありません。
第 13 章では FrontierStack 内蔵の AI 管理者を扱いました。本章では逆方向を説明します。Hermes Bot・Codex・Claude Code・Cursor・Gemini CLI・Grok 系コーディネータなど、すでに使っているエージェント型ワークフローの中へ FrontierStack を配置し、認証情報と最終権限を Mac に残したまま、実際のフリートを調査して作業を依頼できるようにします。
14.1FrontierStack の役割
エージェント型システムには通常、何をするか決めるコーディネータと、特定分野の作業方法を知るスペシャリストがあります。FrontierStack が担うのは、安定したサーバ管理者の役割です。同時に、確率的なモデル出力と本番インフラの間にある権限境界でもあります。
この区別は重要です。コーディングエージェントがデプロイを理解して再起動を提案できても、再起動を可能にする SSH 鍵まで持つべきではありません。マネージャエージェントが障害を割り当てても、そのメッセージ自体は認可ではありません。FrontierStack は依頼を受け、呼び出し元を認証し、ツールを絞り、ローカルポリシーを適用し、実行時に認証情報を解決し、必要な場合は人に承認を求め、操作・検証・監査記録を行います。
14.2ひとつの依頼が完了するまで
- コーディネータが限定された仕事を記述。たとえば「web-02 の証明書エラーを調査」または「停止している場合だけキューワーカーを再起動」です。
- FrontierStack が呼び出し元を認証。ローカルクライアントは所有者専用 Keychain ブリッジを使います。ネットワーク越しの呼び出しには、明示的に有効化し、ペアリング・署名・スコープ設定した経路が必要です。
- ツールを二段階で絞り込み。
frontierstack_find_toolsが仕事に関連するツールを探し、現在の呼び出し元スコープが許可されないものを除きます。 - 実行時にポリシーを再確認。読み取り専用の既定値、App Lock、データ破壊制限、承認カードを、選んだツールの呼び出し時にも確認します。ディスカバリだけで権限は得られません。
- 認証情報をローカルで解決。SSH 鍵、sudo パスワード、DB 認証情報、ルータログイン、クラウドトークンは Keychain または連携ボールトに残ります。モデルには値も、再利用できる認証情報入りコマンドも渡しません。
- 対象で限定操作を実行。FrontierStack がこの Mac または選択した Linux・Windows・Mac ホストで、確認済みのローカル・SSH・ヘルパー経路を使います。
- 完了を検証。重要な変更ではプロセスの終了コードだけを成功としません。アプリから観測できる事後条件を確認し、監査イベントを書き、追跡可能な結果または永続レシートを返します。
14.3エージェント型ワークフローのパターンを選ぶ
通常はコーディングエージェントからの対話型 MCP で始めます。永続タスク、イベント、モバイル監督は、ワークフローに必要な場合だけ追加します。
連携面
| チームの形 | 使用するもの | FrontierStack が提供するもの |
|---|---|---|
| コーディングエージェントやマネージャが限定されたサーバ操作を必要とする | MCP(推奨) | 呼び出し元に合わせて絞ったライブのツールとリソース。既存のローカルポリシーと承認境界を通ります。 |
| シェルスクリプト、ローカル自動化、CI ランナが安定したインターフェイスを必要とする | FrontierStack CLI | MCP と同じガード付き呼び出しと機械可読ディスカバリ。認証情報はスクリプトへコピーせず、所有者専用 Keychain ブリッジが供給します。 |
| 接続前にエージェントへフリートの地図を渡す | エージェントスキル/AGENTS.md | サーバ・役割・サービス・運用ルールを記した、認証情報を含まないポータブルな説明。 |
| コーディネータが長い作業を委任する、または障害を引き継ぐ | A2A 1.0 プレビュー | 永続タスク ID・進行・キャンセル・入力/承認待ち・成果物・最終レシート。非公開で、オンにするまで無効です。 |
| MCP クライアントが遅延作業に対応する | MCP Tasks プレビュー | 同じ永続タスクエンジンを実験的な Tasks 拡張で公開。両側の明示的な有効化が必要です。 |
| 障害対応または CI/CD システムが作業を起票する | CloudEvents プレビュー | 選択された認証済みイベントが読み取り専用調査を開始し、相関情報を運びます。イベントが変更権限を与えることはありません。 |
| Mac から離れた場所でエージェントを監督する | iOS Agent Activity | ペアリング Mac から限定された状態、ランタイム、ジョブ、継続セッションのメタデータを表示。プロンプト、トランスクリプト、ターミナル内容、認証情報は端末へコピーしません。 |
ツール一覧を小さく保つ
すべての会話に FrontierStack の完全なツールカタログを読み込ませないでください。AI ハーネスによっては 128 ツールの上限があり、無関係な長い一覧はツール選択の信頼性も下げます。そのため既定のカタログは小さな 2 つの入口を公開します。frontierstack_find_tools は現在の仕事と呼び出し元に関係するツールだけを検索し、frontierstack_call が選んだツールを実行します。完全な許可済みカタログが必要なクライアントや確認作業だけで frontierstack tools --full を使ってください。
認証情報を含まないセットアップキット
MCP ペインでエコシステムセットアップキットを書き出すか、MCP の frontierstack://ecosystem-kits、または frontierstack ecosystem-kits を使います。生成されるレシピは、OpenClaw/Hermes 型スペシャリスト、Buzz などの人/エージェントチーム、OpenAI 型マネージャとハンドオフ、Microsoft ワークフロー、LangGraph、CI/CD、Slack/Teams の承認引き継ぎ、将来向け汎用アダプタを扱います。キットに含まれるのは役割・エンドポイントのメタデータ、手順、安全なプレースホルダで、パスワード・秘密鍵・ベアラートークン・API キーは含みません。
- 使用するコーディネータに最も近いレシピを選び、FrontierStack にサーバ管理者の役割を割り当てます。
- ローカルでは localhost、別の承認済みデバイスでは FrontierStack のペアリング済み HTTPS 経路で接続します。ローカル MCP ポートを直接公開しないでください。
- 読み取り専用で開始します。変更を有効にする前に、ディスカバリ、フリート状態、ヘルプ/マニュアル検索を試します。
- 変更が必要なときは、FrontierStack 内で対象の操作を承認します。グループチャットのメッセージ、エージェントカード、プロンプト、承認したという申告は権限になりません。
- タスク表示で進行を確認し、必要ならキャンセルして、最後の検証レシートを保管します。
信頼境界は移動しない
- 認証情報はローカルに保持。サーバパスワード、SSH キー、AI キー、保管庫の値は実行時に解決し、コーディネータ、セットアップキット、リモートヘルパー、コールバック、モデルのプロンプトへ書き出しません。
- ディスカバリは権限ではない。役割プロファイル、スキル、イベント、チャット上の名前、ツール説明は、できる可能性を示すだけです。ツールを有効化したり、呼び出し元のスコープを広げたりできません。
- 変更はひとつのゲートを通る。MCP・A2A・CLI・イベントはすべて、同じ App Lock、呼び出し元別スコープ、データ破壊ガードレール、ローカル承認、監査記録を使います。
- リモートヘルパーは限定的。サーバ上のモニタ/ヘルパーは FrontierStack の決定論的な手足です。モデルを動かさず、AI プロバイダの認証情報を保存せず、ネットワークから任意の MCP 作業を受け付けません。
- 完了は検証済みを意味する。変更を行う永続タスクは、コマンドがゼロを返しただけでなく、FrontierStack が観測した事後条件を記録してから完了します。
作業内容を公開せずエージェントを観測
Mac の Agent Operations は、ワーカーホストの到達性、検出したランタイム、実行中ジョブ、継続ターミナルセッションをまとめる運用コンソールです。iPhone/iPad コンパニオンの Agent Activity は、ペアリング Mac から意図的に絞った状態だけを表示します。どのワーカーが到達可能か、どのジョブやセッションが動いているかを確認できますが、プロンプト、トランスクリプト、コマンド行、環境変数、ターミナル内容、認証情報はスマホへ送りません。
Linux などのフリートホスト上で長時間動く作業は、Servers › Host › Terminal Sessions で tmux・GNU screen・Zellij・Rex セッションを一覧できます。Rex のセッションに接続できるのは Rex のアプリだけです。必要なスコープを持つ端末は直接 SSH ターミナルを開き、選択したセッションへ接続できます。セッション終了はフルコントロール権限と個別確認が必要です。
14.4MCP サーバを有効化する
FrontierStack は Mac にインストールされた一般的な AI クライアントを検出し、再利用可能な認証情報を公開せず、自身の MCP エントリを設定できます。
- MCP Server ペインを開きます。サーバは既定でオンになっており、
localhostにバインドします。オフにすることもできます。 - Detected AI clients を確認します。FrontierStack は Amp・DeepSeek Harness Alpha・Hermes Bot Mode・Grok・Codex CLI・Cursor・Gemini CLI・Claude Code・Claude Desktop・Xcode(26.3 以降)・T3 Code・Rex を認識します。Set Up Detected または各クライアントの操作を使います。T3 Code には独自の MCP 設定がないため、設定すると T3 Code のセッションが読む Codex・Cursor・Grok の設定に FrontierStack を追加し、Claude Code 用には
claude mcp add --scope userコマンドを表示します。そのあと T3 Code でエージェントセッションを再起動してください。Rex にも独自の MCP 設定がなく、設定すると Rex のターミナル内のエージェントに同じことを行います。そのあと Rex で新しいエージェントセッションを開始してください。 - Amp の設定は
amp mcp addを実行し、FrontierStack の所有者専用ローカルブリッジだけを追加します。Amp のリモートスレッド作成、ランナー、リモート制御ターミナルは有効にしません。 - DeepSeek Harness(Alpha)は、Harness の
webプロファイル用の設定専用プラグインバンドルです。Harness 内蔵 MCP クライアントを有効にして FrontierStack の所有者専用ブリッジへ接続します。バンドルにはベアラートークン、サーバ資格情報、DeepSeek キー、ネットワークエンドポイントを含めません。DeepSeek Harness はまだ開発者プレビューのため、FrontierStack は起動時にこの Alpha プラグインを自動導入・修復しません。Add Alpha Plugin を明示的に選び、対応 Harness リリースが変わった場合は FrontierStack と一緒に更新してください。 - Hermes の各 Bot は独立プロファイルです。自動設定が修復するのは Hermes のメインプロファイルだけで、既存 Bot 一覧には別の明示的な Set Up Bots オプトインを使います。Hermes はブリッジを
untrustedとして登録し、FrontierStack は読み取り専用の既定値、変更/スクリプトのスイッチ、App Lock、承認、監査を引き続き適用します。 - 検出した安定版クライアントの変更時に FrontierStack 自身の
frontierstackエントリだけを修復するには、Set up detected AI clients at launch を有効にします。他の MCP サーバ設定は保持され、Alpha 連携はスキップされます。 - 生成エントリは所有者専用ブリッジを起動します。ブリッジが起動時に Keychain から MCP 認証情報を取得するため、ベアラートークンをクライアント設定へ書き込みません。
- 他の stdio MCP クライアントでは FrontierStack CLI をインストールし、
frontierstack mcpが返すコマンドを使います。 - 読み取り専用で開始します。変更やスクリプトを許可する前に、
frontierstack discover、フリートヘルス一覧、ヘルプ検索を試します。
14.16.1Xcode
Xcode 26.3 以降(macOS 27 の Xcode 27 を含む)はコーディングエージェントをホストし、MCP を双方向に扱えます。Add to Xcode は、Xcode 内蔵の Claude・Codex・Gemini エージェントが使える MCP サーバの一覧 ~/Library/Developer/Xcode/CodingAssistant/mcp-servers.json に FrontierStack の所有者専用ブリッジを書き込みます。アプリを開発中のエージェントは、対象のサーバ・データベース・サイトについて FrontierStack に問い合わせ、他のクライアントと同じ読み取り専用の既定、変更スイッチ、承認、監査のもとで限定的な作業を依頼できます。
逆方向では、AI 管理者の xcode ツールが xcrun mcpbridge を通じて Xcode 自身の MCP サーバと通信します。スキームとターゲットの一覧、ビルド、テストの全体/一部実行、ビルドログの読み取り、SwiftUI プレビューの描画、プロジェクトファイルの検索や編集、テンプレートからのプロジェクト作成、シミュレータ操作ができます。Xcode › 設定 › Intelligence › Model Context Protocol › Allow external agents to use Xcode tools をオンにしてプロジェクトを開いたままにしてください。FrontierStack が接続すると Xcode が通知を表示します。Xcode の読み取り専用ツールは自由に実行でき、ビルド・テスト・編集・スキーム切替には変更を許可が必要です。Xcode で開いていないプロジェクトには、代わりにアプリ内コンソールで xcodebuild を実行します。同じプロジェクトで両方を同時に動かすと Xcode のビルドデータベースが壊れることがあるため避けてください。ペインには Claude Code に同じ Xcode ツールを渡す claude mcp add … xcode -- xcrun mcpbridge コマンドも表示されます。
14.16.2Grok Bot
Add to Grok を選ぶと、FrontierStack の所有者専用ブリッジを ~/.grok/config.toml へ追加できます。特定のリポジトリだけに Grok の手順を持たせる場合は、プロジェクトキットを書き出します。ブリッジは実行時に Keychain から MCP 認証情報を読み、TOML ファイルにベアラートークンを含めません。ローカルの Grok ワークフローは、ヘルス確認とヘルプ検索が期待どおりに動くまで読み取り専用にしてください。クラウド上の Grok Bot はループバック接続口へ到達できません。リモート利用には TLS で保護したネットワーク経路、ペアリング済みの呼び出し元 ID、明示的なスコープが必要です。ベアラートークンをボットのメモリやプロジェクトファイルへコピーしてディスカバリを回避しないでください。Grok Bot のために FrontierStack で専用のキーは不要です。AI モデルの xAI API キーは別物で、AI 管理者のモデルに Grok を選ぶときだけ使います。⌘F で「Grok Bot」を検索すると、この設定へ直接移動できます。
14.16.3SlackBot、Slack 引き継ぎ、Buzz
Slack 対応には別々の 3 つの機能があります。Messaging Gateway は Slack の受信 Webhook へアラートを送ります。エコシステムキットは既存ボット用の Slack/Teams 引き継ぎを記述します。Full Fleet には、FrontierStack 自身がサーバ管理担当としてワークスペースへ参加する Slack Server Admin Agent Beta も含まれます。
Messaging Gateways で専用 Slack アプリ設定をコピーしてワークスペースへインストールし、Socket Mode の xapp- トークンとボットの xoxb- トークンを Keychain に保存します。公開受信エンドポイントは開きません。招待済みの内部チャンネルで @FrontierStack とメンションするか、アプリへ直接メッセージを送ります。返信は同じスレッドに残り、範囲を制限したスレッド文脈と AI Harness のサーバ・サービス・ネットワーク・監視・インストール用ツールを利用できます。
FrontierStack は依頼者が接続先ワークスペースの正式メンバーであることを確認し、ゲストと Slack Connect の会話を拒否します。任意のチャンネル ID 一覧で範囲をさらに絞れます。既定は読み取り専用の調査です。所有者が変更依頼を有効にした場合も、モデルが選べるのは型付き FrontierStack アクションだけです。認証情報、任意シェル、復旧用シークレット、自己管理は利用できません。すべての変更は Full Fleet、App Lock、外部変更ポリシー、ローカル承認、監査、タスクレシート、結果検証を通過する必要があります。Slack のメッセージ、リアクション、役割の自己申告、ボタンは承認になりません。
FrontierStack はホスト版またはセルフホスト版の Buzz スタックをインストール/接続し、リレーと依存サービスを監視できるうえ、エージェントとして Buzz のチームに参加することもできます。MCP サーバ ▸ Buzz ▸ Buzz で回答をオンにして Buzz Desktop に追加をクリックし、Buzz Desktop でエージェントを作成してランタイムに FrontierStack Server Admin を選びます。Buzz の buzz-acp ハーネスが FrontierStack のヘルパ(frontierstack-core acp)を起動し、ヘルパは各 @メンションを AI 管理者に渡して回答をスレッドに投稿します。Buzz Desktop を使わずセルフホストのリレーで動かす場合は、ペインの表示どおり BUZZ_ACP_AGENT_COMMAND と BUZZ_ACP_AGENT_ARGS を設定します。
チャンネルのテキストは信頼できないものとして扱います。FrontierStack はそれをデータとして囲い、Buzz のターンには認証情報・シェル・設定のツールを提示せず、返信から保存済みの秘密情報を伏字化します。エージェントが誰に応答するかは Buzz が決めます(既定では所有者のみ)。既定では読み取りと診断のみです。Buzz からの変更依頼を許可をオンにするとサービスの再起動や設定変更ができ、その変更はすべて Mac のパネルであなたの承認を待ちます。Buzz のハーネスは ACP の権限確認に自ら応答するため、チャットでの承認は無効です。
インストール済みのfrontierstack CLIも既定でステートレスMCPを使います。frontierstack discoverでプロトコルと機能を機械可読形式で確認でき、frontierstack infoは推奨するステートレス版と対応する従来版の両方を表示します。
初めて接続するクライアントは frontierstack://manual リソースを読むか search_app_help を呼び出し、任意のファイルへアクセスせずに、アプリが記述した手順を学べます。
別のMCPサーバペインでは、新旧どちらのサーバも管理できます。「自動」は最初にserver/discoverを試し、必要な場合だけ従来のinitializeへ切り替えます。HTTPサーバが対応を実証した場合だけ、一覧に緑のステートレス表示が出ます。stdioサーバは外部クライアントがプロセスとハンドシェイクを管理するため、明示的にステートレスとして設定できます。
たとえば AppSignal プリセットは、レビュー済みでバージョン固定の mcp-remote ブリッジを通して AppSignal のホスト型 MCP エンドポイントへ接続します。ブリッジが AppSignal のブラウザ OAuth フローを実行するため、AppSignal トークンはプリセット、クライアント設定、プロセス引数に入りません。このエージェント接続は FrontierStack の決定論的な AppSignal ヘルス監視とは別です。Local Health とアラートには AppSignal サービスペインで個人 API トークンとアプリ ID を使い、エージェントがより深い調査を必要とするときだけ OAuth MCP を使います。委任前に AppSignal のアクセスを読み取り専用で開始し、書き込み可能なツールを確認してください。
同じブリッジで、Claude のコネクタディレクトリに掲載されているベンダ提供のサーバも利用できます。対象は Vercel、Railway、Hostinger、Neon、PlanetScale、Sentry、Honeycomb、PostHog、PagerDuty、incident.io、Rootly、CircleCI、Buildkite、GitLab、Postman、Atlassian(Jira)、Linear、monday.com、Notion、Stripe、Square、PayPal、Zapier、Make、Intercom、Mixpanel、Amplitude、Vanta、Drata です。各ベンダのペインにあるMCP サーバを追加ボタンでベンダ自身のアドレスを追加でき、MCP サーバペインではすべてのプリセット ▸ ベンダ提供のサーバ(Claude コネクタ)にまとめて表示されます。ベンダへのサインインはブラウザで行い、キーはプリセットにコピーされません。
AI 管理者自身がベンダの MCP サーバを使う場合(hosted_mcp ツール)、すべてのプロバイダに同じルールが適用されます。名前から資格情報(API キー、トークン、パスワード、接続文字列)を返す・作成する・ローテーションするとわかるツールは実行前に拒否され、結果に含まれる資格情報は [redacted by FrontierStack] に置き換えられます。FrontierStack の MCP サーバに接続したクライアントにも同じルールが適用され、一覧表示や読み取り専用のツールでは承認を求められません。
いくつかのベンダのペインには、そのペインに保存済みのキーで AI 管理者をベンダ公式の MCP サーバに接続する AI アクセスセクションもあります。対象は Stripe、GitHub、Neon、PostHog、Datadog、PagerDuty、Resend、PlanetScale、Hostinger です。n8n と Grafana のペインでは自分のサーバ(n8n のインスタンスレベル MCP サーバ、セルフホストの mcp-grafana)に接続します。読み取りツールは自由に実行でき、それ以外は書き込みを許可をオンにするまで拒否され、オンにした後も「変更を許可」とあなたの承認が必要です。書き込みがオフのとき、GitHub、Neon、PostHog はベンダ自身の読み取り専用モードで動作します。Stripe の MCP サーバは 2026 年 10 月 31 日以降エージェントタグ付きの制限付きキーしか受け付けないため、Stripe セクションのエージェントキー欄に保存してください。
さらに 20 を超えるベンダには、キーではなくブラウザでのサインインで接続します。対象は Atlassian(Jira、Confluence、Bitbucket)、Linear、monday.com、Vercel、Railway、Square、PayPal、incident.io、Airtable、Sentry、Honeycomb、Make、GitLab、Notion、Mixpanel、Amplitude、Rootly、CircleCI、Buildkite、Postman、Intercom、Vanta、Drata、Grafana Cloud、GitCafe、MongoDB Atlas(自動登録の代わりに FrontierStack が公開しているクライアント情報を読み取ります)です。AI アクセスセクションのサインインボタンを押すと、FrontierStack がベンダに自身を登録し、ブラウザで承認するとトークンがキーチェーンに保存されます。どのツールが読み取りかはツール一覧を取得したときにベンダのサーバから得るため、一度一覧を取得するまではすべての呼び出しが書き込みとして扱われます。
API キーや自動サインインのないサービス(ダッシュボードのみのホストや、Shopify、Slack、HubSpot、Box)には、代わりにアカウント ▸ サインインアカウントセクションがあります。メールまたはユーザ名とパスワードはキーチェーンに保存され、パスワードをコピー(60 秒後にクリップボードから消去)とサインインページを開くが使えます。FrontierStack がウェブサイトに入力することも、AI に表示することもありません。チャネルマネージャには任意の Lodgify アカウントもあり、Lodgify の有料アドオンサービスからゲストデータを自動で取り出す予定の機能のために保存します。

14.5エージェント基盤から FrontierStack を使う設定
AI ツールを接続。FrontierStack は初回起動時(およびこの手順をまだ見ていないインストールでも 1 回)、この Mac の AI ツールに自分のことを伝える前に確認します。見つかったハーネス、コーディングエージェント、エージェントエンジン(Claude Code、Codex、Cursor、Gemini CLI、Grok、Hermes、OpenClaw、Amp、T3 Code、Rex、Intent、Xcode、Claude Desktop)がチェックされた状態で並ぶので、触れてほしくないものはチェックを外します。FrontierStack を伝えるで各ツールに MCP 接続を追加し、ツールが読み込む場所には FrontierStack のスキルも置きます(Claude Code は ~/.claude/skills でユーザスコープに追加、Codex・Gemini CLI・OpenClaw は ~/.agents/skills)。Hermes の Bot Mode プロファイルへの追加や、Grok Bot・ChatGPT・Claude・Gemini などのクラウドアシスタント向けにパブリックコネクタをオンにすることもできます。設定 ▸ 一般 ▸ AI ツールを接続…から再実行できます。Google の Mac 版 Gemini アプリはローカルサーバを読み込めないため、MCP ペインに専用のチェックリストがあります:パブリックコネクタ、gemini.google.com でのカスタムコネクタ、そして カスタマイズ ▸ スキル に貼り付ける用意済みのスキルです。
エージェント基盤から FrontierStack を使う方法は 3 通りあります。コーディングエージェントは前の節のとおり MCP のツールサーバとして呼び出します。オーケストレータは FrontierStack を担当を受け持つワーカーとして使えます(Paperclip のハートビートや A2A タスク)。シェルを使えるエージェントなら frontierstack CLI を操作できます。どの方法でも FrontierStack の役割は同じサーバ管理者で、App Lock・既定の読み取り専用・承認・監査ログも同じように適用されます。
| 基盤 | 接続方法 | 設定する場所 |
|---|---|---|
| Claude Code、Codex CLI、Cursor、Gemini CLI、Claude Desktop、Amp、Grok、Hermes、Xcode、T3 Code、Rex(それぞれのエージェント経由) | FrontierStack の所有者専用ローカルブリッジ経由の MCP | MCP サーバ ▸ AI クライアント ▸ 検出したものを設定 |
| OpenClaw | ローカルブリッジ経由の MCP(OpenClaw 自身の openclaw mcp add で追加)と、~/.agents/skills に置く FrontierStack のスキル | MCP サーバ ▸ AI クライアント ▸ OpenClaw ▸ OpenClaw に追加 |
| Buzz | FrontierStack 自体が Buzz エージェント(ACP)として動作、またはローカルエージェント(Claude Code・Codex・goose)がそのハーネスの MCP 設定と ~/.agents/skills のスキルを使う | MCP ペインの Buzz セクションで Buzz Desktop に追加。ほかのエージェントはハーネスを設定してスキルを書き出す |
| Claude(チャット・Cowork・Claude Code) | FrontierStack プラグイン:2 つのスキル、この Mac の Claude Code と Cowork 用のローカルブリッジ、Web・デスクトップ・スマートフォンの Claude 用のコネクタとしてのクラウドゲートウェイ(FrontierStack アカウントでサインイン。ChatGPT access をオンにします) | Claude の「カスタマイズ ▸ プラグイン」、または Claude Code で /plugin marketplace add richardnorthcott/frontierstack-claude-plugin。以前の claude mcp add frontierstack の登録は削除します |
| Claude Code(フリートの文脈) | フリートスキル(~/.claude/skills/fleet/SKILL.md) | フリートスキル(自動更新をオン。後述) |
| Octop | ローカルの MCP ブリッジをツールとする Octop エキスパートとして、FrontierStack がエキスパートチームに参加 | Octop ペイン ▸ Octop のチームに参加 |
| Paperclip | FrontierStack を会社のエージェントとして雇用し、Paperclip の process アダプタがハートビートごとに実行 | Paperclip ペイン ▸ Paperclip エージェントとして働く |
| OpenClaw、Hermes の監督エージェント、LangGraph、Microsoft や OpenAI 型のマネージャ | A2A 1.0 による委任、または対応するエコシステムキット | MCP サーバ ▸ 委任された A2A タスクを受け付ける、エコシステム設定キット |
| CI/CD、シェルスクリプト、n8n、ターミナルを使えるエージェント | frontierstack CLI(インシデント起点なら CloudEvents) | MCP サーバ、またはリモートコントロールとロック ▸ コマンドライン ▸ CLI をインストール |
| ChatGPT、Codex、カスタム MCP コネクタを使えるクラウドのアシスタント(クラウドの Grok Bot など) | https://frontierstack.app/plugin/mcp の FrontierStack プラグイン。FrontierStack アカウントでサインインし、この Mac が外向きの接続で応答 | MCP サーバ ▸ ChatGPT access(アプリの起動が必要)。有料プランのみ。FrontierStack アカウントのないライセンスは、そこでアカウントにリンクします |
| そのほかのクラウドのエージェント(Devin、Manus) | ペアリング済みで TLS 保護されたネットワーク経路と、範囲を限定した ID のみ | 署名付きリクエストとデバイスペアリング(次の節) |
14.16.4Paperclip:FrontierStack を会社のシステムエンジニアとして雇用する
Paperclip は、組織図・予算・目標・承認を持つ「会社」として複数のエージェントを動かします。FrontierStack はその会社にシステムエンジニア兼ネットワーク管理者として加わり、割り当てられたインフラのイシューを自分のツールで調査して、イシューに結果を報告します。
- Paperclip をこの Mac に、あなた自身のユーザでインストールします:
npx paperclipai onboard --yes。ハートビートは FrontierStack をローカルで実行するため、Paperclip を別のマシンに置くことはできません。 - エージェント運用セクションの Paperclip ペインを開きます。「接続」でエンドポイント(既定は
http://127.0.0.1:3100)を確認します。Paperclip を authenticated モードで動かしている場合は、ボード API キーをトークンとして貼り付けます。 - Paperclip エージェントとして働くで Paperclip のハートビートを受け付けるをオンにし、ハートビートコマンドをインストールを押します。
~/.frontierstack/bin/frontierstack-paperclipが書き込まれます。 - FrontierStack を会社に雇用を開き、会社を読み込むを押して会社を選び、DevOps エージェントとして雇用を押します。
processアダプタを使う、肩書き「System Engineer & Network Administrator」のエージェントが作成されます。代わりにアダプタ設定をコピーを押し、Paperclip で自分で作成したエージェントに貼り付けることもできます。 - Paperclip でイシューを割り当てます(例:「web-02 からのメールがバウンスする原因を調べて」)。進捗は Paperclip の実行ログに表示されます。
ハートビートのたびに、Paperclip は短期のラントークンを付けてハートビートコマンドを実行します。FrontierStack が起動していなければ、コマンドがバックグラウンドで非表示のまま起動します(コールドスタートには最大 2 分ほどかかることがあります)。FrontierStack は割り当てられたイシューをチェックアウトして調査し、コメントしてから、イシューを完了・ブロック・レビュー待ちのいずれかにします。ほかのエージェントがすでにチェックアウトしているイシューには手を出しません。ラントークンはペインに設定した Paperclip サーバにだけ送られます。
Paperclip からの変更依頼を許可は最初はオフで、エージェントは調査と提案だけを行います。オンにしても、型付きの変更はそれぞれ App Lock と外部変更の設定に従い、実行されるか、ペインで1 回だけ承認・5 分間許可・拒否を待つか、拒否されます。
14.16.5Octop:FrontierStack をエキスパートチームに加える
Tencent Cloud の Octop は、複数のユーザーが使うセルフホスト型のアシスタントです。エキスパートは単独でも、ホストエキスパートが仕事を振り分けるチームとしても働きます。チームのメンバーは Octop のエキスパートである必要があるため、FrontierStack は FrontierStack の MCP サーバをツールとするエキスパートとして参加します。推論は Octop のモデルが、実作業は FrontierStack が行います。
- Octop をこの Mac に、あなた自身のユーザでインストールします(
python3 -m pip install --user octopのあとoctop initとoctop run)。Octop は FrontierStack のブリッジをローカルコマンドとして起動するため、Docker や別のマシンの Octop は参加できません。 - MCP サーバをオンにします。
- エージェント運用セクションの Octop ペインを開き、エンドポイント(既定は
http://127.0.0.1:8088)を確認します。 - Octop のチームに参加で Octop のユーザー名とパスワードでサインインし、エキスパートを設定を押します。FrontierStack は Octop のコネクタに
frontierstackMCP サーバを追加し、Octop が起動できることを確かめて見えているツール数を表示したうえで、「FrontierStack」エキスパートを作成して起動します。 - チームの横の参加を押します。Octop のチームには 2 名以上のメンバーが必要なので、先に Octop のダッシュボード(エキスパート ▸ マイチーム)でチームを作成してください。
パスワードはサインインに一度使うだけで保存されません。セッションはサインアウト・FrontierStack のロック・終了で終わり、エキスパートとチームでの位置づけは Octop に残ります。
14.16.6A2A の監督エージェントとマネージャエージェント
A2A 1.0 を話すコーディネータ(OpenClaw や Hermes の監督エージェント、LangGraph のマネージャなど)は、ツールを 1 つずつ呼ぶ代わりに、永続タスクとして FrontierStack に仕事を渡せます。MCP サーバペインで委任された A2A タスクを受け付けるをオンにします(既定はオフ)。この Mac 上のエージェントは localhost で、承認済みのリモートのコーディネータはペア済みで証明書をピン留めした HTTPS 経路で接続します。Agent Card は FrontierStack を説明するだけで、権限は与えません。自然言語の依頼は常に読み取り専用です。変更は型付きの FrontierStack リクエストとして送る必要があり、通常の範囲・App Lock・承認・監査・事後確認を通ります。進捗は SSE で配信され、任意のコールバックは公開 HTTPS のアドレスに限られます。対応するエコシステム設定キットを書き出せば、認証情報を含まない設定例をそのまま使えます。
14.16.7シェルを使えるエージェント、CI、スクリプト
MCP サーバペイン、またはリモートコントロールとロック ▸ コマンドラインから CLI をインストールします。エージェントは frontierstack discover で使える機能を確認し、frontierstack role でサーバ管理者のプロファイルを読み、frontierstack call <ツール> '<json>' でツールを実行できます。認証情報はプロンプトに貼らず、frontierstack run で渡してください(エージェントへの認証情報)。スケジュールや夜間に動く基盤なら、バックグラウンドサービスをオンにして、アプリを閉じていても読み取り専用のチェックが動くようにします(アプリを閉じたまま使う)。
エージェントには、すべてのコマンドに --json を付けるよう指示してください。出力は JSON オブジェクト 1 つだけになり、エラーは {"ok":false,"error":{"code","message"}} で次にすべきことが書かれ、終了コードで失敗の種類がわかります(2 使い方の誤り・3 見つからない・4 拒否・69 FrontierStack が応答しない)。frontierstack help --json で全コマンドのスキーマを確認できます。サーバコマンド(status・server・service・docker・website・kube)は MCP クライアントと同じツールを同じ承認カードで実行するため、どちらの経路でも結果は同じです。docker rm は --yes を付けるまで、削除対象を報告するだけです。Claude Code が読み取り専用のコマンドを毎回確認せずに実行できるようにするには、MCP サーバペインの読み取り専用コマンドを Claude Code で許可を押します。
14.16.8基盤に変更を許す前に
- 最初は読み取り専用で接続し、検出、フリートの健全性、ヘルプ検索を確認します。
- Claude Code にはフリートスキルを渡して、接続前にサーバの構成を把握させます。自動更新をオンにすれば、スキルはフリートの変更に追従します。
- 変更は基盤ごとにオンにします(MCP の変更スイッチ、Paperclip からの変更依頼を許可、型付きの A2A リクエスト)。承認は Mac かペアリング済みの iPhone で行います。
- 作業はエージェント運用 ▸ アクティビティと監査ログで確認します。iPhone のエージェントアクティビティは、プロンプトや記録をコピーせずに状況だけを表示します。
14.6署名付きリクエストとデバイスペアリング(FS1)
コントロールサーバと MCP サーバは、ベアラートークンと TLS の上に、デバイスごとの署名付きリクエスト層 — FS1 — を追加します。各ペアリング済みデバイスは独自の Ed25519 秘密鍵を持ち、すべてのリクエストに署名します。FrontierStack は承認済みデバイスに対して署名を検証するため、トークンが漏れただけでは何も操作できません。
- デバイスごとのスコープ。各デバイスには読み取り専用〜フルコントロールのスコープを Mac で付与します。
- ワンタップ失効。デバイスを削除すれば即座に遮断され、他には影響しません。
- これは iPhone/iPad アプリのペアリングと同じ仕組みです — モバイル版マニュアルと、第 10 章の信頼モデルを参照。
14.7エージェントキーとツールごとのルール
ローカルの MCP クライアントは 1 つのベアラトークンを共有できますが、その場合 FrontierStack はエージェントを自分で送る名前でしか識別できず、その名前はどのプログラムでも名乗れます。エージェントキーは、エージェントごとに専用の認証情報を与えます。権限 ▸ エージェントキーを開きます:
- エージェントを追加…で、1 つのエージェント用のキーを発行します(有効期限も設定可能)。表示は一度だけで、FrontierStack が保存するのは SHA-256 フィンガープリント、短いヒント、名前、日付のみです。この Mac のループバックアドレスで、エージェントの MCP ベアラトークンとして渡してください。
- MCP サーバパネルの Claude Code / Codex / Cursor / Gemini CLI / Claude Desktop に追加ボタンは、クライアント名のキーを作成し、
--agent付きでブリッジを設定します。キーはキーチェーンに保存され、クライアントの設定ファイルには書き込まれません。従来どおりにするには新規設定で共有トークンを使うをオンにします。 - キーによる呼び出しはエージェントの検証済みの名前を持ち、専用のレート制限と承認期間が適用され、すべてのツール呼び出しがキーとともに変更ログに記録されます。一覧には各キーの最終使用日時と最近の呼び出しが表示されます。取り消すとキーはすぐに使えなくなります。
- 各エージェントに専用キーの使用を必須にするをオンにすると、共有トークンは対処方法を示すメッセージとともに拒否されます。
frontierstackコマンドと Buzz には専用キーが発行され、ペア済みのデバイスは引き続き FS1 で署名します。
ツールのルール。コーディネータ、外部エージェント、名前を指定した各エージェント、各エージェントキーに、これらのツールのみのリストとこれらのツールは使用不可のリストを設定できます。パターンは正確なツール名、fleet_* や *_status のような glob、/^dns_(read|list)/ のようにスラッシュで囲んだ正規表現のいずれかです。使用不可リストが優先されます。「のみ」リストは、他のすべてのツールをツール一覧、frontierstack_find_tools、frontierstack_call、A2A の委任作業から隠します。
名前に対するルールは、名前が何も証明しないため絞り込むことしかできません。エージェントキーのルールは代わりにロールのルールを置き換えることもでき、専用キーを持つ CI エージェントにはサービスの再起動を許し、他の外部エージェントには読み取りだけを許す、といった設定ができます。その場合でもアプリ外のすべてに対する上限を超えることはなく、認証情報と FrontierStack 自体の設定には届きません。オンにするには実際のクリックかキー入力が必要です。
14.8外部 AI ジョブ
ライブの MCP に加え、FrontierStack はサブスクの AI CLI にジョブを渡すことができます — タスクをまとめてローカルの Claude(など)にあなたのプランで処理させ、結果をアプリに戻します。これにより、重め・長時間の分析を従量課金なしで実行でき、Data Map(ロケーションごとのデータフロー図)と組み合わせてエージェントに必要な文脈を与えます。外部 AI ジョブは AI スタック(第 15 章)から管理します。
14.9MCP 経由のスキル・ノート・メモリ・Obsidian
外部ハーネスは、内蔵管理者と同じナレッジ面に、同じゲートのもとで到達します。
- スキル — 厳選したプレイブックを発見・オンデマンド読み込み。
- 共有ノート — 「AI と共有」で解除したノートのみ読み取り可能。
- 長期メモリ — 設定や恒常ルールの同じ
memory.md。 - Obsidian — Obsidian ボールトを連携していれば、SOP やランブックを検索し、文書化された手順に従えます(第 12 章)。
14.10フリートスキル — あらゆるエージェント向けのポータブルな文脈
MCP サーバはエージェントにフリートを操作させます。フリートスキルはもう半分 — エージェントが何かに触れる前にあなたの環境を教える静的な文脈です。フリートスキルペインは SKILL.md を生成します。サーバとその役割・OS・サービス・到達方法、ネットワークの場所、KVM と電源ソース、そしてあなた自身のルールと設定の自由記述 — すべてシークレットを除去した上で。これを読んだエージェントは、当て推量ではなく正しいホストを選び、正しい経路を使い、あなたの慣習を尊重します。
~/.claude/skills/fleet/SKILL.md に書き込まれ、Claude Code が自動的に検出します(フロントマターの description: が、そのスキルがいつ関連するかをモデルに伝えます)。MCP 接続エージェントは get_fleet_context ツールで同じ内容を取得でき、その慣習を読む CLI 向けに任意で ~/AGENTS.md も出力できます。自動更新をオンにすると、フリート・場所・KVM が変わってから数秒後にスキルが書き直され、実態からずれません。
地図とリモコンの違いだと考えてください。MCP はリモコン — ライブで認証済み、実行できます。スキルは地図 — セットアップ不要でポータブル、どのエージェントにも安全に渡せ、有能なツールが「正しいやり方で誤ったこと」をするのを防ぎます。
14.11サイトスキル — 1 つの Web サイトを外部エージェントに渡す
フリートスキルはインフラ全体を説明します。サイトスキルは 1 つの Web サイトを、Claude Code や Codex などの外部エージェントが開発作業をできるだけ詳しく説明します。プロジェクトフォルダと git リモート、サイトの配信方法(Apache のバーチャルホスト・管理サイト・Localhost サーバ・Cloudflare Tunnel)、Cloudflare ゾーンと DNS レコード、証明書とドメイン登録の期限、ホスティングの設定、そして DNS・キャッシュ・サーバ上のファイル・証明書・データベース・デプロイを扱う FrontierStack のツールです。書き込み先は ~/.claude/skills/site-<ドメイン>/SKILL.md で、サイトのフォルダの外です。そのフォルダは Web サーバのドキュメントルートであることが多く、中身はすべて公開されるためです。
認証情報は FrontierStack の外に出ません。 サイトのコマンドが使えるスクリプトシークレットを選ぶと、スキルにはその名前だけが入り、名前だけの .env.frontierstack も作られます。エージェントは frontierstack run --env-file … -- <コマンド> でコマンドを実行し、値はその 1 つのプロセスにだけ注入され、出力ではマスクされます。Cloudflare・Web サーバ・データベースには、FrontierStack が保持する認証情報を使う FrontierStack 自身のツールでアクセスします。
サイトスキルは、AI や Apache の新規サイトウィザードでサイトを作成したときに自動で作られ、フォルダを Apache・Nginx・Localhost サーバにリンクしたときは作成を提案します。サイトペイン、Apache のサイトのメニュー、Localhost サーバの AI スキルからいつでも作成・編集できます。「設定 ▸ サイトスキル」で一覧を確認し、自動の動作をオフにできます。サイトのホスティングが変わるとスキルは再生成され、MCP で接続したエージェントは get_fleet_context action=site でも読めます。
14.12ネットワークリポジトリ — エージェントが作業に使えるリポジトリ
フリートスキルはエージェントが読む地図です。ネットワークリポジトリペインはさらに進んで、ネットワーク全体を git リポジトリに書き出します。Claude Code や Codex などのエージェントに渡せば、自分でセットアップを進められます。新しい Mac mini をフリートの標準に揃える、サーバにサイトを立ち上げる、すべてのマシンを Tailscale に参加させる、といった作業です。
| ファイル | 内容 |
|---|---|
AGENTS.md(と CLAUDE.md) | 基本ルール:まずライブの状態を確認する、リポジトリにシークレットを置かない、本番マシン・ルータ・DNS・ファイアウォールを変える前に計画を示して確認する、運用者独自のルール |
GOAL.md | エージェントへの依頼。テンプレートから一度だけ作成され、上書きされません |
COMPUTERS.md、boxes/<name>/ | すべてのマシン:役割、OS、SSH 接続先、LAN と Tailscale のアドレス、サービス、電源。マシンごとの目標状態と冪等な setup.sh |
NETWORK.md | 場所、ルータとファイアウォールルール、LAN デバイス、tailnet、Cloudflare の DNS レコード、ドメイン、pf ルール |
SERVICES.md、POWER.md | サイト、開発サーバ、MCP サーバ、cron、スクリプトライブラリ。UPS、コンセント、KVM、PoE |
HOW_TO_SET_UP_A_BOX.md、scripts/complete-setup.sh、tests/check-fleet.sh、Brewfile | 新しいマシンの手順書、それを適用するスクリプト(ローカルまたは SSH 経由)、読み取り専用の確認、Homebrew の基準 |
.env.frontierstack、frontierstack-network.json、snapshots/ | シークレット名のみ。データとしての全体図(リポジトリからのインポートで読み戻せます)。変化があったときの日付付きコピー |
frontierstack-network.yaml、boxes/<name>/box.yaml、templates/ | 同じ全体図の YAML 版(読みやすく編集しやすい形式)。データとしての各マシン。サーバテンプレート |
フリートスキルと違い、リポジトリには実際の名前とアドレスが入ります(fleet-host-a1b2c3 はセットアップできません)。リポジトリは非公開にしてください。シークレットの値は書き出しません。保存前にすべての値をキーチェーンとスクリプトシークレットと照合し、漏れそうな場合は書き出しを中止します。認証情報を含んでいそうなスクリプト、cron ジョブ、MCP コマンドは除外して一覧表示します。エージェントは、下で説明するとおり Mac 上の frontierstack run か MCP で認証情報を使います。
書き出しのたびに git にコミットし(FrontierStack のファイルのみ)、Push で指定したリモートへご自身の git 認証情報で送れます。GOAL.md に作業内容を書いたら、エージェント用プロンプトをコピーするか、Agent Jobs で開く…で入力済みのジョブから始めます。エージェントを選んで実行するのはご自身です。

14.13サーバテンプレート — 運用中のサーバと同じ構成の新しいサーバ
サーバテンプレートは、ある種類の新しいマシンに必要なものをまとめたものです。ネットワークリポジトリペインのサーバから新規作成…は、運用中のサーバを読み取り、役割と OS、稼働中のサービス、パッケージ(この Mac の場合は Homebrew の一覧)、cron ジョブ、Tailscale、そのサーバを指すルータのファイアウォールルールと Cloudflare の DNS レコードを残します。そのサーバ自身のアドレスは {{ip}}、DNS 名の中のサーバ名は {{slug}} になるため、web1 からデータベースへの接続を許可するルールは、次の Web サーバ用のルールになります。シークレットの値は残しません。
テンプレートは YAML ファイルで、YAML を編集で開き、YAML を読み込む…でほかの場所から追加し、フォルダを表示で場所を確認できます。書き出しのたびに templates/ に書き出されます。新しいサーバ…でテンプレートからサーバを作ると、サーバ一覧に追加され、boxes/<name>/ にテンプレートのパッケージ・cron ジョブ・セットアップ手順を含む setup.sh と、追加すべきファイアウォールルールと DNS レコードを記した README が書かれます。
setup.sh の実行とネットワークの変更は、ご自身で(または承認を得たエージェントが)行います。エージェントも同じ方法でマシンを提案できます。新しいマシンの name、address、user、template を書いた boxes/<name>/box.yaml を作成し、リポジトリからインポートで追加します。
14.14.env を使わずにエージェントへ認証情報を渡す
エージェントがコマンドを実行するのに API キーやパスワードが必要になることはよくあります。チャットに貼り付けたり、リポジトリに置いたりしないでください。スクリプトシークレット(AI 管理者 ▸ スクリプトシークレットバー)に保存し、frontierstack run にこれらのシークレットの使用を許可をオンにして、エージェントに次のように実行させます:
frontierstack run --secret CLOUDFLARE_API_TOKEN -- terraform apply
値はそのコマンドだけに環境変数として渡され、出力では伏せ字になるため、エージェントは値を読まずにコマンドの結果を確認できます。代わりに、名前だけを書いた .env.frontierstack(DB_PASSWORD=fs://DB_PASSWORD)をプロジェクトにコミットしておけば、そのフォルダで frontierstack run -- <command> を実行するだけで値が埋められます。エージェントガイド、書き出したスキル、フリートスキルはいずれも、エージェントにこの方法を使うよう指示しています。すでに認証情報をリポジトリで管理している場合は、リポジトリからインポート…で取り込めます(第 13 章)。
14.15アプリを閉じたまま使う
エージェントが FrontierStack を使うのに、アプリを開いたままにしておく必要はありません。FrontierStack を閉じても MCP と CLI を使えるようにする(MCP サーバペイン、またはリモートコントロールとロック ▸ コマンドライン)は既定でオンで、ログイン時に小さなバックグラウンドサービスが起動し、ローカルの MCP と CLI のポート(既定は 8788 と 8799)を受け持ちます。アプリを閉じている間は、検出と一連の読み取り専用チェックにサービス自身が応答します。WHOIS、IP 分析、証明書の期限、ポートチェック、オープンリレーテスト、ディスク使用量、上位プロセス、メトリクスのスナップショット、hosts ファイルとリモートファイルの読み取り、MySQL/PostgreSQL のテーブルチェックを、この Mac でも保存済みのサーバでも実行できます。それ以外の要求は FrontierStack を非表示で起動して引き渡します。アプリの起動中はすべての要求がそのままアプリに届くため、App Lock・承認・監査ログは従来どおりです。
| 設定 | アプリを閉じている間に加わること |
|---|---|
| FrontierStack を閉じても MCP と CLI を使えるようにする | MCP と frontierstack が応答し続けます。読み取り専用のチェックはアプリなしで実行し、それ以外はアプリを非表示で起動します。 |
| FrontierStack を閉じても監視を続ける | ウォッチ、メールの接続先、TLS 証明書とドメインの更新日、リンクしたサーバの確認を続け、設定済みのチャネルでアラートを送ります。確認するのは常にどちらか一方だけで、アプリを開くとアプリが引き継ぎます。 |
| セキュリティキーが挿さっている間はヘッドレスのエージェントに作業を許可 | セキュリティキーを使う App Lock でも、登録済みのキーが挿さっていれば読み取り専用のチェックを実行でき、frontierstack run がキーで封印されたスクリプトシークレットを開けます。 |
どちらが応答しているかは frontierstack info("answering": "app"・"core"・"none")と frontierstack headless status で確認できます。サービスが起動するのはログイン時で、起動(ブート)時ではありません。再起動や停電のあとも MCP が自動で戻るようにするには、ヘッドレス Mac セットアップで自動ログインをオンにしてください。アプリをアップデートすると、サービスは処理中の要求が終わったあと新しいバージョンで起動し直します。ペアリングした iPhone/iPad も、ペアリングし直すことなくサービス経由で Mac に届きます。電話のダッシュボードの「Mac で FrontierStack を起動」で非表示のまま起動し、「Mac で FrontierStack を開く」でウィンドウを開けます。アプリを閉じている間も、電話へのアラート通知は届きます。
frontierstack run のたびにタッチが必要です(オフにすることもでき、その操作にもタッチが必要です)。PIN を設定したキーでは、封印されたシークレットはアプリでしか開けません。変更は常にアプリを通ります。frontierstack headless key で、登録済みのキーが挿さっていて応答するかを確認できます。14.16どれをいつ使うか
| 使うもの | こんなとき |
|---|---|
| 内蔵 AI 管理者(第 13 章) | 承認カードやコストモニタも含めすべてを 1 つのウィンドウで完結させたく、モデル/キーを用意する、またはローカル実行で構わないとき。 |
| MCP 経由の FrontierStack(本章) | すでに Amp、Claude Code、Cursor で作業しており、コードとサーバに対するガード付き経路を 1 つにしたいとき。 |
| 外部 AI ジョブ(第 15 章) | タスクが重い・長時間で、対話的に実行するよりサブスク CLI に渡したいとき。 |
3 つとも同じガード付きツールと同じライブのアプリ状態に到達します。作業しやすい場所で選んでください。安全性の保証は変わりません。
第 15
AI スタック
AI のもう一つの側面 — サーバを操作するアシスタントではなく、サーバが動かす AI インフラそのもの。エージェントランタイム、ローカルモデル、サンドボックス、GPU、そしてその費用までを、ひとつの画面から見守ります。
前の 2 章は AI が FrontierStack を操作する側でした — 組み込みの管理者(第 13 章)と、自分のツールから MCP 経由でアプリを操作する話(第 14 章)です。本章はその逆です。FrontierStack が実行・監視を手助けする AI インフラそのもの — エージェント基盤、ローカルモデルサーバ、コードサンドボックス、ブラウザ自動化、GPU ファブリック、ML ツール、ガバナンス、そしてそれら全部の費用を扱います。これらは他と同じカタログ上のサービスで、サイドバーの AI 系カテゴリーにまとまっていますが、AI を動かすことが「呼び出す箱」ではなく「運用するスタック」になった今、独立した一章に値します。
15.1Agent Operations
サイドバーから Agent Operations を開くと、エージェント作業をサーバ中心に確認できます。各フリートホストには、到達性・環境・CPU・メモリ・検出済みワーカーが表示され、ホスト詳細と状況に合ったシェルを開けます。この Mac ではローカルシェル、リモートではそのホストに設定した SSH・mosh・SSH3 の信頼設定を使います。同じボードにランタイム健全性、ローカルのコーディングエージェント、FrontierStack セッション、エージェントコンテナもまとまります。
ランタイムは 2 種類です。一つは CLI ランタイム — コマンドラインツールがインストールされ、--version に応答することで検出されます。Amp、DeepSeek Harness Alpha、Claude Code・Gemini CLI・OpenAI Codex、そして Factory の droid が含まれます。もう一つは状態エンドポイントを公開し、ライブメトリクスをポーリングする HTTP ランタイムです。いくつかのクラウドエージェント製品(OpenHands・Manus・Devin・OpenAI Operator・E2B)は、ポーリングではなく接続するカタログ項目として下部に並びます。
| プラットフォーム | 何か |
|---|---|
| OpenClaw | セルフホストのエージェントランタイム。稼働状態とモデルを監視。 |
| Hermes | HTTP でポーリングされ、状態・モデル・セッションを表示するランタイム。 |
| DeerFlow | ディープリサーチ/多段エージェントランタイム。 |
| Paperclip | 複数のエージェントを「会社」(組織図・予算・目標・承認)として運用。ポート 3100。ペインで会社数とエージェント数を集計。authenticated モードではボード API キーを設定。Paperclip エージェントとして働く(ベータ):ハートビートコマンドをインストールし、FrontierStack を会社のシステムエンジニア兼ネットワーク管理者として雇用。変更は引き続き FrontierStack での承認が必要。 |
| LangSmith Deployment | LangChain の Agent Server(旧 LangGraph Platform)。:2024 の langgraph dev または LangSmith のデプロイ(アシスタント・スレッド・実行)。LangSmith サービスは同じキーでトレースプロジェクトの実行数・エラー率・レイテンシ・コストを読み取り、エラー率で通知。LangChain(オープンソース)は langgraph CLI を検出。 |
| CrewAI AMP | CrewAI のホスト型基盤(旧 CrewAI Enterprise)にデプロイしたクルーを、その URL(https://<crew>.crewai.com)と Status タブの Bearer トークンで監視。自分で動かすクルーは CrewAI(オープンソース)サービスで。 |
| Mastra | TypeScript のエージェントとワークフロー。:4111 の mastra dev/mastra start サーバから、エージェント・ワークフロー・実行中や一時停止中のワークフロー実行を表示。 |
| Vercel eve | Vercel のオープンソース TypeScript エージェントフレームワーク。/eve/v1/info(モデル・ツール・スキル・サブエージェント・スケジュール)または公開の /eve/v1/health を読み取り。eve dev は :2000、eve start は :3000。 |
| Microsoft AutoGen | マルチエージェント会話フレームワーク。 |
| Genspark | 自律型エージェント基盤。 |
| Agent Zero | 汎用の自律エージェント。 |
| NVIDIA NemoClaw | NVIDIA のエージェントランタイム。 |
| OpenAI Codex / Claude Code / Gemini CLI / Factory Droid | コーディングエージェント CLI。インストール+バージョンで検出され、オンデマンドとして表示。 |
| Amp | コーディングエージェント CLI とヘッドレスランナー。ローカルまたは SSH 経由でバージョンを検出し、Amp プロセスが動くホストに印を付けます。 |
| DeepSeek Harness(Alpha) | DeepSeek のプラグイン型開発者プレビュー・エージェントハーネス。ローカルまたは SSH 経由で dsh CLI と実行中ジョブを検出します。FrontierStack プラグインは MCP ペインから明示的に導入します。 |
| Docker Agent | YAML で定義したエージェントやマルチエージェントチームを MCP ツール付きで動かす Docker のオープンソースランタイム(旧 cagent)。セッションストアからセッション数・トークン・費用・最後のモデルを読み、実行中のエージェントとサーバを一覧し、エージェントの実行・公開(A2A、MCP、チャット API)と、Docker Hub・ghcr.io・任意のレジストリへの OCI アーティファクトとしての pull/push、取得済みエージェントの更新確認ができます。docker agent プラグインのない Docker では、チェックサムを確認したプラグインだけをこの Mac またはリンク済みサーバにインストールします。 |
| Unreal Agent | Unreal Labs のオープンソース非同期型エージェントハーネス。モデルの推論を止めずにツール呼び出しをバックグラウンドで実行します。OpenAI・Codex・OpenRouter・Fireworks・Ollama で動作。go install(Go 1.27 以上)で導入します。ローカルまたは SSH 経由で unreal-agent-runner を検出し、実行中のホストに印を付けます。 |
| Gemini API CLI | Google の実験的な gemini-api。ほかのエージェントがシェルから呼び出し、Gemini のモデル、メディア生成、ファイル解析、マネージドエージェントを使うためのツールです。ローカルまたは SSH で検出し、インストール・更新・キー設定のコマンドを用意します。GEMINI_API_KEY か自身で保存したキーを読みます。 |
| Qwen Code / Cline / Pi / Oh My Pi / Poolside / OpenCode | その他のターミナル型コーディングエージェント(qwen・cline・pi・omp・pool・opencode)。ローカルまたは SSH 経由でインストールとバージョンを検出し、各ペインにインストール・アップデート・サインインのコマンドがあります。MCP ペインでは Factory Droid・OpenCode・Qwen Code・Cline・Oh My Pi・Poolside にワンクリックで FrontierStack の資格情報を含まないブリッジを追加できます。Pi は設計上 MCP クライアントを持ちません。Hermes Desktop は Hermes ペインに表示され(起動、または hermes desktop でビルド)、Hermes の設定を共有するため Hermes の MCP 設定で対応します。 |
| Antigravity CLI(agy) | 個人の Google アカウント向けの Gemini CLI の後継(2026 年 6 月 18 日以降。Gemini CLI は有料 API キー・Vertex AI・Gemini Code Assist が必要)。ローカルまたは SSH 経由で検出し、ペインから Google のスクリプトで導入・更新し、agy doctor と agy plugin import gemini を実行できます。MCP ペインは CLI・Antigravity アプリ・IDE が共有する ~/.gemini/config/mcp_config.json に FrontierStack を追加します。 |
| Devin CLI / GitHub Copilot CLI / Kiro CLI | Cognition(devin)・GitHub(copilot)・AWS(kiro-cli)のターミナル型コーディングエージェント。ローカルまたは SSH 経由でインストール+バージョンを検出し、インストール・アップデート・サインインのコマンドを提供します。MCP ペインはツールを自動承認せずに、FrontierStack の資格情報を含まないブリッジを ~/.config/devin/mcp_config.json・~/.copilot/mcp-config.json・~/.kiro/settings/mcp.json に追加します。MCP サーバの場所が mcp.servers に変わった OpenCode 2 では、インストール済みのバージョンが読む形式で書き込みます。OpenCode ペインには実行中のターミナル UI、サーバ(ヘルス・作業中セッション)、実行と、読み取り専用のセッションストアから取得した最近のセッション(モデル・トークン・コスト)が表示され、確認のうえでプロセスを停止できます。 |
設定済みランタイムはより広いシステムに連動するため、ランタイムが停止したり、トークンのクォータ(レート制限・429・課金)に達したりすると、アラートが上がり、Local Health ボードの services グループに赤で表示されます。各ランタイムのエンドポイントと資格情報を一度設定すれば、以後は他のサービスと同様に監視されます。

15.2Activity・Work・Runtimes・Routing
4 つの関連ビューが、同じライブ状態を運用タスク別に整理します。
- Activity — ベル型の運用受信箱。Needs You に障害や消失ワーカー、失敗したセッション/ジョブを集め、Running と Recently Finished で現在と最近の作業を分けます。
- Work — ランタイムのキュー、管理者セッション、隔離された Codex/Claude サンドボックスジョブを 3 タブにまとめます。
- Runtimes — ローカル/HTTP エンジン、検出済み T3 Code ワーカー、クラウド基盤を、到達性または資格情報の状態付きで表示します。
- Routing & Integrations — モデル/プロバイダキーとリポジトリアクセスを 2 タブにまとめます。GitHub・GitLab・Bitbucket・Cursor Origin の認証情報は Keychain に保持され、ライブ API 確認も行われます。
エージェントランタイムとコネクターは、一度保存した資格情報で認証します。FrontierStack の他の場所と同様、これらのトークンは macOS Keychain に置かれ、アプリの設定ファイルには入らず、クラウドモデルに送られることもありません。
15.8.1Cursor Origin(Early Beta)
Version Control ▸ Cursor Origin は、Cursor の Git フォージ用ライブダッシュボードです。cursor.com/codebase に表示されるコードベース名を入力すると、最大 30 個のリポジトリと、先頭 12 個にある未対応プルリクエストを表示します。個人利用では Cursor 公式の origin auth login を推奨します。FrontierStack は origin api を呼ぶため、ユーザー認証情報を受け取りません。自動化では、サービスアカウント API 認証情報または短時間有効な Origin インストールトークンを Keychain から利用できます。
oit_ で始まるインストールトークンの有効期間は最長 15 分です。Origin App は GitHub から Origin へミラーされたリポジトリにアクセスできないため、そのリポジトリには FrontierStack の GitHub コネクターを使ってください。Cursor の API または CLI 更新後はコネクターを再確認してください。repository:contents:read を使い、プッシュが必要な場合だけ選択済みリポジトリへ repository:contents:write を追加してください。15.3Work セッション・T3 ワーカー・組み込みターミナル
Work ▸ Sessions は、目標駆動の運用・SaaS ループを単発または定期で実行する場所です。各セッションは管理者と同じガード付きツールを使い、停止可能なトランスクリプトへ各ステップを流します。セッションループからスクリプトは許可されません。
FrontierStack は、127.0.0.1:3773/.well-known/t3/environment が有効な環境レシートを返した場合だけ T3 Code ワーカーと判定します。一般的な Node プロセスや開いているポートだけでは判定しません。検出は読み取り専用・ループバック限定で、T3 のネットワーク公開、ペアリング、スレッド/承認へのアクセスは行いません。該当サーバには macOS と iOS の一覧で T3 マークが付きます。リモートのワーカーについて FrontierStack が示すのは、存在していることだけです。
15.8.2この Mac の T3 Code
エージェント基盤の T3 Code ペインは ~/.t3/userdata/server-runtime.json をたどってローカルサーバを見つけ(:3773 が使用中なら上の番号へ移動します)、公開の環境情報(バージョン、稼働時間、プロセス ID)を読み取ります。
- T3 Code ペインを開きます。T3 Code が未インストールなら、インストール/実行に
brew install --cask t3-code、npx t3@latest、ヘッドレスのt3 serve、バックグラウンドの LaunchAgent を作るt3 service installがあります。 - 読み取り専用で接続を押します。FrontierStack は
t3 auth pairing createで 5 分で期限切れになる 1 回限りの資格情報を作り、orchestration:readに限定したトークンと交換します。デスクトップアプリだけの場合は、ペアリングリンクで接続を開き、T3 Code の設定で作ったペアリングリンクを貼り付けます。 - ペインに、あなたの対応待ち(承認や質問)・作業中・失敗したスレッドがプロジェクト・プロバイダ・モデル・ブランチ付きで並び、今日のトークン数と推定コストがモデル別に、T3 Code とその全エージェントの CPU・メモリが表示されます。
対応待ちのスレッドは Activity ▸ Needs You、ペアリング済み iPhone、サーバアクティビティウィンドウの AI Agents ボードにも表示され、ボードでは T3 Code がサーバと同じように CPU・メモリ付きのタイルになります。承認は T3 Code 側で行います。
15.8.3Rex
Rex は Superlogical のターミナルマルチプレクサで、libghostty をベースにしており、現在はベータ版です。rex バイナリ 1 つがサーバと CLI を兼ねます。Mac アプリにはローカルサーバが含まれ、Linux と FreeBSD のマシンでもサーバを動かせるので、何も接続していなくてもセッションは動き続けます。ペインはインストーラをシェルにパイプせず、リンクを示します。Mac アプリは superlogical.com/rex から入手し、Linux は Rex の手順でインストーラを確認してから実行してください。Debian と Ubuntu には rex という名前の無関係な Perl ツールがあります。FrontierStack は両者を区別し、別のツールを見つけた場合はそう表示します。
エージェント基盤の Rex ペインは rex コマンドで、この Mac、または SSH 欄で指定した連携サーバのサーバを読み取ります。サーバのバージョンと稼働時間、セッション、対応待ち(承認、回答、サインイン)・作業中・失敗を自ら報告しているプログラム、その配下で動くコーディングエージェントの CPU とメモリを表示します。これらのプログラムは Activity ▸ Needs You と Running、サイドバーの対応待ちバッジ、ペアリング済み iPhone にも表示されます。サーバアクティビティウィンドウの AI Agents ボードには、この Mac の Rex と Rex が動く各サーバのタイルがあり、サーバの概要には Rex カードが加わります。そのようなサーバには Mac と iPhone で Rex サーバのバッジが付き、Runtimes の一覧では Rex サーバの下に表示されます。サーバの停止は正常な状態でありアラートにはなりません。個人用サーバは最後のセッションが終わると終了します。
REX_AUTOSTART=0 を設定するので、サーバが起動することはありません。FrontierStack が読み取るのは、セッションのラベル、ブロックのラベル、プログラムが Rex のステータスプロトコル(OSC 7501)で自ら報告する状態だけで、このプロトコルを使わないプログラムは表示されません。画面の内容は読まず、ターミナルへの入力やプロンプトへの回答もできません。回答は Rex で行ってください。ペインからセッションを作成し(rex new)、確認のあとで ID を指定して終了できます(rex kill)。rex attach コマンドはなく、接続できるのは Rex 自身のアプリだけなので、リモートサーバのセッションは Rex のアプリの Add Remote Host… で開きます。エージェント向けに Rex を設定は、クリックしたときだけ表示中のコンソールで rex skill setup を実行し、ペインには rex skill status の結果が表示されます。このコマンドはこの Mac の Claude Code・Codex・OpenCode・Pi に Rex のスキルとフックを追加し、これらのエージェントの設定ファイルを変更するので、コンソールで計画を確認してください。FrontierStack 自身のツールについては、MCP の章の Rex の項を参照してください。
15.8.4Ghostty
Ghostty サービスペイン(Fleet & Remote)で、ターミナルで開くに使うターミナルにできます。Ghostty 1.3 以降ではコマンドは AppleScript API で開き、macOS は Ghostty を制御する許可を一度だけ確認します。古いバージョンや macos-applescript = false の場合はスクリプトファイルを開き、Ghostty が毎回確認します。Ghostty のテーマをアプリ内コンソールで使う(ターミナルスタイルでは Ghostty の現在のテーマを使う)は、Ghostty の設定とそこで指定されたテーマを読み取り、この Mac に合わせてライトまたはダークの版を使います。設定は読み取るだけです。
xterm-ghostty を知らないサーバでは、SSH 経由の tmux・vim・clear で「missing or unsuitable terminal」と表示されます。サーバへの SSH のインストールは、tic -x で Ghostty の記述をそのログイン(~/.terminfo、root ならシステム全体)にコピーし、それ以外は変更しません。Ghostty の設定に shell-integration-features = ssh-env,ssh-terminfo を追加すれば、接続時に Ghostty が行うようにもできます。
15.8.5シェルと継続ターミナルセッション
Agent Operations の各ワーカー行から、ローカルではログイン zsh、リモートでは設定済み SSH/mosh/SSH3 を SwiftTerm の PTY で開けます。Terminal Style は iTerm2・Ghostty・Alacritty・Warp のテーマを取り込めます。
隣の Terminal Sessions ボタンは、そのホスト上の tmux・GNU screen・Zellij・Rex の継続セッションを検出し、そのホストにあるツールとそのバージョン、tmux セッションごとのクライアント数、最終アクティビティ、フォルダを表示します。画面、スクロールバック、コマンド履歴、プロセス環境、コマンドは読み取りません。実 PTY への接続(Rex のセッションは Rex 自身のアプリから開きます)、または確認後に指定したセッションだけを終了できます。tmux のコマンドは正確な名前を指定するので、api を終了するときに api-staging を巻き込むことはありません。終了成功は、ホストからセッション消失を確認できた場合だけ報告します。
同じシートからセッションを開始できます(任意のフォルダを指定できる tmux、screen、Zellij、Rex)。tmux セッションには 接続して他を切り離す、すべてのクライアントを切り離す、名前を変更… もあります。tmux がない場合、tmux をインストールはホストのパッケージマネージャをコンソールで実行し、sudo の入力はそこで行います。tmux サービスペイン(Fleet & Remote)には、この Mac とすべての連携サーバが並び、それぞれこのシートを開けます。
iPhone/iPad の More ▸ Agent Activity では、ペアリングした Mac が把握している実行中エージェント、FrontierStack セッション/ジョブ、ランタイム、ワーカーボックスを状態だけで確認できます。プロンプト、コマンド行、トランスクリプト、環境変数、ターミナル内容、資格情報は送られません。Servers ▸ Host ▸ Terminal Sessions から同じ一覧を確認でき、一覧と終了はペアリング Mac 経由、フルスクリーン接続は Direct SSH の本人鍵とサーバ識別確認が済んだ場合だけ利用できます。
15.4ローカルモデルを動かす
クラウドモデルに何も送らない選択も可能です。FrontierStack はローカル推論サーバを管理し、管理者をそのうちの一つに向けられます。主要なローカルアプリ 3 つは一級市民です。
- Ollama — 最も手軽なローカルモデルランナー。モデルを取得・提供し、管理者のエンジンとして選択できます。
- LM Studio — LM Studio ペインがインストールを検出し、
lmsCLI でロード済みモデルとダウンロード済みを一覧。ヘッダーに「N models loaded」または「no model loaded」を表示します。 - LocalAI — ポート 8080 のカタログサービスとして動かす、セルフホストの OpenAI 互換サーバ。
- MLX ペイン: MLX-LM・oMLX・Splash — Apple シリコンでモデルを動かす 3 つの方法を 1 つのペインで扱います。oMLX(jundot/omlx)は連続バッチ処理と RAM+SSD の KV キャッシュを備えた本格的な推論サーバで、メニューバーアプリか専用の CLI(
omlx start)で動かします。GitHub のリリースからアプリを入れるか、brew tap jundot/omlx https://github.com/jundot/omlxのあとbrew install jundot/omlx/omlxでインストールします。ペインはポート 8000 でサーバが動いているか、どのモデルを提供しているかを表示し、ダッシュボードとチャットを開けます。Splash (Inco AI) はbrew install incoai/tap/splashでインストールし、ペインからポート 8100 で起動するため、ポート 8000 の oMLX と衝突しません。OpenAI と Anthropic の両 API に対応し、M3 以降の Mac、macOS 26.4、メモリ 36 GB が必要です。
これらの他にも、AI / LLMs カテゴリーはセルフホスト推論の棚一式を備えます — vLLM・llama.cpp・Apple の MLX-LM サーバ・Jan・LiteLLM(100 以上のプロバイダをまとめるプロキシ)・Open WebUI・AnythingLLM・PrivateGPT、RAG/ベクトルツール。ローカルで動かす意義はプライバシーと費用です — 管理者のエンジンがローカルモデル(Ollama・ループバックのエンドポイント・Apple のオンデバイスモデル)のとき、Mac から何も出ないので何も秘匿されません — クラウドエンジンを守る秘密情報のスクラブが、そもそも不要なのです。
15.5コードサンドボックスとブラウザ自動化
エージェントには、コードを安全に動かす場所と、ライブな Web を読む手段が要ります。FrontierStack はその両方を管理します。
コードについては、E2B ペインが e2b CLI 経由でセキュアなクラウドサンドボックスを管理します。API キーを入力(Keychain に E2B_API_KEY として保存、または e2b auth login で一度認証)し、一覧・テンプレートからの起動・実行中サンドボックスのkillができます — 後片付け用の Kill All と「一時停止を含める」トグル付き。緑のドットは稼働中、オレンジは一時停止。エージェントが使う、使い捨ての隔離マシンで、そのコードがサーバに触れることはありません。
Web については、AI カテゴリーがブラウザ・クロールツールを含みます — Browserbase(マネージドのヘッドレスブラウザ)・Crawl4AI・Firecrawl・Apify(サイトをモデル向けの整ったテキストに変換)、そしてスクリプト自動化の Playwright。API のないページにもエージェントの「目」を与えます。
15.6GPU インフラとクラスタ
AI が実 GPU 上で動くなら、GPU Fabric ペインがハードウェアの読み取り専用ヘルスを提供します。連携サーバを選び、SSH で診断を実行します — GPU の構成と温度(nvidia-smi)、NVLink 状態、GPU トポロジー行列、NVSwitch Fabric Manager の健全性、DCGM インベントリ(dcgmi)、InfiniBand と RoCE/RDMA リンク、Slurm の GPU 割り当て、コンポーザブルファブリック CLI(WEKA・Liqid・GigaIO)。GPU は Linux ホスト上にあるため、これはフリート内のサーバを対象とします。GPU のないマシンではツールが単に「not found」と報告します。チェックを 1 つ実行するか、Run All Checks で一括実行します。
ホストの GPU 温度と負荷は、エージェントを入れていれば標準のホストモニタ(第 8 章)でも表面化するので、過熱した GPU ボックスは他のマシンと同様にアラートを上げます。スケールアウトには、AI Clusters カテゴリーが Exo(複数の Mac で 1 モデルを実行)・Petals・Distributed Llama・Ray・Slurm・Run:ai を、ML Workbench カテゴリーが学習側の実験管理・パイプラインツール(MLflow・ClearML・Weights & Biases・Kubeflow・JupyterLab)を備えます。
15.7AI ガバナンスと安全性
本番でエージェントを動かすとは、何をするかを見張り、何ができるかを縛ることです。FrontierStack は AI Governance & Safety の棚をカタログ化し、これらのツールが監視対象のランタイムの隣に並ぶようにしています — LLM 可観測性・トレーシングの Langfuse・Helicone・Arize Phoenix、評価・レッドチーミングの Promptfoo・Ragas・garak、入出力検証とプロンプトインジェクション防御の Guardrails AI・NeMo Guardrails・Lakera Guard、そして Credo AI や Holistic AI などのガバナンス基盤。カタログサービスとしてインストール・監視します — 上のボードのエージェントにとっての監査証跡とシートベルトです。
15.8AI コストモニタ
アシスタント、自作エージェント、複数のローカルモデル、外部ハーネスを使うと、費用は複数の場所に分散します。AI Model Costs はそれをひとつの画面に集約します。ヘッダーは今月の合計と予算に対する割合を表示し、色分けバーは 80% でオレンジ、100% で赤になります。AI ツール get_ai_costs は同じ数値を管理者に公開します。
ダッシュボードは 4 つの流れを一緒に追跡します。
- 従量 API 課金 — プロバイダ・モデル別。編集可能な価格表(100 万トークンあたり USD)から計算するか、請求書から直接入力。Connect Accounts は OpenAI・Anthropic・OpenRouter・DeepSeek・Fish Audio(ウォレットのチャージ合計から残りのクレジットを引いて算出)、そしてセルフホストの LiteLLM プロキシから月初来の費用を自動取得します — プロバイダごとに複数アカウント、それぞれ独立した費用行。Apify も同じ並びに入ります。プラットフォーム利用額を日ごとに読み取り、暦月で合計します。アカウントに専用のトークンを入れなければ、Apify ペインのトークンを使います。
- 継続的な支払いすべて(AI に限りません)。プリセットは主要な AI プラン、クラウドとホスティング(Cloudflare・Vercel・DigitalOcean・Hetzner・Backblaze など)、SaaS ツール(Apple One・Google Workspace・1Password・Figma・Adobe など)、ドメイン更新・Apple Developer・TLS 証明書といった年次費用をカバーし、任意の名前を入力することもできます。API のないサービスも、アプリが照会できるサービスと同じように追跡されます。各項目は週次・月次・年次で請求され、行には実際の支払額を表示しつつ、合計は月額に換算されます。項目はカテゴリ別に小計付きで表示され、ヘッダには月額と年額の両方が並びます。行のトグルをオフにすれば削除せずに合計から除外でき、解約を検討する際に便利です。FrontierStack のライセンスはティアに基づいて自動的に追加されます。
- ローカル CLI 使用量 — この Mac の Claude Code と Codex のログをワンクリックでスキャンし、モデル別に今月のトークンを推定として集計。
- 判定モデル — TypeSafe の Jev、Cloudflare の Clef/Clef-flash、OpenAI Decisions(
gpt-6-luna、OpenAI キーを使用)は、テキストではなく確率で型付きの質問に答え、入力トークンのみ課金されます。キーは AI モデル › 判定モデルに保存され(チャットモデルの選択肢には出ません)、FrontierStack が行った呼び出しはレスポンスのトークン数からここに自動記録されます(モデルごとに月 1 行)。AI モデルの行には今月のトークン数と費用が表示されます。KeyRotate は両方のキーを同期します。
コストはサービスごとの請求通貨で発生します — 米国の SaaS は米ドル、欧州のレジストラはユーロ、FrontierStack のライセンスは日本円。各項目は元の金額と通貨をそのまま保持し、合計はすべて選択した表示通貨に換算されます。為替レートは基準日付きで編集でき、ECB の日次フィキシングからいつでも更新可能。変更すると履歴も即座に再計算されます — 会計用ではなく予算管理用の概算です。多くのサービスペインにはプランと料金セクションがあり、サービスを管理するその場で支払額を記録すると、すぐにこの合計に反映されます。
どのサブスクリプションにも更新日を設定できます。設定すると「次回の更新」に表示され、リマインド期間(既定は 7 日前、行ごとに変更可)に入るとアラートが発報されます — ドメインや TLS の有効期限とまったく同じ経路です。自動更新の行は日付を自動的に進め、Mac を数か月起動していなくても追いつきます。手動更新の行はその場に留まり期限超過として表示されます — 実際には課金されていないからです。無料トライアルとして登録した行は有料化する日まで合計に加算されず、課金が始まる前に警告します。解約日を設定した行はその日まで加算されてから停止するため、削減額が実際に効く日どおりに反映されます。代替の行を指定すればその費用が差し引かれ、月 20 ドルのプランを 15 ドルへ乗り換えた場合は 20 ドルではなく 5 ドルの削減と表示されます。更新エディタで料金を変更すると変更前の金額が記録されるので、値上がりしてきたプランはその推移がそのまま見えます。
オープンソースのセルフホスト型サブスクリプション管理ツール Wallos を既に使っている場合、二重に入力する必要はありません。カタログから Wallos を追加し、プロフィール画面で発行した API キーでインスタンスに接続すれば、支出と請求へインポートでサブスクリプション(料金・通貨・請求サイクル・次回支払日・解約日)を取り込めます。取り込んだ項目は他のすべてと同じ合計に加わり、同じ更新アラートの対象になります。再インポートは既に作成した行を更新するだけで重複しないため、Wallos 側を変更するたびに実行して構いません。FrontierStack は Wallos から読み取るだけで書き戻さないので、こちらの操作で向こうのデータが壊れることはありません。
プロバイダ別の内訳(ドーナツチャート)、予算ラインを引いた 6 か月トレンド、そして費用を費用最適化アドバイザーに渡す Ask AI ボタンが、これを締めくくります。請求ヘルス監視は、接続済みの有料サービスをクレジット切れ・上限到達・支払い遅延・アカウント停止についてプローブし、アラートを上げます — キーが止まろうとしているのを、止まる前に捉えます。支出しきい値アラートがこれを補完します。月間予算の 80% または 100% を超えるとアラート(回復通知つき)が発報され、同期済みの各 AI アカウントには個別の月間上限を設定でき、DigitalOcean・Vultr・Linode のペインはプロバイダ API から当月料金を読み取って独自のしきい値を持てます。
キー使用状況の監視(支出と請求)は、AI キーが他人に使われたときに警告します。AI プロバイダは呼び出し元を報告しないため、接続済みの管理者キーで Anthropic・OpenAI・OpenRouter のキー別使用量を 15 分ごとに読み取り、この Mac が送った量と比べます。FrontierStack は自分の呼び出しをキーごとに計測し(保存するのはキーの指紋だけ)、この Mac の Claude Code や Codex の使用も数えられます。説明のつかない使用(特に Mac のスリープ中)、キーの通常パターンを大きく上回る時間帯、一度も使っていないモデル、「未使用」にしたキーの使用、保存していないキーの使用があると、キーをローテーション…ボタン付きのアラートを出します。KeyRotate も同じ計測値を FrontierStack から読み取り、AWS Bedrock の呼び出し元アドレスを CloudTrail で確認します。
保存済みの各キーは、ベンダが表示する伏せ字の値と照合してベンダのキー一覧に結び付けます。照合できないキーや見分けのつかないキーがあるときは、キーのトラッキング ID欄に ID を入力します。OpenAI なら API keys ページのトラッキング ID(key_…)、Anthropic なら apikey_… です。秘密情報ではなく、キーらしい値は受け付けません。ペアリング済みの KeyRotate とはこの ID が同期され(キーのフィンガープリント単位、新しい編集が優先)、KeyRotate は置き換え前のキーを OpenAI・Anthropic・OpenRouter・Mistral・Fireworks・Linode・AWS IAM・Paddle で ID によって失効させられます。
第 V
FrontierStack を業種に合わせて作り替え、そして実務の締めくくり:設定、ライセンス、アップデート、ショートカット、トラブルシューティング。
第 16
ビジネスと業種別ソリューション
FrontierStack は 1,000 を超えるサービスの言葉をすでに話せます。プリセットは、あなたの事業に効く一握りだけを浮かび上がらせ、いくつかのペインがそれを実働するバックオフィスに変えます。
第 6 章のカタログはあえて巨大です。グラフデータベースとレンダーファームとホテルのチャネルマネージャを同時に動かす事業はありません — ですから本章の狙いは幅ではなく絞り込みです。FrontierStack にはプリセットと保存済みのセットアップがあり、関係ないものをすべて隠し、特定の業種が実際に必要とする十数個のサービスだけを浮かび上がらせます。本章では、アプリが調整済みの業種をたどり、それぞれが明らかにするサービスを示します。
新製品ではなく、レンズだと考えてください。これまで見てきた Web スタック・監視・スクリプト・AI 管理者は変わりません。プリセットは、最初に何を見せるかを決めるだけです。
16.1プリセット・セットアップと業種のレンズ
アプリを仕立てる仕組みは 2 つです。プリセットは組み込みの出発点です。プリセット ▸ ドロップシッピングやプリセット ▸ スモールビジネスを選ぶと、サイドバーがその業態に合わせて作り替わります — 適切なサービスカテゴリが現れ、厳選された監視ペインがフロート表示され、残り 900 のサービスのノイズは退きます。セットアップはその表示のあなた自身のスナップショットです(どのサービスを表示し、何をピン留めし、フローティングパレットの配置、そして任意で紐づけるネットワークロケーション)。セットアップペインで作成し、第 3 章のとおりプリセットメニューから切り替えます。
以下のどの業種でもワークフローは同じです。プリセットを適用し、実際に使う 2、3 個のサービスを設定し(API キーを貼る、チャネルを有効化する)、結果をセットアップとして保存して、「すべて表示」へ寄り道した後でも戻れるようにします。
16.2スモールビジネスのプリセット
これは macOS Server の古典的な用途を現代化したものです。1 台の Mac mini が、店舗・スタジオ・事務所のバックオフィスを動かします。スモールビジネスプリセットは、店舗が依存するカテゴリを明らかにし、そのいずれも目の前の Mac でセルフホスト可能で、パート II〜III のバックアップ・監視・堅牢化がその下を支えます。
| 用途 | 表示されるサービス |
|---|---|
| POS | Square(組み込みペイン)、Toast、Lightspeed、Floranext |
| CRM・ロイヤルティ | SuiteCRM、EspoCRM、Odoo CRM(セルフホスト);HubSpot、Zoho、Pipedrive;Square Loyalty、VoucherVault |
| EC・CMS | WooCommerce、Medusa、Saleor;WordPress、Drupal、Ghost;Stripe/PayPal/Square 決済 |
| メーリングリスト | Listmonk、Mautic(セルフホスト);Mailchimp、Brevo、SendGrid |
| メールサーバ | 組み込みのメールサーバペイン、mailcow、Modoboa、SPF/DKIM/DMARC ツール付き |
| カレンダー | Radicale、Baïkal、SOGo(CalDAV/CardDAV);カレンダーヘルスペイン |
| 会計 | ERPNext、Xero、QuickBooks、freee、Money Forward |
| ヘルプデスク | Zammad、osTicket(セルフホスト);Freshdesk(チケット数のライブ表示) |
これらの多くは、単なるカタログ項目以上です。シンプルなキーベース API を持つ CRM・ヘルプデスク・ストア・メーリングリストのサービスは、ペイン内にライブ指標を表示します — Freshdesk は未対応/保留/期限超過のチケット、Shopify は未完了注文、Mailchimp は購読者数 — そして「アラート」をしきい値付きで有効にすれば、滞留がいつものチャネルに届きます(第 11 章)。
16.3ホスピタリティと短期賃貸
バケーションレンタルや小規模ホテル向けに、FrontierStack には組み込みのチャネルマネージャペイン(カテゴリ PMS)があり、物件管理プラットフォームをライブダッシュボードに変えます。これはホスピタリティプリセットの心臓部です。
チャネルマネージャを開き、PMS Health で使っているプラットフォームを 1 つ有効化し、資格情報を貼ります — 入力欄のラベルはプラットフォームごとに変わります。Hostaway は Account ID、Lodgify は API キー、Guesty は client ID+シークレット、Cloudbeds は Bearer トークン、Beds24 は API トークン、自作の AppSheet アプリなら Application Access Key。Check で API エンドポイントの到達性を確認し、Sync でライブ予約を取得します。Reservations(Platform API)セクションがゲスト・チャネル・日付・金額を一覧し、上部に売上と稼働率ダイヤルが出ます。
そのすぐ下の OTA Health には、Airbnb・Booking.com・Vrbo・Expedia などすべての OTA が並びます。OTA はパートナー承認なしでは API を提供しないため、Check はチャネルの iCal エクスポートを取得し、正しいカレンダーであることを確認して予約数を数えます。iCal URL が未設定なら、代わりにエクストラネットの応答を確認します。Sync Calendars を実行するたびに、この表示も更新されます。
すべての OTA にプラットフォーム API が要るわけではありません。Calendar Sync セクションは各チャネルの iCal エクスポートを取り込みます — チャネルに iCal URL を指定するか、Import from ICS Feeds で ICS Feeds ペインに追加した Airbnb・Booking.com・Vrbo・Expedia のフィードを引き込みます — API キーなしで 1 つのカレンダーに統合し、結合した .ics を Save または Copy して Apple・Google・Outlook へ共有できます。
清掃が輪を閉じます。Cleaning & Turnovers — Turno セクションは Turno の API を直接接続するか、より簡単に Copy reservation iCal for Turno で予約カレンダーを渡します — そのカレンダーを Turno に追加すれば、チェックアウトごとに清掃を自動手配します。
騒音も見守れます。Minut ペインで Minut の騒音・在室センサを接続すると、騒音が発生しているとき、センサがオフラインになったとき、バッテリが少なくなったときに FrontierStack が通知します。通知はアラートを経由するので、連絡先プリセットを使って当番の物件管理者に届けられます。先に Minut からアカウントに API アクセスを付与してもらう必要があります(Minut は Enterprise プランを条件にしています)。
直接予約サイトを Lodgify で作っている場合、Lodgify ウェブサイトのドメインセクションで自分のドメインをそのサイトに向けられます。Lodgify(Website Builder ▸ 設定 ▸ ドメイン)でドメインを追加し、表示される DNS レコードを貼り付けます。FrontierStack はドメインの DNS ホスト(Cloudflare、DNSimple、GoDaddy、Hostinger)を検出し、確認後にレコードを設定し、公開 DNS と HTTPS で確認します。Cloudflare では Lodgify が証明書を発行できるよう DNS のみのままにします。反映には最大 48 時間かかることがあります。
16.4ドロップシッピングと EC のフルフィルメント
ドロップシッピングプリセットは、目的に特化した 5 つのカテゴリ — 仕入れ・サプライヤ、プリントオンデマンド、配送・フルフィルメント、在庫同期、利益分析 — を EC プラットフォームと SEO ツールとともに表示し、ドロップシッピングヘルス監視をフロート表示します。
| 段階 | 表示されるサービス |
|---|---|
| 仕入れ・サプライヤ | AliExpress、Alibaba、CJdropshipping、Spocket、Zendrop、SaleHoo、DSers |
| プリントオンデマンド | Printful、Printify、Gelato、Gooten |
| 配送・フルフィルメント | AfterShip、ShipStation、Easyship、Shippo、Pirate Ship |
| 在庫同期 | SkuVault、Cin7、Zoho Inventory、Katana、zaiko Robot |
| 利益分析 | Triple Whale、Lifetimely、BeProfit |
ライブな部分は配送追跡です。ドロップシッピングヘルスは AfterShip の追跡 API を直接読み(キーは一度保存)、配送を状態別に集計します — 輸送中・配達済み・保留、そして滞留や例外フラグのものを問題リストに — 顧客がメールを送ってくる前に、止まった荷物が浮かび上がります。在庫・マーケットプレイス・利益のセクションは、対応するカタログサービスを接続すると点灯する枠です。現在ライブ接続済みは AfterShip で、他は各自のペインから到達できます。
16.5教育
学校やキャンパスは、別のカテゴリ群にまたがって動いています。単一の「教育プリセット」ボタンはありませんが、カタログがきれいにまとめており、セットアップで貴校が使うものだけを正確にピン留めできます。
| 機能 | 表示されるサービス |
|---|---|
| 学籍情報(SIS) | PowerSchool、Infinite Campus、Veracross;openSIS、RosarioSIS(セルフホスト) |
| 学習管理(LMS) | Canvas、Schoology、Google Classroom;Moodle、Open edX、ILIAS、BigBlueButton |
| デジタル図書館 | Koha、DSpace、Greenstone(セルフホスト);EBSCOhost、JSTOR、ProQuest |
| キャンパス・学校運営 | Slate/OpenApply 入学管理、FACTS 学費、StarRez 寮、FET 時間割、ParentSquare |
各行のオープンソースのもの — Moodle、Koha、openSIS — は完全なセルフホスト Web アプリで、第 4 章のスタック上で動かし、他のサイトと同様に監視・バックアップできます。クラウドのものは、ひと目で状態を見るための資格情報ペインから到達します。
16.6ビジネスメッセージングと顧客コミュニケーション
顧客がすでにいる場所で届けること自体がひとつのカテゴリです。ビジネスメッセージングは、地域ごとに重要な店舗↔顧客チャネルを集めます。WhatsApp Business、LINE 公式アカウント、WeChat と Zalo の公式アカウント、KakaoTalk チャネルと AlimTalk、Messenger、Instagram DM、さらに Intercom、ManyChat、Respond.io、WATI、Gorgias といった受信箱・ボットツール。
このうち 3 つは現在ライブの到達性チェックを備えます — WhatsApp Business は認証済み名と品質評価を表示し、Intercom と ManyChat はトークンの有効性を確認 — 残りは資格情報とコンソールへのディープリンクを取り込みます。AI 管理者もこの全体像を見られます。get_messaging_channels ツールが、どのチャネルが接続済みで、どのアラートゲートウェイが実際に送信できるかを報告するので、ブロードキャストがどこへ送れるかを確認させられます。
16.7カレンダー・アカウントと Apple サービス
Mac ベースの事業は Apple の事業でもあります。いくつかの組み込みペインが、サーバに関わる Apple エコシステムの部分を管理します。
- カレンダー。Calendar Discovery は一般的な CalDAV ポート(Radicale 5232、Apple 8008/8443、SOGo 20000、80/443)と
/.well-known/caldavパスをスキャンします。エンドポイントを Calendar Health に追加すれば監視を続けます。古い macOS Server の CalDAV を生かす道でも、Radicale や Baïkal を新規に立てる道でもあります。 - アカウント。Accounts ペインは Open Directory と LDAP を読み、エクスポートしたエントリを
ldapaddで対象ディレクトリへ移行できます — 旧来の Apple ディレクトリサーバからユーザを移すための橋渡しです。 - Apple サービス。Apple Services ペインは、サインイン中の Apple Account、有効な iCloud+ サービス、Find My Mac の状態を報告します — この機が何に紐づいているかの素早い棚卸しです。
- Apple Home。HomeKit のデータベースはシステムアプリに非公開のため、Apple Home ペインはショートカット経由で操作します。Home アクションを含むショートカットでラップしたシーンや自動化は、FrontierStack から実行できるようになり、施設の自動化を運用に結び付けるのに役立ちます。ホームハブの一覧では、どの HomePod または Apple TV が今各ホームを動かし、どれがスタンバイかがわかります。
16.8会計・ヘルスケア・AV・印刷
さらにいくつかの業種がカタログを締めくくり、それぞれセットアップにピン留めするカテゴリとして現れます。
- 会計・ERP。ERPNext(セルフホスト);Xero、QuickBooks、freee、Money Forward、Plaid、Expensify は API で — 店舗の隣の帳簿。
- ヘルスケア。セルフホストする診療所向けのオープンソース臨床システム:OpenEMR、OpenMRS、GNU Health、LibreHealth、Orthanc の DICOM/PACS サーバ、日本の OpenDolphin と ORCA。第 10 章のセキュリティ規律で扱ってください。患者データは賭け金を上げます。
- AV・ステージ。会場・制作向け:DJ プレーヤー・照明・LED・NDI・タイムコードを監視し、ショーを Arm すると消えた機器をアラートで知らせる Show Network ペイン(第 9 章)と AV Feeds ペインに加え、Dante の AoIP、Q-SYS、QLC+ や grandMA 照明、OBS、NDI、Resolume、デジタルサイネージ、Chromecast 制御 — ショーと、その背後のネットワークを 1 つのウィンドウで。Clubs & Bars と Stage & Shows のプリセットでまとめて表示でき、Show Supervisor アドオンで他の構成にも加えられます。
- 印刷プロダクション。印刷・プリプレス業向けの組み込みペインで、Fleet & Remote グループ内、レンダーファームの隣にあります。
ここではどれも詳しい手順は扱いません — サービスごとの詳細は第 6 章にあります。本章の務めは、あなたの事業が何であれ、FrontierStack はそれを支えるサービスをすでに知っており、プリセットかセットアップひとつで、まさにそれらだけを — それ以外は出さずに — 明らかにできると示すことです。
第 17
設定・ライセンス・アップデート
1 つの設定ペインにすべての環境設定が集まり、Ed25519 ライセンスがオフラインでティアを解錠し、Sparkle がアプリを最新に保ち、1 つのスイッチでテレメトリを停止します。
FrontierStack 自身に関する設定はほぼすべて 1 か所、設定ペインに集まります。Ed25519 ライセンスがオフラインでティアを解錠し、Sparkle がアプリを最新に保ち、1 つのスイッチでテレメトリを停止できます。
本章は、FrontierStack が管理するサービスではなくアプリ自体を設定するペインのリファレンスであり、それを取り巻く 3 つのしくみ — ライセンス、アップデート、そして利用状況として何を送り何を送らないか — も扱います。これらの一部は AI 管理者の挙動も左右するため第 13 章を、不具合時は第 18 章を参照してください。
17.1設定ペイン
サイドバーから、またはアプリメニューの ⌘, で開きます。標準の macOS 設定ウィンドウは案内役にすぎず、すべての設定ボタンで同じペインを開きます — FrontierStack は環境設定を 2 つのウィンドウに分けず 1 か所にまとめているためです。ペインは、一般、ライセンス & サブスクリプション、アップデート、プライバシー & 診断、ロケーション、テキストエディタ、画像、メニュー、機能(Capabilities)、そしてクラウド/バックアップ先がグループ化された 1 枚のスクロールフォームです。
一般の 2 つのトグルは、AI も設定できる(後述)ため注目に値します。コマンドをアプリ内コンソールで実行は既定でオンで、インストールやシェルコマンドが FrontierStack のウィンドウにライブ表示され、完了するとペインが自動更新されます。オフにすると、それらのコマンドは Terminal.app に送られます。対話セッション(SSH・REPL)は常に実ターミナルで開きます。連動する外部ターミナル選択(テキストエディタ内)は、「ターミナルで開く」がどのターミナルアプリを使うかを決めます。Terminal・iTerm・Ghostty・Rex(インストール済みなら表示)はコマンドを直接実行し、その他のアプリは実行可能な .command を開きます。

17.2AI が変更できるアプリ設定キー
これらの設定の一部は、get_app_settings と set_app_setting ツールを通じて AI 管理者に公開されています。そのため「既定のブラウザを Firefox に切り替えて」「Presets メニューを非表示にして」と頼むだけで済みます。アシスタントが読み書きできるのは下表のキーのみで、設定のそれ以外はプロンプトから到達できません。
| キー | 型 | 制御内容 |
|---|---|---|
defaultBrowserBundleID | bundle id | すべての「ブラウザで開く」が使うブラウザ。空=システム既定。 |
showInMenuBar | bool | グローバルなメニューバー項目を表示するか。 |
preferInAppConsole | bool | アプリ内コンソールで実行(オン)か Terminal.app に送る(オフ)か。 |
menu.showPresets | bool | メニューバーに Presets メニューを表示。 |
menu.showLocations | bool | メニューバーに Locations メニューを表示。 |
最後の 2 つはペインのメニューセクションにもあり、アプリ設定…(⌘,)ボタンと並びます。使わないメニューは隠し、使う瞬間に再表示できます。
17.3アカウントと詳細設定
設定のすぐ外にある 2 つのペインにも触れておきます。アカウントペイン(サイドバー ▸ Accounts)は課金ではなく、FrontierStack をディレクトリサービス(Active Directory・Microsoft Entra ID・Okta・OpenLDAP・FreeIPA・389 Directory Server・Jamf、ローカル/リモートの Open Directory)に接続し、バインドをテストし、ユーザアカウントをインポートします。OD を動かす Mac の OD ユーザとグループを管理するエディタも備えます。ディレクトリ関連は 第 10 章で他のアイデンティティとともに扱います。
FrontierStack でいう「詳細設定」とは、Web サイトごとの詳細設定シート — Apache の <Directory> と <VirtualHost> を編集する完全な画面(Options フラグ、AllowOverride、Require ルール、ServerAdmin、カスタム ErrorDocument)を指します。Sites ペインのサイトから開き、フォームが扱わない項目はテキストとして編集…で編集できます。第 7 章の Web スタックで解説します。
17.4AI のカスタム指示
AI にとって最も強力な「設定」は、実は設定ペインにはありません。AI 管理者ペイン下部のカスタム指示バーです。そこに書いたテキスト(frontierstack.md として保存)はすべての AI 要求 — アシスタントチャット、ワンショットの Ask AI、スキル、MCP サーバ — に付加されます。そのため、好みの言語やトーン、アシスタントが常に(または決して)すべきこと、想定してよいあなたの構成の事実といった、永続的な設定を一度だけ書くのに最適な場所です。
カスタム指示をクリックしてエディタを展開し、すべての AI プロンプトに指示を追加を切り替えて入力します。うまく機能する例:「常に日本語で返答」「Docker より Homebrew を優先」「業務時間(09:00–18:00)に MySQL を再起動しない」「本番フリートのホストは web1.example.com」。保存ボタンで保存するか、外部エディタで開きます。このファイルはハーネス全体を流れるため、第 13 章の信頼モデルを補完しますが置き換えはしません。指示は AI の挙動を導き、既定の読み取り専用と操作ごとの承認が許されることを統制します。
DB_PASSWORD)だけで、値は実行時に環境変数として注入され、クラウドモデルには決して送られません。スクリプトでは $NAME で参照します。第 13 章参照。17.5コマンドライン PATH と Homebrew
第 2 章の 2 つのリファレンスペインも、同じアプリレベルの制御に属します。コマンドライン PATH ペイン(サイドバー ▸ Command-Line PATH)は、ログインシェルがコマンドを探すディレクトリを表示し、~/.zprofile(または選んだプロファイル)の管理ブロックに独自のディレクトリを追加できます。追加した項目は PATH の先頭に置かれ、新しいターミナルで有効になります。アプリはシェルを通じてツールを深く解決済みのため、これは主に mlx_lm.server のようなコマンドを即座に解決させるためのものです。Homebrew ペインは Homebrew 自体と多くのサービスを支えるフォーミュラをインストール・更新します。両者は初回セットアップで詳しく扱います。本章では、コマンド環境を管理する場所として設定と並んで存在することを記すにとどめます。
17.6ライセンス
FrontierStack は無料ダウンロード+有料ティアです。カード決済は Stripe(米ドル)と Square(日本円)が処理し、韓国ウォンや一部の支払方法での注文は販売代理店の Paddle を通じて行います。カード情報は決済会社が保管し、FrontierStack は決して見ません。購入後、FSK-XXXX-XXXX-XXXX 形式のライセンスコードを受け取ります。設定 ▸ ライセンス & サブスクリプション ▸ ライセンスを有効化…でコードを貼り付けると、この Mac がプランに紐付きます。プロモコードは Web サイトのチェックアウト時に適用します。
| ティア | 価格 | サーバ数 | 備考 |
|---|---|---|---|
| Free モード | チェックアウトのプランではありません | 1 | 有料ライセンスがない場合の内蔵フォールバック。機能は限定的。 |
| Standard | 年額 ¥15,000 または ¥45,000 の買い切り | 10 | Mac 3 台で利用可。10 パックのアドオンで全上限を拡張。買い切りは Lifetime 状態になります。 |
| Standard — Bleeding edge | 年額 ¥7,500 | 10 | 2026 年 12 月 31 日までにお申し込みのキャンペーンサブスクリプション。有効な間は値上げしません。2027 年 1 月 1 日以降の新規お申し込みは年額 ¥15,000。 |
| Full Fleet | 年額 ¥45,000 | 無制限 | すべて+Wild Frontier 更新チャネル。買い切り/Lifetime はありません。 |
スタンダードライセンスは Mac 3 台で利用でき、管理できる範囲は次のとおりです:サーバ 10、ルータ 5、プリンタ 5、スイッチ 10、Wi-Fi アクセスポイント 10、ロケーション 10、KVM 10、UPS 10、IoT 機器・カメラ 20、ドメイン/DNS ゾーン 20、サーバ上のコンテナ・VM 25、ペアリング済み iPhone/iPad 5。10 パックを追加すると、これらすべてがもう 1 単位ずつ増え、Mac も 1 台増えます(2 パックなら基本の 3 倍、Mac 5 台)。フルフリートはすべて無制限です。詳細な比較は frontierstack.app/ja/compare.html にあります。
このセクションは、ティア、状態ピル(アクティブ・買い切り・終了予定・支払い遅延・終了)、更新日(解約済みのサブスクリプションは終了日)、ライセンスコード、この Mac のサーバ上限を表示します。管理/更新…と購入/アップグレード…は Web サイトを開き、⋯ メニューには今すぐ状態を確認・この Mac を無効化・サインアウトがあります。1 ライセンス=1 Mac ですが、年に限られた回数まで新しい Mac へ自分で移管でき、旧 Mac は次回チェックイン時に静かに Free に下がります。同じセルフサービスの状態とシート一覧は、frontierstack.app/license の My Licence Web ページでも確認できます。同じ操作は、サイドバー概要グループの専用 Licences ペインにもあり、設定内のセクションではなく全画面表示で扱いたいときに使えます。
サブスクリプションに対応が必要なときは、メインウインドウにバナーが表示されます。前回の更新料金を決済できなかった場合(お支払い方法を更新…。決済を再試行する間、更新日から 14 日間はプランをそのまま使えます)、解約済みで 30 日以内に終了する場合(更新を再開…)、終了した場合(更新…)です。同じ内容はメールでもお知らせします。通常どおり更新されるサブスクリプションではバナーは表示されません。カードの変更、解約、更新の再開は マイアカウントページ(frontierstack.app/account.html)のお支払いの管理から行えます。日本円のカード決済のサブスクリプションはサポートで承ります。
machine_id = SHA-256(IOPlatformUUID + bundle id) によりこのマシンに紐付くため、アプリを別の Mac にコピーしてもライセンスはコピーされません。アプリは有効期限+猶予期間までトークンを信頼し、その後リフレッシュします。有料プランが失効すると Free モードに降格します。Lifetime は Standard の買い切りにのみ適用され、失効しません。Full Fleet に Lifetime はありません。これは重厚な DRM ではなく抑止策です — 読み取りは動き続け、制限とプレミアム機能のみがゲートされます。17.8.1フルフリートが必要な機能
スタンダードは体験版ではありません。ローカルスタック一式、ローカルのサイト・DNS・証明書、macOS Server/MAMP からの移行、ローカルの稼働状況とアラート、デバイス検出、Homebrew とローカル Docker、DB クラスタの健全性、リモート KVM と電源制御、高度なリモートエージェント、監査・変更ログ、AI による診断と修正案、そして1 台ずつのリモート診断 — これらはすべて含まれます。
フルフリートは多数のマシンを一括操作すること、そして他システムから FrontierStack を動かすことに関する機能です:全サーバへのフリート実行、フリートプッシュと本番反映、リモートホストのサービス保護、AI 自動修復と定期 AI レポート、フリート全体のセキュリティ監査、EDR 集約、Kubernetes のフリート操作、プロダクション印刷フリート、ルータ/ファイアウォールのフリート画面、大規模 SNMP と PoE 再投入、SaaS・業務モニタリング、クラウド棚卸しとコスト集計、Fleet Skill、iPhone からのリモート操作、チーム・管理者制御、アラートのルーティングとエスカレーション、コンテナフリート監視、GPU ワークロード、本番デプロイのワークフロー。MCP クライアントと frontierstack CLI からの変更(同じ承認つき)はスタンダードに含まれます。
17.7アップデート
FrontierStack は Sparkle で自己更新し、アプリ内の UpdateManager が制御します。設定のアップデートセクションがその操作面のすべてです。自動的にアップデートを確認とバックグラウンドでアップデートをダウンロードは既定でオンで、新しいビルドが静かにダウンロードされ、インストールしてアプリを再起動するアップデートボタンが提示されます。今すぐ確認はいつでも押せ、隣に現在のバージョンが表示されます。
アップデートの確認頻度メニューで、バックグラウンド確認の間隔を設定します。どの選択肢でも 1 日 2 回以上確認します。自動(既定)は 12 時間ごとに確認します — Wild Frontier では約 4 時間ごと — 一方、1 日 2 回・6 時間ごと・4 時間ごと・1 時間ごとは固定間隔に固定するので、修正を早く受け取りたいときに選べます。自動確認がオフのあいだは効果がなく、今すぐ確認は間隔に関わらず常に使えます。
チャネルは 2 つです。Stable は既定で、更新に値する内容がたまったときだけ配信されます。Wild Frontier はおよそ 1 日おきの頻繁なバグ修正ビルドを届けます — 変更を依頼して早く修正が欲しいときにオンにします。切り替えは更新チャネルの選択から行います。Wild Frontier の早期ビルドには Full Fleet プランが必要で、他のプランは常に Stable 更新を受け取ります。ティアが対象外の場合はペインがその旨を示します。
17.8テレメトリとプライバシー
FrontierStack は意図的にごく少量の匿名利用データを収集し、そのすべてをオフにできます。プライバシー & 診断セクションには 2 つのトグルがあり、どちらも既定でオンです。匿名の利用状況を共有は frontierstack.app へ小さな日次 ping を送り、クラッシュレポートを送信は技術的なバックトレースを追加します。後者はクラッシュ後に表示される確認に承認した後にのみ送信されます。
利用状況 ping に含まれるのは、ランダムなインストール ID(アカウントもログインもなし)、アプリと macOS のバージョン、ハードウェアモデルとロケール地域、更新チャネル、いずれかの AI 機能を使ったかどうかです。国は IP から Cloudflare がサーバ側で推定します。文書・ファイル内容・設定・鍵・パスワード・個人データは一切送られません。クラッシュレポートは種別・メッセージ・スタックトレースのみを追加し、まずローカルに書き出されるため、何かが Mac を離れる前に拒否できます。
ペインを締めくくる 2 つのセクション:機能(Capabilities)は CAPABILITIES.md と capabilities.json — 全サービスと AI ツールの完全かつライブな記述 — を書き出し、外部 AI エンジンに渡せます。クラウドサービス・バックアップ(ローカル Git)・Amazon S3・クラウド同期(rclone)の各セクションは、設定バックアップとサイトファイルの保存先を構成します。設定・ライセンス・アップデート・プライバシーを把握したら、キーボードショートカット、URL スキーム、トラブルシューティングについて第 18 章へお進みください。
第 18
キーボード・URL スキーム・トラブルシューティング
速い道と安全網。ショートカット、ディープリンク、アプリ自身のログ、そしてまれに起きる不具合への落ち着いた対処。
最終章は、FrontierStack が何をするかを既に分かっていて「もっと速くやりたい」とき、あるいは何かが赤くなって「最短で緑に戻したい」ときに開くリファレンスです。キーボードショートカット、frontierstack:// URL スキーム、アプリ自身のログの在りか、そして実際に起きる不具合の症状→対処表をまとめます。どれも必読ではありませんが、すべてが時間を節約します。
18.1キーボードショートカット
FrontierStack はネイティブ Mac アプリなので、既にご存じのシステムショートカット — ⌘W でウィンドウを閉じる、⌘, で設定、⌘Q で終了 — がすべて使えます。その上に、アプリは小さく意図的な独自セットを追加しています。方針は抑制です。ほとんどの操作は明確にラベル付けされたボタンにあり、ほぼすべてのダイアログは Return で確定・Esc でキャンセルという Mac の慣習に従うため、覚えることはまずありません。
| ショートカット | 動作 | メニュー相当 |
|---|---|---|
| ⌘F | 検索パレットを開く — あらゆるサービス・ツール・ペイン・アクションを名前で見つけて直接ジャンプ。 | ツールバーの虫眼鏡ボタン |
| ⌘? | アプリ内ヘルプウィンドウを開く。 | ヘルプ ▸ FrontierStack Help |
| ⌘⌥⇧W | すべてのフローティングパレットを閉じる。 | Palettes ▸ Close All Palettes |
| Return | シートの既定ボタン(保存・OK・追加・インストール…)を確定。 | 強調表示されたボタン |
| Esc | 現在のシートやパレットをキャンセル/閉じる。 | キャンセル/完了ボタン |
残りの操作はメニューバーが担います。専用の Services・Locations・Monitors・Presets・Palettes メニューから、キーボードを離れずにサービス切り替え・ロケーション変更・モニタの切り替え・保存済みプリセットの適用・フローティングパレットの取り出しができます。これらは本物のメニューコマンドなので、macOS のシステム設定 ▸ キーボード ▸ キーボードショートカット ▸ アプリのショートカットから、任意のものに独自のキーを割り当てられます — FrontierStack を追加し、メニュー項目名を正確に入力してキーを選びます。
複数のウインドウやパレットが互いを隠している場合は、Palettes › Organize Windows & Palettes を選びます。FrontierStack は接続ディスプレイごとに、メニューバーと Dock を除いた領域へ、表示中でリサイズ可能なウインドウを並べます。通常ウインドウには主領域を割り当て、余裕があればフローティングパレットをサイド列に並べ、ミニパレットはコンパクトなままにします。ウインドウは現在のディスプレイに残り、確認、承認などの一時パネルは移動しません。整列後のパレット位置は、手動レイアウトと同様に現在の Setup へ保存されます。
18.2frontierstack:// URL スキーム
FrontierStack は frontierstack:// URL スキームを登録しており、任意のペイン・サーバ・サービスへ直接ディープリンクできます。そうした URL を開くとアプリが前面に出て遷移します — 該当するサイドバーグループを展開し、目的地までスクロールします。これにより、ノート内のリンク、ショートカットのアクション、スクリプトの一行が、あなた(やチームメイト)を的確な画面へ送り出せます。
Terminal からは open で起動し、ショートカットでは 「URL を開く」アクションを使い、ノートや Web ページでは普通のリンクになります。形式は次のとおりです。
| URL | 移動先 |
|---|---|
frontierstack://server/<名前または id> | そのフリートホストのペイン(不明な場合は Local Health にフォールバック)。 |
frontierstack://website/<ドメイン> | Sites ペイン。 |
frontierstack://container/<名前> | Docker ペイン。 |
frontierstack://pane/<名前> | 表示名による任意のペイン。例:pane/Security・pane/Apache・pane/Alerts。空白は URL エンコード(%20)。 |
frontierstack://service/<カタログ id> | id によるカタログサービス。 |
frontierstack://kube/<context> | Kubernetes コンテキスト(引数なしなら Clusters ペイン)。 |
frontierstack://security · ://alerts · ://health | Security・Alerts・Local Health ペインへのショートカット。 |
frontierstack://device/<id> · ://wifi/<ssid> · ://zone/<id> | 発見されたデバイス、Wi-Fi ネットワーク、Cloudflare ゾーン。 |
frontierstack://open?sel=<raw> | 厳密なエスケープハッチ:内部の選択値を正確に往復します。 |
実例をいくつか挙げます。
open "frontierstack://pane/Security"
open "frontierstack://server/mac-mini-office"
open "frontierstack://website/example.com"
ディープリンクは FrontierStack における自動化の結合組織です。プリセットはそのダッシュボードへ飛ぶリンクを含められます。Notes 内のランブックは各手順を、実施するペインへリンクできます。アラートメッセージは故障中のサービスを指し示せます。同じスキームは AI 向けの 2 つの読み取り専用リソース — frontierstack://capabilities と frontierstack://health — も名付けており、これらは MCP サーバが公開します(第 14 章)。
frontierstack:// URL はウィンドウを前面に出してロック解除を促しますが、遷移はしません — 外部の自動化がロック画面の裏でアプリを動かすことはできません。18.3アプリ自身のログを読む
Logs ペインはこの Mac だけでなく、どのマシンのログも読めます。上部のマシンピッカーで連携サーバに切り替えると、ログは SSH 経由、または FrontierStack モニタが入っていればそれ経由で取得されます(モニタは root で動作するため、特権ログにも sudo は不要)。ソースのメニューには、選んだマシンで実際に稼働しているサービス(Apache・Nginx・MySQL・PHP-FPM・PostgreSQL・Redis・Ollama)が先頭に並び、続いて見つかったその他のログファイル、最後にクラッシュレポートと診断 — Console が表示する .ips・.crash・.panic を、ユーザとシステム両方の DiagnosticReports フォルダから新しい順に — が表示されます。
サービスではなく FrontierStack 自身が何をしたかを知りたいときは、深さの順に 3 か所を見ます。
- 変更ログ(監査)。Logs ペインには、設定・構成のすべての変更を、実行した主体 — ユーザ、AI ハーネス、Web コントロールパネル、MCP、自動化 — とともに記録する変更ログがあります。サービスが停止した際、何が触れて誰/何が責任を負うのかを正確に教えてくれます — どんな障害でも最初に問うべき最速の質問です。
- アプリ内コンソール。インストールやシェルコマンドはアプリ内の本物のターミナルウィンドウ(PTY なのでパスワード入力や y/n の質問が機能します)で実行され、出力をライブで流します。アプリはコマンドの終了を把握するため、起動元のペインを更新します。コンソールのアクションバーから記録をエクスポートできます。配色は Overview の Terminal Style で変更します。
- ログファイル。FrontierStack は自身のログを
~/Library/Logs/FrontierStackに書き込みます。生の記録が欲しいときは、このフォルダを Finder で開くか Console.app で読みます — アプリの挙動を最も詳細に記録しています。自動エクスポート機能(Overview ▸ Settings)は、これらのログ・変更ログ・設定バックアップをスケジュールでフォルダへコピーできます。
read_log ツールは source に "frontierstack"(~/Library/Logs/FrontierStack を追尾)、"os"(システムログ)、あるいは "nginx" や "postfix" のようなサービス名を受け付けます。連携サーバでは SSH 経由で読み、出力はクラウドモデルに届く前に上限が設けられ秘密情報が伏せられます(第 13 章)。18.4よくある問題と対処
FrontierStack の不具合のほとんどは、小さく見慣れた一群のいずれかで、アプリは通常その対処を面倒な作業ではなくボタンとして提供します。下表は、目にする症状を、緑へ戻る最短経路に対応づけます。
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| サービスが起動しない。 | ポートが使用中、バイナリ未インストール、または設定が不正。 | そのサービスのペインを開いて状態の詳細を読みます。Ports in Use で競合を見つけ、Homebrew でインストール/修復し、Web サーバは再読込前に設定を検証します。AI 管理者の repair_service は、あなたの承認のもとで一般的なケースを診断・修正します。 |
| 連携サーバの状態ドットが赤:「Permission denied (publickey)」。 | サーバ再インストール、ホストキー変更、またはアプリの SSH キーが未導入。 | Repair SSH access(AI の repair_ssh_access ツール、第 8 章)を実行します。古いホストキーを消去し、ボールトの秘密として保存された一回限りのログインパスワードを使ってアプリの管理キーを再導入します — パスワードはローカルで読まれ、モデルには決して送られません。成功するとドットが緑になります。 |
| アラートが届かない。 | チャネルの設定ミス:誤ったトークン、未確認の送信者、不正な webhook。 | Alerts を開きます。送信ごとの配信エラーセクションが、どのチャネルがなぜ失敗したかを正確に示します。資格情報を直して配信エラーをクリアし、頼る前にテスト送信で確認します(第 11 章)。 |
| AI が操作を拒否する。 | 既定で読み取り専用、または特定のサーバトグルがオフ。 | AI 管理者で変更を許可(スクリプト実行を求める場合はスクリプトを許可も)、または該当するサーバごとのトグルを有効にします。拒否メッセージが該当設定を名指しします — 下記参照。 |
| Homebrew がない。 | 多くのサービスが依存するパッケージマネージャが未インストール。 | Homebrew ペイン(Overview)を開きます。アプリが Homebrew をインストールでき、その後は各サービスのペインからフォーミュラをワンクリック導入できます。 |
| 証明書が信頼されない。 | システムがまだ信頼していない自己署名/ローカル証明書。 | ローカル開発では、信頼されたローカル CA を導入する mkcert で発行します。公開サイトには Let's Encrypt を使います。どちらも Certificates と Sites ▸ TLS タブで管理します(第 7 章・第 10 章)。 |
| macOS が「互換性のないソフトウェアが含まれています」と表示する。 | 同梱の El Capitan/Sierra 用モニタビルド。10.14 より前のロードコマンドを使うため macOS 26/27 が検出します。 | 対処は不要です。通知のみでアプリに影響はありません — 下の注を参照。 |
LC_VERSION_MIN_MACOSX ロードコマンドを出力します。これを最近の macOS が警告します。このファイルは配布物で、あなたの Mac で実行されることはなく、「インストールと登録」の際に SSH で古い Intel サーバへコピーされるだけです。ユニバーサルバイナリや Intel バイナリが原因ではありません — アプリ内の他の実行ファイルはすべて arm64 か現行のユニバーサルビルドで、32 ビットコードは一切含みません。警告はそのまま閉じて構いません。18.5MCP オンボーディングと「行動につながる拒否」
機会を得た最初の一度だけ、アプリは — 一度だけ — 外部の AI ツールから FrontierStack を使えるよう MCP サーバを起動するか尋ねます。プロンプトはモデルを率直に説明します。サーバは localhost のみで、既定で読み取り専用です。Start MCP server で有効化し、同じシート上の任意のトグルでその場で変更を許可できます。Not now は単に「尋ねられたこと」を記録します。サーバは、あなたが選ぶまでオフのままです(第 14 章)。
MCP ペインの Detected AI clients は Amp・Grok・Codex CLI・Cursor・Gemini CLI・Claude Code・Claude Desktop・Xcode を認識します。クライアントを個別に設定するか、Set Up Detected を使うか、起動時の設定を有効にします。FrontierStack は無関係な MCP エントリをすべて保持し、自身の所有者専用ブリッジだけを導入します。ベアラートークンはクライアント設定ではなく Keychain に残ります。Amp のリモートスレッドやターミナル機能は有効にしません。ネットワーク公開 MCP は別の明示的な選択で、TLS 上のペアリング済み・スコープ設定済み呼び出し元に限ります。
クライアントが「connection refused」を報告する、または FrontierStack のブリッジ(~/Library/Application Support/FrontierStack/mcp-bridge)の起動に失敗する。ブリッジ自体は正常で、FrontierStack が閉じていてバックグラウンドサービスも動いていなかったため、MCP ポートに応答するものがありませんでした。現在のブリッジは最初の呼び出しで FrontierStack を非表示で起動して待つため、再起動後の最初のリクエストには最大 1 分ほどかかることがあります。MCP ペインがバックグラウンドサービスを起動できないと警告する場合はバックグラウンドサービスを修復をクリックします。macOS が登録元のアプリのコピーからの起動を拒否していた状態で、再ビルドやアプリの移動のあとに起きます。各クライアントの行には修復の結果が表示され、未インストールのクライアントには Install… があります。
MCP ペインに「Address already in use」と表示される。別のプロセスがまだ MCP ポートを占有しています。多くはクラッシュまたはハングした FrontierStack(以前のビルドや、固まったバックグラウンドサービス)がポートを解放しなかったものです。FrontierStack はまず数秒間再試行します。それでも空かない場合は、再起動の横のポートを解放…をクリックします。ポートを使っているプロセスを探し、まだ応答するかを確認します。応答しなくなった FrontierStack は確認画面で名前を示したうえで停止し、空いたポートで MCP を再起動します。まだ応答するコピーや FrontierStack 以外のプログラムは決して停止しません。ペインに名前が表示されるので、自分で終了するか別のポートを選んでください。
これは、アプリ全体を貫く小さな設計思想につながります。外部の面 — MCP サーバ、App Shortcut、AI — が変更を拒否するとき、ただ「いいえ」とは言いません。理由とどこで有効化するかを伝えます。拒否はたとえば「変更がオフです — AI 管理者で有効にしてください」、あるいは MCP なら「Remote Control & Lock ▸ MCP で有効にしてください」と読めます。自分で切り替えるのではなくアプリへ誘導するのは、信頼モデルの核心です — リモートのエージェントは依頼できても、許可できるのはこの Mac の前にいるあなただけです。ゆえに拒否は決して行き止まりではなく、あなたを前へ進める唯一のトグルへの道標です。
18.6メールのトラブルシューティング:クライアントから送信できない
メールの障害は積み重なります。証明書の問題が TLS の問題を隠し、それがログインの問題を、さらに差出人の問題を隠します。順番に確認し、サーバを調べる前にクライアントがすでに持っている証拠を読みましょう。
まずクライアント自身の記録から。Apple Mail でウインドウ › 接続診断 › 詳細を表示を選びます。接続のログを有効にしていれば、Mail はすべての記録を ~/Library/Containers/com.apple.mail/Data/Library/Logs/Mail/ にサーバとアカウントごとのファイルで残すので、1 時間前に失敗した送信も読めます。大事なのは RCPT TO の次の応答です。
| 記録に出ているもの | 意味 | 対処 |
|---|---|---|
| 応答がなく、接続がタイムアウトする。 | 送信サーバ名がメールを扱わない場所を指しているか、ポートが塞がれています。Cloudflare でプロキシしている DNS レコードがよくある原因で、オレンジの雲は Web の通信しか運びません。 | dig で名前を引き、Cloudflare のアドレスが返るならレコードをDNS のみにします。 |
| ポート 465 で接続を拒否される。 | サーバが SMTPS を提供していません。 | TLS を有効にしてポート 587 か 25 を使います。 |
送信ボタンが灰色でエラーもなく、250-AUTH 行がない。 | クライアントの TLS がオフで、サーバは STARTTLS の後にしかログインを提供しません。 | TLS をオン、認証をパスワードにし、接続設定を自動的に管理のチェックを外します。 |
554 … Forged sender … must be authenticated | クライアントがログインしていません。社内で送れたのは社内ネットワークが信頼されているためで、VPN のアドレスは通常信頼されません。 | 認証をパスワードにします。 |
235 Authentication successful の直後に 553 … not owned by user X | ログインは成功しましたが、X はその差出人アドレスで送信できません。Mail が別のアカウントの送信サーバに切り替えたか、サーバの送信者ログイン対応表でそのアドレスの行に X がありません。X はサーバ側でのログイン名で、入力した名前と異なることがあります。 | そのアカウント自身の送信サーバを直す。または AI 管理者に X の追加を依頼する(mail_relay › add_sender_login。あなたの承認が必要)。または表にすでにある名前でログインする。 |
454 TLS not available due to local problem | サーバの TLS 設定が壊れています。 | 古いサーバではプロトコル名を列挙し、>=TLSv1.2 とは書きません。 |
| 証明書の警告。 | 名前が証明書の subjectAltName にないか、有効期間が 398 日を超えています。 | クライアントが使うすべてのホスト名を含め、397 日以内で再発行します。 |
250 2.0.0 Ok: queued as … | 受け付けられました。 | まだ配信ではありません。届いたことを確認します。 |
mynetworks にあるホストは差出人とログインの確認を完全に素通りするため、社内からの試験は自宅のノートの証明にならず、自宅からの試験はログイン済みユーザの証明になりません。両方を試します。サーバ側は FrontierStack が引き受けます。読み取り専用のスクリプトプリセットMail: why modern clients can't send (legacy Server.app) がサーバ側の障害を修正順にすべて確認し、サーバのメールサーバポリシーセクションが SMTP ポリシー全体を監査します。AI 管理者はサーバのログイン失敗を読み、上の対処を行えます — 変更はすべて承認カードを通ります。
18.7メールのパスワード総当たりを遮断する
インターネット上のメールサーバは、IMAP・POP・SMTP でパスワードを推測するボットに昼夜を問わず狙われます。対策は fail2ban で知られる方法です。ログインの失敗を監視し、失敗を繰り返すアドレスを遮断します。肝心なのは、しきい値を正しく決めることと、自分たちの利用者を決して遮断しないことです。
遮断する前に測る。AI 管理者にサーバのログイン失敗を読ませます。古い Apple Server.app ホストでは /Library/Logs/Mail/mail-err.log にあり、Postfix が Dovecot でパスワードを確認するため 3 つのプロトコルすべてを網羅します。多くはゆっくりした分散型で、100 以上のアドレスがそれぞれ 5〜30 分おきにしか試しません。fail2ban の通常のルール(10 分間に 5 回)ではほとんど捕まらないため、24 時間単位で数えます。
| サーバ | 使うもの | 設定 |
|---|---|---|
| Linux | fail2ban の dovecot と postfix-sasl ジェイル(または CrowdSec)。 | findtime = 1d、maxretry = 3、bantime.increment = true。ignoreip にプライベート範囲と社内の IP。 |
| 古い Apple Server.app の Mac | スクリプトのプリセットMail: block password-guessing, fail2ban-style (legacy Server.app)。 | 組み込み:24 時間に 3 回失敗したら 1 日、次は 7 日、以降は 30 日遮断。 |
プリセットはメールサーバを対象にし、root で実行をオンにします。最初はドライランで、遮断する予定のアドレスをすべて一覧するだけで何も変更しません。一覧を読んだら MODE を install に変えてもう一度実行します。遮断は pf のアンカーに置くため /etc/pf.conf は編集せず、バックグラウンドのジョブが毎分確認するので再起動しても元に戻りません。システムの Python を使い、Homebrew は不要です。
遮断しないアドレスもあります。プライベートアドレス(社内ネットワーク、VPN、Tailscale)、/var/db/mailguard/ignore に書いたもの、過去 14 日以内にログインに成功したアドレスです。自宅でパスワードを打ち間違えた利用者は遮断されません。
実際の通信で確かめる。10 分ほど後、遮断したアドレスから新しい失敗が出ていないことを確認します。残る失敗はまだ見ていないアドレスからだけのはずです。普段は sudo /usr/local/mailguard/mailguard.py status で遮断の一覧、unban で解除、/var/log/mailguard.log に判断の記録が残ります。遮断したアドレスは受信メールを含むすべてのポートで遮断されます。ボットはポート 25 でもログインするためです。遮断はすべて期限で解除されます。AI 管理者のスキルMail Password-Guessing Block がこの手順を案内します。
18.8ほかでは開くのに、ここだけ開かないサイト
DNS は応答するのにサイトが開かないとき、原因は自分、ISP、途中のネットワーク、サイトのホストのいずれにもありえます。推測では半日かかりますが、場所を変えて結果を比べれば 1 分で決着します。ツールの接続プローブがそれを行います(AI 管理者に「なぜサイトが開かないか」と尋ねても同じです)。
| 比べるもの | 分かること |
|---|---|
この Mac の DNS と Cloudflare・Google、/etc/hosts | ローカルのフィルタや古いレコードか、どこにも存在しない名前か。 |
| ポートへの接続と HTTP リクエスト | 拒否(サーバが断った)か、無応答(途中で破棄)か、ファイアウォールの 403 か。 |
| 経路(各ホップをネットワーク名付きで) | パケットが止まる場所。多くのネットワークはホップを隠すので、手がかりであって証拠ではありません。 |
| Globalping のプローブ(世界各地、国内、自分の ISP)からの同じリクエスト | 全員にとって停止中か、ISP 単位のブロックか、自分だけのブロックか。 |
| 連携サーバからの同じリクエスト | 別のグローバルアドレスから出るサーバがつながれば、ブロックは自分のアドレスに対するものです。 |
判定は、接続がどこで止まり、なぜか、次に何をすべきかを示し、宛先側の問題であればそのネットワークの NOC や abuse の連絡先も挙げます。ルータの内側の機器はすべて 1 つのグローバルアドレスを共有するため、ブロックの原因は 1 台の機器の行動であることがよくあります。ログイン失敗の繰り返し、大量のクロール、頻繁すぎる監視などです。
18.9ヘルプを得る
即時性の順に、3 つのリソースがあなたを支えます。
- アプリ内ヘルプウィンドウ。⌘? を押すかヘルプ ▸ FrontierStack Help を選ぶと、AI 機能を先頭に、すべてのペインとサービスを網羅した内蔵ドキュメントが開きます。多くのペインには該当セクションでヘルプを開く ? ボタンもあります。ヘルプの「アプリで開く」リンクは、説明対象のペインへ直接ジャンプします — ヘルプは開いたまま、メインウィンドウが前面に出ます。
- ウェブのヘルプと FAQ。frontierstack.app/help はアプリ内ドキュメントを閲覧しやすい形で映し、FAQ は新規ユーザが最もよく尋ねる質問に答えます。移行ガイドは frontierstack.app/migrate にあります。
- サポートとフィードバック。frontierstack.app/support の 2 つの短いフォームがチームに直接届きます。不具合のときはサポート依頼(macOS のバージョンを添えてください)、改善案には機能リクエスト。どちらもアプリを作る人々へ直接届きます。
これでマニュアルは閉じます。あなたは FrontierStack を、コントロールパネルとして、監視システムとして、AI 管理者として知りました。Web スタックを立ち上げ、フリートを連携し、境界を堅牢化し、アラートを配線し、そして — 慎重に、あなたの条件で — サーバを把握し修正できるアシスタントに鍵を委ねました。あとは実践あるのみです。アプリ内ヘルプには ⌘? をいつも近くに、最新情報は frontierstack.app へ、そして次に欲しいものはサポートからお聞かせください。FrontierStack でサーバを運用してくださり、ありがとうございます。