Files
opencode-skill/skills/website-creator/EASYPANEL_INTEGRATION.md
2026-03-08 23:03:19 +07:00

310 lines
7.0 KiB
Markdown

# 🚀 Easypanel Deployment Integration Guide
**How to deploy websites created with website-creator skill to Easypanel**
---
## 📋 Current Implementation
The `website-creator` skill **generates Docker-ready websites** but does **NOT automatically deploy** to Easypanel. You need to use the `easypanel-deploy` skill separately.
---
## 🔧 Deployment Workflow
### Step 1: Generate Website
```bash
cd /Users/kunthawatgreethong/Gitea/opencode-skill/skills/website-creator
python3 scripts/create_astro_website.py \
--name "My Website" \
--languages "th,en" \
--output "./my-website"
```
### Step 2: Initialize Git Repository
```bash
cd ./my-website
git init
git add .
git commit -m "Initial commit - PDPA compliant Astro website"
# Create remote repository on Gitea first, then:
git remote add origin https://git.moreminimore.com/username/my-website.git
git push -u origin main
```
### Step 3: Deploy to Easypanel
Use the `easypanel-deploy` skill:
```
/use easypanel-deploy deploy
```
**You'll be asked:**
1. **Project name:** `my-website`
2. **Service name:** `my-website-service`
3. **Git repository URL:** `https://git.moreminimore.com/username/my-website.git`
4. **Branch:** `main`
5. **Port:** `80`
**The skill will:**
- Create project (if not exists)
- Create service
- Connect Git repository
- Set build type to Dockerfile
- Trigger deployment
- Check status
### Step 4: Verify Deployment
```
/use easypanel-deploy status
→ Project: my-website
→ Service: my-website-service
```
### Step 5: Set Environment Variables
In Easypanel dashboard:
1. Go to your service
2. Settings → Environment Variables
3. Add these variables:
```
UMAMI_WEBSITE_ID=your-website-id
UMAMI_DOMAIN=analytics.example.com
ADMIN_PASSWORD=your-secure-password
ASTRO_DB_REMOTE_URL=file:/app/data/consent.db
```
4. Redeploy to apply changes
---
## 🔄 Auto-Deploy After Initial Setup
Once deployed, Easypanel will **auto-deploy** on every push to `main` branch:
```bash
# Make changes
git add .
git commit -m "Update privacy policy"
git push origin main
# Easypanel will automatically rebuild and deploy
# Check status:
/use easypanel-deploy status
```
---
## 🔗 Integration Architecture
```
┌─────────────────────┐
│ website-creator │
│ (Python script) │
│ │
│ Generates: │
│ - Astro website │
│ - Dockerfile │
│ - docker-compose │
└──────────┬──────────┘
│ Manual step:
│ git push
┌─────────────────────┐
│ Gitea Repository │
│ (git.moreminimore) │
└──────────┬──────────┘
│ Auto-deploy
│ or manual trigger
┌─────────────────────┐
│ easypanel-deploy │
│ (Skill via API) │
│ │
│ Deploys to: │
│ - Easypanel │
│ - Docker │
└──────────┬──────────┘
┌─────────────────────┐
│ Production URL │
│ https://... │
└─────────────────────┘
```
---
## 🛠️ Future Enhancement: Automatic Integration
**To fully automate deployment**, the `website-creator` skill could be extended to:
### Option 1: Call easypanel-deploy via subprocess
```python
# In create_astro_website.py
import subprocess
def deploy_to_easypanel(project_name, service_name, git_url):
"""Deploy to Easypanel using easypanel-deploy skill."""
# Push to Git first
subprocess.run(['git', 'add', '.'])
subprocess.run(['git', 'commit', '-m', 'Initial commit'])
subprocess.run(['git', 'push', '-u', 'origin', 'main'])
# Call easypanel-deploy via curl commands
# (from easypanel-deploy SKILL.md workflow)
print("✅ Deployed to Easypanel!")
print(f"URL: https://{project_name}.easypanel.app")
```
### Option 2: Use task() delegation
```python
# If running within OpenCode agent context
from opencode import task
def deploy_to_easypanel(project_name, service_name, git_url):
"""Delegate to easypanel-deploy skill."""
result = task(
category="quick",
load_skills=["easypanel-deploy"],
description="Deploy website to Easypanel",
prompt=f"""Deploy to Easypanel:
- Project: {project_name}
- Service: {service_name}
- Git URL: {git_url}
- Branch: main
- Port: 80
Follow easypanel-deploy workflow exactly."""
)
return result
```
### Option 3: Generate deployment script
```python
# Generate deploy.sh in website root
deploy_script = """#!/bin/bash
# Auto-deploy to Easypanel
PROJECT_NAME="{project_name}"
SERVICE_NAME="{service_name}"
GIT_URL="{git_url}"
# Push to Git
git add .
git commit -m "Deploy $(date)"
git push origin main
echo "✅ Code pushed. Easypanel will auto-deploy."
echo "Check status: /use easypanel-deploy status"
"""
(output_dir / 'deploy.sh').write_text(deploy_script)
```
---
## ✅ Current Status
| Feature | Status | Notes |
|---------|--------|-------|
| Generate website | ✅ Complete | Docker-ready |
| Push to Git | ⚠️ Manual | User must run git commands |
| Deploy to Easypanel | ⚠️ Manual | Use `/use easypanel-deploy` |
| Auto-deploy on push | ✅ Works | After initial setup |
| Direct integration | ❌ Not implemented | Future enhancement |
---
## 📞 Quick Reference
### Deploy Commands
```bash
# 1. Generate
python3 scripts/create_astro_website.py --name "site" --output "./site"
# 2. Git
cd ./site && git init && git add . && git commit -m "Initial"
git remote add origin <url> && git push -u origin main
# 3. Easypanel (via skill)
/use easypanel-deploy deploy
→ Project: site
→ Service: site-service
→ Git URL: <url>
→ Branch: main
→ Port: 80
# 4. Check status
/use easypanel-deploy status
```
### Environment Variables
Set in Easypanel dashboard:
```bash
UMAMI_WEBSITE_ID=xxx-xxx-xxx
UMAMI_DOMAIN=analytics.example.com
ADMIN_PASSWORD=change-me-before-production
ASTRO_DB_REMOTE_URL=file:/app/data/consent.db
```
---
## 🎯 Recommended Workflow
**For Production:**
1. Generate website with `website-creator`
2. Test locally (`npm run dev`)
3. Push to Gitea
4. Deploy with `easypanel-deploy`
5. Set environment variables
6. Verify deployment
7. Future updates: just `git push`
**For Development:**
1. Generate website
2. Test locally
3. Make changes
4. Commit when ready
5. Push to trigger deployment
---
## 📝 Summary
**Current:** Two separate skills, manual deployment step
- `website-creator` → Generates website ✅
- User → Pushes to Git ⚠️
- `easypanel-deploy` → Deploys to Easypanel ⚠️
**Future (if implemented):** Single command deployment
- `website-creator` → Generates AND deploys ✅
**For now:** Use the workflow above for deployment.