Here is my workaround for the Drupal 9.1.4 installation on the Cloudron LAMP app (Paket v1.4.0-1).
Install the LAMP app on your Cloudron
Update the app ressources to minimal 1.5 GB RAM
open the terminal
switch to the www-data user su www-data
change directory to /app/data cd /app/data
install drupal via composer composer create-project drupal/recommended-project
move everything from inside recommended-project into the root of /app/data mv recommended-project/* . & mv recommended-project/.* .
remove the default public folder and make a symbolic link rm -rf public& ln -s web public
open your browser and install drupal
the last submit ends with an error
in the terminal install drush via composer composer require drush/drush
clear the cache php vendor/bin/drush cr
open your drupal installation again. #yippie
Maybe there is an unknown error in the drupal installation process or something between mysql/drupal/cloudron. No hints in the logfiles. But this workflow works for me.
@nebulon I think for a start just making ssh based git push/pull work with hooks on the Github Pages and LAMP app is good enough. I think for rest of the "complicated" apps, we have to really make some container based PaaS, where we build the container as well (just like Heroku). That's a really long term feature.
@p44 The MySQL database in Cloudron is shared by all the apps. In MySQL 5.7.5+, they changed the behavior to have ONLY_FULL_GROUP_BY to be the default to be more compliant. Disabling this at the server level will cause issues for other apps.
I believe LAMP app supports cron, in that case use the following script to auto-pull from a git repo whenever an update is pushed to that repo:
Put in /app/data/updateGit
## CD to the path where the app is installed.
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse "$UPSTREAM")
BASE=$(git merge-base @ "$UPSTREAM")
if [ $LOCAL = $REMOTE ]; then
elif [ $LOCAL = $BASE ]; then
echo "Need to pull"
elif [ $REMOTE = $BASE ]; then
echo "Need to push? Some files changed / commited here, this should not have happened."
echo "Diverged?? Help!"
Then in /app/data/crontab:
*/5 * * * * bash /app/data/updateGit 2>&1
## Or if you wanna avoid filling logs:
*/5 * * * * bash /app/data/updateGit 2>&1 > /dev/null