# 🚀 Easypanel API Deployment Guide ## Overview This guide shows how to deploy the Deal Plus Tech Astro site to Easypanel using their API. --- ## Prerequisites 1. **Easypanel Access** - URL: `http://110.164.146.46:3000` - Admin credentials 2. **API Token** - Login to Easypanel - Go to Settings → API - Generate new API token 3. **Docker Image** - Already built locally: `dealplustech-astro:latest` - Size: 564MB --- ## Method 1: Manual Deployment (Recommended) ### Step 1: Login to Easypanel ``` URL: http://110.164.146.46:3000 ``` ### Step 2: Create Project 1. Click **"New Project"** 2. Name: `dealplustech` 3. Description: "Deal Plus Tech Websites" 4. Click **"Create"** ### Step 3: Deploy Docker Image 1. Select project: `dealplustech` 2. Click **"New Service"** 3. Choose: **"Docker Image"** 4. Configure: - **Name:** `dealplustech-astro` - **Image:** `dealplustech-astro:latest` - **Port:** `4321` 5. Click **"Deploy"** ### Step 4: Verify Deployment 1. Wait for build to complete (~2-3 minutes) 2. Click on service to view logs 3. Look for: "Astro preview ready" 4. Access URL provided by Easypanel --- ## Method 2: Automated Deployment (API) ### Step 1: Get API Token ```bash # Login to Easypanel and get token from Settings → API export EASYPANEL_API_TOKEN="your-api-token-here" ``` ### Step 2: Run Deployment Script ```bash cd dealplustech-astro # Option A: With token as argument ./deploy-easypanel.sh your-api-token # Option B: With environment variable export EASYPANEL_API_TOKEN="your-api-token" ./deploy-easypanel.sh ``` ### Step 3: Monitor Deployment ```bash # View service status curl -s "http://110.164.146.46:3000/api/trpc/services.app.inspectService" \ -H "Authorization: Bearer $EASYPANEL_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"input":{"json":{"projectName":"dealplustech","serviceName":"dealplustech-astro"}}}' \ --insecure | python3 -m json.tool ``` --- ## Method 3: Direct Docker Deployment If you have direct Docker access to the Easypanel server: ```bash # SSH to Easypanel server ssh user@110.164.146.46 # Run container directly docker run -d \ -p 4321:4321 \ --name dealplustech-astro \ --restart unless-stopped \ -e NODE_ENV=production \ -e PORT=4321 \ -e HOST=0.0.0.0 \ dealplustech-astro:latest ``` --- ## API Endpoints ### List Projects ```bash curl -X GET "http://110.164.146.46:3000/api/trpc/projects.listProjects" \ -H "Authorization: Bearer YOUR_TOKEN" \ --insecure ``` ### Create Service ```bash curl -X POST "http://110.164.146.46:3000/api/trpc/services.app.create" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "projectName": "dealplustech", "name": "dealplustech-astro", "type": "docker", "docker": { "image": "dealplustech-astro:latest", "port": 4321 }, "env": { "NODE_ENV": "production", "PORT": "4321" } }' \ --insecure ``` ### Inspect Service ```bash curl -X GET "http://110.164.146.46:3000/api/trpc/services.app.inspectService" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{"input":{"json":{"projectName":"dealplustech","serviceName":"dealplustech-astro"}}}' \ --insecure ``` ### Get Service Logs ```bash curl -X GET "http://110.164.146.46:3000/api/trpc/services.common.getLogs" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{"input":{"json":{"projectName":"dealplustech","serviceName":"dealplustech-astro","lines":50}}}' \ --insecure ``` ### Deploy/Redeploy Service ```bash curl -X POST "http://110.164.146.46:3000/api/trpc/services.app.deploy" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{"input":{"json":{"projectName":"dealplustech","serviceName":"dealplustech-astro"}}}' \ --insecure ``` --- ## Environment Variables | Variable | Value | Required | |----------|-------|----------| | `NODE_ENV` | `production` | ✅ Yes | | `PORT` | `4321` | ✅ Yes | | `HOST` | `0.0.0.0` | ✅ Yes | --- ## Troubleshooting ### API Returns 401 Unauthorized **Problem:** Invalid or missing API token **Solution:** ```bash # Verify token is set echo $EASYPANEL_API_TOKEN # Regenerate token in Easypanel dashboard ``` ### Service Won't Start **Problem:** Container crashes on startup **Solution:** ```bash # Check logs docker logs dealplustech-astro # Common issues: # - Port already in use # - Missing environment variables # - Image build failed ``` ### Build Fails **Problem:** Docker build errors **Solution:** ```bash # Rebuild with verbose output cd dealplustech-astro docker build --no-cache -t dealplustech-astro:latest . # Check for errors in output ``` ### Can't Access Easypanel **Problem:** Connection timeout **Solution:** ```bash # Test connection curl -I http://110.164.146.46:3000 # Check if Easypanel is running # Contact server administrator if needed ``` --- ## Post-Deployment ### 1. Verify Service ```bash curl http://your-easypanel-url:4321/ ``` Should return HTML with Thai content ### 2. Check Health ```bash curl -I http://your-easypanel-url:4321/ ``` Should return `HTTP/1.1 200 OK` ### 3. Setup Domain (Optional) 1. Go to Easypanel → Service Settings → Domains 2. Add domain: `dealplustech.co.th` 3. Update DNS records 4. Enable SSL ### 4. Enable Auto-Deploy For Git-based auto-deploy: 1. Go to Service Settings → Git 2. Connect repository 3. Enable auto-deploy on push --- ## Resources - **Easypanel Dashboard:** http://110.164.146.46:3000 - **API Documentation:** http://110.164.146.46:3000/api - **Swagger UI:** http://110.164.146.46:3000/api (Swagger UI) - **Easypanel Docs:** https://docs.easypanel.io --- ## Support For issues: 1. Check service logs in Easypanel 2. Review deployment script output 3. Contact Easypanel support 4. Check project documentation --- **Last Updated:** 2026-03-02 **Status:** ✅ Ready for Deployment