dexter / entrypoint.sh
Leon4gr45's picture
Unified Dexter/HedgeFund/OpenBB app (FastAPI single-server, no Caddy/terminal) (part 3)
907fe34 verified
Raw
History Blame Contribute Delete
1.51 kB
#!/usr/bin/env bash
# Restore dexter/hedge state from GitHub (source of truth; /data is ephemeral),
# then start all services under supervisord. No Caddy, no terminal.
set -euo pipefail
export HOME=/home/user
STATE_DIR=/data/hedge-state
DEXTER_LINK=/app/dexter/.dexter
HEDGE_DB=/app/ai-hedge-fund/app/backend/hedge_fund.db
if [[ -n "${GIT_BACKUP_TOKEN:-}" && -n "${STATE_REPO:-}" ]]; then
REMOTE="https://x-access-token:${GIT_BACKUP_TOKEN}@github.com/${STATE_REPO}.git"
echo "[entrypoint] restoring state from ${STATE_REPO} ..."
rm -rf "$STATE_DIR"
if git clone --depth 1 "$REMOTE" "$STATE_DIR" 2>/dev/null; then
echo "[entrypoint] state repo cloned."
else
echo "[entrypoint] clone failed/empty — starting fresh."
mkdir -p "$STATE_DIR"; git -C "$STATE_DIR" init -q
git -C "$STATE_DIR" remote add origin "$REMOTE" 2>/dev/null || true
fi
git -C "$STATE_DIR" config user.email "dexter-space@users.noreply.github.com"
git -C "$STATE_DIR" config user.name "dexter-space"
mkdir -p "$STATE_DIR/dexter" "$STATE_DIR/hedge"
rm -rf "$DEXTER_LINK"; ln -s "$STATE_DIR/dexter" "$DEXTER_LINK"
mkdir -p "$(dirname "$HEDGE_DB")"; rm -f "$HEDGE_DB"
ln -s "$STATE_DIR/hedge/hedge_fund.db" "$HEDGE_DB"
STATE_DIR="$STATE_DIR" /usr/local/bin/state-backup.sh &
echo "[entrypoint] state backup loop started."
else
echo "[entrypoint] GIT_BACKUP_TOKEN/STATE_REPO unset — running without persistence."
mkdir -p "$DEXTER_LINK"
fi
exec /usr/bin/supervisord -c /etc/supervisord.conf