╔══════════════════════════════════════════════════════════════╗ ║ ║ ║ 365SEND - GHID INSTALARE PAS CU PAS PE cPANEL ║ ║ ║ ╚══════════════════════════════════════════════════════════════╝ ═══════════════════════════════════════════════════════════════ CERINȚE MINIME ═══════════════════════════════════════════════════════════════ ✓ Node.js 18+ (instalat în cPanel) ✓ PostgreSQL database (Neon.tech sau cPanel) ✓ Acces SSH la cPanel ✓ Acces FTP sau File Manager ═══════════════════════════════════════════════════════════════ PASUL 1: UPLOAD FIȘIERE ═══════════════════════════════════════════════════════════════ Opțiunea A - FTP (FileZilla/WinSCP): ─────────────────────────────────────────────────────────────── 1. Conectează-te la FTP 2. Navighează la public_html/ 3. Upload folderul 365send/ complet Opțiunea B - cPanel File Manager: ─────────────────────────────────────────────────────────────── 1. Comprimă folderul 365send/ ca 365send.zip 2. Login în cPanel → File Manager 3. Navighează la public_html/ 4. Upload 365send.zip 5. Click dreapta pe 365send.zip → Extract 6. Șterge 365send.zip după extragere ═══════════════════════════════════════════════════════════════ PASUL 2: PREGĂTIRE DATABASE (PostgreSQL) ═══════════════════════════════════════════════════════════════ Opțiunea A - Database cPanel: ─────────────────────────────────────────────────────────────── 1. cPanel → MySQL Databases (sau PostgreSQL Databases) 2. Create New Database: "365send_db" 3. Create New User: "365send_user" 4. Set Password (salvează-l!) 5. Add User to Database (All Privileges) 6. Notează: - Host: localhost - Port: 5432 - Database: 365send_db - User: 365send_user - Password: parola_ta Opțiunea B - Neon.tech (recomandat pentru cPanel shared): ─────────────────────────────────────────────────────────────── 1. Mergi pe https://neon.tech 2. Sign Up / Login 3. Create New Project → Nume: "365send" 4. După creare, copiază CONNECTION STRING: postgresql://user:pass@ep-xxx.neon.tech/neondb 5. Salvează connection string-ul ═══════════════════════════════════════════════════════════════ PASUL 3: CONFIGURARE .env ═══════════════════════════════════════════════════════════════ 1. Conectează-te prin SSH la cPanel: ssh username@your-domain.com 2. Navighează la folder: cd ~/public_html/365send 3. Copiază template-ul .env: cp .env.example .env 4. Editează .env: nano .env 5. Completează valorile: DATABASE_URL=postgresql://USER:PASS@HOST:5432/DBNAME SESSION_SECRET=secret_random_generat_cu_openssl NODE_ENV=production PORT=5000 ÎNLOCUIEȘTE: - USER cu username database - PASS cu password database - HOST cu hostname (localhost sau neon.tech host) - DBNAME cu numele database 6. Generează SESSION_SECRET: openssl rand -hex 32 Copiază output-ul și înlocuiește în .env 7. Salvează fișierul: - Apasă Ctrl+O (save) - Apasă Enter - Apasă Ctrl+X (exit) ═══════════════════════════════════════════════════════════════ PASUL 4: INSTALARE AUTOMATĂ ═══════════════════════════════════════════════════════════════ 1. Rulează scriptul de deploy: chmod +x deploy.sh ./deploy.sh 2. Scriptul va: ✓ Instala dependențele (npm packages) ✓ Migra database-ul (creează tabele) ✓ Porni aplicația 3. Așteaptă până vezi: "✅ INSTALARE FINALIZATĂ CU SUCCES!" ═══════════════════════════════════════════════════════════════ PASUL 5: CONFIGURARE AZURE OAUTH ═══════════════════════════════════════════════════════════════ 1. Mergi pe https://portal.azure.com 2. Azure Active Directory → App Registrations 3. Creează New Registration (sau folosește unul existent): - Name: "365send" - Supported account types: Single tenant - Redirect URI: https://your-domain.com/api/auth/callback 4. După creare, notează: - Application (client) ID - Directory (tenant) ID 5. Certificates & secrets → New client secret: - Description: "365send" - Expires: 24 months - COPIAZĂ SECRET VALUE (se arată doar o dată!) 6. API permissions → Add a permission: - Microsoft Graph - Delegated permissions - Adaugă: ✓ Mail.Send ✓ Mail.Read ✓ MailboxSettings.Read - Click "Grant admin consent" ═══════════════════════════════════════════════════════════════ PASUL 6: CONFIGURARE APLICAȚIE ═══════════════════════════════════════════════════════════════ 1. Deschide aplicația în browser: https://your-domain.com 2. Mergi la Settings (⚙️) 3. Completează Azure Configuration: - Client ID: din Azure portal - Client Secret: din Azure portal - Tenant ID: din Azure portal - Redirect URI: https://your-domain.com/api/auth/callback 4. Click "Save Configuration" ═══════════════════════════════════════════════════════════════ PASUL 7: VERIFICARE FINALĂ ═══════════════════════════════════════════════════════════════ 1. Health Check: https://your-domain.com/health Ar trebui să vezi: {"status":"ok"} 2. Test OAuth: - Mergi la Tokens - Click "Add Account" - Autentifică-te cu Office 365 - Ar trebui să vezi token-ul salvat ═══════════════════════════════════════════════════════════════ COMENZI UTILE ═══════════════════════════════════════════════════════════════ Vezi logs aplicație: pm2 logs 365send Restart aplicație: pm2 restart 365send Stop aplicație: pm2 stop 365send Status aplicație: pm2 status Verifică procesele Node.js: ps aux | grep node Kill proces manual (dacă PM2 nu e instalat): pkill -f "node.*dist/index.js" ═══════════════════════════════════════════════════════════════ TROUBLESHOOTING ═══════════════════════════════════════════════════════════════ Problema: "Node.js nu este instalat" ─────────────────────────────────────────────────────────────── Soluție: 1. cPanel → Software → Setup Node.js App 2. Create Application 3. Node.js version: 18 sau mai nou 4. Application root: public_html/365send 5. Application startup file: dist/index.js Problema: "Database connection failed" ─────────────────────────────────────────────────────────────── Soluție: 1. Verifică .env - DATABASE_URL corect? 2. Test conexiune: psql "$DATABASE_URL" -c "SELECT 1" 3. Dacă folosești Neon.tech, verifică IP whitelist Problema: "Port 5000 already in use" ─────────────────────────────────────────────────────────────── Soluție: 1. Găsește procesul: lsof -i :5000 2. Kill procesul: kill -9 3. Restart: ./deploy.sh Problema: "npm install failed" ─────────────────────────────────────────────────────────────── Soluție: 1. Șterge node_modules: rm -rf node_modules 2. Șterge cache npm: npm cache clean --force 3. Reinstalează: npm install --production ═══════════════════════════════════════════════════════════════ SUPORT ═══════════════════════════════════════════════════════════════ Dacă ai probleme: 1. Verifică logs: pm2 logs 365send 2. Verifică .env este corect configurat 3. Verifică database connection 4. Verifică Node.js version (min 18)