4.Rendre Nextcloud accessible par Internet

Pour l'instant notre serveur n'est accessible que sur notre réseau local. Nous allons maintenant le connecter à Internet.

Créer un nom de domaine

Pour accéder à notre serveur par Internet il faut créer un nom de domaine. En effet il est malcommode d'accéder à notre box par son adresse IP. De plus celle-ci est susceptible d'être modifiée par notre FAI. Le plus simple est de s'adresser à des fournisseurs de nom de domaine gratuit. Il vaut mieux ne pas être fâché avec l'anglais. Par exemple :

Le domaine sera par exemple duckdns.org et nous pouvons choisir un sous-domaine moncloud. L'adresse de notre serveur Nextcloud sera moncloud.duckdns.org.

Faire connaître à Nextcloud le nom de domaine

Pour que Nextcloud accepte les connexions sur ce domaine, il faut le lui indiquer. Toujours en utilisant le terminal, saisir la commande :

sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 1 --value='moncloud.duckdns.org'

Pour vérifier on peut utiliser la commande :

sudo -u www-data php /var/www/nextcloud/occ config:system:get trusted_domains

Le terminal doit affihcer au moins deux lignes, la première contenant l'adresse IP de votre serveur Nextcloud, la deuxième contenant le domaine que vous venez de déclarer.

Configurer la box

Il faut ensuite configurer notre box pour que la box redirige ces requêtes vers Nextcloud et non un des autres terminaux branchés sur la box.

En général il faut trouver la commande NAT/PAT ou Gestion des ports dans l'interface de la box.

Utiliser un certificat Letsencrypt pour Nextcloud

La connexion à Nextcloud est sécurisée (https://) par un certificat SSL autosigné. Proiblème. Un utilisateur non averti sera peut-être effrayé par l'avertissement qu'il verra à la première connexion :

Il vaut mieux installer un certificat Letsencrypt. Celui-ci, tout en étant gratuit, est un certificat reconnu par tous les navigateurs.

Commençons par installer Letsencrypt. Nous allons suivre les instructions que nous donne Letsencrypt : https://certbot.eff.org/lets-encrypt/ubuntubionic-apache. Commençons par installer le package Letsencrypt :

sudo apt-get update
sudo apt-get install software-properties-common sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update

Puis installons certbot

sudo apt-get install certbot python-certbot-apache

que nous lançons par la commande

sudo certbot --apache

certbot nous demandera d'abord une adresse mail pour nous informer de problèmes éventuels, puis le nom de domaine à sécuriser. Étape importante, certbot nosu proposera de choisir de rediriger tout le trafic de notre serveur Nextcloud vers une connexion sécurisée :

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration.
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Je vous conseille de choisir l'option 2. Votre serveur ne sera plus accessible que par une connexion sécurisée (https://) même si elle n'est pas demandée lors de la requête. certbot se charge même de redémarrer le serveur apache.

Finissons de sécuriser notre serveur. N'oubliez pas que nous avons créé une page phpinfo.php à la racine du site. Celle-ci est maintenant accessible à n'importe qui. Le moment est venu de la supprimer :

sudo rm /var/www/html/phpinfo.php

Voilà, le serveur Nextcloud est prêt à recevoir vos fichiers.