Updated to match Nextcloud Hub 10

This commit is contained in:
ZAKS Web 2025-05-07 19:12:34 +02:00
parent d7269bd2e6
commit e7c7fc82ab
1 changed files with 51 additions and 26 deletions

View File

@ -30,24 +30,45 @@ apt update && apt -y upgrade
## extrepo - Tool for automatic configuration of external repos for Debian ## extrepo - Tool for automatic configuration of external repos for Debian
## unzip - Needed to extract the Nextcloud zip file ## unzip - Needed to extract the Nextcloud zip file
apt -y install curl wget apache2 extrepo unzip apt -y install curl wget apache2 unzip
## Now we enable Sury for installing the very latest PHP files ## Now we enable Sury for installing the very latest PHP files
extrepo enable sury && apt update curl -sSL https://packages.sury.org/php/README.txt | bash -x && apt update
## Now we install PHP 8.2 and required modules ## Now we install PHP 8.2 and required modules
apt -y install php8.2-{ctype,curl,dom,gd,common,mysql,mbstring,posix,simplexml,xmlreader,xmlwriter,xmlrpc,xml,cli,zip,bz2,fpm,intl,ldap,smbclient,ftp,imap,bcmath,gmp,exif,apcu,memcached,redis,imagick} libapache2-mod-php8.2 libapache2-mod-fcgid libxml2 apt -y install php8.3-{ctype,curl,dom,gd,common,mysql,mbstring,opcache,posix,simplexml,xmlreader,xmlwriter,xmlrpc,xml,cli,zip,bz2,fpm,intl,ldap,smbclient,ftp,imap,bcmath,gmp,exif,apcu,memcached,redis,imagick} libapache2-mod-php8.3 libapache2-mod-fcgid libxml2
## Configure Apache2 and PHP8.3
systemctl stop apache2
a2dismod php8.3
a2dismod mpm_prefork
a2enmod mpm_event proxy proxy_fcgi setenvif rewrite
a2enconf php8.3-fpm
systemctl restart apache2
## Set optimal settings for PHP to make Nextcloud happy...
echo "max_execution_time = 240" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "memory_limit = 512M" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "post_max_size = 512M" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "upload_max_filesize = 2048M" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "[opcache]" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.enable=1" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.memory_consumption=1024" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.interned_strings_buffer=128" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.max_accelerated_files=50000" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.validate_timestamps=0" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.revalidate_freq=60" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
echo "opcache.save_comments=1" >> /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
systemctl restart php8.3-fpm.service
## Let's install MariaDB ## Let's install MariaDB
apt -y install mariadb-server mariadb-client apt -y install mariadb-server mariadb-client
## Configure Apache2 and php8.2
systemctl stop apache2 && a2dismod php8.2 && a2dismod mpm_prefork && a2enmod mpm_event proxy proxy_fcgi setenvif rewrite && a2enconf php8.2-fpm && systemctl restart apache2
## Time to harden MariaDB ## Time to harden MariaDB
systemctl enable mariadb systemctl enable mariadb
@ -65,6 +86,13 @@ echo "FLUSH PRIVILEGES;" | mysql
echo "CREATE DATABASE $dbname; CREATE USER $dbuser@localhost IDENTIFIED BY '$dbpass'; GRANT ALL PRIVILEGES ON $dbname.* TO $dbuser@localhost; FLUSH PRIVILEGES;" | mysql echo "CREATE DATABASE $dbname; CREATE USER $dbuser@localhost IDENTIFIED BY '$dbpass'; GRANT ALL PRIVILEGES ON $dbname.* TO $dbuser@localhost; FLUSH PRIVILEGES;" | mysql
## Let's add support for SVG files...
apt -y install librsvg2-bin
sed -i 's|</policymap>| <policy domain="coder" rights="none" pattern="SVG" />\n</policymap>|' /etc/ImageMagick-6/policy.xml
apt -y install libmagickcore-6.q16-6-extra
systemctl restart apache2
## Time to download the latest copy of Nextcloud ## Time to download the latest copy of Nextcloud
wget https://download.nextcloud.com/server/releases/latest.zip wget https://download.nextcloud.com/server/releases/latest.zip
@ -81,35 +109,32 @@ chown -R www-data:www-data /var/www/html
mkdir /home/nextcloudfiles mkdir /home/nextcloudfiles
chown -R www-data:www-data /home/nextcloudfiles chown -R www-data:www-data /home/nextcloudfiles
## Do webconfig ## Let's do the web install without a browser
## Get token cd /var/www/html
sudo -u www-data php occ maintenance:install --database="mysql" --database-host="localhost" --database-name="$dbname" --database-user="$dbuser" --database-pass="$dbpass" --admin-user="$adminuser" --admin-pass="$adminpass" --data-dir="/home/nextcloudfiles"
temp=$(curl -S http://localhost/index.php | grep "data-requesttoken") ## Configuring Nextcloud
token=${temp:20:-2}
## Submit Installation cp /var/www/html/config/config.php /var/www/html/config/config.php.original
sudo -u www-data php occ config:system:set trusted_domains 0 --value="*"
sudo -u www-data php occ config:system:set maintenance_window_start --type=integer --value=1
( crontab -u www-data -l 2>/dev/null; echo '*/5 * * * * php -f /var/www/html/cron.php' ) | crontab -u www-data -
sudo -u www-data php occ maintenance:repair --include-expensive
sudo -u www-data php occ config:system:set debug --type=boolean --value=false
sudo -u www-data php occ config:system:set memcache.local --type=string --value=\OC\Memcache\APCu
curl -s -X POST "http://localhost/index.php" -H "Content-Type: application/x-www-form-urlencoded" -d "install=true&adminlogin=$adminuser&adminpass=$adminpass&directory=%2Fhome%2Fnextcloudfiles&dbtype=mysql&dbuser=$dbuser&dbpass=$dbpass&dbpass-clone=$dbpass&dbname=$dbname&dbhost=localhost" ## Let's make a script so you can use the occ CLI tool from anywhere on your server
## Setup https (selfsigned) echo -e '#!/bin/bash\n\ncd /var/www/nextcloud\nsudo -u www-data php occ $@' > /usr/bin/occ && chmod +x /usr/bin/occ
a2enmod ssl && a2ensite default-ssl.conf && systemctl restart apache2 ## Clean up time...
## Overridding the need for a domain name apt -y autoremove
mv /var/www/html/config/config.php /var/www/html/config/config.php.old
head -n 8 /var/www/html/config/config.php.old > /var/www/html/config/config.php
echo " 1 => '*'," >> /var/www/html/config/config.php
tail -n 14 /var/www/html/config/config.php.old >> /var/www/html/config/config.php
chown www-data:www-data /var/www/html/config/config.php
## DONE ## DONE
echo "You can now configure your networking for static IP, but what I do," echo "You can now configure your networking for static IP, but what I do,"
echo "is assign a static IP by using DHCP reservation in my Router." echo "is assign a static IP by using DHCP reservation in my Router."
echo "You can forward port 80 and 443. But even if you connect on port 80" echo "You can forward port 80. This is because it's a selfsigned certificate."
echo "it will switch to port 443 (https) and give you a security warning."
echo "This is because it's a selfsigned certificate. But at least your data"
echo "is encrypted between browser and server."
echo "If you have any issues, DM me on Reddit u/thisiszeev" echo "If you have any issues, DM me on Reddit u/thisiszeev"