tgapi / start.sh
WalleGriffkinder's picture
Update start.sh
d7bd3ca verified
#!/bin/sh
set -e
echo "--- Starting services ---"
CURRENT_USER=$(whoami)
CURRENT_UID=$(id -u)
echo "Script running as user: ${CURRENT_USER} (UID: ${CURRENT_UID})"
echo "HOME directory: ${HOME}"
echo "Working directory: $(pwd)"
# Проверка обязательных переменных для Telegram API (они должны быть установлены как ENV в Dockerfile и переданы через секреты)
if [ -z "$TELEGRAM_API_ID" ] || [ -z "$TELEGRAM_API_HASH" ]; then
echo "Ошибка: Переменные окружения TELEGRAM_API_ID и TELEGRAM_API_HASH должны быть установлены в секретах Space."
echo "Текущие значения: API_ID='${TELEGRAM_API_ID}', API_HASH='${TELEGRAM_API_HASH}'" # Добавим вывод для отладки
exit 1
fi
if [ -z "$GITHUB_USERNAME" ] || [ -z "$GITHUB_TOKEN" ] || [ -z "$ENV_GIST_ID" ]; then
echo "Внимание: GITHUB_USERNAME, GITHUB_TOKEN или ENV_GIST_ID не установлены. Обновление Gist будет пропущено."
fi
# Порты
INTERNAL_TELEGRAM_API_PORT_VAL=${INTERNAL_TELEGRAM_API_PORT:-8081}
EFFECTIVE_TELEGRAM_DATA_DIR=${TELEGRAM_DATA_DIR:-/var/lib/telegram-bot-api}
echo "Effective Telegram data directory: ${EFFECTIVE_TELEGRAM_DATA_DIR}"
echo "Internal Telegram API port: ${INTERNAL_TELEGRAM_API_PORT_VAL}"
echo "1. Запуск Telegram Bot API на внутреннем порту ${INTERNAL_TELEGRAM_API_PORT_VAL}..."
# Убираем явное указание --api-id и --api-hash, полагаемся на переменные окружения
telegram-bot-api \
--local \
--http-port="${INTERNAL_TELEGRAM_API_PORT_VAL}" \
--http-stat-port=8082 \
--http-stat-ip-address=127.0.0.1 \
--dir="${EFFECTIVE_TELEGRAM_DATA_DIR}" \
--temp-dir="${EFFECTIVE_TELEGRAM_DATA_DIR}" &
TELEGRAM_PID=$!
echo "Telegram Bot API запущен с PID: $TELEGRAM_PID"
sleep 3
echo "2. Запуск Node.js приложения (Reverse Proxy & Tools)..."
node server.js &
NODE_APP_PID=$!
echo "Node.js приложение запущено с PID: $NODE_APP_PID"
cleanup() {
echo "Получен сигнал завершения. Остановка процессов..."
if kill -0 $NODE_APP_PID 2>/dev/null; then kill $NODE_APP_PID; fi
if kill -0 $TELEGRAM_PID 2>/dev/null; then kill $TELEGRAM_PID; fi
wait $NODE_APP_PID 2>/dev/null
wait $TELEGRAM_PID 2>/dev/null
echo "Процессы остановлены."
exit 0
}
trap cleanup SIGINT SIGTERM
wait $NODE_APP_PID
EXIT_CODE=$?
echo "Node.js приложение завершилось с кодом $EXIT_CODE. Завершение работы..."
if kill -0 $TELEGRAM_PID 2>/dev/null; then kill $TELEGRAM_PID; wait $TELEGRAM_PID 2>/dev/null; fi
exit $EXIT_CODE