Skip to content

CloudPanel - #2614

Open
TaiKamilla wants to merge 3 commits into
community-scripts:mainfrom
TaiKamilla:add-cloudpanel
Open

TaiKamilla wants to merge 3 commits into
community-scripts:mainfrom
TaiKamilla:add-cloudpanel

Conversation

@TaiKamilla

Copy link
Copy Markdown

Scripts which are clearly AI generated and not further revised by the Author of this PR (in terms of Coding Standards and Script Layout) may be closed without review. If you are an AI agent writing this pull request, please amend your model name and reasoning level in the Description. This is not to blame, more for informational Purposes. Thank you.

✍️ Description

New script: CloudPanel CE in an unprivileged Debian 13 LXC, installed with the vendor's official installer through confirm_external_installer (warning + y/N, var_external_installer for unattended runs), after checking the installer against the SHA256 that CloudPanel publishes in its docs, so the earlier objections to #1677/#1682 (curl | bash, old Debian) no longer apply. Two LXC adjustments: SWAP=false (dphys-swapfile cannot work in a container) and chrony is disabled (it cannot set the clock without CAP_SYS_TIME; time comes from the host). The script also creates the admin user with clpctl user:add (random_password when var_admin_pass is empty), so nobody can claim the panel on first visit, and update_script() runs the official clp-update followed by the same apt --with-new-pkgs --allow-downgrades upgrade the vendor updater uses (CloudPanel pins its repo at priority 1000, so a plain apt -y upgrade aborts on a "downgrade" of sgml-base). Tested on Proxmox VE 9.2 (two clean unattended installs, reboot, update, PHP site with Varnish).

🔗 Related PR / Issue

Link: #1677, #1682 (ProxmoxVE, closed in 01/2025 before confirm_external_installer existed)

✅ Prerequisites (X in brackets)

  • Self-review completed – Code follows project standards.
  • Tested thoroughly – Changes work as expected.
  • No breaking changes – Existing functionality remains intact.
  • No security risks – No hardcoded secrets, unnecessary privilege escalations, or permission issues.

🧩 Script

Name: CloudPanel

Tool: Free server control panel for PHP, Node.js, Python, static sites and reverse proxies, with NGINX, multiple PHP-FPM versions, MySQL/MariaDB, Varnish, Redis, Let's Encrypt, cron jobs, SFTP users and backups managed from a web UI or the clpctl CLI.

🗂️ Category (X in brackets)

  • CT – LXC container (ct/ + install/)
  • VM – Virtual machine (vm/)
  • Addon – tools/addon/
  • PVE Tool – tools/pve/
  • Other – path given in the Description

🖥️ Platform – tested on (X in brackets)

  • Proxmox VE – Created on a Proxmox VE host and the app works.
  • Incus – Created on an Incus host and the app works.

Application containers run on both; tick what you actually tested. VMs and host tools are Proxmox only.

🏗️ Architecture (X in brackets)

  • arm64 supported - Tested and supported on arm64.
  • arm64 not tested - Assumed to work on arm64, but testing has not been done.
  • arm64 not supported - Confirmed upstream dependencies or binaries do not support arm64.

amd64 support is assumed.


🛠️ Type of Change (X in brackets)

  • 🐞 Bug fix – Resolves an issue without breaking functionality.
  • ✨ New feature – Adds new, non-breaking functionality.
  • 💥 Breaking change – Alters existing functionality in a way that may require updates.
  • 🆕 New script – A fully functional and tested script or script set.
  • 🌍 Website update – Changes to website-related JSON files or metadata.
  • 🔧 Refactoring / Code Cleanup – Improves readability or maintainability without changing functionality.
  • 📝 Documentation update – Changes to README, AppName.md, CONTRIBUTING.md, or other docs.

🔍 Code & Security Review (X in brackets)

  • Follows CODE-AUDIT.md & CONTRIBUTING.md guidelines
  • Uses correct script structure (AppName.sh, AppName-install.sh, AppName.json)
  • No hardcoded credentials
  • No Docker / Docker Compose – The application is installed bare-metal; Docker is not used.
  • No git pull – Updates use fetch_and_deploy_gh_release, fetch_and_deploy_codeberg_release, fetch_and_deploy_gl_release, or fetch_and_deploy_from_url instead of git pull.

