- Nextcloud-Install
-
Une machine Unix:
- Raspbian
- Debian
- Ubuntu
- ...
-
Un accès internet
-
Un accès CLI
Dans /etc/network/interfaces
ajouter la configuration réseau en fonction du nom de l'interface réseau :
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.56.1
dns-nameservers 1.1.1.1
ip a
pour lister les interfaces réseau de la machine
On commence par mettre à jour notre machine.
sudo apt update
sudo apt upgrade
Ici l'installation se fera avec un serveur apache2, dernière version de PHP et un SGBD (PostgreSQL ou Apache2).
sudo apt install apache2
sudo apt install php php-common php-gd php-igbinary php-imagick php php-bcmath php-cli php-curl php-gd php-gmp php-igbinary php-intl php-json php-mbstring php-readline php-xml php-zip
- PostgreSQL
sudo apt install postgresql php-pgsql
- MariaDB
sudo apt install mariadb-server libapache2-mod-php php-mysql
Nous pouvons vérifier la bonne installation du serveur Apache en tapant directement l'adresse IP de la machine dans un navigateur web :
Nextcloud peut être installé n'importe où sur votre machine, dans notre cas nous allons l'installer au sein du dossier /var/www/
mais il pourrait très bien être localisé dans /home/user
sudo mkdir -p /var/www/html/nextcloud
On récupère le fichier php qui va nous permettre d'installer Nextcloud:
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
Maintenant il est nécessaire de donner les droits à l'utilisateur www-data
:
sudo chown -R www-data:www-data /var/www/html/nextcloud
Normalement, arrivé à cette étape, vous avez installé PostgreSQL. Maintenant, il faut configurer votre base de données et votre utilisateur pour qu'ils soient par la suite accessible par le php.
Pour cela, on commence par accéder à sa base de données en ligne de commande:
sudo -u postgres psql
Ensuite, vous devriez obtenir un bash avec comme prompt: postgres=#
.
Cela signifie que vous êtes bien connecté.
On va donc créer notre base de données et notre utilisateur:
CREATE USER myuser WITH PASSWORD 'toto' CREATEDB;
CREATE DATABASE mydatabase OWNER myuser;
On quitte l'interface:
\q
Terminer la configuration de mysql :
mysql_secure_installation
Set root password? [Y/n] : Y
Remove anonymous users? [Y/n] : Y
Disallow root login remotely? [Y/n] : Y
Remove test database and access to it? [Y/n] : Y
Reload privilege tables now? [Y/n] : Y
Connexion à mariadb :
sudo mysql
Creation d'un utilisateur pour le serveur Nextcloud :
CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'password';
Création de la base de donnée :
CREATE DATABASE IF NOT EXISTS nextcloud_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Droits à notre utilisateur Nextcloud :
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'localhost';
Application les changements :
FLUSH PRIVILEGES;
Maintenant que notre base de données est configurée, il ne nous reste plus qu'à installer le serveur en lui-même.
Pour cela, il faut déjà créer le site virtuel pour apache afin de terminer l'installation en interface web.
On crée donc un site virtuel:
# on copie le fichier de conf par défaut pour créer le notre
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/nextcloud.conf
# on modifie notre fichier de configuration
sudo nano /etc/apache2/sites-available/nextcloud.conf
Une fois le fichier ouvert, on lui ajoute les lignes suivantes:
ServerName nextcloud.mydomain.tld
ServerAdmin [email protected]
DocumentRoot /var/www/html/nextcloud
<Directory /var/www/html/nextcloud>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
Maintenant que notre site est créé, on l'active:
# on active le site virtuel
sudo a2ensite nextcloud.conf
# on redémarre le serveur web
sudo systemctl restart apache2.service
Afin de terminer l'installation de votre serveur, il faut maintenant vous rendre sur l'interface web de celui-ci. On accède donc à 127.0.0.1:80
.
Si vous souhaitez avoir des URL sans extensions de fichiers, il suffit d'activer deux modules et de rajouter de la configuration.
Si vous hébergez votre nextcloud sur derrière un nom de dossier comme https://mydomain.tld/nextcloud/
, alors vous devez rajouter les lignes suivantes dans votre fichier config.php
:
sudo nano /var/www/html/nextcloud/config/config.php
'overwrite.cli.url' => 'https://mydomain.tld/nextcloud',
'htaccess.RewriteBase' => '/nextcloud',
Si vous hébergez votre nextcloud directement sur votre domaine comme https://mydomain.tld
, alors vous devez rajouter les lignes suivantes dans votre fichier config.php
:
sudo nano /var/www/html/nextcloud/config/config.php
'overwrite.cli.url' => 'https://mydomain.tld/',
'htaccess.RewriteBase' => '/',
Dans les 2 cas, vous devez ensuite effectuer la commande suivante pour mettre à jour votre fichier .htaccess
:
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess
Maintenant que vous avez fini de configurer votre serveur dans son ensemble, vous devez aller sur son interface web, accessible par ip_serveur:port
, dans notre cas, 127.0.0.1:80
.
Il va falloir spécifier la localisation du dossier des données utilisateur, il peut très bien être en dehors du dossier nextcloud mais il faudra bien penser à donner les droits à l'utilisateur www-data
. Pour nous c'est: /var/www/html/nextcloud/data
.
Vous aller choisir votre couple user/password d'administration, puis sélectionner la base de données que vous allez utiliser. Dans notre cas, nous choisirons postgresql.
On va ensuite remplir les champs indiquant les informations sur notre base de données. Pour nous, il s'agit des étapes effectuées lors de l'étape Configurer sa base de données, à savoir le nom de la base et le couple user/password.
On active également l'option d'installation des applications par défaut.
Si on valide l'installation, on devrait arriver sur l'interface d'accueil du serveur ce qui signifie qu'il est prêt à être utilisé.
Maintenant que notre serveur nextcloud est configuré. On peut observer que des ralentissements peuvent survenir lors du chargement de certaines pages.
Il pourrait donc être intéressant d'installer un système de cache afin de ne pas avoir de problèmes de chargement.
Deux options s'offrent à nous, le serveur de cache directement sur notre serveur nextcloud ou alors sur un autre serveur en version distribuée.
Nous allons aborder l'installation sur le même serveur et utiliser les deux outils suivants:
- APCu: Gère un cache local du système.
- Redis: Gère le cache en mode local ou distribué, prend également en charge les transactions sur les fichiers.
Nous devons d'adbord installer le paquets php-apcu
et redémarrer le service web :
sudo apt install php-apcu && sudo service apache2 restart
Nous pouvons alors activer le service apcu dans le fichier config.php
situé dans /var/www/nextcloud/config/config.php
en ajoutant dans le tableau de config la ligne :
'memcache.local' => '\\OC\\Memcache\\APCu',
APCu est desactivé par défaut en CLI. Il nous faut vérifier que la variable
apc.enable_cli
est mis à1
dansphp.ini
, ajouter cette ligne dans le fichier/etc/php/8.0(version de php)/apache2/php.ini
:apc.enable_cli = 1