Spaces:
Paused
Paused
Update start.sh
Browse files
start.sh
CHANGED
|
@@ -21,18 +21,26 @@ fi
|
|
| 21 |
|
| 22 |
# Порты
|
| 23 |
TELEGRAM_MAIN_PORT=7860 # Как указано в app_port в README.md
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
echo "1. Запуск Telegram Bot API на порту ${TELEGRAM_MAIN_PORT}..."
|
| 27 |
# Запускаем Telegram Bot API в фоновом режиме
|
| 28 |
-
# Он будет использовать /var/lib/telegram-bot-api, права на которую установлены для appuser
|
| 29 |
telegram-bot-api \
|
| 30 |
--local \
|
| 31 |
--http-port=${TELEGRAM_MAIN_PORT} \
|
| 32 |
-
--http-stat-port=8082 \
|
| 33 |
--http-stat-ip-address=127.0.0.1 \
|
| 34 |
-
--dir
|
| 35 |
-
--temp-dir
|
| 36 |
|
| 37 |
TELEGRAM_PID=$!
|
| 38 |
echo "Telegram Bot API запущен с PID: $TELEGRAM_PID"
|
|
@@ -42,7 +50,6 @@ sleep 3
|
|
| 42 |
|
| 43 |
echo "2. Запуск Node.js Express приложения (статистика, файлы, Gist)..."
|
| 44 |
# Запускаем Node.js приложение в фоновом режиме
|
| 45 |
-
# Оно само запустит туннель для своего порта
|
| 46 |
node server.js &
|
| 47 |
NODE_APP_PID=$!
|
| 48 |
echo "Node.js приложение запущено с PID: $NODE_APP_PID"
|
|
@@ -50,7 +57,6 @@ echo "Node.js приложение запущено с PID: $NODE_APP_PID"
|
|
| 50 |
# Функция для корректного завершения
|
| 51 |
cleanup() {
|
| 52 |
echo "Получен сигнал завершения. Остановка процессов..."
|
| 53 |
-
# Убиваем процессы в обратном порядке их запуска
|
| 54 |
if kill -0 $NODE_APP_PID 2>/dev/null; then
|
| 55 |
echo "Остановка Node.js приложения (PID: $NODE_APP_PID)..."
|
| 56 |
kill $NODE_APP_PID
|
|
@@ -59,29 +65,22 @@ cleanup() {
|
|
| 59 |
echo "Остановка Telegram Bot API (PID: $TELEGRAM_PID)..."
|
| 60 |
kill $TELEGRAM_PID
|
| 61 |
fi
|
| 62 |
-
# SSH туннель запускается и управляется из Node.js, он должен завершиться при завершении Node.js
|
| 63 |
|
| 64 |
-
# Ожидаем завершения фоновых процессов
|
| 65 |
wait $NODE_APP_PID 2>/dev/null
|
| 66 |
wait $TELEGRAM_PID 2>/dev/null
|
| 67 |
echo "Процессы остановлены."
|
| 68 |
-
exit 0
|
| 69 |
}
|
| 70 |
|
| 71 |
-
# Перехватываем сигналы SIGINT (Ctrl+C) и SIGTERM
|
| 72 |
trap cleanup SIGINT SIGTERM
|
| 73 |
|
| 74 |
-
# Ожидаем завершения основного процесса (например, Node.js приложения)
|
| 75 |
-
# Если Node.js упадет, то и контейнер должен остановиться.
|
| 76 |
-
# Если Telegram API упадет, Node.js продолжит работать (можно изменить логику, если нужно)
|
| 77 |
wait $NODE_APP_PID
|
| 78 |
-
EXIT_CODE=$?
|
| 79 |
|
| 80 |
echo "Node.js приложение завершилось с кодом $EXIT_CODE. Завершение работы..."
|
| 81 |
-
# Если Node.js завершился, останавливаем и Telegram API, если он еще работает
|
| 82 |
if kill -0 $TELEGRAM_PID 2>/dev/null; then
|
| 83 |
kill $TELEGRAM_PID
|
| 84 |
wait $TELEGRAM_PID 2>/dev/null
|
| 85 |
fi
|
| 86 |
|
| 87 |
-
exit $EXIT_CODE
|
|
|
|
| 21 |
|
| 22 |
# Порты
|
| 23 |
TELEGRAM_MAIN_PORT=7860 # Как указано в app_port в README.md
|
| 24 |
+
|
| 25 |
+
# Определяем директорию для данных Telegram API
|
| 26 |
+
# Если TELEGRAM_DATA_DIR установлена и не пуста, используем ее, иначе /var/lib/telegram-bot-api
|
| 27 |
+
if [ -n "$TELEGRAM_DATA_DIR" ]; then
|
| 28 |
+
EFFECTIVE_TELEGRAM_DATA_DIR="$TELEGRAM_DATA_DIR"
|
| 29 |
+
else
|
| 30 |
+
EFFECTIVE_TELEGRAM_DATA_DIR="/var/lib/telegram-bot-api"
|
| 31 |
+
fi
|
| 32 |
+
echo "Effective Telegram data directory: ${EFFECTIVE_TELEGRAM_DATA_DIR}"
|
| 33 |
+
|
| 34 |
|
| 35 |
echo "1. Запуск Telegram Bot API на порту ${TELEGRAM_MAIN_PORT}..."
|
| 36 |
# Запускаем Telegram Bot API в фоновом режиме
|
|
|
|
| 37 |
telegram-bot-api \
|
| 38 |
--local \
|
| 39 |
--http-port=${TELEGRAM_MAIN_PORT} \
|
| 40 |
+
--http-stat-port=8082 \
|
| 41 |
--http-stat-ip-address=127.0.0.1 \
|
| 42 |
+
--dir="${EFFECTIVE_TELEGRAM_DATA_DIR}" \
|
| 43 |
+
--temp-dir="${EFFECTIVE_TELEGRAM_DATA_DIR}" &
|
| 44 |
|
| 45 |
TELEGRAM_PID=$!
|
| 46 |
echo "Telegram Bot API запущен с PID: $TELEGRAM_PID"
|
|
|
|
| 50 |
|
| 51 |
echo "2. Запуск Node.js Express приложения (статистика, файлы, Gist)..."
|
| 52 |
# Запускаем Node.js приложение в фоновом режиме
|
|
|
|
| 53 |
node server.js &
|
| 54 |
NODE_APP_PID=$!
|
| 55 |
echo "Node.js приложение запущено с PID: $NODE_APP_PID"
|
|
|
|
| 57 |
# Функция для корректного завершения
|
| 58 |
cleanup() {
|
| 59 |
echo "Получен сигнал завершения. Остановка процессов..."
|
|
|
|
| 60 |
if kill -0 $NODE_APP_PID 2>/dev/null; then
|
| 61 |
echo "Остановка Node.js приложения (PID: $NODE_APP_PID)..."
|
| 62 |
kill $NODE_APP_PID
|
|
|
|
| 65 |
echo "Остановка Telegram Bot API (PID: $TELEGRAM_PID)..."
|
| 66 |
kill $TELEGRAM_PID
|
| 67 |
fi
|
|
|
|
| 68 |
|
|
|
|
| 69 |
wait $NODE_APP_PID 2>/dev/null
|
| 70 |
wait $TELEGRAM_PID 2>/dev/null
|
| 71 |
echo "Процессы остановлены."
|
| 72 |
+
exit 0
|
| 73 |
}
|
| 74 |
|
|
|
|
| 75 |
trap cleanup SIGINT SIGTERM
|
| 76 |
|
|
|
|
|
|
|
|
|
|
| 77 |
wait $NODE_APP_PID
|
| 78 |
+
EXIT_CODE=$?
|
| 79 |
|
| 80 |
echo "Node.js приложение завершилось с кодом $EXIT_CODE. Завершение работы..."
|
|
|
|
| 81 |
if kill -0 $TELEGRAM_PID 2>/dev/null; then
|
| 82 |
kill $TELEGRAM_PID
|
| 83 |
wait $TELEGRAM_PID 2>/dev/null
|
| 84 |
fi
|
| 85 |
|
| 86 |
+
exit $EXIT_CODE
|