Skip to content

Commit 14cf5dd

Browse files
author
GitHub Copilot CLI
committed
fix: ホスト名解決の問題を修正し、Tailscaleデーモンの起動手順を改善
1 parent af2a9ce commit 14cf5dd

File tree

4 files changed

+200
-3
lines changed

4 files changed

+200
-3
lines changed

.devcontainer/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,5 @@ RUN chmod +x /usr/local/bin/entrypoint.sh
9494
USER vscode
9595
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
9696
CMD ["sleep", "infinity"]
97+
# /etc/hosts にホスト名を追加
98+
RUN echo "127.0.0.1 $(hostname)" >> /etc/hosts

.devcontainer/startup.sh

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ set -e
33

44
echo "🌟 OpenCode ECC DevContainer 起動中..."
55

6+
# Fix hostname resolution first
7+
fix_hostname() {
8+
HOSTNAME=$(hostname)
9+
if ! grep -q "127.0.0.1.*$HOSTNAME" /etc/hosts 2>/dev/null; then
10+
echo "🔧 ホスト名解決問題を修正中..."
11+
echo "127.0.0.1 $HOSTNAME" | sudo tee -a /etc/hosts >/dev/null
12+
echo "✅ ホスト名解決修正完了: $HOSTNAME"
13+
fi
14+
}
15+
16+
fix_hostname
17+
618
# 環境変数の読み込み
719
if [ -f "/workspace/.env" ]; then
820
echo "📂 .env ファイルから環境変数読み込み..."
@@ -38,10 +50,32 @@ fi
3850
if [ "$AUTH_KEY_VALID" = "true" ]; then
3951
echo "🔗 Tailscale設定検出 - リモートアクセス有効モードで起動"
4052

41-
# Tailscale 認証・起動
53+
# Tailscaled daemon setup with proper initialization
4254
echo " Tailscaled サービス開始..."
43-
sudo tailscaled --state-dir=/var/lib/tailscale --socket=/run/tailscale/tailscaled.sock &
44-
sleep 3
55+
56+
# Ensure Tailscale directories exist
57+
sudo mkdir -p /var/lib/tailscale
58+
sudo mkdir -p /run/tailscale
59+
60+
# Stop any existing tailscaled process
61+
sudo pkill -f tailscaled || true
62+
sleep 1
63+
64+
# Start tailscaled in userspace mode for containers
65+
sudo tailscaled \
66+
--state-dir=/var/lib/tailscale \
67+
--socket=/run/tailscale/tailscaled.sock \
68+
--tun=userspace-networking \
69+
--socks5-server=localhost:1055 &
70+
71+
# Wait for daemon to be ready
72+
for i in {1..10}; do
73+
if sudo tailscale status >/dev/null 2>&1; then
74+
break
75+
fi
76+
echo " ⏳ Tailscale デーモン起動待機中... ($i/10)"
77+
sleep 2
78+
done
4579

4680
echo " Tailscale認証中..."
4781
if sudo tailscale up --auth-key="$TAILSCALE_AUTH_KEY" --hostname="${TAILSCALE_HOSTNAME:-opencode-dev}" --accept-routes; then

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@ DevContainer に自動インストールされる拡張機能:
388388
## 🐛 トラブルシューティング
389389

390390
### **ECC ajv エラー**
391+
391392
```
392393
Error: Cannot find module 'ajv'
393394
```
@@ -407,6 +408,7 @@ npm install # 全依存関係再インストール
407408
```
408409

409410
### **ECC 権限エラー**
411+
410412
```
411413
Error: EACCES: permission denied, mkdir '/home/vscode/.opencode/.agents/skills/api-design'
412414
```
@@ -424,6 +426,31 @@ chmod -R 755 /home/vscode/.opencode
424426
chmod -R u+w /home/vscode/.opencode
425427
```
426428

429+
### **DevContainer 起動エラー**
430+
431+
``
432+
sudo: unable to resolve host opencode-dev: Name or service not known
433+
failed to connect to local tailscaled; it doesn't appear to be running
434+
435+
````
436+
437+
**原因**: ホスト名未登録 + Tailscaleデーモン未起動
438+
**解決方法**:
439+
440+
```bash
441+
# 🔍 包括的診断実行
442+
./scripts/diagnose-devcontainer.sh
443+
444+
# 🔧 自動修正(startup.shに組み込み済み)
445+
# - ホスト名自動登録
446+
# - Tailscaleデーモン適切な起動
447+
# - エラーハンドリング強化
448+
449+
# または手動修正
450+
echo "127.0.0.1 $(hostname)" | sudo tee -a /etc/hosts
451+
sudo tailscaled --tun=userspace-networking --socks5-server=localhost:1055 &
452+
````
453+
427454
### **DevContainer ビルド失敗**
428455

429456
```

