Compare commits

...

3 Commits

Author SHA1 Message Date
80d7600a5b Update nextcloud_Install.sh 2024-10-08 10:07:08 +00:00
a92103b1f4 Update nextcloud_Install.sh 2024-10-08 10:00:32 +00:00
beb6207e59 Syntax fix and linting 2024-03-06 06:48:53 +00:00

View File

@ -22,7 +22,6 @@ setupNextcloud() {
apt-get upgrade -y apt-get upgrade -y
apt-get -y install apt-transport-https lsb-release ca-certificates curl sudo wget zip hdparm apt-get -y install apt-transport-https lsb-release ca-certificates curl sudo wget zip hdparm
failCheck "while installing basics, please check output above for more info" failCheck "while installing basics, please check output above for more info"
DISTRO=$(lsb_release -si)
RELEASE=$(lsb_release -sc) RELEASE=$(lsb_release -sc)
if [[ -d /etc/udev/rules.d/ ]]; then if [[ -d /etc/udev/rules.d/ ]]; then
@ -37,37 +36,37 @@ setupNextcloud() {
PHPTHREADS=1 PHPTHREADS=1
fi fi
TOTALMEM=$(grep MemTotal /proc/meminfo | awk '{print $2}') TOTALMEM=$(grep MemTotal /proc/meminfo | awk '{print $2}')
TOTALMEM=$((${TOTALMEM}/1024)) TOTALMEM=$((TOTALMEM/1024))
ROUNDED=1 ROUNDED=1
while [ ${ROUNDED} -lt ${TOTALMEM} ]; do while [ ${ROUNDED} -lt ${TOTALMEM} ]; do
ROUNDED=$((${ROUNDED} * 2)) ROUNDED=$((ROUNDED*2))
done done
if [[ ${TOTALMEM} -gt 400 ]]; then if [[ ${TOTALMEM} -gt 400 ]]; then
PHPTHREADS=$((${PHPTHREADS}*2)) PHPTHREADS=$((PHPTHREADS*2))
fi fi
PHPMEM=$((${ROUNDED}/2)) PHPMEM=$((ROUNDED/2))
OVERDRIVE=$((${ROUNDED}/1024)) OVERDRIVE=$((ROUNDED/1024))
if [[ ${OVERDRIVE} -gt 8 ]]; then if [[ ${OVERDRIVE} -gt 8 ]]; then
OVERDRIVE=8 OVERDRIVE=8
fi fi
DBMEM=$((${PHPMEM}/4)) DBMEM=$((PHPMEM/4))
DBTEMPBUFF=$((${DBMEM}/16)) DBTEMPBUFF=$((DBMEM/16))
DBWORKMEM=$((${DBTEMPBUFF}/2)) DBWORKMEM=$((DBTEMPBUFF/2))
REDISMEM=$((${DBMEM}/4)) REDISMEM=$((DBMEM/4))
if [[ ${PHPMEM} -lt 128 ]]; then if [[ ${PHPMEM} -lt 128 ]]; then
PHPMEM="128" PHPMEM="128"
fi fi
if [[ ${PHPMEM} -gt 1024 ]]; then if [[ ${PHPMEM} -gt 1024 ]]; then
PHPTHREADS=$(($PHPTHREADS+$((${OVERDRIVE}*2)))) PHPTHREADS=$((PHPTHREADS+$((OVERDRIVE*2))))
DBMEM=$((256*${OVERDRIVE})) DBMEM=$((256*OVERDRIVE))
DBTEMPBUFF=$((${DBMEM}/32)) DBTEMPBUFF=$((DBMEM/32))
DBWORKMEM=$((${DBTEMPBUFF}/2)) DBWORKMEM=$((DBTEMPBUFF/2))
REDISMEM=$((${DBMEM}/8)) REDISMEM=$((DBMEM/8))
PHPMEM="1024" PHPMEM="1024"
fi fi
THMEM=$((${PHPMEM}+$((${PHPMEM}/2))+$((${PHPMEM}/32))+${REDISMEM}+${DBMEM}+${DBWORKMEM}+${DBTEMPBUFF})) THMEM=$((PHPMEM+$((PHPMEM/2))+$((PHPMEM/32))+REDISMEM+DBMEM+DBWORKMEM+DBTEMPBUFF))
MAXUSERS=$((${THMEM}*${PHPTHREADS})) MAXUSERS=$((THMEM*PHPTHREADS))
MAXUSERS=$((${MAXUSERS}/1786)) MAXUSERS=$((MAXUSERS/1786))
if [[ -d /nextcloud/ ]]; then if [[ -d /nextcloud/ ]]; then
echo "It seems that NextCloud is already installed? Please review and remove /nextcloud/ to continue" echo "It seems that NextCloud is already installed? Please review and remove /nextcloud/ to continue"
@ -90,42 +89,43 @@ setupNextcloud() {
failCheck "while installing Redis, please check output above for more info" failCheck "while installing Redis, please check output above for more info"
echo "Adding user nextcloud to redis group" echo "Adding user nextcloud to redis group"
usermod -a -G redis nextcloud usermod -a -G redis nextcloud
echo "H4sIAAAAAAAAA31Ta1LjMAz+n1P4AoKkQGG5jWOrxNSvke2U9PQrJRQ6lN1kkpH1ydKn1+iiVcPu+a7nd1Cvr0OXKVU0FS2EZFEtWLqcqKq+qybDqM3Rpzf1NAxdi+6jJHPEqu6pxXtC68r2h4I0I90JfGWXkYJ6fmZXLmBqF6dHxKy9m1E99H1nNYYU3XmLXRpfml1Bq2LqsrMH51Hdz5r+FZNtOqbocUavTpqii2+i+L7Ih98uspqDVz3qgkU9dtqf9MLolE7AWBICRTPLP32vhk18ELHf5L2I/HSlpgwnchULpAjjm8CARInWnMiOJoVMWIpL8Us1oTmWFtazHYVu1AGVbSHfMS42YNFDWaIBgYswso4+s3Ljlk+njWe+EPQHsA/u70vHcuCy0qKGffg+QU7emUVp74/IuXpqndfn5UCIIALg7EwVlhzqB/KRHeGtfqumMBWMMHMEvUEH38p0e6OVb/uUAhSTCEHb9xsFzNo3zrtXOy78C9da54zRpuiXtT0+nSR1+URmv3XS8dKXT/S6MF5XjGYBGbmaxJzbMiVveTYnXabV+Ow4iVIBYyXH4Z+G3S24UlP7x249XSNFhhl2G3DpPCec68RRCm7WLlYRr2OcL9hPAsL8BvwiMHkekqyp4IqPCw+iTCpXi3vJzUEhz2uxjprxjt0Cr2NuFcZ2OHDVvAuuckUpaM/V5vd/dp9NVrunfRiZgfz+eyG3sbRRPezY8mWzns6ySHbhmXcG+CTcdDoA4bpKXB9DGNij9nCQHbgsDqzr9Tv8jpyAT4aXcG2ttqv6L8LUp9L4BAAA" | base64 -d | gunzip > /etc/redis/redis.conf echo "H4sIAAAAAAAAA31Ta1LjMAz+n1P4AoKkQGG5jWOrxNSvke2U9PQrJRQ6lN1kkpH1ydKn1+iiVcPu+a7nd1Cvr0OXKVU0FS2EZFEtWLqcqKq+qybDqM3Rpzf1NAxdi+6jJHPEqu6pxXtC68.3h4I0I90JfGWXkYJ6fmZXLmBqF6dHxKy9m1E99H1nNYYU3XmLXRpfml1Bq2LqsrMH51Hdz5r+FZNtOqbocUavTpqii2+i+L7Ih98uspqDVz3qgkU9dtqf9MLolE7AWBICRTPLP32vhk18ELHf5L2I/HSlpgwnchULpAjjm8CARInWnMiOJoVMWIpL8Us1oTmWFtazHYVu1AGVbSHfMS42YNFDWaIBgYswso4+s3Ljlk+njWe+EPQHsA/u70vHcuCy0qKGffg+QU7emUVp74/IuXpqndfn5UCIIALg7EwVlhzqB/KRHeGtfqumMBWMMHMEvUEH38p0e6OVb/uUAhSTCEHb9xsFzNo3zrtXOy78C9da54zRpuiXtT0+nSR1+URmv3XS8dKXT/S6MF5XjGYBGbmaxJzbMiVveTYnXabV+Ow4iVIBYyXH4Z+G3S24UlP7x249XSNFhhl2G3DpPCec68RRCm7WLlYRr2OcL9hPAsL8BvwiMHkekqyp4IqPCw+iTCpXi3vJzUEhz2uxjprxjt0Cr2NuFcZ2OHDVvAuuckUpaM/V5vd/dp9NVrunfRiZgfz+eyG3sbRRPezY8mWzns6ySHbhmXcG+CTcdDoA4bpKXB9DGNij9nCQHbgsDqzr9Tv8jpyAT4aXcG2ttqv6L8LUp9L4BAAA" | base64 -d | gunzip > /etc/redis/redis.conf
sed -i "s/maxmemory 16m/maxmemory ${REDISMEM}m/g" /etc/redis/redis.conf sed -i "s/maxmemory 16m/maxmemory ${REDISMEM}m/g" /etc/redis/redis.conf
service redis-server restart service redis-server restart
failCheck "while starting Redis process, please check output above for more info" failCheck "while starting Redis process, please check output above for more info"
echo "Setting up PHP 8.2" echo "Setting up PHP 8.3"
if [[ ${RELEASE} == "bullseye" ]]; then if [[ ${RELEASE} == "bullseye" ]]; then
echo "Adding SURY repo" echo "Adding SURY repo"
curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update apt-get update
fi fi
apt-get install -y php8.2 php8.2-fpm php8.2-gmp php8.2-bz2 php-bcmath php8.2-intl php8.2-mbstring php8.2-apcu php8.2-xml php8.2-redis php8.2-curl php8.2-zip php8.2-pgsql php8.2-gd php8.2-bcmath php8.2-imagick php8.2-common libmagickcore-6.q16-6-extra imagemagick ffmpeg apt-get install -y php8.3 php8.3-fpm php8.3-gmp php8.3-bz2 php-bcmath php8.3-intl php8.3-mbstring php8.3-apcu php8.3-xml php8.3-redis php8.3-curl php8.3-zip php8.3-pgsql php8.3-gd php8.3-bcmath php8.3-imagick php8.3-common libmagickcore-6.q16-6-extra imagemagick ffmpeg
failCheck "while installing PHP8.2, please check output above for more info" failCheck "while installing PHP8.3, please check output above for more info"
echo "H4sIAAAAAAAAA2WQzW4CMQyE7/sUPAECVBAccqh6bVWqHhGKQtbZNU3iJfZC26dvoPyE9hbNN3ZmvFoSS5OA39+e11XX8M4Pjfd00B0kRhaIMlCD13hhvZDOdpA/BufOjmA+79F4NCqQx/jBdyo2kRLoSIIWMrnonppSrFbUWWNbWFfnxxCi2XhQ46sQIFD60pYi96ETpKhmD1eKUSBFqDVLwtiw3vTOQVLz23wOaKwFD8lINjr0wGo8m0wWV0+CvfFYZ65dgp1a5CIX5gyL5raXmg6xyPUbVFuPhVgs6oy06raGzT6bKYR8QP6/5phK0x5Swrpsv8XTuSfTaSmdW2rGbzjh+Uu+5ePyqV9XprNDboNmaE5/HflNLAZ+ANhYH7snAgAA" | base64 -d | gunzip > /etc/php/8.2/fpm/conf.d/99-nextcloud.ini echo "H4sIAAAAAAAAA2WQzW4CMQyE7/sUPAECVBAccqh6bVWqHhGKQtbZNU3iJfZC26dvoPyE9hbNN3ZmvFoSS5OA39+e11XX8M4Pjfd00B0kRhaIMlCD13hhvZDOdpA/BufOjmA+79F4NCqQx/jBdyo2kRLoSIIWMrnonppSrFbUWWNbWFfnxxCi2XhQ46sQIFD60pYi96ETpKhmD1eKUSBFqDVLwtiw3vTOQVLz23wOaKwFD8lINjr0wGo8m0wWV0+CvfFYZ65dgp1a5CIX5gyL5raXmg6xyPUbVFuPhVgs6oy06raGzT6bKYR8QP6/5phK0x5Swrpsv8XTuSfTaSmdW2rGbzjh+Uu+5ePyqV9XprNDboNmaE5/HflNLAZ+ANhYH7snAgAA" | base64 -d | gunzip > /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "H4sIAAAAAAAAA31SS0sDMRC+51f04LXNWqRowUPBwhZcXWpvpYS4Gd1gXubRVn+9SdatskUvYb/XZHYmWwVH3wgd2A4hwZ0HNbodYRsUNq3BWakoVxOnm7dvw0QfFNhoO2V74dXqYKJwOBzGjHra81IziHQxmxUIBTcIn6WQkRFqxUBSxSKaSHokTcsFs7m/uqw35ToJzlPrSay4B+uiMs1urogz1MIv4bIvMxSmvWDhPYDz2VwURaKN1Q04RzgTQDyXoINP8nXhEGpaxtOPYIRA7bfl49PmYVEtd5G66EFWNlWdSOylwT1xt1oPuOXQVS82ZWaCs1johgrsnrma/8In+CPkjw7GA8UlEsrSQPZUBNgGIzRlJF5CYve5/GkROA2/u38YkyC1/SCCS+5TqFpW96vqr+ppmi9cgOOfkNxXxc2sGp25XRwt1/Fp0T2QNm5aQO7IAuPuf7ehvk3WoPhxjnF+rznWneNuvd2j/QKMme9C4wIAAA==" | base64 -d | gunzip > /etc/php/8.2/fpm/pool.d/cloud.conf echo "H4sIAAAAAAAAA31SS0sDMRC+51f04LXNWqRowUPBwhZcXWpvpYS4Gd1gXubRVn+9SdatskUvYb/XZHYmWwVH3wgd2A4hwZ0HNbodYRsUNq3BWakoVxOnm7dvw0QfFNhoO2V74dXqYKJwOBzGjHra81IziHQxmxUIBTcIn6WQkRFqxUBSxSKaSHokTcsFs7m/uqw35ToJzlPrSay4B+uiMs1urogz1MIv4bIvMxSmvWDhPYDz2VwURaKN1Q04RzgTQDyXoINP8nXhEGpaxtOPYIRA7bfl49PmYVEtd5G66EFWNlWdSOylwT1xt1oPuOXQVS82ZWaCs1johgrsnrma/8In+CPkjw7GA8UlEsrSQPZUBNgGIzRlJF5CYve5/GkROA2/u38YkyC1/SCCS+5TqFpW96vqr+ppmi9cgOOfkNxXxc2sGp25XRwt1/Fp0T2QNm5aQO7IAuPuf7ehvk3WoPhxjnF+rznWneNuvd2j/QKMme9C4wIAAA==" | base64 -d | gunzip > /etc/php/8.3/fpm/pool.d/cloud.conf
sed -i "s/PHPTHR/${PHPTHREADS}/g" /etc/php/8.2/fpm/pool.d/cloud.conf sed -i "s/PHPTHR/${PHPTHREADS}/g" /etc/php/8.3/fpm/pool.d/cloud.conf
sed -i "s/MEMLIM/${PHPMEM}M/g" /etc/php/8.2/fpm/pool.d/cloud.conf sed -i "s/MEMLIM/${PHPMEM}M/g" /etc/php/8.3/fpm/pool.d/cloud.conf
sed -i "s/opcache.memory_consumption=64/opcache.memory_consumption=$((${PHPMEM}/4))/g" /etc/php/8.2/fpm/conf.d/99-nextcloud.ini sed -i "s/opcache.memory_consumption=64/opcache.memory_consumption=$((PHPMEM/4))/g" /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
sed -i "s/apc.shm_size = 128M/apc.shm_size = $((${PHPMEM}/4))M/g" /etc/php/8.2/fpm/conf.d/99-nextcloud.ini sed -i "s/apc.shm_size = 128M/apc.shm_size = $((PHPMEM/4))M/g" /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
sed -i "s/opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=$((${PHPMEM}/32))/g" /etc/php/8.2/fpm/conf.d/99-nextcloud.ini sed -i "s/opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=$((PHPMEM/32))/g" /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
service php8.2-fpm restart service php8.3-fpm restart
failCheck "while starting PHP8.2 process, please check output above for more info" failCheck "while starting PHP8.3 process, please check output above for more info"
echo "Setting up Nginx" echo "Setting up Nginx"
apt-get install -y nginx-full certbot python3-certbot-nginx apt-get install -y nginx-full certbot python3-certbot-nginx
failCheck "while installing Nginx, please check output above for more info" failCheck "while installing Nginx, please check output above for more info"
echo "H4sIAAAAAAAAA5VWTY/bNhC9+1cQyC2prP1w3UV9S1OgQBdIgS16JWhqJDHmVzmULKfof+9Qkm3ZlhN0D2vqvcfHGWqGYoMQ2H6/zwoRxWaxd2EHgfvgJCACMtFEt1l4VbA8NDa3lbLdkh43C2WlbgpgOUQ54LlxRaMBM7Biq6HI3y+ls+VmsYAWbET2z4KNfw0CA++03pygcWmaYUFG5Syyn9YvZ940OioupAQfmSvJ9t/Foo7Rk+1J9O7decg+ClSSvUGMylY41ZzGCLYolQbm7HmlKD23zjdYz8AFaHG4wI8e3IiOy7qxO7Yyk2kHD8hrgXUvQPUV2NPD6mVqEFrKPLodUNJ9akdqB+CFVi3wqAy4JrLHpwc88/SiugPfNmUJgZK8iGvgAvzdAMapZrrAIMLoAswRUsh6lkipRDCe95n3ST3Mh4VsvWKr3Tw5zHxcz9B4Mhj3bOpRCoyyUncyP7Lfyf3SZIjz9zn6f4Qyk9BRMLtlR9FJLbWiXuE1iILcpqbTRbUIFfA5LbIX9kLKSR+M9WWFORbitpE7iIPterWZ13JlaQcLFagdh4076eZ6n+pz2df62a6AUlDX8gQz4b1WUqTOzp2MEDOMAYTZ3Onet7fX7/Qu6nRQRSedRvbn61v7OPxfHn+fxt/nDfl9Cs77VANk3D7/wAKUP7M/Pn/+9PrrlSX0Wz5shFS+Tpuayms+zldXVb3tt2JNxxYi1+6qBCEEF3o4b0XIaTBuZ08s6XmybPVV+Ys6TwCneYdbVDoqNE3nrmbPV5Sh96rBVrFmTz+ur8jUfQoKBp2nF18w67LhDKDBcEr4oFoRE8A1VTanQ1+VqpdyiKJKn4z6yrWvi4sKENGZD53RF+AX0QqUQdEBfwGjsxeALj7cYEZYVVKz3zIB8Wal1hbLCtytOBEGs9LZ6LZfUuVP2b1AcwF0vTKLsbyC97DNCMnuh9XV0eibwNJzssydp9ZOfaOMqCDfGj+OsK36WcNTlyn6YrIIXcz7F3VaccQQh4HXQo26VopQjENKNyhDhTasv+xoNFJxtOiyVEzOUjwnIDjErHCGPDP6jCt5uNcef6kQG6HZb45C+oWuA+pOi8ycKen2sDxfI76hRBWn947+bvAfM/rBqNsIAAA=" | base64 -d | gunzip > /etc/nginx/nginx.conf echo "H4sIAAAAAAAAA5VWTY/bNhC9+1cQyC2prP1w3UV9S1OgQBdIgS16JWhqJDHmVzmULKfof+9Qkm3ZlhN0D2vqvcfHGWqGYoMQ2H6/zwoRxWaxd2EHgfvgJCACMtFEt1l4VbA8NDa3lbLdkh43C2WlbgpgOUQ54LlxRaMBM7Biq6HI3y+ls+VmsYAWbET2z4KNfw0CA++03pygcWmaYUFG5Syyn9YvZ940OioupAQfmSvJ9t/Foo7Rk+1J9O7decg+ClSSvUGMylY41ZzGCLYolQbm7HmlKD23zjdYz8AFaHG4wI8e3IiOy7qxO7Yyk2kHD8hrgXUvQPUV2NPD6mVqEFrKPLodUNJ9akdqB+CFVi3wqAy4JrLHpwc88/SiugPfNmUJgZK8iGvgAvzdAMapZrrAIMLoAswRUsh6lkipRDCe95n3ST3Mh4VsvWKr3Tw5zHxcz9B4Mhj3bOpRCoyyUncyP7Lfyf3SZIjz9zn6f4Qyk9BRMLtlR9FJLbWiXuE1iILcpqbTRbUIFfA5LbIX9kLKSR+M9WWFORbitpE7iIPterWZ13JlaQcLFagdh4076eZ6n+pz2df62a6AUlDX8gQz4b1WUqTOzp2MEDOMAYTZ3Onet7fX7/Qu6nRQRSedRvbn61v7OPxfHn+fxt/nDfl9Cs77VANk3D7/wAKUP7M/Pn/+9PrrlSX0Wz5shFS+Tpuayms+zldXVb3tt2JNxxYi1+6qBCEEF3o4b0XIaTBuZ08s6XmybPVV+Ys6TwCneYdbVDoqNE3nrmbPV5Sh96rBVrFmTz+ur8jUfQoKBp2nF18w67LhDKDBcEr4oFoRE8A1VTanQ1+VqpdyiKJKn4z6yrWvi4sKENGZD53RF+AX0QqUQdEBfwGjsxeALj7cYEZYVVKz3zIB8Wal1hbLCtytOBEGs9LZ6LZfUuVP2b1AcwF0vTKLsbyC97DNCMnuh9XV0eibwNJzssydp9ZOfaOMqCDfGj+OsK36WcNTlyn6YrIIXcz7F3VaccQQh4HXQo26VopQjENKNyhDhTasv+xoNFJxtOiyVEzOUjwnIDjErHCGPDP6jCt5uNcef6kQG6HZb45C+oWuA+pOi8ycKen2sDxfI76hRBWn947+bvAfM/rBqNsIAAA=" | base64 -d | gunzip > /etc/nginx/nginx.conf
echo "H4sIAAAAAAAAA6VWbW/bNhD+vPwKTjOweI1M561pEwRFm7ZrgLUJknwoULcETVEyU4rUSMovC9vfvqMkx7JjJxgmBIpMHp+753hvOS1Qh5qMjOGftdwRkeelo0PJ0d0WgieK4O+k+kx4SkvpUHQvAxs/trYsN2NuQL6SksI6rtCLfn2o3iSK5hyRk1rEaO0QVnzqmNRlgueSKkkFKNaqkWNScOVITqdkqJMZseIfjg76L59/PGnvV3tO5FyXDr3s921znCYJGXGagG1XPOXGcBNfainYDK19IqVj0whG4byc0Jk9WcX6HJ9pBRRdfDMreHxROKGVfYhllUjTqPm9EeutniipabIBp8HSBVdzqM1Y7w14+RGggHX9+uO7i6vzP88/RY9gXTsjGBA0VNlCGxdfc1Ya4ZY8F+0eHh7u9fv96Am7LrnJhXM8ic+MthY451So+i4Etw1HxaMF9kasKz3UzsY3NFtPsMYSKuHTHaR0qqXUk2gz3ufr6/jSaMdZ8Np6vN0TlOuEnw6lZt+XsVJqHcsEGYmEtwjrCTdA982sCUWhmCwTjnKI0p6DsGmOV59NplW/ISfwLR1Ty4woHLq1KL8F2V9oUYCzaLART6jNUXjVGD/mKoBy/e4Vo6L5GrlcIny/2jH875JbR+AyG9OAUwWLThFuWSJStI06I+cKUkIOE5pBxKOf6NtbOj6T8NltCYfHcFcahfb7ewgbnoNHg0I84cOEjnFHWAJ1xoZi03CvbW8xaFtiqmvuualrqaHhLsN7ASB1RpR2JNWlSpBO08UWZYxbS0Bisb6q6dtPhHsTLmX8XUEizmvYqjUtEcyoSYARulsw3l1iHOieNMweB5IB52mgh0hLOJRB0rMRuIWrjAe5O+TMjIRaalEHbrp6YXR60D9Ya9gSXPFdxGMqRULnCfEE3D1em8aGiFt3BxBTePvV8bAUMvEORK1nWqUi81IM/b5JCmrcDHbyQlLY92AZ7cKJjsfdlvta7FaxBz1PS6cDuNeMeWFtyT3YKLhPhiTos1ry7mrmr2Kvgg8Cw7kld21PTKBY8kr5r5UrfH2vviiHkMeeGa1Aq+EDTG/pdIDLAlhxbx11pQUb7QCPv+zuffX1hhng3jNY/pLbr3Fh9BjKTb3WezbAUKtHiWZlDilqGVSqAQaZ6az7eOaHZ16/LJQXRwrqRkSoVKNv271nryp63W3c+6PbWeQVTAmos5DszCHul1rwrcC511RVtnogqEJoIT2vkgtEaGitarG0jq7Prs4vb8j787/efYKmhjpzF5AwX6zTtwnp8vXNB3L+6f1Fi9cmWWgEH6oyb1+PqZDVpORMuRE7hZt2BALMGWhFoZBCoxlvPmMtKpWYHmOMTQnZCHWgGpI+QsfsWeg/Dw8ZsOd+/tmv5p9VEQEDi2Ec/ADTjTZ2MWOtC2qIaGatv7Uemo+348xnIvWFyvxtkXnBtA/dx7sUYob7nBZeZ5lPJWXdTruZLVeNx2pCeFpt+YyyEa/GLHAaiuqk2UEwCMbQh053D4+OXhw83995MLRGG8t/tfYbqocjKo/RW61+d6F/NJLIaVSh2TUFN3glcO6sNL1mJCahj6PVHv1Um6tAwba9V//Da3xaCAPCR8l/63xNo2kpXt+Fnq7feLPxdaN4ohn82PoXK3WLXYYMAAA=" | base64 -d | gunzip > /etc/nginx/sites-available/nextcloud echo "H4sIAAAAAAAAA6VWW2/bNhR+Xn8FpxlYvFamc+slQRC0absGWJMgyUOBuiVoipKZUKRGUr4sbH/7DiU5lh07wTDBUBTy8DvnOzy3nBaoQ01GxvDHWu6IyPPS0aHk6O4ZgieK4HdYfSY8paV0KLqXgY0fz55ZbsbcgHwlJYV1XKHX/fpQvUkUzTkih7WI0dohrPjUManLBM8lVZIKUKxVI8ek4MqRnE7JUCczYsU/HO3137z8fNjer/acyLkuHXrT79vmOE0SMuI0AdsuecqN4Sa+0FKwGVr7RErHphGMwnk5oTN7uIr1JT7RCii6+HpW8Pi8cEIr+xDLKpGmUfP/Rqz3eqKkpskGnAZLF1zNoTZjfTTg5UeAAtbV288fzi9P/zw9ix7BunJGMCBoqLKFNi6+4qw0wi15Ltre39/f6ff70RN2XXCTC+d4Ep8YbS1wzqlQ9V0IbhuOikcL7I1Yl3qonY2vabaeYI0lVMKnL5DSqZZST6LNeF+uruILox1nwWvr8bYPUa4TfjSUmt0uY6XUOpYJMhIJbxHWE26A7rtZE4pCMVkmHOUQpT0HYdMcrz6bTKv+h5zAN3RMLTOicOjGovwGZH+hRQHOosFGPKE2R+FVY/yYqwDK9btXjIrma+RyifD9asfwv0tuHYHLbEwDThUsOkK4ZYlI0RbqjJwrSAk5TGgGEY9+ou/v6fhEwme3JRwew11pFNrt7yBseA4eDQrxhA8TOsYdYQnUGRuKTcO9tr3FoG2Jqa6556aupYaGuwzvBYDUGVHakVSXKkE6TRdblDFuLQGJxfqqpu8/Ee5NuJTxrYJEnNewVWtaIphRkwAjdLdgvL3EONA9bJg9DiQDztNAD5GWcCiDpGcjcAtXGQ9yd8iZGQm11KIO3HT1wuhor7+31rAluOJWxGMqRULnCfEE3D1em8aGiFt3BxBTeOv4YFgKmXgHotYzrVKReSmGftckBTVuBjt5ISnse7CMduFEx+Nuy30tdqvYg56npdMB3GvGvLC25B5sFNwnQxL0WS15dzXzV7FXwQeB4dySu7YnJlAseaX818oVvr5XX5RDyGPPjFag1fABpjd0OsBlAay4t4660oKNdoDHX7d3vvl6wwxw7zksf83tt7gwegzlpl7rPR9gqNWjRLMyhxS1DCrVAIPMdNZ9PPPDM69fFsqLIwV1IyJUqtH3rd7z44pedwv3/uh2FnkFUwLqLCQ7c4j7pRZ8K3DuNVWVrR4IqhBaSM+r5AIRGlqrWiyto6uTy9OLa/Lx9K8PZ9DUUGfuAhLmi3X6NiFdvL3+RE7PPp63eG2ShUbwqSrz9u2YCllNSs6UG7FTuGlHIMCcgVYUCik0mvHmM9aiUonpAcbYlJCNUAeqIekzdMyehf7z8JABe+7nn91q/lkVETCwGMbBDzDdaGMXM9a6oIaIZtb6G+uh+Xg7znwmUl+ozN8UmRdM+9B9vEshZrjPaeF1lvlUUtbttJvZctV4rCaEp9WWTygb8WrMAqehqE6aFwgGwRj60NH2/qtXr/de7r54MLRGG8t/tfYbqocjKg/Qe61+d6F/NJLIaVSh2TUFN3glcO6sNL1mJCahj6PVHv1Um6tAwbad4//hNT4thAHhV8l/63xNo2kpXt+Fnq7feLPxdaN4ohnA71+mdDaehwwAAA==" | base64 -d | gunzip > /etc/nginx/sites-available/nextcloud
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/ ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default rm /etc/nginx/sites-enabled/default
service nginx restart service nginx restart
failCheck "while starting Nginx process, please check output above for more info" failCheck "while starting Nginx process, please check output above for more info"
echo "Setting up PostgreSQL" echo "Setting up PostgreSQL"
export DBPASS=$(openssl rand -base64 16) DBPASS=$(openssl rand -base64 16)
export DBPASS
export DBNAME="nextclouddb" export DBNAME="nextclouddb"
export DBUSER="nextcloud" export DBUSER="nextcloud"
apt-get install -y postgresql apt-get install -y postgresql
@ -133,15 +133,15 @@ setupNextcloud() {
failCheck "while installing PostgreSQL, please check output above for more info" failCheck "while installing PostgreSQL, please check output above for more info"
POSTGRESPATH=$(find /etc/postgresql/ -name postgresql.conf) POSTGRESPATH=$(find /etc/postgresql/ -name postgresql.conf)
POSTGRESHBAPATH=$(find /etc/postgresql/ -name pg_hba.conf) POSTGRESHBAPATH=$(find /etc/postgresql/ -name pg_hba.conf)
sed -i "s/shared_buffers = 128MB/shared_buffers = ${DBMEM}MB/g" ${POSTGRESPATH} sed -i "s/shared_buffers = 128MB/shared_buffers = ${DBMEM}MB/g" "${POSTGRESPATH}"
sed -i "s/#work_mem = 4MB/work_mem = ${DBWORKMEM}MB/g" ${POSTGRESPATH} sed -i "s/#work_mem = 4MB/work_mem = ${DBWORKMEM}MB/g" "${POSTGRESPATH}"
sed -i "s/#maintenance_work_mem = 64MB/maintenance_work_mem = ${DBWORKMEM}MB/g" ${POSTGRESPATH} sed -i "s/#maintenance_work_mem = 64MB/maintenance_work_mem = ${DBWORKMEM}MB/g" "${POSTGRESPATH}"
sed -i "s/#temp_buffers = 8MB/temp_buffers = ${DBTEMPBUFF}MB/g" ${POSTGRESPATH} sed -i "s/#temp_buffers = 8MB/temp_buffers = ${DBTEMPBUFF}MB/g" "${POSTGRESPATH}"
sed -i "s/#effective_cache_size = 4GB/effective_cache_size = ${PHPMEM}MB/g" ${POSTGRESPATH} sed -i "s/#effective_cache_size = 4GB/effective_cache_size = ${PHPMEM}MB/g" "${POSTGRESPATH}"
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '127.0.0.1'/g" ${POSTGRESPATH} sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '127.0.0.1'/g" "${POSTGRESPATH}"
SWITCHEROO=$(cat ${POSTGRESHBAPATH}) SWITCHEROO=$(cat "${POSTGRESHBAPATH}")
echo "local ${DBNAME} ${DBUSER} md5" > ${POSTGRESHBAPATH} echo "local ${DBNAME} ${DBUSER} md5" > "${POSTGRESHBAPATH}"
echo "${SWITCHEROO}" >> ${POSTGRESHBAPATH} echo "${SWITCHEROO}" >> "${POSTGRESHBAPATH}"
service postgresql restart service postgresql restart
failCheck "while starting PostgreSQL process, please check output above for more info" failCheck "while starting PostgreSQL process, please check output above for more info"
echo "CREATE USER ${DBUSER} WITH PASSWORD '${DBPASS}'; CREATE DATABASE ${DBNAME} TEMPLATE template0 ENCODING 'UNICODE'; ALTER DATABASE ${DBNAME} OWNER TO ${DBUSER}; GRANT ALL PRIVILEGES ON DATABASE ${DBNAME} TO ${DBUSER};" | sudo -u postgres psql -d template1 echo "CREATE USER ${DBUSER} WITH PASSWORD '${DBPASS}'; CREATE DATABASE ${DBNAME} TEMPLATE template0 ENCODING 'UNICODE'; ALTER DATABASE ${DBNAME} OWNER TO ${DBUSER}; GRANT ALL PRIVILEGES ON DATABASE ${DBNAME} TO ${DBUSER};" | sudo -u postgres psql -d template1
@ -153,15 +153,16 @@ if [[ ${UID} != 0 ]]; then
exit exit
fi fi
cd /root/ cd /root/ || exit
echo "Installing Nextcloud on your machine" echo "Installing Nextcloud on your machine"
setupNextcloud setupNextcloud
clear clear
echo "Installing Nextcloud database" echo "Installing Nextcloud database"
chmod +x /nextcloud/occ chmod +x /nextcloud/occ
export ADMPASS=$(openssl rand -hex 16) ADMPASS=$(openssl rand -hex 16)
sudo -u nextcloud /nextcloud/occ maintenance:install --database pgsql --database-name ${DBNAME} --database-host /run/postgresql --database-user ${DBUSER} --database-pass ${DBPASS} --admin-user admin --admin-pass ${ADMPASS} export ADMPASS
sudo -u nextcloud /nextcloud/occ maintenance:install --database pgsql --database-name "${DBNAME}" --database-host /run/postgresql --database-user "${DBUSER}" --database-pass "${DBPASS}" --admin-user admin --admin-pass "${ADMPASS}"
sleep 3 sleep 3
if (grep "'installed' => true," /nextcloud/config/config.php); then if (grep "'installed' => true," /nextcloud/config/config.php); then
echo "Installation complete!" echo "Installation complete!"
@ -177,9 +178,9 @@ fi
echo "Optimizing" echo "Optimizing"
sed -i '$ d' /nextcloud/config/config.php sed -i '$ d' /nextcloud/config/config.php
echo "H4sIAAAAAAAAA32TYY/TMAyGv9+v6LcKCdbuDiEkBBI7YAJpUMEJncRQlTXeFi5NgpN23b/HiwtlGqEfqtbPW8d+XWdZLjcO0CsfwIQ8e/kqC9jB46uMCGxFp0Pt9tZAjbBT1kRFvlzkUfHDwa7+2QmtwpHJs5IJGLHRUDuEXsHBnydmKCuGFdpeSaohir6RgK/80+16lKwXqyrmvSTL9+8S5EP1dplAX76myErgwxt7MClc3aQINQEJVn1MHXd3f5cg9wsVWuEi/R5dG72sWzHUA7s9L8vR77/h8X/QN4LmshVNsBh18/JM01jTdIhgmmMttI6Sm6TCwIGTXJzTQmuRK5lfP49Y252GHjjn09+hrdLABRe9wIIihYEhNNp2ckZv3AKla0SzB4pQA6xfk12rMb5+Xd12l9IHZXb/EH8GqTyrMT6e/Xn53npahdMVy8LOFFHG9ycesAeceUo/DS93FqePyikuN8pIoIH98YnjQbVgu8Dx62nMAVonFcJpQOMkJ0MKKYIoQusKrv5k3tjmbNyq81Xz4D2tLW2vFgPIGganxrRboT2JHr24+gWXXa/TBgQAAA==" | base64 -d | gunzip >> /nextcloud/config/config.php echo "H4sIAAAAAAAAA32TYY/TMAyGv9+v6LcKCdbuDiEkBBI7YAJpUMEJncRQlTXeFi5NgpN23b/HiwtlGqEfqtbPW8d+XWdZLjcO0CsfwIQ8e/kqC9jB46uMCGxFp0Pt9tZAjbBT1kRFvlzkUfHDwa7+2QmtwpHJs5IJGLHRUDuEXsHBnydmKCuGFdpeSaohir6RgK/80+16lKwXqyrmvSTL9+8S5EP1dplAX76myErgwxt7MClc3aQINQEJVn1MHXd3f5cg9wsVWuEi/R5dG72sWzHUA7s9L8vR77/h8X/QN4LmshVNsBh18/JM01jTdIhgmmMttI6Sm6TCwIGTXJzTQmuRK5lfP49Y252GHjjn09+hrdLABRe9wIIihYEhNNp2ckZv3AKla0SzB4pQA6xfk12rMb5+Xd12l9IHZXb/EH8GqTyrMT6e/Xn53npahdMVy8LOFFHG9ycesAeceUo/DS93FqePyikuN8pIoIH98YnjQbVgu8Dx62nMAVonFcJpQOMkJ0MKKYIoQusKrv5k3tjmbNyq81Xz4D2tLW2vFgPIGganxrRboT2JHr24+gWXXa/TBgQAAA==" | base64 -d | gunzip >> /nextcloud/config/config.php
sed -i "s/'preview_max_memory' => 128,/'preview_max_memory' => $((${PHPMEM}/2)),/g" /nextcloud/config/config.php sed -i "s/'preview_max_memory' => 128,/'preview_max_memory' => $((PHPMEM/2)),/g" /nextcloud/config/config.php
sed -i "s/'preview_concurrency_all' => 3,/'preview_concurrency_all' => $((${NUMCORES}*2)),/g" /nextcloud/config/config.php sed -i "s/'preview_concurrency_all' => 3,/'preview_concurrency_all' => $((NUMCORES*2)),/g" /nextcloud/config/config.php
sed -i "s/'preview_concurrency_new' => 1,/'preview_concurrency_new' => $((${NUMCORES}/2)),/g" /nextcloud/config/config.php sed -i "s/'preview_concurrency_new' => 1,/'preview_concurrency_new' => $((NUMCORES/2)),/g" /nextcloud/config/config.php
echo "Adding Cronjob" echo "Adding Cronjob"
echo "*/5 * * * * php --define apc.enable_cli=1 -f /nextcloud/cron.php" > /tmp/cron echo "*/5 * * * * php --define apc.enable_cli=1 -f /nextcloud/cron.php" > /tmp/cron
echo "*/10 * * * * php --define apc.enable_cli=1 -f /nextcloud/occ preview:pre-generate" >> /tmp/cron echo "*/10 * * * * php --define apc.enable_cli=1 -f /nextcloud/occ preview:pre-generate" >> /tmp/cron
@ -188,7 +189,7 @@ rm /tmp/cron
touch /var/log/nextcloud.log touch /var/log/nextcloud.log
chown nextcloud:www-data /var/log/nextcloud.log chown nextcloud:www-data /var/log/nextcloud.log
echo "Restarting services" echo "Restarting services"
systemctl restart php8.2-fpm.service postgresql.service nginx.service redis-server.service systemctl restart php8.3-fpm.service postgresql.service nginx.service redis-server.service
apt-get clean apt-get clean
echo "Installing command line utility" echo "Installing command line utility"
echo "H4sIAAAAAAAAA5XMvQrCMBSG4bnnKj5r1xicJeDiDShOpUh+TkggnATSgJfv1t355XnPJ+2yaGd7ohyxrljer8cTxmAW/u6+1BFmbNsNe2KhqaUGpQLHLAzb/IXFusIfX7K5Qh9GV++x3IlLZ5r6CBVq4Mj49xMz/QDKN/0grAAAAA==" | base64 -d | gunzip > /usr/local/bin/nextcloud echo "H4sIAAAAAAAAA5XMvQrCMBSG4bnnKj5r1xicJeDiDShOpUh+TkggnATSgJfv1t355XnPJ+2yaGd7ohyxrljer8cTxmAW/u6+1BFmbNsNe2KhqaUGpQLHLAzb/IXFusIfX7K5Qh9GV++x3IlLZ5r6CBVq4Mj49xMz/QDKN/0grAAAAA==" | base64 -d | gunzip > /usr/local/bin/nextcloud
@ -198,9 +199,9 @@ nextcloud config:app:set activity activity_expire_days --value 365
nextcloud db:add-missing-indices nextcloud db:add-missing-indices
echo "Installing additional apps" echo "Installing additional apps"
APPS=(previewgenerator calendar contacts mail notes) APPS=(previewgenerator calendar contacts mail notes)
for APP in ${APPS[@]}; do for APP in "${APPS[@]}"; do
echo "installing ${APP} app" echo "installing ${APP} app"
nextcloud app:install ${APP} nextcloud app:install "${APP}"
done done
GREEN='\033[0;32m' GREEN='\033[0;32m'
BLUE='\033[0;34m' BLUE='\033[0;34m'
@ -214,15 +215,15 @@ echo -e " ${YELLOW}${TOTALMEM}MB${NC} RAM"
echo -e "${GREEN}Calculated Optimal Values:${NC}" echo -e "${GREEN}Calculated Optimal Values:${NC}"
echo -e " ${YELLOW}${PHPTHREADS}${NC} PHP threads" echo -e " ${YELLOW}${PHPTHREADS}${NC} PHP threads"
echo -e " ${YELLOW}${PHPMEM}MB ${NC}PHP memory limit" echo -e " ${YELLOW}${PHPMEM}MB ${NC}PHP memory limit"
echo -e " ${YELLOW}$((${PHPMEM}/4))MB${NC} PHP opcache memory limit" echo -e " ${YELLOW}$((PHPMEM/4))MB${NC} PHP opcache memory limit"
echo -e " ${YELLOW}$((${PHPMEM}/4))MB${NC} PHP APCu cache size" echo -e " ${YELLOW}$((PHPMEM/4))MB${NC} PHP APCu cache size"
echo -e " ${YELLOW}$((${PHPMEM}/32))MB${NC} PHP opcache string buffer" echo -e " ${YELLOW}$((PHPMEM/32))MB${NC} PHP opcache string buffer"
echo -e " ${YELLOW}${DBMEM}MB${NC} PostgreSQL shared buffers" echo -e " ${YELLOW}${DBMEM}MB${NC} PostgreSQL shared buffers"
echo -e " ${YELLOW}${DBWORKMEM}MB${NC} PostgreSQL working memory" echo -e " ${YELLOW}${DBWORKMEM}MB${NC} PostgreSQL working memory"
echo -e " ${YELLOW}${DBTEMPBUFF}MB${NC} PostgreSQL temporary buffer" echo -e " ${YELLOW}${DBTEMPBUFF}MB${NC} PostgreSQL temporary buffer"
echo -e " ${YELLOW}${REDISMEM}MB${NC} Redis memory limit" echo -e " ${YELLOW}${REDISMEM}MB${NC} Redis memory limit"
echo -e " ${YELLOW}$((${PHPMEM}/2))MB${NC} preview generator memory limit" echo -e " ${YELLOW}$((PHPMEM/2))MB${NC} preview generator memory limit"
echo -e " ${YELLOW}$((${NUMCORES}*2))${NC} preview generator concurrency" echo -e " ${YELLOW}$((NUMCORES*2))${NC} preview generator concurrency"
echo -e "" echo -e ""
echo -e "${YELLOW}Additional Information:${NC}" echo -e "${YELLOW}Additional Information:${NC}"
echo -e " Theoretical peak memory usage: ${YELLOW}${THMEM}MB${NC}" echo -e " Theoretical peak memory usage: ${YELLOW}${THMEM}MB${NC}"