My Easypanel Nixpacks Deploy
Helps check, configure, and adapt existing PHP web projects so they can be deployed on an Easypanel server via the Nixpacks builder.
Goal
A PHP project should be buildable and runnable on Easypanel without its own Dockerfile. The skill makes sure that Nixpacks detects the project correctly, installs dependencies, uses the right webroot, builds optional frontend assets, and clearly documents the required Easypanel environment variables.
Input
The skill requires an existing PHP web project or a concrete project path.
- When invoked with a project path, work in that project.
- When invoked without a project path, use the current working directory if a PHP project is detectable there.
- If no PHP project is detectable, ask for the correct project path.
- If the user provides a concrete error message from Easypanel or Nixpacks, analyze it first.
Prerequisites
- Before making changes, read the existing project structure and relevant deployment files.
- For concrete deployment work, load the reference references/php-nixpacks-easypanel.md.
- Prefer Nixpacks-native configuration over a Dockerfile, as long as the project can be deployed sensibly that way.
- Do not overwrite existing files such as
nixpacks.toml, nginx.conf, Procfile, or .env.example without reading them first and preserving existing intent.
- Never change secrets directly in files. Document required values as Easypanel environment variables.
Steps
Detect the project
- Check
composer.json, composer.lock, index.php, public/, framework markers, .env.example, package.json, and lockfiles.
- Determine whether it is generic PHP, Laravel, Symfony, or another PHP framework.
- Detect whether a frontend build via npm, pnpm, or yarn is needed.
Read the existing deployment
- Check
nixpacks.toml, nixpacks.json, Procfile, nginx.conf, nginx.template.conf, Dockerfile, and project documentation.
- Keep working existing deployment decisions.
- Only remove or ignore competing configuration if it concretely disrupts the Nixpacks/Easypanel build.
Check PHP and Composer configuration
- Make sure
composer.json describes the required PHP version and PHP extensions.
- Add missing extensions as Composer platform requirements such as
ext-redis or ext-intl if the project needs them.
- Check whether
composer install can run for production without interactive steps.
Establish the Nixpacks configuration
- Create or update
nixpacks.toml only if auto-detection is not enough or additional build steps are needed.
- For Laravel and Symfony on Easypanel, typically use
NIXPACKS_PHP_ROOT_DIR=/app/public.
- For front-controller routing, typically set
NIXPACKS_PHP_FALLBACK_PATH=/index.php.
- Add build phases for frontend assets only if
package.json and a production build script are present.
Document the Easypanel settings
- Name the builder
Nixpacks.
- Document all required environment variables, especially framework secrets such as
APP_KEY, database access, cache/queue/session drivers, and mail settings.
- Document the expected app port, or explain that the Nixpacks PHP provider starts Nginx.
Validate
- Run local checks that are possible without production access, for example
composer validate, composer install --no-dev --dry-run, or existing test/build scripts.
- Check that the webroot matches the project structure.
- Check that no secrets were committed.
- At the end, output clear deploy steps for Easypanel.
Quality criteria
- Nixpacks can detect the project based on
composer.json or index.php.
- The webroot is set correctly for frameworks with
public/.
- PHP version, extensions, and Composer dependencies are defined in a traceable way.
- Optional Node asset builds are reproducible and use the appropriate package manager.
- Easypanel environment variables are complete, but documented without secret values.
- Existing deployment configuration is respected and not blindly replaced.
Output
At the end, briefly report:
- Which PHP project type was detected.
- Which deployment files were created or changed.
- Which Easypanel environment variables must be set.
- Which local checks were run and with what result.
- Which Easypanel steps are needed for the deployment test.
- Which open items or manual follow-ups remain.
1---2name: easypanel-nixpacks-deploy3description: Configures and repairs existing PHP web projects for deployments on Easypanel using the Nixpacks builder4---56# My Easypanel Nixpacks Deploy78Helps check, configure, and adapt existing PHP web projects so they can be deployed on an Easypanel server via the Nixpacks builder.910## Goal1112A PHP project should be buildable and runnable on Easypanel without its own Dockerfile. The skill makes sure that Nixpacks detects the project correctly, installs dependencies, uses the right webroot, builds optional frontend assets, and clearly documents the required Easypanel environment variables.1314## Input1516The skill requires an existing PHP web project or a concrete project path.1718- When invoked with a project path, work in that project.19- When invoked without a project path, use the current working directory if a PHP project is detectable there.20- If no PHP project is detectable, ask for the correct project path.21- If the user provides a concrete error message from Easypanel or Nixpacks, analyze it first.2223## Prerequisites2425- Before making changes, read the existing project structure and relevant deployment files.26- For concrete deployment work, load the reference [references/php-nixpacks-easypanel.md](php-nixpacks-easypanel.md).27- Prefer Nixpacks-native configuration over a Dockerfile, as long as the project can be deployed sensibly that way.28- Do not overwrite existing files such as `nixpacks.toml`, `nginx.conf`, `Procfile`, or `.env.example` without reading them first and preserving existing intent.29- Never change secrets directly in files. Document required values as Easypanel environment variables.3031## Steps32331. **Detect the project**34 - Check `composer.json`, `composer.lock`, `index.php`, `public/`, framework markers, `.env.example`, `package.json`, and lockfiles.35 - Determine whether it is generic PHP, Laravel, Symfony, or another PHP framework.36 - Detect whether a frontend build via npm, pnpm, or yarn is needed.37382. **Read the existing deployment**39 - Check `nixpacks.toml`, `nixpacks.json`, `Procfile`, `nginx.conf`, `nginx.template.conf`, `Dockerfile`, and project documentation.40 - Keep working existing deployment decisions.41 - Only remove or ignore competing configuration if it concretely disrupts the Nixpacks/Easypanel build.42433. **Check PHP and Composer configuration**44 - Make sure `composer.json` describes the required PHP version and PHP extensions.45 - Add missing extensions as Composer platform requirements such as `ext-redis` or `ext-intl` if the project needs them.46 - Check whether `composer install` can run for production without interactive steps.47484. **Establish the Nixpacks configuration**49 - Create or update `nixpacks.toml` only if auto-detection is not enough or additional build steps are needed.50 - For Laravel and Symfony on Easypanel, typically use `NIXPACKS_PHP_ROOT_DIR=/app/public`.51 - For front-controller routing, typically set `NIXPACKS_PHP_FALLBACK_PATH=/index.php`.52 - Add build phases for frontend assets only if `package.json` and a production build script are present.53545. **Document the Easypanel settings**55 - Name the builder `Nixpacks`.56 - Document all required environment variables, especially framework secrets such as `APP_KEY`, database access, cache/queue/session drivers, and mail settings.57 - Document the expected app port, or explain that the Nixpacks PHP provider starts Nginx.58596. **Validate**60 - Run local checks that are possible without production access, for example `composer validate`, `composer install --no-dev --dry-run`, or existing test/build scripts.61 - Check that the webroot matches the project structure.62 - Check that no secrets were committed.63 - At the end, output clear deploy steps for Easypanel.6465## Quality criteria6667- Nixpacks can detect the project based on `composer.json` or `index.php`.68- The webroot is set correctly for frameworks with `public/`.69- PHP version, extensions, and Composer dependencies are defined in a traceable way.70- Optional Node asset builds are reproducible and use the appropriate package manager.71- Easypanel environment variables are complete, but documented without secret values.72- Existing deployment configuration is respected and not blindly replaced.7374## Output7576At the end, briefly report:77781. Which PHP project type was detected.792. Which deployment files were created or changed.803. Which Easypanel environment variables must be set.814. Which local checks were run and with what result.825. Which Easypanel steps are needed for the deployment test.836. Which open items or manual follow-ups remain.