scripts/diagnose-devcontainer.sh

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#!/bin/bash
2+
3+
# DevContainer diagnostic tool
4+
# DevContainer診断ツール
5+
6+
echo "🔍 DevContainer 環境診断開始..."
7+
echo ""
8+
9+
# System info
10+
echo "📊 システム情報:"
11+
echo " OS: $(lsb_release -d 2>/dev/null | cut -f2 || uname -a)"
12+
echo " Hostname: $(hostname)"
13+
echo " User: $(whoami)"
14+
echo " PWD: $(pwd)"
15+
echo ""
16+
17+
# Check hostname resolution
18+
echo "🔧 ホスト名解決チェック:"
19+
HOSTNAME=$(hostname)
20+
if grep -q "127.0.0.1.*$HOSTNAME" /etc/hosts 2>/dev/null; then
21+
echo " ✅ /etc/hosts に $HOSTNAME が登録済み"
22+
else
23+
echo " ❌ /etc/hosts に $HOSTNAME が未登録"
24+
echo " 修正コマンド: echo '127.0.0.1 $HOSTNAME' | sudo tee -a /etc/hosts"
25+
fi
26+
echo ""
27+
28+
# Check Tailscale installation
29+
echo "🦎 Tailscale インストールチェック:"
30+
if command -v tailscale >/dev/null 2>&1; then
31+
echo " ✅ Tailscale インストール済み"
32+
echo " バージョン: $(tailscale version --short 2>/dev/null || echo 'バージョン取得失敗')"
33+
34+
# Check tailscaled daemon
35+
if pgrep -x tailscaled >/dev/null; then
36+
echo " ✅ tailscaled デーモン動作中"
37+
echo " PID: $(pgrep -x tailscaled)"
38+
else
39+
echo " ❌ tailscaled デーモン停止中"
40+
echo " 起動コマンド: sudo tailscaled --tun=userspace-networking --socks5-server=localhost:1055 &"
41+
fi
42+
43+
# Check Tailscale status
44+
if sudo tailscale status >/dev/null 2>&1; then
45+
echo " ✅ Tailscale 接続確認済み"
46+
sudo tailscale status | head -3 | sed 's/^/ /'
47+
else
48+
echo " ⚠️ Tailscale 未接続または未認証"
49+
echo " 認証コマンド: sudo tailscale up --auth-key=YOUR_KEY"
50+
fi
51+
else
52+
echo " ❌ Tailscale 未インストール"
53+
echo " インストールコマンド: curl -fsSL https://tailscale.com/install.sh | sh"
54+
fi
55+
echo ""
56+
57+
# Check environment file
58+
echo "🔧 環境設定チェック:"
59+
if [ -f ".env" ]; then
60+
echo " ✅ .env ファイル存在"
61+
source .env 2>/dev/null || true
62+
63+
if [ -n "$TAILSCALE_AUTH_KEY" ] && [ "$TAILSCALE_AUTH_KEY" != "your-auth-key-here" ] && [ "$TAILSCALE_AUTH_KEY" != "tskey-auth-xxxxxxxxxxxxxxxxx" ]; then
64+
echo " ✅ TAILSCALE_AUTH_KEY 設定済み"
65+
echo " キー: ${TAILSCALE_AUTH_KEY:0:15}..."
66+
else
67+
echo " ⚠️ TAILSCALE_AUTH_KEY 未設定またはテンプレート値"
68+
echo " 設定コマンド: ./scripts/setup-tailscale.sh"
69+
fi
70+
else
71+
echo " ❌ .env ファイル不在"
72+
if [ -f ".env.template" ]; then
73+
echo " 作成コマンド: cp .env.template .env"
74+
fi
75+
fi
76+
echo ""
77+
78+
# Check services
79+
echo "🚀 サービス状態チェック:"
80+
81+
# OpenCode CLI
82+
if pgrep -f "opencode start" >/dev/null; then
83+
echo " ✅ OpenCode CLI 動作中"
84+
echo " PID: $(pgrep -f 'opencode start')"
85+
else
86+
echo " ❌ OpenCode CLI 停止中"
87+
echo " 起動コマンド: opencode start"
88+
fi
89+
90+
# OpenChamber
91+
if pgrep -f "openchamber" >/dev/null; then
92+
echo " ✅ OpenChamber 動作中"
93+
echo " PID: $(pgrep -f 'openchamber')"
94+
else
95+
echo " ❌ OpenChamber 停止中"
96+
echo " 起動コマンド: npm run openchamber"
97+
fi
98+
echo ""
99+
100+
# Network connectivity test
101+
echo "🌐 ネットワーク接続テスト:"
102+
if curl -s --max-time 3 http://localhost:4095/health >/dev/null 2>&1; then
103+
echo " ✅ OpenCode CLI (localhost:4095) 応答あり"
104+
else
105+
echo " ❌ OpenCode CLI (localhost:4095) 応答なし"
106+
fi
107+
108+
if curl -s --max-time 3 http://localhost:3000 >/dev/null 2>&1; then
109+
echo " ✅ OpenChamber (localhost:3000) 応答あり"
110+
else
111+
echo " ❌ OpenChamber (localhost:3000) 応答なし"
112+
fi
113+
echo ""
114+
115+
# Recommendations
116+
echo "💡 推奨アクション:"
117+
if ! grep -q "127.0.0.1.*$(hostname)" /etc/hosts 2>/dev/null; then
118+
echo " 1. ホスト名解決修正: echo '127.0.0.1 $(hostname)' | sudo tee -a /etc/hosts"
119+
fi
120+
121+
if ! pgrep -x tailscaled >/dev/null && command -v tailscale >/dev/null 2>&1; then
122+
echo " 2. Tailscaled 起動: sudo tailscaled --tun=userspace-networking --socks5-server=localhost:1055 &"
123+
fi
124+
125+
if [ ! -f ".env" ]; then
126+
echo " 3. 環境ファイル作成: cp .env.template .env"
127+
fi
128+
129+
if [ -f ".env" ] && source .env 2>/dev/null && ([ -z "$TAILSCALE_AUTH_KEY" ] || [ "$TAILSCALE_AUTH_KEY" = "your-auth-key-here" ]); then
130+
echo " 4. Tailscale設定: ./scripts/setup-tailscale.sh"
131+
fi
132+
133+
echo ""
134+
echo "🔍 診断完了 - 上記の推奨アクションを実行してください"

0 commit comments

Comments
 (0)