# ROA2WEB - Windows Deployment Package Complete deployment solution for ROA2WEB on Windows Server with IIS and Oracle Database. **Includes:** - **Reports App** - Read-only Oracle reports (Port 8000) - **Telegram Bot** - Telegram integration (Port 8002) - **Data Entry App** - Receipt data entry with approval workflow (Port 8003) --- ## 📂 Package Contents ``` deployment/windows/ ├── config/ # Configuration files │ ├── web.config # IIS config for Reports App │ ├── web.config.data-entry # IIS config for Data Entry App │ └── .env.production.windows # Environment variables template │ ├── scripts/ # PowerShell automation scripts │ ├── Build-ROA2WEB.ps1 # Build all components (interactive menu) │ ├── ROA2WEB-Console.ps1 # Unified deployment & management console │ ├── Install-ROA2WEB.ps1 # Initial Reports App installation │ ├── Install-TelegramBot.ps1 # Telegram Bot installation │ └── deploy-config.json # Deployment configuration │ ├── docs/ # Documentation │ └── WINDOWS_DEPLOYMENT.md # Complete deployment guide │ └── README.md # This file ``` --- ## 🎯 Quick Start ### Prerequisites - **Windows Server** 2016+ (or Windows 10/11 Pro) - **IIS** installed - **Oracle Database** (local or network-accessible) - **PowerShell 5.1+** - **Administrator privileges** ### Installation Steps #### 1. Build Frontend (on development machine) ```bash # On WSL/Linux/Mac cd roa2web/deployment/windows/scripts ./Build-Frontend.ps1 # This creates: ./deploy-package/ ``` #### 2. Transfer to Server Copy the entire project to Windows Server: ``` C:\roa2web\deployment\windows\ ``` #### 3. Run Installation ```powershell # On Windows Server (PowerShell as Administrator) cd C:\roa2web\deployment\windows\scripts # Install everything .\Install-ROA2WEB.ps1 ``` This will: - ✅ Install Python 3.11+ - ✅ Install NSSM (service manager) - ✅ Install IIS URL Rewrite and ARR - ✅ Create directory structure - ✅ Install Python dependencies - ✅ Create Windows Service - ✅ Configure IIS website #### 4. Configure Application ```powershell # Copy and edit environment file Copy-Item C:\inetpub\wwwroot\roa2web\backend\config\.env.production.windows ` C:\inetpub\wwwroot\roa2web\backend\.env # Edit with your values notepad C:\inetpub\wwwroot\roa2web\backend\.env ``` **Required settings:** Configure these variables in `.env`: - Database credentials (user, password, host, port, SID) - JWT secret key for authentication - Other application-specific settings Example structure: ```env ORACLE_USER=CONTAFIN_ORACLE ORACLE_HOST=localhost ORACLE_PORT=1521 ORACLE_SID=ROA # Add password and JWT secret here ``` #### 5. Deploy Application Files ```powershell # Deploy frontend and backend .\Deploy-ROA2WEB.ps1 -SourcePath "C:\path\to\deploy-package" ``` #### 6. Verify Installation ```powershell # Check service Get-Service ROA2WEB-Backend # Test backend Invoke-WebRequest http://localhost:8000/health # Open application Start-Process "http://localhost" ``` --- ## 🔄 Update Workflow For deploying updates to existing installation: **1. Build on development machine:** ```bash cd roa2web/deployment/windows/scripts ./Build-Frontend.ps1 -OutputPath "./deploy-$(date +%Y%m%d)" ``` **2. Transfer to server:** ```powershell Copy-Item .\deploy-20250118 -Destination C:\Temp\roa2web-deploy -Recurse ``` **3. Deploy on server:** ```powershell cd C:\inetpub\wwwroot\roa2web\deployment\windows\scripts .\Deploy-ROA2WEB.ps1 -SourcePath "C:\Temp\roa2web-deploy" ``` --- ## 🔧 Management Commands ### Interactive Console (Recommended) ```powershell # Open unified management console cd C:\inetpub\wwwroot\roa2web\deployment\windows\scripts .\ROA2WEB-Console.ps1 # Menu options: # [1] Deploy Components # [2] Manage Services # [3] Check Status ``` ### Non-Interactive Commands ```powershell # Deploy all components .\ROA2WEB-Console.ps1 -NonInteractive -Action DeployAll # Deploy specific component .\ROA2WEB-Console.ps1 -NonInteractive -Action DeployBackend .\ROA2WEB-Console.ps1 -NonInteractive -Action DeployTelegramBot .\ROA2WEB-Console.ps1 -NonInteractive -Action DeployDataEntry # Service management .\ROA2WEB-Console.ps1 -NonInteractive -Action StartAll .\ROA2WEB-Console.ps1 -NonInteractive -Action StopAll .\ROA2WEB-Console.ps1 -NonInteractive -Action RestartAll # Data Entry service management .\ROA2WEB-Console.ps1 -NonInteractive -Action StartDataEntry .\ROA2WEB-Console.ps1 -NonInteractive -Action StopDataEntry .\ROA2WEB-Console.ps1 -NonInteractive -Action RestartDataEntry # Check status .\ROA2WEB-Console.ps1 -NonInteractive -Action Status ``` ### Direct Service Commands ```powershell # Check all ROA2WEB services Get-Service ROA2WEB-* # View logs Get-Content C:\inetpub\wwwroot\roa2web\logs\backend-stdout.log -Tail 50 -Wait Get-Content C:\inetpub\wwwroot\roa2web\data-entry-backend\logs\stdout.log -Tail 50 -Wait # Check IIS Get-Website | Where-Object { $_.Name -like "*roa2web*" -or $_.Name -like "*data-entry*" } ``` --- ## 📊 Architecture ### Components | Component | Type | Port | Purpose | |-----------|------|------|---------| | **Reports Frontend** | IIS Static Files | 80/443 | Vue.js SPA (Reports) | | **Reports Backend** | Windows Service | 8000 | FastAPI API (Reports) | | **Telegram Bot** | Windows Service | 8002 | Telegram integration | | **Data Entry Frontend** | IIS Static Files | 80/443 | Vue.js SPA (Data Entry) | | **Data Entry Backend** | Windows Service | 8003 | FastAPI API (Data Entry) | | **Database** | Oracle | 1521 | Reports data (read-only) | | **SQLite** | File | - | Data Entry local storage | ### Network Flow ``` Client → IIS (port 80/443) │ ├─ /roa2web/api/* → Reports Backend (localhost:8000) → Oracle DB │ ├─ /roa2web/* → Reports Frontend (Vue.js) │ ├─ /data-entry/api/* → Data Entry Backend (localhost:8003) → SQLite │ └─ /data-entry/* → Data Entry Frontend (Vue.js) ``` ### Windows Services | Service Name | Description | Port | |-------------|-------------|------| | ROA2WEB-Backend | Reports API | 8000 | | ROA2WEB-TelegramBot | Telegram Bot | 8002 | | ROA2WEB-DataEntry | Data Entry API | 8003 | --- ## 📋 Directory Structure After Installation ``` C:\inetpub\wwwroot\roa2web\ │ ├── backend\ # Reports Backend (FastAPI) │ ├── app\ │ ├── requirements.txt │ ├── venv\ │ └── .env │ ├── frontend\ # Reports Frontend (Vue.js) │ ├── index.html │ ├── assets\ │ └── web.config │ ├── telegram-bot\ # Telegram Bot │ ├── app\ │ ├── data\telegram_bot.db │ ├── requirements.txt │ ├── venv\ │ └── .env │ ├── data-entry-backend\ # Data Entry Backend (FastAPI) │ ├── app\ │ ├── migrations\ │ ├── data\receipts.db # SQLite database │ ├── data\uploads\ # Uploaded receipts │ ├── requirements.txt │ ├── venv\ │ └── .env │ ├── data-entry-frontend\ # Data Entry Frontend (Vue.js) │ ├── index.html │ ├── assets\ │ └── web.config │ ├── shared\ # Shared Python modules │ ├── auth\ │ ├── database\ │ └── utils\ │ ├── logs\ # Service logs │ ├── backend-stdout.log │ └── backend-stderr.log │ └── backups\ # Automatic backups └── backup-YYYYMMDD-HHMMSS\ ``` --- ## 🆘 Troubleshooting ### Service won't start ```powershell # Check logs Get-Content C:\inetpub\wwwroot\roa2web\logs\backend-stderr.log -Tail 50 # Test manually cd C:\inetpub\wwwroot\roa2web\backend python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 ``` ### Frontend not loading ```powershell # Restart IIS iisreset # Check website status Get-Website ROA2WEB Start-Website ROA2WEB ``` ### API calls failing (502/504) ```powershell # Check backend service Get-Service ROA2WEB-Backend .\Restart-ROA2WEB.ps1 # Test backend directly Invoke-WebRequest http://localhost:8000/health ``` ### Database connection issues ```powershell # Test Oracle connection sqlplus CONTAFIN_ORACLE/password@localhost:1521/ROA # Check Oracle service Get-Service Oracle* # Check .env configuration Get-Content C:\inetpub\wwwroot\roa2web\backend\.env | Select-String ORACLE ``` --- ## 📖 Full Documentation For complete documentation, see: - **[WINDOWS_DEPLOYMENT.md](docs/WINDOWS_DEPLOYMENT.md)** - Comprehensive deployment guide - **[.env.production.windows](config/.env.production.windows)** - Configuration reference --- ## 🔑 Key Features ✅ **Simple Installation** - One PowerShell script installs everything ✅ **Minimal Dependencies** - Only Python + IIS (already on Windows Server) ✅ **Easy Replication** - Same scripts work on all servers ✅ **Automatic Backups** - Every deployment creates a backup ✅ **Windows Service** - Backend runs as service with auto-start/restart ✅ **Production Ready** - Optimized for performance and reliability --- ## 📊 System Requirements | Resource | Minimum | Recommended | |----------|---------|-------------| | **OS** | Windows Server 2016 | Windows Server 2019+ | | **RAM** | 4 GB | 8 GB (16 GB if using OCR) | | **CPU** | 2 cores | 4 cores | | **Disk** | 10 GB free | 20 GB free | | **Network** | 100 Mbps | 1 Gbps | --- ## 🔍 OCR Dependencies (Data Entry App) Data Entry App foloseste OCR pentru extragerea automata a datelor din bonuri fiscale. Pe Windows trebuie instalate manual: ### 1. Poppler (conversie PDF → imagini) ```powershell # Descarca de la: https://github.com/osborn/poppler-windows/releases # Extrage in: C:\Program Files\poppler\ # Adauga la System PATH: C:\Program Files\poppler\Library\bin # Verificare instalare: pdfinfo --version ``` ### 2. Tesseract OCR (engine OCR backup) ```powershell # Descarca installer: https://github.com/UB-Mannheim/tesseract/wiki # Selecteaza limbile: English + Romanian # Default path: C:\Program Files\Tesseract-OCR\ # Adauga la System PATH # Verificare instalare: tesseract --version ``` ### 3. Python OCR Packages ```powershell cd C:\inetpub\wwwroot\roa2web\data-entry-backend .\venv\Scripts\activate pip install paddlepaddle>=2.5.0 pip install paddleocr>=2.7.0 pip install opencv-python>=4.8.0 pip install pytesseract>=0.3.10 pip install pdf2image>=1.16.0 # Restart serviciu nssm restart ROA2WEB-DataEntry ``` ### Note importante - **PaddleOCR** descarca modele (~200MB) la prima rulare - **RAM**: PaddleOCR necesita ~2GB RAM disponibil - **PATH**: Dupa modificari PATH, restart serviciul backend - **Test OCR**: `curl http://localhost:8003/api/ocr/status` --- ## 🔐 Security Recommendations 1. **Generate Strong JWT Secret:** ```powershell -join ((65..90) + (97..122) + (48..57) | Get-Random -Count 32 | % {[char]$_}) ``` 2. **Secure .env File:** ```powershell icacls C:\inetpub\wwwroot\roa2web\backend\.env /inheritance:r /grant:r Administrators:F ``` 3. **Enable HTTPS:** ⭐ **RECOMMENDED** ```powershell # Quick setup with automated script cd C:\roa2web\deployment\windows\scripts .\Enable-HTTPS.ps1 # For detailed instructions, see: # docs/HTTPS_SETUP.md ``` **What it does:** - Creates/installs SSL certificate - Configures HTTPS binding (port 443) - Enables HTTP to HTTPS redirect - Activates HSTS (Strict Transport Security) **Access your application securely:** - `https://10.0.20.36/roa2web` (or your domain) 4. **Regular Updates:** - Keep Windows Server updated - Update Python packages monthly - Monitor security advisories - Renew SSL certificates before expiry --- ## 📞 Support For issues or questions: 1. Check logs: `C:\inetpub\wwwroot\roa2web\logs\` 2. Review [WINDOWS_DEPLOYMENT.md](docs/WINDOWS_DEPLOYMENT.md) 3. Contact: development-team@your-company.com --- ## 📝 Version History | Version | Date | Changes | |---------|------|---------| | 2.1.0 | 2025-12-18 | Added Data Entry App deployment support | | 2.0.0 | 2025-01-18 | Initial Windows deployment package | --- *ROA2WEB - Modern ERP Application (Reports + Data Entry)* *Windows Server Deployment Package v2.1.0*