# Deploy TagneticAI Email Client to WHMCS/cPanel Server\n\n## Overview\n\nThis guide will deploy the TagneticAI Email Client to your WHMCS server using:\n- **Node.js 20** + PM2 (process management)\n- **Nginx** (reverse proxy)\n- **Your SSL certificate** for email.tagneticai.com\n\n---\n\n## Prerequisites\n\n✅ WHMCS/cPanel server with root/SSH access  \n✅ Domain: email.tagneticai.com (with A record pointing to your server)  \n✅ SSL certificate (you said you have one)  \n✅ Mail server credentials (host, IMAP port, SMTP port, email, password)  \n\n---\n\n## Step 1: Connect to Your Server\n\n### Option A: SSH from Windows\n\n1. **Download PuTTY**: https://www.putty.org/\n2. **Connect**:\n   - Host: `your-server-ip` or `mail.yourdomain.com`\n   - Port: `22`\n   - Username: `root` (or your SSH user)\n3. **Or use Windows PowerShell (Windows 10+)**:\n   ```powershell\n   ssh root@your-server-ip\n   ```\n\n### Option B: cPanel Terminal\n\nIf your server has cPanel:\n1. Login to cPanel (port 2083)\n2. Search for \"Terminal\"\n3. Click \"Terminal\"\n\n---\n\n## Step 2: Upload Application Files\n\n### Option A: Using SFTP (Recommended for Windows)\n\n**Using WinSCP** (https://winscp.net/):\n1. Download and install WinSCP\n2. New Site:\n   - Host: Your server IP\n   - Username: root (or SSH user)\n   - Password: Your SSH password\n   - Protocol: SFTP\n3. Create folder: `/opt/tagneticai-email`\n4. Drag and drop all project files from your local folder\n\n**Using PowerShell**:\n```powershell\n# Navigate to project folder\ncd \"C:\\Users\\YourName\\Desktop\\TagneticAI-Email Client\"\n\n# Upload files\nscp -r app root@your-server-ip:/opt/tagneticai-email/\nscp -r components root@your-server-ip:/opt/tagneticai-email/\nscp package.json root@your-server-ip:/opt/tagneticai-email/\nscp package-lock.json root@your-server-ip:/opt/tagneticai-email/\nscp .env.example root@your-server-ip:/opt/tagneticai-email/\nscp next.config.js root@your-server-ip:/opt/tagneticai-email/\nscp tsconfig.json root@your-server-ip:/opt/tagneticai-email/\nscp tailwind.config.ts root@your-server-ip:/opt/tagneticai-email/\nscp postcss.config.js root@your-server-ip:/opt/tagneticai-email/\n```\n\n### Option B: Using Git (If you have a repository)\n\n```bash\ncd /opt\ngit clone your-repo-url tagneticai-email\ncd tagneticai-email\n```\n\n---\n\n## Step 3: Run Automated Deployment\n\n### On Your Server (via SSH):\n\n```bash\n# Connect to server\nssh root@your-server-ip\n\n# Navigate to app directory\ncd /opt/tagneticai-email\n\n# Download and run deployment script\ncurl -o deploy.sh https://your-storage/deploy.sh\nbash deploy.sh\n```\n\n**Or if you already uploaded the files**:\n\n```bash\ncd /opt/tagneticai-email\nbash deploy.sh\n```\n\n---\n\n## Step 4: Manual Deployment (If Automated Fails)\n\nRun these commands one by one on your server:\n\n### 4.1 Install Node.js\n\n```bash\n# Update packages\napt-get update\n\n# Install Node.js 20\ncurl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\napt-get install -y nodejs\n\n# Verify\nnode --version\nnpm --version\n```\n\n### 4.2 Install PM2 (Process Manager)\n\n```bash\n# Install globally\nnpm install -g pm2\n\n# Enable startup on reboot\npm2 startup\npm2 save\n```\n\n### 4.3 Install Nginx (Reverse Proxy)\n\n```bash\n# Install\napt-get install -y nginx\n\n# Start and enable\nsystemctl start nginx\nsystemctl enable nginx\n\n# Check status\nsystemctl status nginx\n```\n\n### 4.4 Setup Application Directory\n\n```bash\n# Create directory\nmkdir -p /opt/tagneticai-email\ncd /opt/tagneticai-email\n\n# Set permissions\nchown -R nobody:nogroup /opt/tagneticai-email\n```\n\n### 4.5 Install Dependencies & Build\n\n```bash\ncd /opt/tagneticai-email\n\n# Install npm packages\nnpm ci  # or 'npm install' if no lock file\n\n# Build Next.js\nnpm run build\n```\n\n### 4.6 Configure Environment Variables\n\n```bash\n# Copy template\ncp .env.example .env\n\n# Edit with your mail server details\nnano .env\n```\n\n**Edit the following in .env**:\n```env\nEMAIL_HOST=mail.yourdomain.com       # Your mail server\nEMAIL_IMAP_PORT=993                  # Usually 993\nEMAIL_SMTP_PORT=465                  # Usually 465\nEMAIL_USER=your-email@yourdomain.com # Your email account\nEMAIL_PASSWORD=your-password         # Your email password\nEMAIL_FROM_NAME=TagneticAI           # Display name\nNEXT_PUBLIC_API_URL=https://email.tagneticai.com  # Your domain\nNODE_ENV=production\nPORT=3000\n```\n\n**Save and exit**: Press `Ctrl+X`, then `Y`, then `Enter`\n\n### 4.7 Start Application with PM2\n\n```bash\ncd /opt/tagneticai-email\n\n# Start\npm2 start npm --name \"tagneticai-email\" -- start\n\n# Save PM2 config to auto-start on reboot\npm2 save\npm2 startup\n\n# Check status\npm2 status\n```\n\n### 4.8 Configure Nginx Reverse Proxy\n\n```bash\n# Create Nginx config\nsudo nano /etc/nginx/sites-available/tagneticai-email\n```\n\n**Paste this config**:\n\n```nginx\nupstream nextjs {\n    server 127.0.0.1:3000;\n}\n\nserver {\n    listen 80;\n    server_name email.tagneticai.com;\n    return 301 https://$server_name$request_uri;\n}\n\nserver {\n    listen 443 ssl http2;\n    server_name email.tagneticai.com;\n\n    # UPDATE THESE PATHS TO YOUR SSL CERTIFICATE\n    ssl_certificate /path/to/your/certificate.crt;\n    ssl_certificate_key /path/to/your/private.key;\n\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers HIGH:!aNULL:!MD5;\n    ssl_prefer_server_ciphers on;\n\n    # Security Headers\n    add_header Strict-Transport-Security \"max-age=31536000\" always;\n    add_header X-Frame-Options \"SAMEORIGIN\" always;\n    add_header X-Content-Type-Options \"nosniff\" always;\n    add_header X-XSS-Protection \"1; mode=block\" always;\n\n    # Proxy Settings\n    location / {\n        proxy_pass http://nextjs;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n\n    # API endpoint with longer timeout\n    location /api/ {\n        proxy_pass http://nextjs;\n        proxy_http_version 1.1;\n        proxy_set_header Host $host;\n        proxy_read_timeout 120s;\n    }\n}\n```\n\n**Save**: `Ctrl+X`, `Y`, `Enter`\n\n### 4.9 Find Your SSL Certificate Paths\n\n```bash\n# Find certificates (usually in one of these locations)\nls -la /etc/letsencrypt/live/email.tagneticai.com/\nls -la /usr/local/cpanel/ssl/installed/\nls -la /home/*/ssl/\n\n# Common paths:\n# Let's Encrypt:\n# ssl_certificate /etc/letsencrypt/live/email.tagneticai.com/fullchain.pem;\n# ssl_certificate_key /etc/letsencrypt/live/email.tagneticai.com/privkey.pem;\n```\n\n### 4.10 Update Nginx Config with SSL Paths\n\n```bash\n# Edit and update paths\nsudo nano /etc/nginx/sites-available/tagneticai-email\n\n# Update these lines with your paths:\n# ssl_certificate /your/cert/path;\n# ssl_certificate_key /your/key/path;\n```\n\n### 4.11 Enable Site & Test Nginx\n\n```bash\n# Enable the site\nsudo ln -s /etc/nginx/sites-available/tagneticai-email /etc/nginx/sites-enabled/\n\n# Test configuration\nsudo nginx -t\n\n# If \"successful\", reload Nginx\nsudo systemctl reload nginx\n```\n\n---\n\n## Step 5: Verify Everything Works\n\n### Check Status\n\n```bash\n# Check PM2\npm2 status\npm2 logs tagneticai-email\n\n# Check Nginx\nsudo systemctl status nginx\n\n# Check if port 3000 is listening\nnetstat -tulpn | grep 3000\n\n# Test locally\ncurl http://localhost:3000\n```\n\n### Access Your Application\n\n**In your browser**:\n```\nhttps://email.tagneticai.com\n```\n\nIf you see the TagneticAI Email Client interface → ✅ **Success!**\n\n---\n\n## Step 6: Test Email Functionality\n\n1. Access `https://email.tagneticai.com`\n2. The app will fetch your emails via IMAP\n3. You should see your inbox emails\n4. Try composing and sending a reply\n\n---\n\n## Troubleshooting\n\n### Application won't start\n\n```bash\n# Check logs\npm2 logs tagneticai-email\n\n# Check .env file\ncat /opt/tagneticai-email/.env\n\n# Restart\npm2 restart tagneticai-email\n```\n\n### Can't connect to mail server\n\n```bash\n# Test IMAP connection\ntelnet mail.yourdomain.com 993\n\n# Test SMTP connection\ntelnet mail.yourdomain.com 465\n\n# If connections hang, check firewall\nsudo ufw status\nsudo ufw allow 993\nsudo ufw allow 465\n```\n\n### SSL certificate not working\n\n```bash\n# Check certificate\nsudo openssl x509 -in /path/to/cert.crt -text -noout\n\n# Test SSL\necho | openssl s_client -servername email.tagneticai.com -connect 127.0.0.1:443\n```\n\n### Nginx returning 502 Bad Gateway\n\n```bash\n# Check if Node app is running\npm2 status\n\n# Check if port 3000 is listening\nnetstat -tulpn | grep 3000\n\n# Restart application\npm2 restart tagneticai-email\n```\n\n---\n\n## Useful Commands\n\n```bash\n# View logs\npm2 logs tagneticai-email\npm2 logs tagneticai-email --lines 100  # Last 100 lines\n\n# Restart application\npm2 restart tagneticai-email\n\n# Stop application\npm2 stop tagneticai-email\n\n# Restart Nginx\nsudo systemctl restart nginx\n\n# View running processes\npm2 list\n\n# Reload PM2 config\npm2 reload all\n```\n\n---\n\n## Maintenance\n\n### Update Application\n\n```bash\ncd /opt/tagneticai-email\n\n# Pull latest code (if using git)\ngit pull origin main\n\n# Rebuild\nnpm run build\n\n# Restart\npm2 restart tagneticai-email\n```\n\n### Backup Environment\n\n```bash\n# Backup .env\ncp /opt/tagneticai-email/.env /opt/tagneticai-email/.env.backup\n```\n\n### Monitor Performance\n\n```bash\n# Monitor in real-time\npm2 monit\n\n# Check system resources\ntop\n```\n\n---\n\n## Next Steps\n\n✅ Application running on https://email.tagneticai.com  \n✅ Emails fetching from your mail server  \n✅ Can send replies  \n\n**Optional:**\n- Set up log rotation\n- Configure automated backups\n- Set up monitoring alerts\n- Configure rate limiting\n\n---\n\n## Support\n\nIf you encounter issues:\n1. Check logs: `pm2 logs tagneticai-email`\n2. Check mail server connectivity\n3. Verify .env configuration\n4. Check Nginx configuration: `sudo nginx -t`\n\n**Everything should work now!** 🎉\n"