Files
2025-11-06 20:55:35 +02:00

342 lines
7.6 KiB
Markdown

# BTGO Telegram Bot - Windows Service Deployment
Scripturi pentru instalarea și gestionarea bot-ului Telegram ca serviciu Windows pe VM.
## 📋 Cerințe Preliminare
- **Windows Server** 2016+ sau **Windows 10/11**
- **Python 3.11+** instalat și adăugat în PATH
- **Privilegii de Administrator**
- **NSSM** (Non-Sucking Service Manager) - se descarcă automat
- **Git** (opțional, pentru pull updates)
## 🚀 Deployment Complet (Recomandat)
```powershell
# Right-click pe script → "Run with PowerShell" (ca Administrator)
deployment\windows\scripts\deploy.ps1
# SAU din PowerShell Administrator:
cd deployment\windows\scripts
.\deploy.ps1
```
**Acest script va:**
1. ✅ Verifica Python și dependențe
2. ✅ Copia și configura `.env` (dacă nu există)
3. ✅ Instala dependențele Python (`requirements.txt`)
4. ✅ Instala browsere Playwright
5. ✅ Instala și porni serviciul Windows
6. ✅ Verifica statusul serviciului
### ⚠️ Înainte de Prima Rulare
**Configurați `.env`** cu datele tale:
```bash
# Telegram Bot
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
TELEGRAM_ALLOWED_USER_IDS=123456789,987654321 # User IDs autorizați
TELEGRAM_CHAT_ID=123456789 # Optional: pentru notificări
# BTGO Credentials
LOGIN_ID=your_btgo_login
PAROLA=your_btgo_password
# Scraper Settings
HEADLESS=false # IMPORTANT: trebuie false pentru VM Windows (WAF bypass)
TIMEOUT_2FA_SECONDS=300
```
**Cum obții variabilele Telegram:**
1. **Bot Token**: Vorbește cu [@BotFather](https://t.me/BotFather) și creează un bot
2. **User IDs**: Rulează `python get_telegram_chat_id.py` după ce configurezi token-ul
## 📦 Scripturi Disponibile
Toate scripturile sunt **PowerShell** (`.ps1`) pentru Windows 10/11.
### `menu.ps1` - Meniu Interactiv ⭐
Interfață user-friendly pentru toate operațiunile.
```powershell
.\menu.ps1
```
---
### `deploy.ps1` - Deployment Complet
Instalează tot ce e necesar și pornește serviciul.
```powershell
.\deploy.ps1
```
---
### `install_service.ps1` - Doar Instalare Serviciu
Instalează serviciul Windows (după ce ai configurat manual tot restul).
```powershell
.\install_service.ps1
```
**Ce face:**
- Descarcă NSSM dacă nu există
- Creează serviciul Windows `BTGOTelegramBot`
- Configurează logging automat în `logs/`
- Configurează auto-restart la crash
- Pornește serviciul
---
### `uninstall_service.ps1` - Dezinstalare Serviciu
Oprește și elimină serviciul din sistem.
```powershell
.\uninstall_service.ps1
```
---
### `restart_service.ps1` - Restart Rapid
Restart rapid al serviciului (pentru aplicarea unor modificări).
```powershell
.\restart_service.ps1
```
---
### `status.ps1` - Status Serviciu
Afișează status detaliat al serviciului și ultimele logs.
```powershell
.\status.ps1
```
---
### `view_logs.ps1` - Viewer Logs Interactiv
Meniu interactiv pentru vizualizarea logs-urilor în timp real.
```powershell
.\view_logs.ps1
```
**Opțiuni:**
1. View stdout (output normal)
2. View stderr (erori)
3. Tail stdout (timp real)
4. Tail stderr (timp real)
5. Deschide Explorer în director logs
6. Șterge toate logurile
---
## 🔧 Gestionare Serviciu
### Comenzi Windows Standard
```batch
# Status serviciu
sc query BTGOTelegramBot
# Oprește serviciu
net stop BTGOTelegramBot
# Pornește serviciu
net start BTGOTelegramBot
# Restart serviciu
net stop BTGOTelegramBot && net start BTGOTelegramBot
# Configurație serviciu
sc qc BTGOTelegramBot
# Șterge serviciu (fără script)
sc delete BTGOTelegramBot
```
### Logs
Logs-urile se salvează automat în `logs/`:
- `telegram_bot_stdout.log` - Output normal (comenzi, mesaje)
- `telegram_bot_stderr.log` - Erori și avertizări
**View logs în PowerShell (timp real):**
```powershell
Get-Content logs\telegram_bot_stdout.log -Wait -Tail 20
```
**Rotație logs:**
- Max 10 MB per fișier
- Rotație automată când se atinge limita
---
## 🔄 Update și Redeploy
### Update Manual (cu Git)
```batch
# Pe VM Windows
cd E:\proiecte\btgo-playwright
# Pull ultimele modificări
git pull origin main
# Redeploy serviciu
deployment\windows\scripts\restart_service.bat
```
### Redeploy Complet (Reinstalare)
Dacă ai modificat dependențe sau structura proiectului:
```batch
# Dezinstalează
deployment\windows\scripts\uninstall_service.bat
# Reinstalează tot
deployment\windows\scripts\deploy.bat
```
---
## 🐛 Troubleshooting
### Serviciul nu pornește
**Verifică logs:**
```batch
deployment\windows\scripts\view_logs.bat
```
**Probleme comune:**
1. **Python nu este în PATH**
- Reinstalează Python cu "Add to PATH" bifat
- Sau setează manual PATH în Environment Variables
2. **`.env` lipsă sau invalid**
- Verifică că `.env` există în root-ul proiectului
- Verifică că `TELEGRAM_BOT_TOKEN` este setat corect
3. **Playwright browser lipsă**
```batch
python -m playwright install chromium
```
4. **Port ocupat / Serviciu duplicat**
```batch
uninstall_service.bat
# Așteaptă 10 secunde
install_service.bat
```
### Bot nu răspunde în Telegram
1. **Verifică serviciul rulează:**
```batch
sc query BTGOTelegramBot
```
2. **Verifică logs pentru erori:**
```batch
type logs\telegram_bot_stderr.log
```
3. **Testează bot-ul manual:**
```batch
python telegram_trigger_bot.py
# Trimite /start în Telegram
# Ctrl+C pentru a opri
```
4. **Verifică firewall:**
- Bot-ul trebuie să poată accesa `api.telegram.org` (HTTPS/443)
### Scraper-ul nu funcționează (Access Denied)
**CRITICAL:** Docker/headless mode NU funcționează din cauza Akamai WAF.
**Soluție:**
- Setează `HEADLESS=false` în `.env`
- Bot-ul TREBUIE să ruleze pe Windows cu browser vizibil
- Asigură-te că VM-ul are desktop environment activ
### Performance Issues
**Bot lent / Scraper timeout:**
- Crește `TIMEOUT_2FA_SECONDS` în `.env`
- Verifică resursele VM-ului (CPU, RAM)
- Verifică conexiunea la internet a VM-ului
---
## 📊 Arhitectura Serviciului
```
BTGOTelegramBot (Windows Service)
├── Managed by: NSSM
├── Auto-start: Yes (Delayed)
├── Restart on crash: Yes (5s delay)
├── Working dir: E:\proiecte\btgo-playwright
├── Python script: telegram_trigger_bot.py
├── Logs: logs\telegram_bot_*.log
└── Config: .env
```
**Flow:**
```
User /scrape → Telegram API → Bot Service → btgo_scraper.py
├── Playwright login
├── 2FA wait
├── Extract accounts
├── Download CSVs
└── Send files via notifiers
```
---
## 🔐 Securitate
### Best Practices
1. **Restricționează accesul bot-ului:**
- Setează `TELEGRAM_ALLOWED_USER_IDS` în `.env`
- Nu lăsa lista goală (permite oricui)
2. **Protejează `.env`:**
- Nu comite `.env` în Git (este în `.gitignore`)
- Setează permisiuni restrictive pe VM
3. **Monitorizează logs-urile:**
- Verifică periodic `stderr.log` pentru erori
- Setup alerting pentru crash-uri
4. **Rotație credentials:**
- Regenerează `TELEGRAM_BOT_TOKEN` periodic
- Update `LOGIN_ID`/`PAROLA` la schimbări
---
## 📞 Support
**Probleme sau întrebări?**
1. Verifică logs: `deployment\windows\scripts\view_logs.bat`
2. Verifică status: `deployment\windows\scripts\status.bat`
3. Consultă documentația principală: `TELEGRAM_BOT_SETUP.md`
4. Check issue tracker: [GitHub Issues](../../../)
---
## 📄 Licență
Acest tool este pentru **uz personal și educațional**. Asigură-te că respecti termenii și condițiile băncii tale.