Compare commits

...

5 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
be18d2162d Update nginx config 2024-03-05 22:19:53 +01:00
7a6681f06c Update nginx config 2024-03-05 22:17:10 +01:00
3 changed files with 73 additions and 65 deletions

View File

@ -24,6 +24,12 @@ server {
add_header X-XSS-Protection "1; mode=block" always; add_header X-XSS-Protection "1; mode=block" always;
fastcgi_hide_header X-Powered-By; fastcgi_hide_header X-Powered-By;
include mime.types;
types {
text/javascript js mjs;
application/wasm wasm;
}
index index.php index.html /index.php$request_uri; index index.php index.html /index.php$request_uri;
location = / { location = / {

View File

@ -18,7 +18,7 @@ http {
sendfile on; sendfile on;
tcp_nopush on; tcp_nopush on;
tcp_nodelay on; tcp_nodelay on;
sendfile_max_chunk 512k; sendfile_max_chunk 4m;
types_hash_max_size 2048; types_hash_max_size 2048;
server_tokens off; server_tokens off;
keepalive_timeout 120s; keepalive_timeout 120s;
@ -27,16 +27,17 @@ http {
proxy_store off; proxy_store off;
proxy_cache off; proxy_cache off;
proxy_max_temp_file_size 0; proxy_max_temp_file_size 0;
proxy_buffers 16 16k; proxy_buffers 64 4k;
proxy_buffer_size 16k; proxy_buffer_size 16k;
proxy_busy_buffers_size 64k; proxy_busy_buffers_size 24k;
fastcgi_buffering on; fastcgi_buffering on;
fastcgi_request_buffering off; fastcgi_request_buffering off;
fastcgi_buffers 16 16K; fastcgi_buffers 64 4K;
fastcgi_busy_buffers_size 64k; fastcgi_busy_buffers_size 24k;
fastcgi_buffer_size 16k; fastcgi_buffer_size 16k;
fastcgi_max_temp_file_size 0; fastcgi_max_temp_file_size 0;
client_body_buffer_size 4M; client_header_buffer_size 4k;
large_client_header_buffers 8 8k;
# server_names_hash_bucket_size 64; # server_names_hash_bucket_size 64;
# server_name_in_redirect off; # server_name_in_redirect off;

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 "H4sIAAAAAAAAA5VW34+jNhB+z19h6d56Jexm97an5q29SpW61VXaqq/IMQP4YmzXMxD2qv7vHQNJICF7KorC+PvG88OesWkQgjgcDkkuSW5XBxf2EDIfnAJEQCEbctuV17lIQ2NTW2rbrXm4XWmrTJODSIHUgKe1yxsDmICVOwN5+t1aOVtsVytowRKKf1ZifBoEAd4Zsz1Bo2ueYUGRdhbFD08fz3zdGNKZVAo8CVew2X9Xq4rIs9mT0rt3Z1H8JFEr8QJE2pY41TnJCDYvtAHh7NkTKZ9Z5xusFuAcjHyd4UcbWS27TFWN3YsP95v9ZOKrB8wqiVWvgvoriM3d48epidBy7uT2wGn3yR2pPYCXRreQka7BNSTuN3d45nmrutds1xQFBE5zFtnABfi7AaSpztTBoITkAiwRSqpqkYipENQ+63Pvk7pbDgvF/RP/9svsMHWRxpOFQenpcaJUSCRV6hupH9lvJD83Mgb62xL/P2JZyOio8PaiKaO5T7Kdy+eLE5/H37eTMj9WjJX1sbR2jdoDHYPbLutm2vKS5Dpwiw0rcdJb6meuuHVfvWdzORSSOzGLsJDeG61k7NbUKQJKkALIenujI19enr/Rj2ji4UNOOYPiz+eX9n74Xx/fm/H9sGV7n4LzPm4qG24fvhcBih/FH58/f3r+5cIk9Is5LITSvoqbHetlOc5nV5a92bdijUcRYmbcRU1BCC70cNrKkLIwLmdPrHk8cVt+1X5WuBHIeN7rNaocF47hs9SIhwuq5n01YEuqxObD0wUZ20lDLqDzvPG5sC4ZupqFoe990K2kCGSGKzXjg1wXulfNgGQZr4HqwmpfF7MKkOTq911tZuAX2UpUQfOhPYPR2Rlg8vdXWC2tLrh7r5mAeOWptfm6BHetHIkak8JZcrsvsfKn7EFiPQO6XjMhKi7gA+wSRpLbYXUV1eYqsDiOJlPnub1j3+halpDuaj9K2Jb9rGHUJZpvQUHQUdpv1MnjiCEOgjdSj3qtkiEfRU436JoLbfC/7lgaKRpNdEksJmc5nhMQHGKSu5ptJnw1a/V6qz3+0oEaacSvjkP6ma94faNFFs6U+EWwPn8avKGJmqbfEv19/x9juem7rwgAAA==" | 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 "H4sIAAAAAAAAA6VWW0/jOBR+51d4s5WWLpOm3IYZKoRYGHaQlosoDyNNB8t1nNTg2Fnb6WUx89v35NI2LS3VaiMIwT7+zvmOzy0hKWoQHeMh/DGGWcyTJLOkLxh62ULweB78dIrPkEUkExZ5MxnYeN3aMkwPmQb5QkpwY5lEn9rloXITS5IwhDuliFbKokCysaVCZWEwlZRhxEGxkpUcFZxJixMyxn0VTrDh/zB00P788bpT3y/2LE+Yyiz63G6b6jgJQzxgJATb7lnEtGbav1OC0wla+XhS+boS9PLzYkQmprOM9c0/VxIoWv9hkjL/NrVcSfMWy0geRV71/1qsCzWSQpFwDU6FpVImp1DrsS41ePkdoByre3b95fb+6s+rG+8drK7VnAJBTaRJlbZ+l9FMc7vgOW/38PBwr91uexvsumM64day0D/XyhjgnBAuy7vgzFQcJfPm2Gux7lVfWeM/kHg1wRKLy5CNPyCpIiWEGnnr8b51u/6dVpbR3Gur8XY7KFEhO+kLRZ8XsSJiLI05HvCQ1QirEdNA949JFYqFPeW7lQ7S6mtgE4GC2WpDs78zZiwGT1fnQCEp7DpBQZWQBVyEtlFjYG2KM0gwTGIIR/QTPV6Q4bmAz2ZNOH80s5mWaL+9hwLNEqCbKwxGrB+SYdDgBkMRMHklqHjlz+tW+X5jiS7uoGXHtqaG5I7O33MAoWIslcWRymSIVBTNtwilzBgMEvP1ZU2PP1HQGjEh/GcJWTItMMvW1EQCSnQIjNDLnPHuAuOcbqdi9j6QyHE2A71FWsAhFDKSDsAtTMYsl3tBVk9wXugMasBNF68AnRy0D1YatgCXPnN/SAQPyTRaN8DN8Oo01kTcqjuAmAq2T4/7GRehsyBqHFUy4rETvO/2dZgSbSewk6SCwL4Dy0gTTjRc0Ky5r8ZuGbvXciSzKgd3ilLHjcmYAxs5c2Ef5/qMEqy5nJbL2MvgvZzh1JKXuidGUMlYofyXwhWuvFeXZn2oSI5qJUGrZr2APJFxL8hSYMWcscRmBmw0vWD4fXfvhys3dC9o7cDy98T88FOthlALyrXWTi+AQjoIFc0SSFFDoYz0ApAZT5rvZ369uJhUcItTYgeYy0ihx+3WzmlBr7kdtH5vNuZ5BS0cNeaSjSnEbKkGXwucmSaqeWrLbl2E0FyaSyqykKE5InSbWrVYWEfd8/uruwd8efXXlxvoOKgxdQHOm/8qfeuQ7s4evuKrm8vbGq91slClvxY12JwNCRfFGGN1thY7gpu2GALMaugTeSGFLjBcf8YYlEk+Pg6CQGeQjVAHignmGtpZy0BzeHtIgz2z4WS/GE6WRThME5oy8AOMHkqb+QC0Kqghoqkx7sm4BH7NMHYxj1wqY/eUxo5T5UbEJM5GEDPMJSR1Ko5dJAhtNmrleqlqvFcT8qfWM88JHbBiBgKnIa9Mmg8IpjQf+tDJ7uHR0aeDj/sf3kyU3tryX6z9isrJhYhjdKHkbzbvH5UksgoVaGZFwc29knNuLDW9al7FFsY0RFJIovJAkAtvanMFKNi2d/o/vMbGKdcgfBT+t85XNZqa4tVdaHP9DtYbXzaKDc3gdetf3H7I+CMMAAA=" | 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}"