# Deployment Guide - Deal Plus Tech Astro Website ## 📋 Pre-Deployment Checklist - [ ] All pages build successfully (`npm run build`) - [ ] Images copied to `public/images/` - [ ] Environment variables configured - [ ] Umami Analytics set up - [ ] Admin password changed from default - [ ] Cookie consent tested - [ ] Mobile responsiveness verified - [ ] SEO meta tags on all pages ## 🚀 Deployment Steps ### Step 1: Initialize Git Repository ```bash cd dealplustech-astro git init git add . git commit -m "Initial commit - Deal Plus Tech migration to Astro" ``` ### Step 2: Push to Gitea ```bash # Add remote (replace with your actual Gitea URL) git remote add origin https://git.moreminimore.com/{username}/dealplustech-astro.git # Push to main git push -u origin main ``` ### Step 3: Deploy on Easypanel 1. **Login to Easypanel**: https://panelwebsite.moreminimore.com 2. **Create New Project**: - Project Name: `dealplustech` - Click "Create Project" 3. **Create New Service**: - Service Name: `dealplustech-astro` - Select "Git Repository" - Repository: `dealplustech-astro` - Branch: `main` 4. **Configure Build**: - Build Command: `npm run build` - Output Directory: `dist` - Port: `80` - Node Version: `20` 5. **Environment Variables**: ``` UMAMI_WEBSITE_ID=xxx-xxx-xxx ADMIN_PASSWORD=YourSecurePassword123! NODE_ENV=production ``` 6. **Deploy**: - Click "Deploy" - Wait for build to complete (~2-3 minutes) - Check deployment status ### Step 4: Verify Deployment 1. **Check Website**: - Visit your Easypanel URL - Test homepage - Test product pages (Thai URLs) - Test contact page 2. **Test Cookie Consent**: - Clear browser cookies - Reload page - Verify consent banner appears - Test accept/reject buttons 3. **Test Analytics**: - Accept analytics cookies - Check Umami dashboard for visits 4. **Mobile Testing**: - Test on mobile device - Verify responsive design - Check navigation menu ## 🔄 Auto-Deploy Workflow Easypanel auto-deploys on every push to `main` branch: ```bash # Make changes git add . git commit -m "Update product page" git push # Easypanel automatically: # 1. Detects push # 2. Runs npm install # 3. Runs npm run build # 4. Deploys new version # 5. Shows deployment status ``` ## 📊 Monitoring ### Deployment Status Check Easypanel dashboard for: - Build logs - Deployment status - Resource usage - Error logs ### Analytics Check Umami dashboard at: `https://analytics.dealplustech.co.th` - Real-time visitors - Page views - Referrer sources - Device breakdown ### Consent Logs Access consent logs: `https://dealplustech.co.th/admin/consent-logs` - Login with `ADMIN_PASSWORD` - View all consent records - Export to CSV - Delete records (right to be forgotten) ## 🛠️ Maintenance ### Update Content 1. **Edit Markdown/Files**: - Blog posts: `src/content/blog/` - Product pages: `src/pages/[url]/index.astro` 2. **Commit and Push**: ```bash git add . git commit -m "Update content" git push ``` 3. **Auto-deploy**: Wait ~2-3 minutes ### Update Dependencies ```bash npm update npm run build # Test locally first git add package.json git commit -m "Update dependencies" git push ``` ### Database Backup Consent logs stored in SQLite (or Turso if configured): ```bash # Local backup cp db/consent.db backup-$(date +%Y%m%d).db # Production (via Easypanel console) # Download consent.db file ``` ## 🐛 Troubleshooting ### Build Fails 1. **Check logs** in Easypanel 2. **Test locally**: `npm run build` 3. **Common issues**: - Missing dependencies: `npm install` - Syntax errors: Check recent changes - TypeScript errors: `npm run check` ### Page Not Found 1. **Verify URL structure** matches file path 2. **Check Thai URL encoding** 3. **Clear cache**: Hard refresh (Ctrl+Shift+R) ### Cookie Consent Not Working 1. **Check localStorage**: Open DevTools → Application → Local Storage 2. **Verify script loading**: Check Network tab for errors 3. **Test in incognito**: Clear all cookies first ### Analytics Not Tracking 1. **Check Umami Website ID** in `.env` 2. **Verify consent given** for analytics 3. **Check browser console** for errors ## 📈 Performance Optimization ### Image Optimization (Recommended) Convert images to WebP: ```bash # Install sharp npm install -g sharp-cli # Convert all images sharp public/images/**/*.jpg -o public/images/ -f webp -q 80 ``` ### Enable Compression Easypanel handles compression automatically. ### CDN (Optional) For better performance: 1. Set up Cloudflare CDN 2. Point DNS to Cloudflare 3. Enable caching 4. Configure page rules ## 🔐 Security ### Environment Variables - NEVER commit `.env` file - Use strong passwords - Rotate passwords periodically ### HTTPS Easypanel provides HTTPS automatically. ### Rate Limiting Consider adding rate limiting for API endpoints: ```javascript // src/pages/api/consent/POST.ts import rateLimit from 'express-rate-limit'; const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 100 // limit each IP to 100 requests per windowMs }); ``` ## 📞 Support **Issues?** 1. Check Easypanel logs 2. Review Astro docs: https://docs.astro.build 3. Check this guide **Emergency Contact**: - Admin: [Your contact] - Developer: [Your contact] --- **Last Updated**: 2026-03-12 **Version**: 1.0