#!/bin/bash # ============================================================================= # Habit Bot Deployment Script # Deploys habit_bot.py to Ubuntu server with systemd # ============================================================================= set -e # Configuration SERVER="192.168.0.147" USER="joungmin" REMOTE_DIR="/home/joungmin/habit_bot" SERVICE_NAME="habit-bot" BOT_TOKEN="8325588419:AAGghb0nosWG8g6QtYeghqUs0RHug06uG74" echo "🚀 Deploying Habit Bot to ${SERVER}..." # 1. Create remote directory echo "📁 Creating remote directory..." ssh ${USER}@${SERVER} "mkdir -p ${REMOTE_DIR}" # 2. Copy files echo "📤 Copying files..." scp habit_bot.py requirements.txt ${USER}@${SERVER}:${REMOTE_DIR}/ # 3. Create virtual environment echo "🐍 Creating virtual environment..." ssh ${USER}@${SERVER} "cd ${REMOTE_DIR} && python3 -m venv venv && source venv/bin/activate && pip install -q -r requirements.txt" # 4. Create environment file echo "🔐 Creating environment file..." ssh ${USER}@${SERVER} "cat > ${REMOTE_DIR}/.env << 'EOF' TELEGRAM_BOT_TOKEN=${BOT_TOKEN} HABIT_DATA_DIR=/home/joungmin/habit_bot/data EOF" # 5. Create data directory ssh ${USER}@${SERVER} "mkdir -p ${REMOTE_DIR}/data" # 6. Create systemd service file echo "📋 Creating systemd service..." ssh ${USER}@${SERVER} "cat > /etc/systemd/system/${SERVICE_NAME}.service << 'EOF' [Unit] Description=OpenClaw Habit & Diet Telegram Bot After=network.target [Service] Type=simple User=joungmin WorkingDirectory=${REMOTE_DIR} Environment="TELEGRAM_BOT_TOKEN=${BOT_TOKEN}" Environment="HABIT_DATA_DIR=/home/joungmin/habit_bot/data" ExecStart=${REMOTE_DIR}/venv/bin/python ${REMOTE_DIR}/habit_bot.py Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF" # 7. Reload systemd and start service echo "🔄 Reloading systemd..." ssh ${USER}@${SERVER} "systemctl daemon-reload" echo "🚀 Starting ${SERVICE_NAME}..." ssh ${USER}@${SERVER} "systemctl enable ${SERVICE_NAME} && systemctl start ${SERVICE_NAME}" # 8. Verify echo "✅ Verifying service..." sleep 3 ssh ${USER}@${SERVER} "systemctl status ${SERVICE_NAME} --no-pager" echo "" echo "✅ Deployment complete!" echo "" echo "📋 Commands:" echo " View logs: ssh ${USER}@${SERVER} 'journalctl -u ${SERVICE_NAME} -f'" echo " Stop: ssh ${USER}@${SERVER} 'sudo systemctl stop ${SERVICE_NAME}'" echo " Restart: ssh ${USER}@${SERVER} 'sudo systemctl restart ${SERVICE_NAME}'" echo "" echo "🤖 Bot: @openclaw_habbit_tracker_bot"