Add deployment script with password authentication

- Created deploy-with-password.sh for VPS deployment
- Includes automatic Docker & Docker Compose installation
- Supports password-based SSH authentication via sshpass
- Successfully deployed to production VPS: 128.140.8.206:3000
- Application is live and health checks are passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude Code 2025-09-29 10:30:22 +01:00
parent 58e079b08f
commit f9ced4507f

142
deploy-with-password.sh Executable file
View file

@ -0,0 +1,142 @@
#!/bin/bash
# Скрипт деплоя приложения click-counter на VPS с использованием пароля
# Использование: ./deploy-with-password.sh [VPS_IP] [SSH_USER] [SSH_PASSWORD]
set -e
VPS_IP=${1:-"YOUR_VPS_IP"}
SSH_USER=${2:-"root"}
SSH_PASSWORD=${3:-"acXCmaT3sFhV"}
APP_NAME="click-counter"
REMOTE_PATH="/opt/$APP_NAME"
echo "🚀 Начинаем деплой $APP_NAME на VPS: $VPS_IP"
# Проверяем что переданы параметры
if [ "$VPS_IP" = "YOUR_VPS_IP" ]; then
echo "❌ Ошибка: Укажите IP VPS"
echo "Использование: ./deploy-with-password.sh [VPS_IP] [SSH_USER] [SSH_PASSWORD]"
exit 1
fi
# Проверяем наличие sshpass
if ! command -v sshpass &> /dev/null; then
echo "📦 Установка sshpass..."
if command -v brew &> /dev/null; then
brew install sshpass
elif command -v apt-get &> /dev/null; then
sudo apt-get update && sudo apt-get install -y sshpass
elif command -v yum &> /dev/null; then
sudo yum install -y sshpass
else
echo "❌ Не удалось установить sshpass. Установите его вручную."
exit 1
fi
fi
# Создаем архив проекта
echo "📦 Создаем архив проекта..."
tar --exclude='.git' \
--exclude='node_modules' \
--exclude='*.log' \
--exclude='.DS_Store' \
--exclude='saas-*' \
--exclude='*.tar.gz' \
--exclude='frontend' \
--exclude='backend' \
--exclude='postgres_data' \
-czf ${APP_NAME}-deploy.tar.gz \
Dockerfile \
docker-compose.yml \
.dockerignore \
package.json \
package-lock.json \
server.js \
public/
echo "✅ Архив создан: ${APP_NAME}-deploy.tar.gz"
# Загружаем на VPS
echo "⬆️ Загружаем на VPS..."
sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no ${APP_NAME}-deploy.tar.gz ${SSH_USER}@${VPS_IP}:/tmp/
# Выполняем команды на VPS
echo "🔧 Настраиваем на VPS..."
sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no ${SSH_USER}@${VPS_IP} << EOF
set -e
# Проверяем и устанавливаем Docker если нужно
if ! command -v docker &> /dev/null; then
echo "📦 Установка Docker..."
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl enable docker
systemctl start docker
fi
# Проверяем и устанавливаем Docker Compose если нужно
if ! command -v docker-compose &> /dev/null; then
echo "📦 Установка Docker Compose..."
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-\$(uname -s)-\$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
fi
# Создаем директорию приложения
mkdir -p $REMOTE_PATH
cd $REMOTE_PATH
# Останавливаем старый контейнер если есть
if docker ps -q -f name=$APP_NAME > /dev/null; then
echo "🛑 Останавливаем старый контейнер..."
docker-compose down || true
fi
# Распаковываем новую версию
echo "📂 Распаковываем приложение..."
tar -xzf /tmp/${APP_NAME}-deploy.tar.gz -C $REMOTE_PATH
# Собираем и запускаем
echo "🏗️ Собираем Docker образ..."
docker-compose build --no-cache
echo "🚀 Запускаем приложение..."
docker-compose up -d
# Проверяем статус
sleep 10
if docker-compose ps | grep -q "Up"; then
echo "✅ Приложение успешно запущено!"
echo "🌐 Доступно по адресу: http://$VPS_IP:3000"
# Проверяем health endpoint
if command -v curl &> /dev/null; then
sleep 5
if curl -f -s http://localhost:3000/health > /dev/null; then
echo "✅ Health check прошел успешно"
else
echo "⚠️ Health check не прошел, но контейнер запущен"
fi
fi
else
echo "❌ Ошибка запуска! Проверьте логи:"
docker-compose logs
exit 1
fi
# Очищаем временные файлы
rm -f /tmp/${APP_NAME}-deploy.tar.gz
echo "🧹 Очищаем старые Docker образы..."
docker image prune -f || true
EOF
# Очищаем локальный архив
rm -f ${APP_NAME}-deploy.tar.gz
echo ""
echo "🎉 Деплой завершен успешно!"
echo "🌐 Приложение доступно: http://$VPS_IP:3000"
echo "🔍 Проверить health: curl http://$VPS_IP:3000/health"
echo "📊 Проверить статус: sshpass -p '$SSH_PASSWORD' ssh -o StrictHostKeyChecking=no $SSH_USER@$VPS_IP 'cd $REMOTE_PATH && docker-compose ps'"
echo "📋 Посмотреть логи: sshpass -p '$SSH_PASSWORD' ssh -o StrictHostKeyChecking=no $SSH_USER@$VPS_IP 'cd $REMOTE_PATH && docker-compose logs -f'"