Grundeinstellungen vornehmen
SERVER=nextcloud.demo.menzel-it.net # Diese Variable hilft uns, den Domainnamen nicht immer eingeben zu müssen. alias ll="ls -ahl --color=auto" # schönere Auflistung von Verzeichnissen echo 'alias ll="ls -ahl --color=auto"' >> /root/.bashrc # schönere Auflistung permantent machen apt update # Repositories updaten apt upgrade -y # Alles einmal vorher aktualisieren - ist immer gut. apt install pwgen sudo # Basisinstallation einiger Programme
Automatische Sicherheitsupdates des Systems
apt install unattended-upgrades # Für security-Updates cat << EOF > /etc/apt/apt.conf.d/20auto-upgrades # Aktivieren der automatischen Sicherheitsupdates APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; EOF unattended-upgrade -d # Teste mich
Nextcloud herunter laden und verifizieren
wget https://download.nextcloud.com/server/releases/nextcloud-19.0.3.tar.bz2 wget https://download.nextcloud.com/server/releases/nextcloud-19.0.3.tar.bz2.sha256 cat nextcloud-19.0.3.tar.bz2.sha256 # Das ist eine Textdatei sha256sum -c nextcloud-19.0.3.tar.bz2.sha256 # Überprüfen der Integrität
Installation und Konfiguration der notwendigen Pakete für Nextcloud
apt install apache2 mariadb-server libapache2-mod-php7.3 libapache2-mod-security2 php7.3-gd php7.3-mysql php7.3-curl php7.3-mbstring php7.3-intl php7.3-gmp php7.3-bcmath php-imagick libmagickcore-6.q16-6-extra php7.3-xml php7.3-zip php7.3-ldap php7.3-apcu smbclient # Installation der notwendigen Pakete mysql_secure_installation # MySQL absichern systemctl restart mysql #... und neustarten NC_DB_PWD=$(pwgen 16 1) # Das Passwort, das wir für die Nextcloud-Datenbank verwenden cat <<EOF >/root/initial.sql CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '${NC_DB_PWD}'; CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost'; FLUSH PRIVILEGES; quit; EOF mysql -uroot < /root/initial.sql # Skript anwenden. Das geht unter Debian als root-User auch weiterhin ohne Login! echo -e "Bitte verwende später folgende Zugangsdaten für Nextcloud:\nHostname: localhost\nDatenbank: nextcloud\nUsername: nextcloud\nPasswort:${NC_DB_PWD}" tar -xjf nextcloud-19.0.3.tar.bz2 # die Datei (-f) des BZIP2-Archivs (-j) entpacken (-x) mv /root/nextcloud/ /var/www/nextcloud #ggf auf Partitionen achten! chown -R www-data:www-data /var/www/nextcloud # Die Daten sollen allesamt dem Web-User gehören. sed -i s/ServerSignature\ On/ServerSignature\ Off/g /etc/apache2/conf-available/security.conf # Apache absichern sed -i s/ServerTokens\ OS/ServerTokens\ Minimal/g /etc/apache2/conf-available/security.conf # Apache absichern sed -i s/memory\_limit\ =\ 128M/memory\_limit\ =\ 512M/g /etc/php/7.3/apache2/php.ini # Memory Limit für PHP erhöhen sed -i s/upload\_max\_filesize\ =\ 2M/upload\_max\_filesize\ =\ 2G/g /etc/php/7.3/apache2/php.ini # Upload-Maximum erhöhen sed -i s/post\_max\_size\ =\ 8M/post\_max\_size\ =\ 2G/g /etc/php/7.3/apache2/php.ini # Upload-Maximum erhöhen #opcache for replaceme in enable=1 interned_strings_buffer=8 max_accelerated_files=10000 memory_consumption=128 save_comments=1 revalidate_freq=2 do sed -i s/\;opcache.${replaceme}/opcache.${replaceme}/ /etc/php/7.3/apache2/php.ini done a2enmod mod-security a2enmod rewrite a2enmod headers a2enmod env a2enmod dir a2enmod mime a2enmod ssl a2enmod http2 systemctl restart apache2 echo "nix hier" > /var/www/html/index.html
SSL-Zertifikat mit Let’s Encrypt
apt install python-certbot-apache certbot --apache -d ${SERVER} -d www.${SERVER} certbot renew --dry-run
Den Virthost einrichten
cat <<EOF >/etc/apache2/sites-available/nextcloud.conf <VirtualHost *:80> ServerName ${SERVER} ServerAlias www.${SERVER} Redirect permanent / https://${SERVER}/ DocumentRoot /var/www/nextcloud/ ErrorLog \${APACHE_LOG_DIR}/nextcloud_error.log CustomLog \${APACHE_LOG_DIR}/nextcloud_access.log combineds </VirtualHost> <VirtualHost *:443> ServerName ${SERVER} ServerAlias www.${SERVER} DocumentRoot /var/www/nextcloud/ SSLEngine on SSLCertificateFile /etc/letsencrypt/live/${SERVER}/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/${SERVER}/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 SSlCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA; SSLHonorCipherOrder on Header set Strict-Transport-Security "max-age=15768000; preload" Header set X-Frame-Options "SAMEORIGIN" Header set Referrer-Policy "no-referrer" Header set X-XSS-Protection "1; mode=block" Header set X-Content-Type-Options "nosniff" ErrorLog \${APACHE_LOG_DIR}/nextcloud_error.log CustomLog \${APACHE_LOG_DIR}/nextcloud_access.log combined <Directory /var/www/nextcloud/> AllowOverride All Order deny,allow Options +FollowSymlinks <IfModule mod_dav.c> Dav off </IfModule> SetEnv HOME /var/www/nextcloud/ SetEnv HTTP_HOME /var/www/nextcloud/ </Directory> </VirtualHost> EOF a2dissite 000-default* a2ensite nextcloud.conf apachectl configtest systemctl restart apache2 systemctl status apache2
Einrichtung via Weboberfläche
Bitte auf die Weboberfläche wechseln und dort die Einrichtung vervollständigen
Objectcache einrichten und Programme ausführbar machen
sed -i "/version/a \ \ 'memcache.local' => '\\\OC\\\Memcache\\\APCu'," /var/www/nextcloud/config/config.php chmod u+x /var/www/nextcloud/occ chmod u+x /var/www/nextcloud/updater/updater.phar
Update auf NC20RC2
sudo -u www-data /var/www/nextcloud/updater/updater.phar # Den Updater als WWW-User ausführen
Cronjobs
crontab -u www-data -e # eine Möglichkeit, die Crontab zu erstellen cat <<EOF >> /var/spool/cron/crontabs/www-data */5 * * * * php -f /var/www/nextcloud/cron.php EOF
Firewall einrichten
ss -tlpn # welche Dienste laufen eigentlich? apt install ufw # uncomplicated firewall installieren ufw default deny incoming # grundsätzlich alles ankommende blockieren, soweit nicht explizit erlaubt ufw default allow outgoing # grundsätzlich alles ausgehende erlauben (Updates,...) ufw allow ssh # SSH für Verwaltung erlauben ufw allow http # HTTP für Web erlauben ufw allow https # HTTPS für Web erlauben ufw enable # Firewall aktivieren ufw status verbose # Detailinformationen zur Firewall ausgeben
Aufräumen
rm /root/initial.sql nextcloud-19.0.3.tar.bz2*