#!/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