# 🚀 Easypanel Deployment Guide (Nixpacks) ## Overview This Astro website is configured for **automatic deployment on Easypanel** using **Nixpacks**. --- ## ✅ Auto-Detection Easypanel will automatically detect this as a Node.js project and use Nixpacks to build it. **No Dockerfile required!** --- ## 📋 Configuration ### Easypanel Settings: 1. **Project Name:** `dealplustech-astro` 2. **Service Name:** `dealplustech-website` 3. **Build Type:** `Nixpacks` (auto-detected) 4. **Source:** Git repository 5. **Branch:** `main` 6. **Port:** `4321` (or use `$PORT` env variable) 7. **Auto-Deploy:** ✅ Enabled --- ## 🔐 Environment Variables Set these in Easypanel → Settings → Environment: ```bash # Database (SQLite file - Nixpacks will persist this) ASTRO_DB_REMOTE_URL=file:/data/consent.db # Admin Dashboard ADMIN_PASSWORD=your-secure-password-here # Umami Analytics (optional) PUBLIC_UMAMI_WEBSITE_ID=your-website-id PUBLIC_UMAMI_DOMAIN=https://analytics.moreminimore.com # Site URL PUBLIC_SITE_URL=https://your-domain.com ``` **⚠️ IMPORTANT:** Change `ADMIN_PASSWORD` from the default! --- ## 🗄️ Database Persistence The consent logging database needs persistent storage. ### Option A: Volume Mount (Recommended) 1. In Easypanel, go to Service → Volumes 2. Add a new volume: - **Path:** `/data` - **Size:** `1 GB` (minimum) 3. Set environment variable: ```bash ASTRO_DB_REMOTE_URL=file:/data/consent.db ``` ### Option B: Turso (Production) For managed database: 1. Create account at https://turso.tech 2. Create database 3. Get connection URL 4. Set environment: ```bash ASTRO_DB_REMOTE_URL=libsql://your-db.turso.io ASTRO_DB_APP_TOKEN=your-token ``` --- ## 🔄 Deployment Workflow ### Automatic (Git Push): 1. **Make changes locally** ```bash # Edit files npm run build # Test locally git add . git commit -m "Update content" git push origin main ``` 2. **Easypanel auto-deploys:** - Detects push to `main` - Runs Nixpacks build - Deploys new version - Health checks pass - Traffic switches 3. **Verify:** - Check Easypanel dashboard - Visit website URL - Test cookie consent ### Manual (Force Deploy): 1. Go to Service in Easypanel 2. Click "Deploy" 3. Select latest commit 4. Deploy --- ## 📊 Monitoring ### Health Check Nixpacks will automatically health check the service. **Endpoint:** `http://localhost:4321/` **Expected:** Status 200 OK ### Logs View in Easypanel: - Service → Logs - Real-time deployment logs - Runtime logs ### Metrics Easypanel provides: - CPU usage - Memory usage - Network traffic - Request count --- ## 🔐 Security Checklist - [ ] Change `ADMIN_PASSWORD` from default - [ ] Enable HTTPS (Easypanel provides SSL automatically) - [ ] Set up firewall rules (if needed) - [ ] Configure database persistence - [ ] Regular backups of consent logs --- ## 🐛 Troubleshooting ### Build Fails **Check:** 1. `npm run build` works locally 2. `package.json` scripts are correct 3. All dependencies installed 4. Node version is 20.x **Fix:** ```bash npm install npm run build git push origin main ``` ### Database Errors **Check:** 1. Volume is mounted at `/data` 2. Environment variable `ASTRO_DB_REMOTE_URL` is set 3. Database file has write permissions **Fix:** ```bash # In Easypanel: # 1. Add volume at /data # 2. Set ASTRO_DB_REMOTE_URL=file:/data/consent.db # 3. Redeploy ``` ### Cookie Consent Not Working **Check:** 1. CookieConsentBanner component is imported 2. BASE_LAYOUT includes the component 3. No console errors **Fix:** ```bash # Verify component is included in layout # Check browser console for errors # Clear cache and reload ``` ### Admin Dashboard 404 **Check:** 1. Route is `/admin/consent-logs` 2. Service is running 3. No build errors **Fix:** ```bash # Access: https://your-domain.com/admin/consent-logs # Login with ADMIN_PASSWORD # Check server logs for errors ``` --- ## 📈 Performance Optimization ### Recommended Resources: - **CPU:** `0.5` core (minimum) - **Memory:** `512 MB` (minimum) - **Disk:** `1 GB` for database ### Caching: Nixpacks automatically caches: - `node_modules/` - Build output ### CDN (Optional): For better performance, add Cloudflare: 1. Point DNS to Easypanel 2. Enable Cloudflare proxy 3. Configure caching rules --- ## 📞 Support **Documentation:** - Astro: https://docs.astro.build - Nixpacks: https://nixpacks.com - Easypanel: https://easypanel.io/docs **Admin Dashboard:** - URL: `/admin/consent-logs` - Password: Set via `ADMIN_PASSWORD` env **Contact:** - Email: info@dealplustech.co.th - LINE: @dealplustech --- ## ✅ Post-Deployment Checklist - [ ] Website loads correctly - [ ] Cookie consent appears on first visit - [ ] Consent is logged to database - [ ] Admin dashboard accessible - [ ] Umami Analytics loading (if configured) - [ ] All pages working - [ ] Mobile responsive - [ ] HTTPS enabled (automatic with Easypanel) - [ ] Database backed up regularly --- **Last Updated:** 2026-03-10 **Version:** 1.0.0 **Deployment:** Nixpacks on Easypanel