Deploy and operate applications on an EasyPanel instance through its API.
Supported:
- Create or reuse deterministic Shipper-managed projects and app services
- Container image sources
- Public Git sources and EasyPanel GitHub integration sources
- Inline Dockerfile sources
- Environment variables
- Custom domains with EasyPanel-managed HTTPS
- App deployment
- Ownership-guarded service and empty-project cleanup
Not yet supported by the provider:
- Database service lifecycle
- Deployment logs
- Rollback
- Resource limits, mounts, and persistent-volume lifecycle
EasyPanel may provide those capabilities in its UI, but this package does not claim support until their API behavior and cleanup semantics have dedicated tests.
composer require shippercli/provider-easypanelKeep the API token in an environment variable.
providers:
easypanel:
url: "https://panel.example.com"
auth_token: "${EASYPANEL_AUTH_TOKEN}"
managed_prefix: "shipper-"
service_name: "app"
source:
type: image
image: "ghcr.io/acme/backend:latest"
projects:
backend:
provider: easypanel
profiles:
production:
branch: main
domain: "api.example.com"
env:
APP_ENV: productionThe resulting EasyPanel project is named shipper-backend-production. If no profile domain is supplied, EasyPanel's generated HTTPS domain remains available.
source:
type: image
image: "nginx:alpine"source:
type: git
repo: "https://github.com/acme/backend.git"
ref: main
path: "/"When source is omitted, GitHub, GitLab, and Bitbucket repository metadata from the Shipper project is converted to a public Git URL.
source:
type: github
owner: acme
repo: backend
ref: main
path: "/"The repository must be accessible to the GitHub integration configured in EasyPanel.
source:
type: dockerfile
dockerfile: |
FROM nginx:alpine
COPY . /usr/share/nginx/htmlshipper destroy refuses to delete a service unless all of these conditions hold:
- The project name is derived from the configured
managed_prefix, project, and profile. - The exact service name matches the provider configuration.
- The service is an app service.
- The service environment contains both Shipper ownership markers.
After deleting the marked service, the provider deletes its project only when destroy_project is enabled and no services remain. Set destroy_project: false to retain empty managed projects.
composer install
composer test