Skip to content

Instantly share code, notes, and snippets.

@PaulSt
Created November 9, 2020 12:22
Show Gist options
  • Save PaulSt/a34aff4f5b17d26a67403d97105f4cd7 to your computer and use it in GitHub Desktop.
Save PaulSt/a34aff4f5b17d26a67403d97105f4cd7 to your computer and use it in GitHub Desktop.
#!/bin/bash
read dbuserpw
# update
sudo apt update
sudo apt upgrade
sudo apt install -y apache2
sudo apt install -y php7.3 php7.3-gd php7.3-sqlite3 php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-mysql php7.3-bz2 php7.3-intl php7.3-smbclient php7.3-imap php7.3-gmp php7.3-bcmath php-imagick
sudo service apache2 restart
# setup mysql
sudo apt install -y mariadb-server
sudo mysql_secure_installation
sudo mysql -u root -p
MYSQL=`which mysql`
Q1="CREATE DATABASE nextclouddb;"
Q2="CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY $dbuserpw;"
Q3="GRANT ALL PRIVILEGES ON nextclouddb.* TO 'nextclouduser'@'localhost';"
Q4="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}${Q4}"
sudo $MYSQL -u root -p -e "$SQL"
# download nextcloud
cd /var/www/
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar -xvf latest.tar.bz2
sudo mkdir -p /var/www/nextcloud/data
sudo chown -R www-data:www-data /var/www/nextcloud/
sudo chmod 750 /var/www/nextcloud/data
# fix .htaccess
echo 'Alias /nextcloud "/var/www/nextcloud/"
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>' | sudo tee /etc/apache2/sites-available/nextcloud.conf
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2
echo 'go to [IPADDRESS]/nextcloud and setup user, then press enter'
read bla
# move data folder
sudo mkdir -p /var/nextcloud
sudo mv -v /var/www/nextcloud/data /var/nextcloud/data
cd /var/www/nextcloud/config
sudo cp -p config.php config.php.bk
sudo sed -i "/'datadirectory' => '\/var\/www\/nextcloud\/data',/s/www\///g" ./config.php
sudo chown -R www-data:www-data /var/nextcloud/data
# set larger upload size
cd /etc/php/7.3/apache2/
sudo cp php.ini php.bac
sudo sed -i "/post_max_size = 8M/s/8M/1024M/g" ./php.ini
sudo sed -i "/upload_max_filesize = 2M/s/2M/1024M/g" ./php.ini
sudo sed -i "/memory_limit = 128M/s/128M/512M/g" ./php.ini
sudo service apache2 restart
# ssl cert
sudo mkdir -p /etc/apache2/ssl
sudo cd /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
sudo a2enmod ssl
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.bac
#sudo sed -i "/SSLCertificateFile \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem/s/ssl\/certs\/ssl-cert-snakeoil.pem/apache2\/ssl\/apache.crt/g" /etc/apache2/sites-available/default-ssl.conf
#sudo sed -i "/SSLCertificateKeyFile \/etc\/ssl\/private\/ssl-cert-snakeoil.key/s/ssl\/private\/ssl-cert-snakeoil.key/apache2\/ssl\/apache.key/g" /etc/apache2/sites-available/default-ssl.conf
sudo a2ensite default-ssl.conf
sudo service apache2 restart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment