TROUBLESHOOTING.md•5.09 kB
# ngrok トラブルシューティング
## 問題: ngrokが停止できない
### 症状
```bash
$ ./stop-all.sh
❌ ngrokの停止に失敗しました
⚠️ PID 435524 の停止に失敗しました(権限がない可能性)
```
### 原因
1. ngrokが別のターミナル/セッションで起動されている
2. snapパッケージとして実行されている
3. 別のユーザー権限で実行されている
## 解決方法
### 方法1: 専用スクリプトを使用(推奨)
```bash
./stop-ngrok.sh
```
このスクリプトは:
- すべてのngrokプロセスを検索
- ユーザー情報を表示
- 対話的に停止を確認
- 適切な停止方法を提案
### 方法2: 元のターミナルで停止
ngrokを起動したターミナルを見つけて:
```bash
Ctrl+C
```
### 方法3: プロセスIDで直接停止
```bash
# プロセスを確認
ps aux | grep ngrok
# 出力例:
# akari 435524 0.6 0.1 1253112 29284 ? Sl 15:31 0:40 /snap/ngrok/315/ngrok http --region=jp 8000
# 停止
kill -9 435524
# または
pkill -9 -f "ngrok"
```
### 方法4: ポートベースで停止
```bash
# ポート4040を使用しているプロセスを停止
lsof -ti:4040 | xargs kill -9
# ポート4041を使用しているプロセスを停止
lsof -ti:4041 | xargs kill -9
```
### 方法5: sudo権限で強制停止
```bash
sudo pkill -9 ngrok
```
### 方法6: systemctl経由(snap版の場合)
```bash
# snapサービスを確認
snap services ngrok
# 停止(もしサービスとして実行されている場合)
sudo snap stop ngrok
# 完全に無効化
sudo snap disable ngrok
```
## ngrokが複数起動している場合
### すべてのngrokプロセスを確認
```bash
ps aux | grep ngrok
# または
pgrep -a ngrok
```
### すべて停止
```bash
# 自分のプロセスのみ
pkill -u $(whoami) ngrok
# すべてのngrok(sudo必要な場合あり)
sudo pkill -9 ngrok
```
## ポートの競合を防ぐ
### 起動前にチェック
```bash
# ポート4040がすでに使用されているか確認
lsof -i:4040
# 使用中の場合、そのプロセスを停止
lsof -ti:4040 | xargs kill -9
```
### 別のポートでngrokを起動
ngrokのWeb UIはデフォルトで4040を使用しますが、変更可能:
```bash
ngrok http 3000 --web-addr=localhost:4050
```
## ngrok管理画面から確認
ブラウザで以下にアクセス:
```
http://localhost:4040
```
または
```
http://localhost:4041
```
管理画面からもトンネルの停止が可能です。
## 問題: "endpoint already online" エラー
### エラーメッセージ
```
failed to start tunnel: The endpoint 'https://xxx.ngrok-free.dev' is already online.
ERR_NGROK_334
```
### 原因
同じngrokアカウントで同じエンドポイントが既に使用中
### 解決方法
#### 1. 既存のトンネルを停止
```bash
./stop-ngrok.sh
```
#### 2. ngrokダッシュボードで確認
https://dashboard.ngrok.com/tunnels/agents
既存のトンネルを終了
#### 3. 別のリージョン/設定で起動
```bash
# ランダムなURLを使用
ngrok http 3000
# 別のリージョン
ngrok http 3000 --region=us
# または固定ドメインを使用(有料プラン)
ngrok http 3000 --domain=your-custom-domain.ngrok-free.app
```
## 予防策
### 1. start-all.shを使用
自動的に既存プロセスをチェック・停止:
```bash
./start-all.sh
```
### 2. クリーンアップの習慣
作業終了時に必ず停止:
```bash
./stop-all.sh
```
### 3. エイリアスを設定
`.bashrc` または `.zshrc` に追加:
```bash
alias mcp-start='cd ~/MMMCP/universal-mcp-server && ./start-all.sh'
alias mcp-stop='cd ~/MMMCP/universal-mcp-server && ./stop-all.sh'
alias mcp-status='ps aux | grep -E "node.*build|ngrok"'
```
## デバッグコマンド集
### プロセス確認
```bash
# ngrokプロセス
ps aux | grep ngrok
# MCPサーバープロセス
ps aux | grep "node.*build"
# 両方
ps aux | grep -E "ngrok|node.*build"
```
### ポート確認
```bash
# ポート3000(MCPサーバー)
lsof -i:3000
# ポート4040/4041(ngrok管理画面)
lsof -i:4040,4041
# すべての開いているポート
netstat -tulpn | grep LISTEN
```
### リソース使用状況
```bash
# CPUとメモリ使用率
ps aux | grep -E "ngrok|node.*build" | awk '{print $1, $2, $3, $4, $11}'
```
### ログ確認
```bash
# MCPサーバーログ
tail -f logs/combined.log
# エラーのみ
tail -f logs/error.log
# ngrokログ(もしファイルに出力している場合)
tail -f /tmp/ngrok-*.log
```
## それでも解決しない場合
### 最終手段: システム再起動
すべての方法が失敗した場合:
```bash
sudo reboot
```
再起動後、cleanな状態から:
```bash
./start-all.sh
```
### サポート
問題が継続する場合は、以下の情報を集めて報告:
```bash
# システム情報
uname -a
ngrok version
# プロセス情報
ps aux | grep ngrok
# ポート情報
lsof -i:3000,4040,4041
# ログ
tail -50 logs/error.log
```