#!/usr/bin/bash


# user names and passwords environment variables
DOMAIN="typo14.local"
DBUSER="typo3"
DBPASS="typo3"
DBNAME="typo3"
ADMINPASS="Admin1234%"


# install all dependencies
apt-get update
apt-get upgrade

apt-get -y install apache2 libapache2-mod-php php-gd php-xml php-zip php-pdo php-mysql php-common php-intl php-tokenizer php-curl php-imagick wget mariadb-server unzip composer imagemagick


# setup database
mysql << EOF
CREATE DATABASE $DBNAME;
CREATE USER $DBUSER@'localhost' IDENTIFIED BY "$DBPASS";
GRANT ALL PRIVILEGES ON $DBNAME.* TO $DBUSER@'localhost';
FLUSH PRIVILEGES;
EOF


# set PHP variables
php_ini="/etc/php/8.4/apache2/php.ini"
cp $php_ini $php_ini.bak
sed -i 's/^;date.timezone =/date.timezone = "Europe\/Berlin"/' $php_ini
sed -i 's/^max_execution_time = 30/max_execution_time = 240/' $php_ini
sed -i 's/^;max_input_vars = 1000/max_input_vars = 1500/' $php_ini
sed -i 's/^upload_max_filesize = 2M/upload_max_filesize = 10M/' $php_ini
sed -i 's/^post_max_size = 8M/post_max_size = 10M/' $php_ini
sed -i 's/memory_limit = 128M/memory_limit = 256M/' $php_ini
sed -i 's/^;pcre.jit=1/pcre.jit = 1/' $php_ini


# configure virtual host and enable Apache modules
cat << EOF > /etc/apache2/sites-available/typo3.conf
<VirtualHost *:80>
    #ServerName $DOMAIN
    DocumentRoot /var/www/typo14/public
    <Directory /var/www/typo14/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog \${APACHE_LOG_DIR}/typo3_error.log
    CustomLog \${APACHE_LOG_DIR}/typo3_access.log combined
</VirtualHost>
EOF

a2enmod expires headers rewrite
a2dissite 000-default
a2ensite typo3
systemctl restart apache2


# download and setup TYPO3
cd /var/www
composer create-project typo3/cms-base-distribution typo14 "^14"
cd /var/www/typo14
composer require typo3/theme-camino
#./vendor/bin/typo3 setup
./vendor/bin/typo3 setup --no-interaction --server-type=apache --driver=pdoMysqlSocket --username="$DBUSER" --dbname="$DBNAME" --password="$DBPASS" --admin-user-password="$ADMINPASS" #--create-site="$DOMAIN"
./vendor/bin/typo3 extension:setup
chown -R www-data:www-data /var/www/typo14


# frontend / backend access
ip a
echo "Frontend URL/IP: http://$IP/camino/"
echo "Backend URL: http://$DOMAIN/typo3/"
IP=$(ip -4 -o address | grep eth0 | tr -s " " | tr "/" " " | cut -d ' ' -f4)
echo "Backend URL/IP: http://$IP/typo3/"
echo "Backend login: admin / $ADMINPASS"

