Files
dealplustech/DEPLOYMENT-NIXPACKS.md
Kunthawat d7264a494c feat: Replace Next.js with Astro + PDPA compliance
- Removed Next.js, moved Astro to root
- PDPA compliance: cookie consent, admin dashboard, privacy policy
- Updated Dockerfile for Astro
- Ready for Easypanel deployment with Nixpacks or Docker
2026-03-10 13:27:48 +07:00

5.0 KiB

🚀 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:

# 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.

  1. In Easypanel, go to Service → Volumes
  2. Add a new volume:
    • Path: /data
    • Size: 1 GB (minimum)
  3. Set environment variable:
    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:
    ASTRO_DB_REMOTE_URL=libsql://your-db.turso.io
    ASTRO_DB_APP_TOKEN=your-token
    

🔄 Deployment Workflow

Automatic (Git Push):

  1. Make changes locally

    # 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:

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:

# In Easypanel:
# 1. Add volume at /data
# 2. Set ASTRO_DB_REMOTE_URL=file:/data/consent.db
# 3. Redeploy

Check:

  1. CookieConsentBanner component is imported
  2. BASE_LAYOUT includes the component
  3. No console errors

Fix:

# 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:

# Access: https://your-domain.com/admin/consent-logs
# Login with ADMIN_PASSWORD
# Check server logs for errors

📈 Performance Optimization

  • 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:

Admin Dashboard:

  • URL: /admin/consent-logs
  • Password: Set via ADMIN_PASSWORD env

Contact:


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