📋 Additional Information (optional)

  • Test results (Proxmox VE 9.2, unprivileged CT, nesting=1, 2 cores / 4 GB): install ~22 min, cloudpanel 2.5.4 ii, no failed units, panel on :8443 answers with the login page and the generated admin can log in. Stack as installed by CloudPanel: NGINX 1.30.6, PHP 7.1 to 8.5 (8.4 default, OPcache on), MariaDB 12.3.3 (default; var_db_engine also accepts MARIADB_11.8 and MYSQL_8.4), Redis 8.0, memcached, Varnish 7.5, ProFTPD, fail2ban, postfix. ufw works inside the unprivileged CT with CloudPanel's default rules.
  • Site test: clpctl site:add:php + db:add, PHP page using MariaDB, Redis and OPcache; Varnish enabled for the site in the panel, the second and third request came from Varnish (cache_hit 2, cache_miss 1), purge as the site user worked, all of it still fine after a container reboot.
  • update_script() run inside the container: exit 0, services and site still up. The installer's checksum is pinned on purpose: when CloudPanel changes install.sh, the docs page shows the new hash and the script fails closed until it is updated here.
  • CloudPanel officially supports VMs only (stated in its docs); the JSON warns about this. pct shutdown and pct destroy --purge of the test CT were clean on a dir storage.
  • var_arm64=yes: CloudPanel publishes an arm64 apt repository for Debian 13 and an aarch64 clp-agent; I have no arm64 host to test on.

📦 Application Requirements (for new scripts)

⚠️ Do not remove this section.
It is used by automated PR validation checks.
If this PR is not a new script submission, leave the checkboxes unchecked.

Required for 🆕 New script submissions.
Pull requests that do not meet these requirements may be closed without review.

  • The application is at least 6 months old
  • The application is actively maintained
  • The application has 1,000+ GitHub stars
  • Official release tarballs are published
  • I understand that not all scripts will be accepted due to various reasons and criteria by the community-scripts ORG

🌐 Source


🤖 AI Assistance (X in brackets)

If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any scripts in this PR, you must confirm compliance below.
Select exactly one option.

  • No AI used – Scripts were written without AI assistance.
  • AI was used – I confirm the scripts were built using AGENTS.md and .github/agents/pve-script-creator.agent.md as guidance, and the output has been reviewed and corrected to match those guidelines.

Please describe to which degree, if any, an LLM was used in creating this pull request. Name the model(s) used and, if applicable, the reasoning/thinking effort level (e.g. "Claude Sonnet 4.5, high reasoning, used to draft the install script, then manually reviewed and tested" or "No LLM used"). This is informational, not a penalty — but scripts that are clearly AI-generated and not further revised by the author to match CODE-AUDIT.md / CONTRIBUTING.md may be closed without review.

Claude Opus 5.5 (Anthropic) running as an agent, low reasoning effort: read the CloudPanel docs, install.sh and the package postinst, wrote the three files from the FreeScout/Pi-hole patterns, then ran real unattended installs on Proxmox VE and fixed what they showed (chrony failing in the CT, plain apt upgrade aborting on CloudPanel's repo pin). Reviewed by the author before submission.

@TaiKamilla
TaiKamilla requested a review from a team as a code owner November 13, 2026 12:25
@github-actions

Copy link
Copy Markdown
Contributor

Try this script

ct/cloudpanel.sh, run in the Proxmox VE shell or on an Incus host:

COMMUNITY_SCRIPTS_URL=https://raw.githubusercontent.com/TaiKamilla/DevScripts/add-cloudpanel \
bash -c "$(curl -fsSL https://raw.githubusercontent.com/TaiKamilla/DevScripts/add-cloudpanel/ct/cloudpanel.sh)"

COMMUNITY_SCRIPTS_URL is not optional for ct/. Fetching the ct/ script from a
branch does not tell the engine where that branch is — with bash -c "$(curl …)"
there is no file on disk for the scripts root to be derived from, so it would fall
back to upstream main and look for the install script there.

Against a core branch as well

Add COMMUNITY_SCRIPTS_CORE_URL=https://raw.githubusercontent.com/OWNER/core/BRANCH
to test an engine change at the same time. The two resolve independently.

Useful flags while testing

dev_mode=net logs every fetch with status and duration, so you can confirm the
branch is really being used. dev_mode=keep stops a failed build from deleting
the container along with the evidence.

github-actions[bot]

This comment was marked as outdated.

@github-actions
github-actions Bot dismissed their stale review November 13, 2026 14:23

Replaced by a newer Proxmox script test.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proxmox script test failed at 9b06dd0:

  • ct/cloudpanel.sh (incus): install script exited 1: in line 114: exit code 1 (bash exited with status 1): while executing command env HOME=/root SWAP=false DB_ENGINE=MARIADB_12.3 bash /tmp/cloudpanel-install.sh

Logs and details: test result. Push a fix, then ask for /test again.

@michelroegl-brunner

Copy link
Copy Markdown
Member

The Incus build fails inside CloudPanel's own installer: its package postinst runs cat /etc/pam.d/sshd and exits 1 when that file is missing.

Setting up cloudpanel (2.5.4-3+clp-trixie) ...
cat: /etc/pam.d/sshd: No such file or directory
dpkg: error processing package cloudpanel (--configure):
 installed cloudpanel package post-installation script subprocess returned error exit status 1

The Proxmox Debian template ships openssh-server, the Incus Debian image does not. Please install openssh-server in install/cloudpanel-install.sh before handing over to the upstream installer; CloudPanel expects SSH anyway.

@github-actions
github-actions Bot dismissed their stale review November 14, 2026 19:56

Replaced by a newer Proxmox script test.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Proxmox script test failed at bdfb9af:

  • ct/cloudpanel.sh (incus): update: exited 100: [2026-11-14 20:35:41] [ERROR] in line 933: exit code 100

Logs and details: test result. Push a fix, then ask for /test again.

…ge lacks it; the MariaDB key import uses wget)
@github-actions

