Claude / scripts /entrypoint.sh
Cnass's picture
Upload 6 files
0829899 verified
Raw History Blame Contribute Delete
3.45 kB
#!/bin/bash
set -euo pipefail
DATA_DIR="/data"
PERSIST=0
# /data'nin gercekten baglanmis bir Storage Bucket olup olmadigini anlamak icin
# device id'sini kok dosya sistemiyle karsilastiriyoruz. Sadece "dizin var mi"
# kontrolu yaniltici olur: bucket bagli degilse bile mkdir ile ayni isimde
# gecici (restart'ta silinen) bir dizin olusabilir.
if [ -d "$DATA_DIR" ]; then
root_dev="$(stat -c %d / 2>/dev/null || echo root)"
data_dev="$(stat -c %d "$DATA_DIR" 2>/dev/null || echo data)"
if [ "$root_dev" != "$data_dev" ]; then
PERSIST=1
fi
fi
if [ "$PERSIST" = "1" ]; then
export HOME="$DATA_DIR/home"
export WORKSPACE_ROOT="$DATA_DIR/workspace"
mkdir -p "$HOME" "$WORKSPACE_ROOT"
echo "[entrypoint] Storage Bucket algilandi -> kalicilik AKTIF (HOME=$HOME)"
else
export HOME="${HOME:-/home/node}"
export WORKSPACE_ROOT="$HOME/workspace"
mkdir -p "$WORKSPACE_ROOT"
echo "[entrypoint] UYARI: /data baglanmis bir Storage Bucket degil (ya da hic bagli degil)."
echo "[entrypoint] Kalicilik KAPALI: container yeniden basladiginda (uyku/redeploy) TUM oturum verisi ve giris bilgisi silinecek."
fi
mkdir -p "$HOME/.claude"
# Calisirken kurulan programlar (npm install -g, uv tool install) ve MCP
# sunuculari HOME altina gider: bucket bagliyken kalici olan tek yer orasi;
# /tmp ve sistem klasorleri her yeniden baslatmada imajdaki haline doner.
# Terminal (login kabugu) ayni ayari /etc/profile.d/agentweb.sh'ten alir.
case ":$PATH:" in
*":$HOME/.local/bin:"*) ;;
*) export PATH="$HOME/.local/bin:$PATH" ;;
esac
export NPM_CONFIG_PREFIX="$HOME/.local"
export AGENTWEB_PERSISTENT="$PERSIST"
mkdir -p "$HOME/.local/bin" "$HOME/mcp-servers"
if ! grep -q "Agent Web terminali" "$HOME/.bashrc" 2>/dev/null; then
# Eski surumun karsilama satirini temizle (kalici HOME'da iki kez gorunmesin).
if [ -f "$HOME/.bashrc" ]; then
sed -i '/Claude Code Web hazir/d' "$HOME/.bashrc"
fi
cat >> "$HOME/.bashrc" <<'EOF'
echo "Agent Web terminali. Claude Code'u baslatmak icin: claude"
EOF
fi
# Roblox Studio (Vinegar) destegi kaldirildi: eski surumun kalici HOME'da
# biraktigi veriyi (Wine/Studio dosyalari ve Roblox giris yedegi dahil) sil.
for old in \
"$HOME/.config/agentweb/roblox" \
"$HOME/.config/vinegar" \
"$HOME/.local/share/agentweb-roblox" \
"$HOME/.robloxstudio-mcp" \
"$HOME/.local/state/robloxstudio-mcp"; do
if [ -e "$old" ]; then
rm -rf -- "$old" && echo "[entrypoint] Eski Roblox verisi silindi: $old"
fi
done
rmdir "$HOME/.config/agentweb" 2>/dev/null || true
# git, github.com icin GitHub MCP ile ayni token'i kullansin (GH_TOKEN /
# GITHUB_TOKEN secret'i ya da `gh auth login`). Kendi ayarin varsa dokunulmaz.
helper="!/app/scripts/git-credential-github"
current_helpers="$(git config --global --get-all credential.https://github.com.helper 2>/dev/null || true)"
if [ -z "$current_helpers" ]; then
git config --global credential.https://github.com.helper "$helper" \
|| echo "[entrypoint] UYARI: git icin GitHub kimlik yardimcisi ayarlanamadi."
fi
# MCP sunuculari (Playwright tarayici, Agent Web araclari, GitHub) her oturumda
# ayni ayarlarla: ~/.claude.json icinde kullanici kapsamli tanim. rtk: Bash
# ciktilarini kisaltan hook. Hata verirlerse uygulama yine acilir.
node /app/scripts/setup-mcp.js || echo "[entrypoint] UYARI: MCP varsayilanlari uygulanamadi."
node /app/scripts/setup-rtk.js || echo "[entrypoint] UYARI: rtk ayarlanamadi."
exec node /app/server/index.js