FrontierStack ユーザマニュアル マニュアル先頭
デスクトップ版マニュアル モバイル版マニュアル English한국어 frontierstack.app ↗
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 へ保存されます。

ヒント覚える価値のある唯一のショートカットは ⌘F です。1,000 を超えるサービスと 100 以上のツールペインがあるため、サイドバーのスクロールは遅くなりがちですが、検索パレットは一瞬です。サービス名の数文字、ポート番号、あるいは firewall のようなキーワードを入力して Return を押してください。

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 · ://healthSecurity・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)は、これらのログ・変更ログ・設定バックアップをスケジュールでフォルダへコピーできます。
メモAI 管理者が同じログを代わりに読めます。read_log ツールは source に "frontierstack"(~/Library/Logs/FrontierStack を追尾)、"os"(システムログ)、あるいは "nginx" や "postfix" のようなサービス名を受け付けます。連携サーバでは SSH 経由で読み、出力はクラウドモデルに届く前に上限が設けられ秘密情報が伏せられます(第 13 章)。
スクリーンショット追加予定
図 18.1. Logs ペイン:左にサーバのエラーログ、右にアプリ自身の ★ 変更ログ(監査)。各エントリに主体(ユーザ・AI・Web・MCP・自動化)のタグが付く。撮影手順: 複数の主体が混在する状態で変更ログを表示した Logs ペインを開いて撮影

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 が検出します。対処は不要です。通知のみでアプリに影響はありません — 下の注を参照。
メモmacOS 27 の互換性警告は 1 つの配布物ファイルについてのもので、Intel 対応が原因ではありません。FrontierStack は OS X 10.11 までの古い Mac にオンホストモニタを導入できるよう、複数のビルドを同梱しています(第 8 章)。最も古いものは El Capitan を対象にできる最後のバージョンである Go 1.14 でコンパイルされており、そのリンカは 10.14 より前の 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 の前にいるあなただけです。ゆえに拒否は決して行き止まりではなく、あなたを前へ進める唯一のトグルへの道標です。

行動につながる拒否
拒否は指示として読みましょう。「AI 管理者で変更を有効に」「Remote Control & Lock でロック解除を」「トークンに Zone:Create が必要」 — いずれも、あなたと操作の間に立つ正確な設定を名指しします。アプリは設計上これらをリモートから上書きしないため、メッセージこそが自分で直す最速の道です。

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 時間単位で数えます。

サーバ使うもの設定
Linuxfail2ban の 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 日以内にログインに成功したアドレスです。自宅でパスワードを打ち間違えた利用者は遮断されません。

注意実在のユーザ名を知っているボットは、パスワードを忘れた利用者とまったく同じに見えます。本人が「その失敗は自分だ」と言っても、除外する前にアドレスの場所を調べてください。別の国のホスティングや VPN 事業者のアドレスで、多数のアドレスから一斉に来ているなら、そのアカウントへの攻撃です。除外せず、パスワードを再設定します。

実際の通信で確かめる。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 台の機器の行動であることがよくあります。ログイン失敗の繰り返し、大量のクロール、頻繁すぎる監視などです。

ヒント判定が自分のアドレスへのブロックで、ファイアウォールが OPNsense なら、迂回する…でアウトバウンド NAT ルールを追加し、そのネットワーク宛ての通信をグローバルアドレス帯の空きアドレスから出せます。FrontierStack は適用後に接続を確認し、効果がなければルールを削除します。これは回避策なので、ブロック解除の依頼も行ってください。

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 でサーバを運用してくださり、ありがとうございます。

FrontierStack ユーザマニュアル · バージョン 1.0.0 · 第 18