Copy link
Copy Markdown
Contributor

Proxmox script test

@TaiKamilla ✅ 2/2 passed at 570d409

Script Platform Install Update Duration Detail
ct/cloudpanel.sh pve ✅ ➖ 13m05s https://10.99.0.129:8443 → 200; update: nothing to update (No update required. CloudPanel is already up to date)
ct/cloudpanel.sh incus ✅ ➖ 10m02s https://10.98.0.88:8443 → 200; update: nothing to update (No update required. CloudPanel is already up to date)
ct/cloudpanel.sh arm64 ⚠️ – 0m00s no result (runner or job failure)

ARM64 (information only, not counted): 0/1 passed; failures there do not block this PR.

Notes (information only, not counted):

  • ct/cloudpanel.sh (pve): 2 error line(s) in the journal since boot, e.g. Fatal error : adjtimex(0x8001) failed : Operation not permitted; Failed to start chrony.service - chrony, an NTP client/server.
  • ct/cloudpanel.sh (incus): 2 error line(s) in the journal since boot, e.g. Fatal error : adjtimex(0x8001) failed : Operation not permitted; Failed to start chrony.service - chrony, an NTP client/server.
📊 Resources
Script Platform Usage
ct/cloudpanel.sh pve disk 3.6 of 20 GB · RAM at rest 283 of 2048 MB · OOM kills 0
ct/cloudpanel.sh incus disk 3.5 of 20 GB · RAM at rest 459 of 2048 MB · OOM kills 0
📸 ct/cloudpanel.sh (pve) — https://10.99.0.129:8443: after install / after update

Screenshot of ct/cloudpanel.sh Screenshot of ct/cloudpanel.sh

📸 ct/cloudpanel.sh (incus) — https://10.98.0.88:8443: after install / after update

Screenshot of ct/cloudpanel.sh Screenshot of ct/cloudpanel.sh

