Spaces:
Paused
Paused
Update start.sh
Browse files
start.sh
CHANGED
|
@@ -2,79 +2,41 @@
|
|
| 2 |
set -euo pipefail
|
| 3 |
|
| 4 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 5 |
-
#
|
| 6 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
chown -R hermes:hermes /opt/huggingmes 2>/dev/null || true
|
| 26 |
-
|
| 27 |
-
echo "[Storage-Sanitizer] Dropping privileges safely to user 'hermes'."
|
| 28 |
-
# ๆบๅธฆๆดๅฅไธๅกๅบๅบงๆ้็ๅ
จ้จ็ฏๅขๅ้๏ผๆ ็ผๅฐไธป่ฟ็จๆงๅถๆไบคๅ็จๆท็ฉบ้ด
|
| 29 |
-
exec runuser -u hermes -- env \
|
| 30 |
-
PATH="/opt/hermes/.venv/bin:/opt/data/.local/bin:$PATH" \
|
| 31 |
-
HOME="$HOME" \
|
| 32 |
-
HERMES_HOME="$TARGET_HOME" \
|
| 33 |
-
DEV_MODE="${DEV_MODE:-true}" \
|
| 34 |
-
GATEWAY_TOKEN="${GATEWAY_TOKEN:-}" \
|
| 35 |
-
API_SERVER_KEY="${API_SERVER_KEY:-}" \
|
| 36 |
-
API_SERVER_ENABLED="${API_SERVER_ENABLED:-true}" \
|
| 37 |
-
API_SERVER_HOST="${API_SERVER_HOST:-127.0.0.1}" \
|
| 38 |
-
API_SERVER_PORT="${API_SERVER_PORT:-8642}" \
|
| 39 |
-
GATEWAY_HEALTH_URL="${GATEWAY_HEALTH_URL:-http://127.0.0.1:8642}" \
|
| 40 |
-
TELEGRAM_WEBHOOK_PORT="${TELEGRAM_WEBHOOK_PORT:-8765}" \
|
| 41 |
-
PORT="${PORT:-7861}" \
|
| 42 |
-
HERMES_MODEL="${HERMES_MODEL:-}" \
|
| 43 |
-
LLM_MODEL="${LLM_MODEL:-}" \
|
| 44 |
-
HERMES_INFERENCE_PROVIDER="${HERMES_INFERENCE_PROVIDER:-auto}" \
|
| 45 |
-
LLM_API_KEY="${LLM_API_KEY:-}" \
|
| 46 |
-
CUSTOM_BASE_URL="${CUSTOM_BASE_URL:-}" \
|
| 47 |
-
CUSTOM_PROVIDER="${CUSTOM_PROVIDER:-}" \
|
| 48 |
-
CUSTOM_API_KEY="${CUSTOM_API_KEY:-}" \
|
| 49 |
-
CLOUDFLARE_WORKERS_TOKEN="${CLOUDFLARE_WORKERS_TOKEN:-}" \
|
| 50 |
-
CLOUDFLARE_PROXY_URL="${CLOUDFLARE_PROXY_URL:-}" \
|
| 51 |
-
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN:-}" \
|
| 52 |
-
SPACE_HOST="${SPACE_HOST:-}" \
|
| 53 |
-
TELEGRAM_MODE="${TELEGRAM_MODE:-}" \
|
| 54 |
-
TELEGRAM_ALLOWED_USERS="${TELEGRAM_ALLOWED_USERS:-}" \
|
| 55 |
-
TELEGRAM_USER_IDS="${TELEGRAM_USER_IDS:-}" \
|
| 56 |
-
HUGGINGMES_APT_PACKAGES="${HUGGINGMES_APT_PACKAGES:-}" \
|
| 57 |
-
HUGGINGMES_PIP_PACKAGES="${HUGGINGMES_PIP_PACKAGES:-}" \
|
| 58 |
-
HUGGINGMES_NPM_PACKAGES="${HUGGINGMES_NPM_PACKAGES:-}" \
|
| 59 |
-
HUGGINGMES_RUN="${HUGGINGMES_RUN:-}" \
|
| 60 |
-
/bin/bash "$0" "$@"
|
| 61 |
-
fi
|
| 62 |
|
| 63 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 64 |
# ๐ก๏ธ ้ถๆฎตไบ๏ผๅฎๅ
จ้ๆๆฒ็ฎฑ่ฟ่ก๏ผHermes ็ฉบ้ด่กไธบ๏ผ
|
| 65 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ๏ฟฝ๏ฟฝโโโโโโโโโโ
|
| 66 |
-
umask
|
| 67 |
|
| 68 |
APP_DIR="${HUGGINGMES_APP_DIR:-/opt/huggingmes}"
|
| 69 |
-
HERMES_HOME="${HERMES_HOME:-/opt/data}"
|
| 70 |
PUBLIC_PORT="${PORT:-7861}"
|
| 71 |
GATEWAY_API_PORT="${API_SERVER_PORT:-8642}"
|
| 72 |
DASHBOARD_PORT="${DASHBOARD_PORT:-9119}"
|
| 73 |
TELEGRAM_WEBHOOK_PORT="${TELEGRAM_WEBHOOK_PORT:-8765}"
|
| 74 |
CF_PROXY_ENV_FILE="/tmp/huggingmes-cloudflare-proxy.env"
|
| 75 |
-
STARTUP_FILE="$
|
| 76 |
|
| 77 |
-
export HERMES_HOME
|
| 78 |
export API_SERVER_ENABLED="${API_SERVER_ENABLED:-true}"
|
| 79 |
export API_SERVER_HOST="${API_SERVER_HOST:-127.0.0.1}"
|
| 80 |
export API_SERVER_PORT="$GATEWAY_API_PORT"
|
|
@@ -104,19 +66,15 @@ fi
|
|
| 104 |
# ๅผบ่กๅฏน้ฝๅ
จๅฑๅ้ๆญ่จ๏ผ็กฎไฟๅฎๆนๅ็ซฏ Terminal ๆกๆๆๅไธๆฅ้
|
| 105 |
export GATEWAY_TOKEN="$API_SERVER_KEY"
|
| 106 |
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
if [ ! -L "$HERMES_HOME/.local/bin/hermes" ]; then
|
| 112 |
-
rm -f "$HERMES_HOME/.local/bin/hermes"
|
| 113 |
-
ln -sfn /opt/hermes/.venv/bin/hermes "$HERMES_HOME/.local/bin/hermes"
|
| 114 |
fi
|
| 115 |
|
| 116 |
if [ ! -L "${HOME}/.hermes/plugins" ]; then
|
| 117 |
-
mkdir -p "${HOME}/.hermes"
|
| 118 |
-
rm -rf "${HOME}/.hermes/plugins"
|
| 119 |
-
ln -sfn "$
|
| 120 |
fi
|
| 121 |
|
| 122 |
# Cloudflare ็ฝ็ปๅฑไปฃ็ๅๅๆๅปบ
|
|
@@ -150,7 +108,7 @@ if [ -n "${TELEGRAM_BOT_TOKEN:-}" ] && [ -n "${SPACE_HOST:-}" ] && [ -z "${TELEG
|
|
| 150 |
fi
|
| 151 |
|
| 152 |
if [ -n "${TELEGRAM_WEBHOOK_URL:-}" ] && [ -z "${TELEGRAM_WEBHOOK_SECRET:-}" ]; then
|
| 153 |
-
SECRET_FILE="$
|
| 154 |
if [ -f "$SECRET_FILE" ]; then
|
| 155 |
TELEGRAM_WEBHOOK_SECRET="$(cat "$SECRET_FILE")"
|
| 156 |
export TELEGRAM_WEBHOOK_SECRET
|
|
@@ -160,13 +118,13 @@ import secrets
|
|
| 160 |
print(secrets.token_hex(32))
|
| 161 |
PY
|
| 162 |
)"
|
| 163 |
-
printf '%s' "$TELEGRAM_WEBHOOK_SECRET" > "$SECRET_FILE"
|
| 164 |
-
chmod 600 "$SECRET_FILE"
|
| 165 |
export TELEGRAM_WEBHOOK_SECRET
|
| 166 |
fi
|
| 167 |
fi
|
| 168 |
|
| 169 |
-
# ๅคงๆจกๅๅคๅ็ผๆๅไธ่ฝฌๆข็ฉ้ต
|
| 170 |
MODEL_INPUT="${HERMES_MODEL:-${LLM_MODEL:-}}"
|
| 171 |
MODEL_FOR_CONFIG="$MODEL_INPUT"
|
| 172 |
PROVIDER_FOR_CONFIG="${HERMES_INFERENCE_PROVIDER:-auto}"
|
|
@@ -317,7 +275,10 @@ if os.environ.get("TELEGRAM_BOT_TOKEN"):
|
|
| 317 |
])
|
| 318 |
|
| 319 |
path.write_text(yaml.safe_dump(config, sort_keys=False), encoding="utf-8")
|
| 320 |
-
|
|
|
|
|
|
|
|
|
|
| 321 |
PY
|
| 322 |
|
| 323 |
HERMES_RUNTIME_VERSION="$(/opt/hermes/.venv/bin/hermes --version 2>/dev/null | awk '{print $NF; exit}' || true)"
|
|
@@ -343,10 +304,10 @@ start_jupyter() {
|
|
| 343 |
|
| 344 |
export JUPYTER_TOKEN="$GATEWAY_TOKEN"
|
| 345 |
local VENV_PYTHON="/opt/hermes/.venv/bin/python"
|
| 346 |
-
local root_dir="${JUPYTER_ROOT_DIR:-$
|
| 347 |
-
mkdir -p "$root_dir"
|
| 348 |
|
| 349 |
-
ln -sfn "$
|
| 350 |
|
| 351 |
echo "Starting JupyterLab terminal on port 8888 (root: $root_dir)"
|
| 352 |
"$VENV_PYTHON" -m jupyterlab \
|
|
@@ -367,7 +328,7 @@ start_jupyter() {
|
|
| 367 |
--LabApp.check_for_updates_class=jupyterlab.NeverCheckForUpdate \
|
| 368 |
--ServerApp.log_level=WARN \
|
| 369 |
--ServerApp.root_dir="$root_dir" \
|
| 370 |
-
>> "$
|
| 371 |
JUPYTER_PID=$!
|
| 372 |
export JUPYTER_PID
|
| 373 |
echo "JupyterLab started (PID: $JUPYTER_PID)"
|
|
@@ -382,7 +343,7 @@ trap graceful_shutdown SIGTERM SIGINT
|
|
| 382 |
|
| 383 |
# Terminal ๅฝไปคๆ่ทไธๆไน
ๅๅๆญฅๅจ (.bashrc ๅ
จ้ๆณจๅ
ฅ)
|
| 384 |
if [ ! -f "$STARTUP_FILE" ]; then
|
| 385 |
-
touch "$STARTUP_FILE" && chmod +x "$STARTUP_FILE"
|
| 386 |
fi
|
| 387 |
cat > "$HOME/.bashrc" << 'BASHRC'
|
| 388 |
export PATH="/opt/hermes/.venv/bin:/opt/data/.local/bin:$PATH"
|
|
@@ -393,9 +354,9 @@ STARTUP_FILE="$HERMES_HOME/workspace/startup.sh"
|
|
| 393 |
_hm_append() {
|
| 394 |
[ "${HUGGINGMES_CAPTURE_DISABLE:-0}" = "1" ] && return 0
|
| 395 |
local line="$*"
|
| 396 |
-
mkdir -p "$(dirname "$STARTUP_FILE")"
|
| 397 |
-
touch "$STARTUP_FILE" && chmod +x "$STARTUP_FILE" 2>/dev/null || true
|
| 398 |
-
grep -qxF "$line" "$STARTUP_FILE" 2>/dev/null || echo "$line" >> "$STARTUP_FILE"
|
| 399 |
}
|
| 400 |
_hm_quote_args() {
|
| 401 |
local quoted=() arg
|
|
@@ -515,7 +476,7 @@ HEALTH_PID=$!
|
|
| 515 |
start_dashboard_once() {
|
| 516 |
if [ -n "${DASHBOARD_PID:-}" ] && kill -0 "$DASHBOARD_PID" 2>/dev/null; then return 0; fi
|
| 517 |
echo "Launching Hermes dashboard..."
|
| 518 |
-
(hermes dashboard --host 127.0.0.1 --insecure 2>&1 | tee -a "$
|
| 519 |
DASHBOARD_PID=$!
|
| 520 |
}
|
| 521 |
|
|
@@ -540,7 +501,7 @@ while true; do
|
|
| 540 |
fi
|
| 541 |
|
| 542 |
echo "Launching Hermes gateway..."
|
| 543 |
-
(hermes gateway run 2>&1 | tee -a "$
|
| 544 |
GATEWAY_PID=$!
|
| 545 |
|
| 546 |
ready=false
|
|
@@ -555,7 +516,7 @@ while true; do
|
|
| 555 |
|
| 556 |
if [ "$ready" != "true" ]; then
|
| 557 |
echo "Hermes gateway failed to expose ports. Logs tail:"
|
| 558 |
-
tail -40 "$
|
| 559 |
exit 1
|
| 560 |
fi
|
| 561 |
|
|
|
|
| 2 |
set -euo pipefail
|
| 3 |
|
| 4 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 5 |
+
# ๐ก๏ธ ้ถๆฎตไธ๏ผ็จๆท็ฉบ้ดๅผบๅ้ๆฆ้คไธๅจๆๆ้ๅฎฝๅฎน๏ผ้กบๅบ Rootless ็ฏๅข๏ผ
|
| 6 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 7 |
+
TARGET_HOME="${HERMES_HOME:-/opt/data}"
|
| 8 |
+
|
| 9 |
+
echo "[Sandbox-Initializer] Running fallback initialization inside rootless user space..."
|
| 10 |
+
|
| 11 |
+
# 1. ๅฐ่ฏ็จๅฝๅๆๅคงๆ้ๅๅปบ่ฟ่กๆ้ๆๆ
|
| 12 |
+
mkdir -p "$TARGET_HOME"/{cron,sessions,logs,hooks,memories,skills,skins,plans,workspace,home,plugins} 2>/dev/null || true
|
| 13 |
+
mkdir -p "$TARGET_HOME/.local/bin" 2>/dev/null || true
|
| 14 |
+
|
| 15 |
+
# 2. ็ฉ็ๆธ
้คๆๆๅนฝ็ต้ๆไปถ๏ผๆ ธๅฟๆญป้่งฃ้ค็น๏ผ
|
| 16 |
+
# ๅณไฝฟ็ฑไบๅๅฒๅๅ ๆไปถๆๆ่
ไธๅฑไบๅฝๅ็จๆท๏ผๅช่ฆๆๅๆ้ๆไธๅฑ็ฎๅฝๆพๅผไบ 777๏ผๅฐฑ่ฝๅผบ่กๆน้ค
|
| 17 |
+
echo "[Sandbox-Initializer] Clearing lingering init locks to prevent Kanban deadlocks..."
|
| 18 |
+
find "$TARGET_HOME" -name "*.lock" -delete 2>/dev/null || true
|
| 19 |
+
find "$TARGET_HOME" -name "*.pid" -delete 2>/dev/null || true
|
| 20 |
+
rm -f "$TARGET_HOME/kanban.db.init.lock" 2>/dev/null || true
|
| 21 |
+
rm -f "$TARGET_HOME/logs/container-boot.log" 2>/dev/null || true
|
| 22 |
+
|
| 23 |
+
# 3. ๅจๆๅฎฝๅฎน๏ผๆพๅผๅฏน็ๆๆไปถ็ๆงๅถ๏ผ็กฎไฟๅ็ปญๅญ่ฟ็จ open("a+b") ๆ่ฏปๅๆถไธ่ธฉๅ
|
| 24 |
+
chmod -R 777 "$TARGET_HOME" 2>/dev/null || true
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 27 |
# ๐ก๏ธ ้ถๆฎตไบ๏ผๅฎๅ
จ้ๆๆฒ็ฎฑ่ฟ่ก๏ผHermes ็ฉบ้ด่กไธบ๏ผ
|
| 28 |
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ๏ฟฝ๏ฟฝโโโโโโโโโโ
|
| 29 |
+
umask 0000
|
| 30 |
|
| 31 |
APP_DIR="${HUGGINGMES_APP_DIR:-/opt/huggingmes}"
|
|
|
|
| 32 |
PUBLIC_PORT="${PORT:-7861}"
|
| 33 |
GATEWAY_API_PORT="${API_SERVER_PORT:-8642}"
|
| 34 |
DASHBOARD_PORT="${DASHBOARD_PORT:-9119}"
|
| 35 |
TELEGRAM_WEBHOOK_PORT="${TELEGRAM_WEBHOOK_PORT:-8765}"
|
| 36 |
CF_PROXY_ENV_FILE="/tmp/huggingmes-cloudflare-proxy.env"
|
| 37 |
+
STARTUP_FILE="$TARGET_HOME/workspace/startup.sh"
|
| 38 |
|
| 39 |
+
export HERMES_HOME="$TARGET_HOME"
|
| 40 |
export API_SERVER_ENABLED="${API_SERVER_ENABLED:-true}"
|
| 41 |
export API_SERVER_HOST="${API_SERVER_HOST:-127.0.0.1}"
|
| 42 |
export API_SERVER_PORT="$GATEWAY_API_PORT"
|
|
|
|
| 66 |
# ๅผบ่กๅฏน้ฝๅ
จๅฑๅ้ๆญ่จ๏ผ็กฎไฟๅฎๆนๅ็ซฏ Terminal ๆกๆๆๅไธๆฅ้
|
| 67 |
export GATEWAY_TOKEN="$API_SERVER_KEY"
|
| 68 |
|
| 69 |
+
if [ ! -L "$TARGET_HOME/.local/bin/hermes" ]; then
|
| 70 |
+
rm -f "$TARGET_HOME/.local/bin/hermes" 2>/dev/null || true
|
| 71 |
+
ln -sfn /opt/hermes/.venv/bin/hermes "$TARGET_HOME/.local/bin/hermes" 2>/dev/null || true
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
fi
|
| 73 |
|
| 74 |
if [ ! -L "${HOME}/.hermes/plugins" ]; then
|
| 75 |
+
mkdir -p "${HOME}/.hermes" 2>/dev/null || true
|
| 76 |
+
rm -rf "${HOME}/.hermes/plugins" 2>/dev/null || true
|
| 77 |
+
ln -sfn "$TARGET_HOME/plugins" "${HOME}/.hermes/plugins" 2>/dev/null || true
|
| 78 |
fi
|
| 79 |
|
| 80 |
# Cloudflare ็ฝ็ปๅฑไปฃ็ๅๅๆๅปบ
|
|
|
|
| 108 |
fi
|
| 109 |
|
| 110 |
if [ -n "${TELEGRAM_WEBHOOK_URL:-}" ] && [ -z "${TELEGRAM_WEBHOOK_SECRET:-}" ]; then
|
| 111 |
+
SECRET_FILE="$TARGET_HOME/.huggingmes-telegram-webhook-secret"
|
| 112 |
if [ -f "$SECRET_FILE" ]; then
|
| 113 |
TELEGRAM_WEBHOOK_SECRET="$(cat "$SECRET_FILE")"
|
| 114 |
export TELEGRAM_WEBHOOK_SECRET
|
|
|
|
| 118 |
print(secrets.token_hex(32))
|
| 119 |
PY
|
| 120 |
)"
|
| 121 |
+
printf '%s' "$TELEGRAM_WEBHOOK_SECRET" > "$SECRET_FILE" 2>/dev/null || true
|
| 122 |
+
chmod 600 "$SECRET_FILE" 2>/dev/null || true
|
| 123 |
export TELEGRAM_WEBHOOK_SECRET
|
| 124 |
fi
|
| 125 |
fi
|
| 126 |
|
| 127 |
+
# ๅคงๆจกๅๅคๅ็ผๆๅไธ่ฝฌๆข็ฉ้ต
|
| 128 |
MODEL_INPUT="${HERMES_MODEL:-${LLM_MODEL:-}}"
|
| 129 |
MODEL_FOR_CONFIG="$MODEL_INPUT"
|
| 130 |
PROVIDER_FOR_CONFIG="${HERMES_INFERENCE_PROVIDER:-auto}"
|
|
|
|
| 275 |
])
|
| 276 |
|
| 277 |
path.write_text(yaml.safe_dump(config, sort_keys=False), encoding="utf-8")
|
| 278 |
+
try:
|
| 279 |
+
path.chmod(0o777)
|
| 280 |
+
except Exception:
|
| 281 |
+
pass
|
| 282 |
PY
|
| 283 |
|
| 284 |
HERMES_RUNTIME_VERSION="$(/opt/hermes/.venv/bin/hermes --version 2>/dev/null | awk '{print $NF; exit}' || true)"
|
|
|
|
| 304 |
|
| 305 |
export JUPYTER_TOKEN="$GATEWAY_TOKEN"
|
| 306 |
local VENV_PYTHON="/opt/hermes/.venv/bin/python"
|
| 307 |
+
local root_dir="${JUPYTER_ROOT_DIR:-$TARGET_HOME/workspace}"
|
| 308 |
+
mkdir -p "$root_dir" 2>/dev/null || true
|
| 309 |
|
| 310 |
+
ln -sfn "$TARGET_HOME" "$root_dir/HuggingMes" 2>/dev/null || true
|
| 311 |
|
| 312 |
echo "Starting JupyterLab terminal on port 8888 (root: $root_dir)"
|
| 313 |
"$VENV_PYTHON" -m jupyterlab \
|
|
|
|
| 328 |
--LabApp.check_for_updates_class=jupyterlab.NeverCheckForUpdate \
|
| 329 |
--ServerApp.log_level=WARN \
|
| 330 |
--ServerApp.root_dir="$root_dir" \
|
| 331 |
+
>> "$TARGET_HOME/logs/jupyter.log" 2>&1 &
|
| 332 |
JUPYTER_PID=$!
|
| 333 |
export JUPYTER_PID
|
| 334 |
echo "JupyterLab started (PID: $JUPYTER_PID)"
|
|
|
|
| 343 |
|
| 344 |
# Terminal ๅฝไปคๆ่ทไธๆไน
ๅๅๆญฅๅจ (.bashrc ๅ
จ้ๆณจๅ
ฅ)
|
| 345 |
if [ ! -f "$STARTUP_FILE" ]; then
|
| 346 |
+
touch "$STARTUP_FILE" 2>/dev/null && chmod +x "$STARTUP_FILE" 2>/dev/null || true
|
| 347 |
fi
|
| 348 |
cat > "$HOME/.bashrc" << 'BASHRC'
|
| 349 |
export PATH="/opt/hermes/.venv/bin:/opt/data/.local/bin:$PATH"
|
|
|
|
| 354 |
_hm_append() {
|
| 355 |
[ "${HUGGINGMES_CAPTURE_DISABLE:-0}" = "1" ] && return 0
|
| 356 |
local line="$*"
|
| 357 |
+
mkdir -p "$(dirname "$STARTUP_FILE")" 2>/dev/null || true
|
| 358 |
+
touch "$STARTUP_FILE" 2>/dev/null && chmod +x "$STARTUP_FILE" 2>/dev/null || true
|
| 359 |
+
grep -qxF "$line" "$STARTUP_FILE" 2>/dev/null || echo "$line" >> "$STARTUP_FILE" 2>/dev/null || true
|
| 360 |
}
|
| 361 |
_hm_quote_args() {
|
| 362 |
local quoted=() arg
|
|
|
|
| 476 |
start_dashboard_once() {
|
| 477 |
if [ -n "${DASHBOARD_PID:-}" ] && kill -0 "$DASHBOARD_PID" 2>/dev/null; then return 0; fi
|
| 478 |
echo "Launching Hermes dashboard..."
|
| 479 |
+
(hermes dashboard --host 127.0.0.1 --insecure 2>&1 | tee -a "$TARGET_HOME/logs/dashboard.log") &
|
| 480 |
DASHBOARD_PID=$!
|
| 481 |
}
|
| 482 |
|
|
|
|
| 501 |
fi
|
| 502 |
|
| 503 |
echo "Launching Hermes gateway..."
|
| 504 |
+
(hermes gateway run 2>&1 | tee -a "$TARGET_HOME/logs/gateway.log") &
|
| 505 |
GATEWAY_PID=$!
|
| 506 |
|
| 507 |
ready=false
|
|
|
|
| 516 |
|
| 517 |
if [ "$ready" != "true" ]; then
|
| 518 |
echo "Hermes gateway failed to expose ports. Logs tail:"
|
| 519 |
+
tail -40 "$TARGET_HOME/logs/gateway.log" || true
|
| 520 |
exit 1
|
| 521 |
fi
|
| 522 |
|