initializare
This commit is contained in:
341
deployment/windows/README.md
Normal file
341
deployment/windows/README.md
Normal file
@@ -0,0 +1,341 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user