📄 ct/cloudpanel.sh (pve) — install log (4402 lines)
… 4309 earlier lines cut, the full log is in the run artifacts
Deprecated: Composer\Command\InitCommand::getPlatformExceptionDetails(): Implicitly marking parameter $platformRepo as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/InitCommand.php on line 987
PHP Deprecated:  Composer\Command\CreateProjectCommand::installProject(): Implicitly marking parameter $platformRequirementFilter as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 191
Deprecated: Composer\Command\CreateProjectCommand::installProject(): Implicitly marking parameter $platformRequirementFilter as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 191
PHP Deprecated:  Composer\Command\CreateProjectCommand::installRootPackage(): Implicitly marking parameter $repositories as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 354
Deprecated: Composer\Command\CreateProjectCommand::installRootPackage(): Implicitly marking parameter $repositories as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 354
PHP Deprecated:  Composer\Command\ShowCommand::printPackageInfo(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 651
Deprecated: Composer\Command\ShowCommand::printPackageInfo(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 651
PHP Deprecated:  Composer\Command\ShowCommand::printMeta(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 679
Deprecated: Composer\Command\ShowCommand::printMeta(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 679
PHP Deprecated:  Composer\Command\ShowCommand::printPackageInfoAsJson(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 826
Deprecated: Composer\Command\ShowCommand::printPackageInfoAsJson(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 826
PHP Deprecated:  Composer\Command\ArchiveCommand::archive(): Implicitly marking parameter $composer as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ArchiveCommand.php on line 126
Deprecated: Composer\Command\ArchiveCommand::archive(): Implicitly marking parameter $composer as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ArchiveCommand.php on line 126
PHP Deprecated:  Composer\Config::prohibitUrlByConfig(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Config.php on line 585
Deprecated: Composer\Config::prohibitUrlByConfig(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Config.php on line 585
PHP Deprecated:  Composer\Json\JsonFile::__construct(): Implicitly marking parameter $httpDownloader as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
Deprecated: Composer\Json\JsonFile::__construct(): Implicitly marking parameter $httpDownloader as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
PHP Deprecated:  Composer\Json\JsonFile::__construct(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
Deprecated: Composer\Json\JsonFile::__construct(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
PHP Deprecated:  Composer\Downloader\FilesystemException::__construct(): Implicitly marking parameter $previous as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Downloader/FilesystemException.php on line 27
Deprecated: Composer\Downloader\FilesystemException::__construct(): Implicitly marking parameter $previous as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Downloader/FilesystemException.php on line 27
PHP Deprecated:  Composer\Util\StreamContextFactory::getTlsDefaults(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/StreamContextFactory.php on line 137
Deprecated: Composer\Util\StreamContextFactory::getTlsDefaults(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/StreamContextFactory.php on line 137
PHP Deprecated:  Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 67
Deprecated: Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 67
PHP Deprecated:  Composer\CaBundle\CaBundle::validateCaFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 161
Deprecated: Composer\CaBundle\CaBundle::validateCaFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 161
PHP Deprecated:  Composer\CaBundle\CaBundle::caFileUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 341
Deprecated: Composer\CaBundle\CaBundle::caFileUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 341
PHP Deprecated:  Composer\CaBundle\CaBundle::caDirUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 354
Deprecated: Composer\CaBundle\CaBundle::caDirUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 354
PHP Deprecated:  Composer\CaBundle\CaBundle::isFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 367
Deprecated: Composer\CaBundle\CaBundle::isFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 367
PHP Deprecated:  Composer\CaBundle\CaBundle::isDir(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 382
Deprecated: Composer\CaBundle\CaBundle::isDir(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 382
PHP Deprecated:  Composer\CaBundle\CaBundle::isReadable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 397
Deprecated: Composer\CaBundle\CaBundle::isReadable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 397
PHP Deprecated:  Composer\CaBundle\CaBundle::glob(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 412
Deprecated: Composer\CaBundle\CaBundle::glob(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 412
PHP Deprecated:  Composer\Util\Filesystem::__construct(): Implicitly marking parameter $executor as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php on line 31
Deprecated: Composer\Util\Filesystem::__construct(): Implicitly marking parameter $executor as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php on line 31
PHP Deprecated:  Composer\Util\RemoteFilesystem::__construct(): Implicitly marking parameter $authHelper as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 82
Deprecated: Composer\Util\RemoteFilesystem::__construct(): Implicitly marking parameter $authHelper as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 82
PHP Deprecated:  Composer\Util\RemoteFilesystem::getRemoteContents(): Implicitly marking parameter $responseHeaders as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 564
Deprecated: Composer\Util\RemoteFilesystem::getRemoteContents(): Implicitly marking parameter $responseHeaders as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 564
PHP Deprecated:  Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $runtime as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
Deprecated: Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $runtime as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
PHP Deprecated:  Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $hhvmDetector as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
Deprecated: Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $hhvmDetector as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
Created symlink '/etc/systemd/system/multi-user.target.wants/clp-agent.service' → '/usr/lib/systemd/system/clp-agent.service'.
Processing triggers for libc-bin (2.41-12+deb13u4) ...
ldconfig: /lib/libvarnishapi.so.3 is not a symbolic link
Processing triggers for man-db (2.13.1-1) ...
Processing triggers for debianutils (5.23.2) ...
Processing triggers for mailcap (3.74) ...
Processing triggers for php8.2-cli (8.2.35-1+clp-trixie) ...
Processing triggers for php7.4-cli (7.4.33-6+clp-trixie) ...
Processing triggers for php8.3-cli (8.3.36-1+clp-trixie) ...
Processing triggers for php8.1-cli (8.1.34-2+clp-trixie) ...
Processing triggers for php7.3-cli (7.3.33-5+clp-trixie) ...
Processing triggers for php8.4-cli (8.4.27-1+clp-trixie) ...
Processing triggers for php7.2-cli (7.2.34-5+clp-trixie) ...
Processing triggers for php7.1-cli (7.1.33-6+clp-trixie) ...
Processing triggers for php8.0-cli (8.0.30-6+clp-trixie) ...
Processing triggers for php8.5-cli (8.5.12-1+clp-trixie) ...
Processing triggers for php7.3-fpm (7.3.33-5+clp-trixie) ...
Processing triggers for php7.4-fpm (7.4.33-6+clp-trixie) ...
Processing triggers for php8.3-fpm (8.3.36-1+clp-trixie) ...
Processing triggers for php7.2-fpm (7.2.34-5+clp-trixie) ...
Processing triggers for php8.0-fpm (8.0.30-6+clp-trixie) ...
Processing triggers for php8.2-fpm (8.2.35-1+clp-trixie) ...
Processing triggers for php8.1-fpm (8.1.34-2+clp-trixie) ...
Processing triggers for php8.4-fpm (8.4.27-1+clp-trixie) ...
Processing triggers for php7.1-fpm (7.1.33-6+clp-trixie) ...
Processing triggers for php8.5-fpm (8.5.12-1+clp-trixie) ...

The installation of CloudPanel is complete!�
CloudPanel can be accessed now: https://213.174.235.113:8443 �

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
[2026-11-14 22:23:02] [OK] Installed CloudPanel
[2026-11-14 22:23:02] [INFO] Creating CloudPanel Admin
User "admin" has been added.
[2026-11-14 22:23:03] [OK] Created CloudPanel Admin
[2026-11-14 22:23:03] [INFO] Customizing Container
[2026-11-14 22:23:05] [OK] Customized Container
[2026-11-14 22:23:05] [INFO] Cleaning up
Reading package lists...
Building dependency tree...
Reading state information...
Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
[2026-11-14 22:23:07] [OK] Cleaned
~~~~
</details>

<details><summary>🔄 ct/cloudpanel.sh (pve) — update log (21 lines)</summary>

~~~~text
curl: (22) The requested URL returned error: 404
curl: (22) The requested URL returned error: 404
   ______                                      _ __           _____           _       __
  / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
 / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
/ /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                 /____/                    /_/
  CloudPanel
curl: (22) The requested URL returned error: 404
curl: (22) The requested URL returned error: 404
   ______                                      _ __           _____           _       __
  / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
 / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
/ /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                 /____/                    /_/
  CloudPanel
  ✔️  No update required. CloudPanel is already up to date
  ⏳   Cleaning up
  ✔️  Cleaned
~~~~
</details>
<details><summary>📄 ct/cloudpanel.sh (incus) — install log (3849 lines)</summary>

~~~~text
… 3757 earlier lines cut, the full log is in the run artifacts
Deprecated: Composer\Command\InitCommand::findBestVersionAndNameForPackage(): Implicitly marking parameter $platformRepo as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/InitCommand.php on line 880
PHP Deprecated:  Composer\Command\InitCommand::getPlatformExceptionDetails(): Implicitly marking parameter $platformRepo as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/InitCommand.php on line 987
Deprecated: Composer\Command\InitCommand::getPlatformExceptionDetails(): Implicitly marking parameter $platformRepo as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/InitCommand.php on line 987
PHP Deprecated:  Composer\Command\CreateProjectCommand::installProject(): Implicitly marking parameter $platformRequirementFilter as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 191
Deprecated: Composer\Command\CreateProjectCommand::installProject(): Implicitly marking parameter $platformRequirementFilter as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 191
PHP Deprecated:  Composer\Command\CreateProjectCommand::installRootPackage(): Implicitly marking parameter $repositories as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 354
Deprecated: Composer\Command\CreateProjectCommand::installRootPackage(): Implicitly marking parameter $repositories as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/CreateProjectCommand.php on line 354
PHP Deprecated:  Composer\Command\ShowCommand::printPackageInfo(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 651
Deprecated: Composer\Command\ShowCommand::printPackageInfo(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 651
PHP Deprecated:  Composer\Command\ShowCommand::printMeta(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 679
Deprecated: Composer\Command\ShowCommand::printMeta(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 679
PHP Deprecated:  Composer\Command\ShowCommand::printPackageInfoAsJson(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 826
Deprecated: Composer\Command\ShowCommand::printPackageInfoAsJson(): Implicitly marking parameter $latestPackage as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ShowCommand.php on line 826
PHP Deprecated:  Composer\Command\ArchiveCommand::archive(): Implicitly marking parameter $composer as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ArchiveCommand.php on line 126
Deprecated: Composer\Command\ArchiveCommand::archive(): Implicitly marking parameter $composer as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Command/ArchiveCommand.php on line 126
PHP Deprecated:  Composer\Config::prohibitUrlByConfig(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Config.php on line 585
Deprecated: Composer\Config::prohibitUrlByConfig(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Config.php on line 585
PHP Deprecated:  Composer\Json\JsonFile::__construct(): Implicitly marking parameter $httpDownloader as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
Deprecated: Composer\Json\JsonFile::__construct(): Implicitly marking parameter $httpDownloader as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
PHP Deprecated:  Composer\Json\JsonFile::__construct(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
Deprecated: Composer\Json\JsonFile::__construct(): Implicitly marking parameter $io as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 55
PHP Deprecated:  Composer\Downloader\FilesystemException::__construct(): Implicitly marking parameter $previous as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Downloader/FilesystemException.php on line 27
Deprecated: Composer\Downloader\FilesystemException::__construct(): Implicitly marking parameter $previous as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Downloader/FilesystemException.php on line 27
PHP Deprecated:  Composer\Util\StreamContextFactory::getTlsDefaults(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/StreamContextFactory.php on line 137
Deprecated: Composer\Util\StreamContextFactory::getTlsDefaults(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/StreamContextFactory.php on line 137
PHP Deprecated:  Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 67
Deprecated: Composer\CaBundle\CaBundle::getSystemCaRootBundlePath(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 67
PHP Deprecated:  Composer\CaBundle\CaBundle::validateCaFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 161
Deprecated: Composer\CaBundle\CaBundle::validateCaFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 161
PHP Deprecated:  Composer\CaBundle\CaBundle::caFileUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 341
Deprecated: Composer\CaBundle\CaBundle::caFileUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 341
PHP Deprecated:  Composer\CaBundle\CaBundle::caDirUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 354
Deprecated: Composer\CaBundle\CaBundle::caDirUsable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 354
PHP Deprecated:  Composer\CaBundle\CaBundle::isFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 367
Deprecated: Composer\CaBundle\CaBundle::isFile(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 367
PHP Deprecated:  Composer\CaBundle\CaBundle::isDir(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 382
Deprecated: Composer\CaBundle\CaBundle::isDir(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 382
PHP Deprecated:  Composer\CaBundle\CaBundle::isReadable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 397
Deprecated: Composer\CaBundle\CaBundle::isReadable(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 397
PHP Deprecated:  Composer\CaBundle\CaBundle::glob(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 412
Deprecated: Composer\CaBundle\CaBundle::glob(): Implicitly marking parameter $logger as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/vendor/composer/ca-bundle/src/CaBundle.php on line 412
PHP Deprecated:  Composer\Util\Filesystem::__construct(): Implicitly marking parameter $executor as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php on line 31
Deprecated: Composer\Util\Filesystem::__construct(): Implicitly marking parameter $executor as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/Filesystem.php on line 31
PHP Deprecated:  Composer\Util\RemoteFilesystem::__construct(): Implicitly marking parameter $authHelper as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 82
Deprecated: Composer\Util\RemoteFilesystem::__construct(): Implicitly marking parameter $authHelper as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 82
PHP Deprecated:  Composer\Util\RemoteFilesystem::getRemoteContents(): Implicitly marking parameter $responseHeaders as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 564
Deprecated: Composer\Util\RemoteFilesystem::getRemoteContents(): Implicitly marking parameter $responseHeaders as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Util/RemoteFilesystem.php on line 564
PHP Deprecated:  Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $runtime as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
Deprecated: Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $runtime as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
PHP Deprecated:  Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $hhvmDetector as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
Deprecated: Composer\Repository\PlatformRepository::__construct(): Implicitly marking parameter $hhvmDetector as nullable is deprecated, the explicit nullable type must be used instead in phar:///usr/local/bin/composer/src/Composer/Repository/PlatformRepository.php on line 71
Created symlink '/etc/systemd/system/multi-user.target.wants/clp-agent.service' → '/usr/lib/systemd/system/clp-agent.service'.
Processing triggers for php8.2-cli (8.2.35-1+clp-trixie) ...
Processing triggers for php7.4-cli (7.4.33-6+clp-trixie) ...
Processing triggers for php8.3-cli (8.3.36-1+clp-trixie) ...
Processing triggers for php8.1-cli (8.1.34-2+clp-trixie) ...
Processing triggers for php7.3-cli (7.3.33-5+clp-trixie) ...
Processing triggers for php8.4-cli (8.4.27-1+clp-trixie) ...
Processing triggers for php7.2-cli (7.2.34-5+clp-trixie) ...
Processing triggers for php7.1-cli (7.1.33-6+clp-trixie) ...
Processing triggers for php8.0-cli (8.0.30-6+clp-trixie) ...
Processing triggers for php8.5-cli (8.5.12-1+clp-trixie) ...
Processing triggers for libc-bin (2.41-12+deb13u4) ...
ldconfig: /lib/libvarnishapi.so.3 is not a symbolic link
Processing triggers for php7.3-fpm (7.3.33-5+clp-trixie) ...
Processing triggers for php7.4-fpm (7.4.33-6+clp-trixie) ...
Processing triggers for php8.3-fpm (8.3.36-1+clp-trixie) ...
Processing triggers for php7.2-fpm (7.2.34-5+clp-trixie) ...
Processing triggers for php8.0-fpm (8.0.30-6+clp-trixie) ...
Processing triggers for php8.2-fpm (8.2.35-1+clp-trixie) ...
Processing triggers for php8.1-fpm (8.1.34-2+clp-trixie) ...
Processing triggers for php8.4-fpm (8.4.27-1+clp-trixie) ...
Processing triggers for php7.1-fpm (7.1.33-6+clp-trixie) ...
Processing triggers for php8.5-fpm (8.5.12-1+clp-trixie) ...

The installation of CloudPanel is complete!
CloudPanel can be accessed now: https://213.174.235.113:8443

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
[2026-11-14 22:20:47] [OK] Installed CloudPanel
[2026-11-14 22:20:47] [INFO] Creating CloudPanel Admin
User "admin" has been added.
[2026-11-14 22:20:48] [OK] Created CloudPanel Admin
[2026-11-14 22:20:49] [INFO] Customizing Container
[2026-11-14 22:20:50] [OK] Customized Container
[2026-11-14 22:20:50] [INFO] Cleaning up
Reading package lists...
Building dependency tree...
Reading state information...
Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
[2026-11-14 22:20:52] [OK] Cleaned
~~~~
</details>

<details><summary>🔄 ct/cloudpanel.sh (incus) — update log (16 lines)</summary>

~~~~text
   ______                                      _ __           _____           _       __
  / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
 / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
/ /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                 /____/                    /_/
  CloudPanel
10.98.0.88
   ______                                      _ __           _____           _       __
  / ____/___  ____ ___  ____ ___  __  ______  (_) /___  __   / ___/__________(_)___  / /______
 / /   / __ \/ __ `__ \/ __ `__ \/ / / / __ \/ / __/ / / /   \__ \/ ___/ ___/ / __ \/ __/ ___/
/ /___/ /_/ / / / / / / / / / / / /_/ / / / / / /_/ /_/ /   ___/ / /__/ /  / / /_/ / /_(__  )
\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\__/\__, /   /____/\___/_/  /_/ .___/\__/____/
                                                 /____/                    /_/
  CloudPanel
  ✔️  No update required. CloudPanel is already up to date
~~~~
</details>
<sub>ct/cloudpanel.sh (arm64): no install log was captured</sub>

Full logs: [workflow run](https://github.com/community-scripts/DevScripts/actions/runs/43641588287) (artifacts `result-*`). Comment `/test` to build again.

@github-actions
github-actions Bot dismissed their stale review November 14, 2026 21:26

Proxmox script test passed at 570d409.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants