Configurer un serveur NextCloud

Yo ! Si tu as envie d’accéder a tes données à distance, d’avoir une jolie interface toute belle compatible avec l’application IOS/Android ? This is the good place !
Le tutoriel ayant été mis à jours, il sera disponible pour Debian 8 / Nextcloud 13 et pour Debian 9 / Nextcloud 16

Debian 8 - Nextcloud13

Installation

Installer les paquets

apt-get update ; apt-get install apache2 mysql-server libapache2-mod-php5 unzip

Installer les modules PHP

apt-get install php5 php5-curl php5-gd php5-tidy php5-mysql php5-intl php5-mcrypt php5-imagick php-xml-parser

Configurer la base MySQL pour Nextcloud

mysql -u root -p   #Connexion a mysql
create database nextcloud;   #Création de la base de donnée nextcloud
create user "nextcloud"@"localhost" identified by 'votremotdepasse';    #Création de l’utilisateur pour la base nextcloud
grant all on nextcloud.* to "nextcloud"@"localhost";   #Attribution des droits sur la base nextcloud pour l’utilisateur nextcloud
exit

Télécharger les fichiers nextcloud

wget -P /tmp/ https://download.nextcloud.com/server/releases/nextcloud-13.zip
unzip /tmp/nextcloud-13.zip -d /var/www/

Donnez les droits à apache sur nextcloud

chown -R www-data.www-data /var/www/nextcloud

Configuration d’Apache

Créer le vhost nextcloud

$vi /etc/apache2/site-available/nextcloud.conf

<VirtualHost *:80>

ServerName Votreserveur.domain
DocumentRoot /var/www/nextcloud/

<Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All

<IfModule mod_dav.c>
 Dav off
 </IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

</VirtualHost>

Activer votre site nextcloud

a2ensite nextcloud
systemctl restart apache2

Connectez vous à votre serveur via https
https://votreserveur.domain/nextcloud

Remplissez la configuration en suivant la configuration de MySQL faite précédemment

NextcloudConf

Le compte administrateur concerne celui de l’interface web. Nommez le à votre guise !

Et voilà un joli cloud tout beau tout neuf !

NextcloudFinish

Debian 9 - Nextcloud 16

Installation

Installer les paquets LAMP

apt-get update && apt-get install apache2 mariadb-server

Installer les modules PHP 7.3 (Ou 7.2)

apt-get install libapache2-mod-php7.3 php7.3 php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring php7.3-intl php-imagick php7.3-xml php7.3-zip wget unzip

Configurer mariadb

mysql_secure_installation
#Supprimez l'utilisateur anonyme
#Supprimez le login root a distance
#Supprimez la BDD test
#Recharger la table de privileges

mysql -u root -p
create database nextcloud;
create user "nextcloud"@"localhost" identified by 'votremotdepasse';
grant all on nextcloud.* to "nextcloud"@"localhost";
flush privileges;

Téléchargez Nextcloud

wget -P /tmp/ https://download.nextcloud.com/server/releases/nextcloud-16.0.1.zip
unzip /tmp/nextcloud-16.0.1.zip -d /var/www/

Donner les droits à apache sur l'application

chown -R www-data.www-data /var/www/nextcloud

Configuration d'apache

$vi /etc/apache2/site-available/nextcloud.conf

<VirtualHost *:80>

ServerName Votreserveur.domain
DocumentRoot /var/www/nextcloud/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud.log combined

<Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All

<IfModule mod_dav.c>
 Dav off
 </IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

</VirtualHost>

Activer les modules apaches

a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

Redémarrer apache

systemctl restart apache2

Nextcloud est désormais dispo sur l'URL configuré dans apache

Configurer apache en SSL

Certificat avec Letsencrypt

https://certbot.eff.org/lets-encrypt/debianstretch-apache

Ajouter le repo & installer letsencrypt

echo "deb http://deb.debian.org/debian stretch-backports main" >> /etc/apt/sources.list

apt-get update && apt-get install certbot python-certbot-apache -t stretch-backports

Obtenir le certificat

certbot --apache -w /var/www/nextcloud -d domaine.fr

Certificat auto signé

Créer le VHOST nextcloud-ssl.conf

$vi /etc/apache2/site-available/nextcloud-ssl.conf

<VirtualHost *:443>

ServerName Votreserveur.domain
DocumentRoot /var/www/nextcloud/

<Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All

<IfModule mod_dav.c>
 Dav off
 </IfModule>

SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

</VirtualHost>

Créer votre clef privée

openssl genrsa -out /usr/share/apache2/votreserveur.key

Créer une requête pour votre certificat

openssl req -new -key /usr/share/apache2/votreserveur.key -out /usr/share/apache2/votreserveur.csr

Créer le certificat via la requête et la clef

openssl x509 -req -days 1000 -in /usr/share/apache2/votreserveur.csr -signkey /usr/share/apache2/votreserveur.key -out /usr/share/apache2/votreserveur.crt

Activer les modules apache

a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime
a2enmod ssl
a2ensite default-ssl.conf

Modifier le vhost

#Dans /etc/apache2/site-available/nextcloud-ssl.conf (Entre la balise <virtualHost>)

</Directory>

SSLCertificateFile /usr/share/apache2/Votreserveur.crt
SSLCertificateKeyFile /usr/share/apache2/Votreserveur.key

</VirtualHost>

Activer votre site nextcloud

a2ensite nextcloud-ssl.conf

Redémarrer apache

service apache2 restart