EasyPanel Module for Blesta
Original price was: $199.$99Current price is: $99.
This module integrates Blesta with EasyPanel, a modern server control panel that makes it easy to manage your applications with a simple web interface.
Description
This module integrates Blesta with EasyPanel, a modern server control panel that makes it easy to manage your applications with a simple web interface.
Key Features
- Multi-server Support: Configure multiple EasyPanel servers with different aliases, hostnames, and API credentials
- Dual Service Types:
- EasyPanel Templates: Use predefined application templates via
createFromSchema
API - Custom Apps: Create custom applications with full control via
createService
API
- EasyPanel Templates: Use predefined application templates via
- Manual SSH Key Generation: Generate SSH keys on-demand for custom apps via client Actions tab (avoids race conditions)
- Template System: JSON-based configuration with dynamic variable replacement
- Comprehensive Logging: Full API request/response logging for debugging and monitoring
- Client Management: Domain management and service statistics through client interface
- GitHub Integration: Seamless code deployment from repositories
GitHub Integration
The EasyPanel module now includes comprehensive GitHub integration that allows customers to deploy code directly from their GitHub repositories to their EasyPanel services, similar to platforms like Vercel and Dokploy.
Features
- Easy Repository Connection: Customers can connect their GitHub repositories using either HTTPS or SSH URLs
- Branch and Path Selection: Deploy from specific branches and subdirectories
- One-Click Deployment: Deploy latest code with a single button click
- SSH Key Management: Automatic SSH key generation and display for private repositories
- GitHub App Integration: Seamless integration through GitHub Apps (no need for admin to create GitHub developer apps)
Customer Workflow
- Repository Connection: Customers can directly connect their GitHub repositories using the repository URL
- Branch and Path Selection: Choose specific branches and subdirectories to deploy from
- SSH Key Setup (for private repos): Copy the generated SSH key to repository’s deploy keys
- Deploy: Use the deploy button to pull latest code from the selected branch
Technical Implementation
Repository URL Handling
- Accepts both HTTPS and SSH GitHub URLs
- Automatically converts HTTPS URLs to SSH format for EasyPanel compatibility
- Validates repository URL format
SSH Key Integration
For private repositories:
- Customer generates SSH key through the Actions tab (custom apps only)
- SSH public key is displayed with instructions
- Customer adds the public key to GitHub repository’s deploy keys
- EasyPanel can then access the private repository
Customer Experience
Actions Tab Features
- Service Information: Display service details and current domain
- SSH Key Management: Generate and view SSH keys for custom apps
- GitHub Integration: Connect, configure, and deploy from GitHub repositories
- Domain Management: Update service domains with DNS configuration guidance
User Interface
- Repository Connection Form: Input fields for repository URL, branch, and path
- Connected Repository Display: Shows current repository details with deploy/disconnect options
- SSH Key Instructions: Clear instructions for adding deploy keys to private repositories
- Service Type Guidance: Contextual information about GitHub integration availability
Installation Requirements
- EasyPanel server with API access
- SSH key configuration for private repositories (custom apps only)
- GitHub repository access (public or with deploy keys for private repos)
Configuration
No additional admin configuration required. Customers can connect repositories directly through the service interface.
Service Types
Template Services
- Uses EasyPanel’s template system for predefined application stacks
- Template variable replacement for dynamic configuration
- Suitable for standard applications with known configurations
Custom App Services
- Creates custom applications with full configuration control
- SSH key generation available for Git repository access
- GitHub integration for code deployment
- Ideal for custom applications and development workflows
SSH Key Management
- Available for custom apps only via client Actions tab
- Manual generation after service provisioning to avoid race conditions
- Checks existing keys
- Generates new keys
Service Name Handling
- Generated name (plan_name + random string) used for all operations
- Used for service management, deletion, statistics, and domain management
JSON Template Placeholders
$service_id
→ Blesta service ID (replaced after service creation)$domain
→ Customer hostname/domain from order form$ram_limit
→ RAM limit in MB from package configuration$cpu_limit
→ CPU limit in cores from package configuration$project_name
→ Server’s project name$custom_field_1
→ Custom field from configurable options named ‘custom_field_1’$custom_field_2
→ Custom field from configurable options named ‘custom_field_2’
Installation
- Extract
easypanel.zip
tocomponents/modules/
in your Blesta installation or copy extractedeasypanel
folder tocomponents/modules/
. - Navigate to Settings > Modules in Blesta admin
- Install the EasyPanel module
- If
license.json
not exist, renamelicense.example.json
tolicense.json
and insert your serial key inkey
object. - Configure your EasyPanel servers
- Customers can then deploy GitHub App and connect repositories as needed
Configuration
Adding a Server
- Go to Settings > Modules > EasyPanel > Manage
- Click Add Server
- Configure the following settings:
- Hostname: Your EasyPanel server hostname (e.g.,
panel.yourdomain.com
) - Server Label: A friendly name for the server
- API Key: Your EasyPanel API key
- Project Name: The EasyPanel project name where services will be created
- Hostname: Your EasyPanel server hostname (e.g.,
Creating Packages
- Go to Packages > Browse
- Create a new package and select the EasyPanel module
- Configure package settings:
- EasyPanel Server: Select which server to use
- Plan Name: A unique name for this service plan
- JSON Template: The EasyPanel service configuration in JSON format
- CPU Limit: CPU cores limit
- RAM Limit: RAM limit in MB
JSON Template Format
The JSON template should follow EasyPanel’s service schema format. Placeholders will be automatically replaced:
$service_id
→ Blesta service ID (replaced after service creation)$domain
→ Customer-provided hostname/domain from order form$ram_limit
→ RAM limit in MB from package configuration$cpu_limit
→ CPU limit in cores from package configuration$project_name
→ Server’s project name$custom_field_1
→ Custom field from configurable options$custom_field_2
→ Custom field from configurable options
Example template:
{
"json": {
"name": "LinkStack",
"projectName": "$project_name",
"schema": {
"services": [
{
"type": "app",
"data": {
"serviceName": "$service_id",
"env": "SERVER_ADMIN=$custom_field_1\nHTTPS_SERVER_NAME=$domain\nHTTP_SERVER_NAME=$domain\nFORCE_HTTPS=true",
"source": {
"type": "image",
"image": "linkstackorg/linkstack:latest"
},
"domains": [
{
"host": "$domain",
"port": 80
}
],
"mounts": [
{
"type": "volume",
"name": "htdocs",
"mountPath": "/htdocs"
}
],
"resources": {
"memoryReservation": 0,
"memoryLimit": $ram_limit,
"cpuReservation": 0,
"cpuLimit": $cpu_limit
}
}
}
]
}
}
}
Note: The $service_id
placeholder is replaced with a temporary value during initial provisioning and updated with the actual Blesta service ID after the service is created in the database.
How to get Easypanel Templates
From Easypanel Template Github repository
- Get template collections from Easypanel template repository in
https://github.com/easypanel-io/templates/tree/main/templates
From Easypanel GUI
- Activate browser’s debug window/development mode
- Inspect on Network tab
- Deploy a template in Easypanel
- Wait for traffic to
host + /api/trpc/templates.createFromSchema
- Open Payload tab
- Copy the JSON and modify with available Placeholders
Service Name Tracking
The module automatically captures the actual service name returned by EasyPanel after service creation. This enables accurate resource tracking and monitoring:
Service Fields Stored
- easypanel_hostname: Customer-provided hostname
- easypanel_service_name: Generated service name (customer_id + plan_name)
- easypanel_actual_service_name: Actual service name returned by EasyPanel (used for API calls)
Service Lifecycle Management
The module handles the complete service lifecycle:
Service Creation
- Automatically provisions services in EasyPanel when orders are activated
- Captures the actual service name for future management
- Supports JSON template placeholders for dynamic configuration
Service Deletion
When a service is cancelled in Blesta, the module automatically deletes it from EasyPanel. This ensures that cancelled services are properly cleaned up on the EasyPanel server.
API Requirements
- EasyPanel server with API access enabled (Can use EasyPanel free version)
- Valid API key with service management permissions
- Network connectivity between Blesta and EasyPanel servers
- Cloudflare or ClouDNS API key/auth/token if provisioned service will use generated subdomain
System Requirements
- Tested on Blesta 5+ (recommended to update to latest version)
- IonCude Loaders 14
- PHP 8.1+
- Module License Key
Support
Have questions or ideas to make this module even better? We’re here to help and always open to your feedback. Your input helps us improve and serve you better.
Licensing
- One license valid to one company and one hosting instance for a year.
- When license expired, customer’s services in EasyPanel will continue to run without any interuption but admin will not able to add more servers and provision new services.
Reviews
There are no reviews yet.