Add TeleBot Hostinger deployment configuration with source build
This commit is contained in:
parent
bc708bb0a3
commit
162400b987
@ -32,7 +32,8 @@
|
||||
"Read(//mnt/c/Production/Source/SilverLABS/SilverPAY/**)",
|
||||
"Bash(git commit:*)",
|
||||
"Bash(docker build:*)",
|
||||
"Bash(git fetch:*)"
|
||||
"Bash(git fetch:*)",
|
||||
"Bash(./deploy-telebot-hostinger.sh:*)"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
|
||||
43
TeleBot/docker-compose.hostinger.yml
Normal file
43
TeleBot/docker-compose.hostinger.yml
Normal file
@ -0,0 +1,43 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
telebot:
|
||||
build:
|
||||
context: ../
|
||||
dockerfile: TeleBot/TeleBot/Dockerfile
|
||||
image: telebot:latest
|
||||
container_name: telebot
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Production
|
||||
- TelegramBot__BotToken=${BOT_TOKEN}
|
||||
- TelegramBot__WebhookUrl=${WEBHOOK_URL}
|
||||
- TelegramBot__UseWebhook=false
|
||||
- LittleShopApi__BaseUrl=http://littleshop-admin:8080
|
||||
- LittleShopApi__ApiKey=${LITTLESHOP_API_KEY}
|
||||
- Logging__LogLevel__Default=Information
|
||||
- Logging__LogLevel__Microsoft=Warning
|
||||
- Logging__LogLevel__Microsoft.Hosting.Lifetime=Information
|
||||
volumes:
|
||||
- ./logs:/app/logs
|
||||
- ./data:/app/data
|
||||
- ./image_cache:/app/image_cache
|
||||
networks:
|
||||
- littleshop-network
|
||||
depends_on:
|
||||
- littleshop-admin
|
||||
healthcheck:
|
||||
test: ["CMD", "pgrep", "-f", "dotnet.*TeleBot"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 60s
|
||||
|
||||
littleshop-admin:
|
||||
external: true
|
||||
name: littleshop-admin
|
||||
|
||||
networks:
|
||||
littleshop-network:
|
||||
external: true
|
||||
name: littleshop-network
|
||||
118
deploy-telebot-hostinger.sh
Normal file
118
deploy-telebot-hostinger.sh
Normal file
@ -0,0 +1,118 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Deploy TeleBot to Hostinger server with source code build
|
||||
# This script builds TeleBot from source and deploys it
|
||||
|
||||
set -e
|
||||
|
||||
echo "🚀 Starting TeleBot deployment to Hostinger..."
|
||||
|
||||
# Configuration
|
||||
REMOTE_HOST="srv1002428.hstgr.cloud"
|
||||
REMOTE_USER="root"
|
||||
REMOTE_PORT="2255"
|
||||
REMOTE_DIR="/opt/telebot"
|
||||
REMOTE_PASS="Proxmox8426!"
|
||||
|
||||
# SSH command with password
|
||||
SSH_CMD="sshpass -p '${REMOTE_PASS}' ssh -p ${REMOTE_PORT} -o StrictHostKeyChecking=no"
|
||||
SCP_CMD="sshpass -p '${REMOTE_PASS}' scp -P ${REMOTE_PORT} -o StrictHostKeyChecking=no"
|
||||
RSYNC_CMD="sshpass -p '${REMOTE_PASS}' rsync"
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo -e "${YELLOW}Step 1: Creating deployment directory on remote server...${NC}"
|
||||
${SSH_CMD} ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_DIR}"
|
||||
|
||||
echo -e "${YELLOW}Step 2: Copying source code to remote server...${NC}"
|
||||
# Create a clean copy excluding unnecessary files
|
||||
${RSYNC_CMD} -avz --delete \
|
||||
--exclude 'bin/' \
|
||||
--exclude 'obj/' \
|
||||
--exclude '.git/' \
|
||||
--exclude '*.log' \
|
||||
--exclude 'logs/' \
|
||||
--exclude 'data/' \
|
||||
--exclude 'image_cache/' \
|
||||
-e "ssh -p ${REMOTE_PORT} -o StrictHostKeyChecking=no" \
|
||||
./ ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/
|
||||
|
||||
echo -e "${YELLOW}Step 3: Creating .env file from environment variables...${NC}"
|
||||
${SSH_CMD} ${REMOTE_USER}@${REMOTE_HOST} << 'EOF'
|
||||
cd /opt/telebot
|
||||
|
||||
# Create .env file with production configuration
|
||||
cat > .env << 'ENVEOF'
|
||||
# TeleBot Production Configuration
|
||||
BOT_TOKEN=7569267607:AAFcXs3qeHqr_KKiGSb2EShJJLznNBXRfB8
|
||||
WEBHOOK_URL=https://telebot.thebankofdebbie.giize.com/api/telegram/webhook
|
||||
LITTLESHOP_API_KEY=your-api-key-here
|
||||
|
||||
# Database
|
||||
DATABASE_CONNECTION_STRING=Data Source=/app/data/telebot.db
|
||||
|
||||
# Logging
|
||||
LOG_LEVEL=Information
|
||||
ENVEOF
|
||||
|
||||
echo ".env file created"
|
||||
EOF
|
||||
|
||||
echo -e "${YELLOW}Step 4: Building and deploying TeleBot container...${NC}"
|
||||
${SSH_CMD} ${REMOTE_USER}@${REMOTE_HOST} << 'EOF'
|
||||
cd /opt/telebot
|
||||
|
||||
# Stop existing container if running
|
||||
echo "Stopping existing TeleBot container..."
|
||||
docker stop telebot 2>/dev/null || true
|
||||
docker rm telebot 2>/dev/null || true
|
||||
|
||||
# Build new image from source
|
||||
echo "Building TeleBot image from source code..."
|
||||
docker build -t telebot:latest -f TeleBot/TeleBot/Dockerfile .
|
||||
|
||||
# Create necessary directories with proper permissions
|
||||
echo "Creating data directories..."
|
||||
mkdir -p /opt/telebot/logs
|
||||
mkdir -p /opt/telebot/data
|
||||
mkdir -p /opt/telebot/image_cache
|
||||
|
||||
# Set permissions for the telebot user inside container (UID 1001 typically)
|
||||
chown -R 1001:1001 /opt/telebot/logs
|
||||
chown -R 1001:1001 /opt/telebot/data
|
||||
chown -R 1001:1001 /opt/telebot/image_cache
|
||||
|
||||
# Run the container
|
||||
echo "Starting TeleBot container..."
|
||||
docker run -d \
|
||||
--name telebot \
|
||||
--restart unless-stopped \
|
||||
--network littleshop-network \
|
||||
--env-file .env \
|
||||
-e ASPNETCORE_ENVIRONMENT=Production \
|
||||
-e LittleShopApi__BaseUrl=http://littleshop-admin:8080 \
|
||||
-e TelegramBot__UseWebhook=false \
|
||||
-e Logging__LogLevel__Default=Information \
|
||||
-v /opt/telebot/logs:/app/logs \
|
||||
-v /opt/telebot/data:/app/data \
|
||||
-v /opt/telebot/image_cache:/app/image_cache \
|
||||
telebot:latest
|
||||
|
||||
echo "Waiting for container to start..."
|
||||
sleep 10
|
||||
|
||||
# Check container status
|
||||
docker ps | grep telebot
|
||||
docker logs --tail 20 telebot
|
||||
EOF
|
||||
|
||||
echo -e "${GREEN}✅ TeleBot deployment complete!${NC}"
|
||||
echo -e "${GREEN}Container should now be running with latest code from source${NC}"
|
||||
echo ""
|
||||
echo "To check status:"
|
||||
echo " ${SSH_CMD} ${REMOTE_USER}@${REMOTE_HOST} 'docker logs telebot'"
|
||||
echo " ${SSH_CMD} ${REMOTE_USER}@${REMOTE_HOST} 'docker ps | grep telebot'"
|
||||
Loading…
Reference in New Issue
Block a user