Déployer votre cloud personnel sous Docker avec Nextcloud

Partagez et collaborez sur des documents, envoyez et recevez des e-mails, gérez votre calendrier et organisez des chats vidéo sans fuite de données !

Déployer votre cloud personnel sous Docker avec Nextcloud

Le cloud, ce mot anglais qui désigne les nuages, décrit également un ensemble de services disponible sur Internet pour être utilisé de n'importe où.

Vous connaissez Google et ses différents outils, regroupés sous le nom Workspace et comprenant Gmail, Google Drive,... , ou encore Microsoft Office 365 et la suite Office, incluant OneDrive, Teams, ... Ces services sont très utiles pour travailler en collaboration avec d'autres personnes, mais ils ne vous appartiennent pas, et il peut parfois être difficile de leur faire confiance pour leur déléguer le stockage et la gestion de toutes vos données, qu'elles soient personnelles ou professionnelles.

C'est là qu'intervient Nexcloud, une alternative open-source et pouvant être auto-hébergée, vous permettant de garder (ou reprendre) le contrôle sur vos fichiers. Voici une brève présentation que Nexcloud fait de ses services :

Où sont vos photos et vos documents? Avec Nextcloud, vous choisissez un serveur de votre choix, chez vous, dans un centre de données ou chez un fournisseur. Et c'est là que se trouveront vos fichiers. Nextcloud fonctionne sur ce serveur, protège vos données et vous permet d'accéder depuis votre ordinateur de bureau ou vos appareils mobiles. Grâce au Nextcloud, vous pouvez également accéder, synchroniser et partager vos données définies sur le lecteur FTP de votre bureau, d'une boîte de dépôt ou d'un NAS que vous avez à la maison.

A l'origine se trouve ownCloud, créé en 2010 par Frank Karlitschek, qui, suite à des conflits entre la société ownCloud, Inc. et la communauté, abandonne son poste. Quelques semaines seulement après son départ, il annonce la création de Nextcloud avec l'aide des anciens principaux développeurs d'ownCloud. Chacun des 2 logiciels a continué à évoluer de son côté, et aujourd'hui, les principales différences sont qu'ownCloud n'offre qu'une partie de sa suite de manière publique et gratuite, certaines fonctions supplémentaires étant payantes, alors que Nextcloud offre l'ensemble de sa suite logicielle gratuitement, et propose le support technique sous forme de forfaits. Vous retrouverez sur leur site une comparaison complète avec toutes les solutions logicielles pouvant s'y apparenter.

Les fonctionnalités offertes par Nextcloud sont nombreuses :

  • Synchronisation de fichiers entre différents ordinateurs, tablettes et smartphones
  • Stockage sécurisé (chiffrement des fichiers sur le serveur, chiffrement de la connexion de point à point)
  • Partage de fichiers entre utilisateurs nextcloud ou externes
  • Serveur de fichiers WebDAV
  • Calendrier (permettant la synchronisation CalDAV)
  • Gestion des tâches (synchronisé avec CalDAV)
  • Gestionnaire de contacts (CardDAV)
  • Conférences privées audio/vidéo avec partage d'écran
  • Éditeur de texte en ligne (proposant la coloration syntaxique)
  • Visionneuse de documents en ligne (PDF, OpenDocument)
  • Édition en ligne de documents avec intégration de OnlyOffice et/ou OpenOffice (en option)
  • Galerie d'images multiformats (jpg, cr2, img…)
  • Gestionnaire de marque-pages
  • Prise de notes (prenant en charge le Markdown)
  • Messagerie web
  • Antivirus ClamAV (en option)
  • Et de nombreuses applications qui peuvent être ajoutées
  • Support d'ActivityPub (un nouveau standard W3C)

En voici un petit aperçu dans la vidéo officielle suivante :

Si vous souhaitez tester Nexcloud afin de voir s'il répond à vos attentes, un site de démonstration est disponible.

Le moyen le plus simple de mettre en place une configuration complète et fonctionnelle de Nextcloud consiste à utiliser un fichier docker-compose, et ça tombe bien, c'est ce que nous faisons dans chaque article. Pour rappel, voici la page de l'image Nextcloud sur Docker Hub.

Prérequis

En prérequis de l'installation de Nextcloud sur votre serveur ou Nas, vous devez avoir installé Docker ainsi que Docker-compose.

Docker, Build, Ship and Run Any App, Anywhere
Docker [https://www.docker.com/], si vous n’en avez jamais entendu parler (cequi n’est pas possible si vous lisez mon blog !), est un logiciel open sourcepermettant d’embarquer une application dans un ou plusieurs conteneurslogiciels, qui pourra s’exécuter sur n’importe quel serveur, qu’il soit p…
Docker-compose, un outil pour déployer plusieurs conteneurs en même temps
Docker-Compose permet d’orchestrer vos conteneurs en tant que services, et ainsi de simplifier vos déploiements sur de multiples environnements.

Nous créons une arborescence dédiée qui hébergera la base de données ainsi que les fichiers que vous voudrez stocker.

mkdir -p /docker/nextcloud/{data,db}

Le fichier docker-compose.yml proposé par Nextcloud :

version: '3.8'

services:
  nextcloud_db:
    image: mariadb
    container_name: nextcloud_db
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=$NEXTCLOUD_MYSQL_ROOT_PASSWORD  # Mot de passe de l'utilisateur root de mariadb
      - MYSQL_DATABASE=$NEXTCLOUD_MYSQL_DATABASE  # Nom de la base de données à créer à l'initialisation du conteneur
      - MYSQL_USER=$NEXTCLOUD_MYSQL_USER  # Nom de l'utilisateur de la base de données créée
      - MYSQL_PASSWORD=$NEXTCLOUD_MYSQL_PASSWORD  # Mot de passe de l'utilisateur créé

  nextcloud_app:
    image: nextcloud
    restart: always
    ports:
      - $NEXTCLOUD_PORT:80
    links:
      - nextcloud_db
    volumes:
      - ./data:/var/www/html
    environment:
      - MYSQL_HOST=nextcloud_db  # Nom du conteneur de la base de données
      - MYSQL_DATABASE=$NEXTCLOUD_MYSQL_DATABASE  # Nom de la base de données
      - MYSQL_USER=$NEXTCLOUD_MYSQL_USER  # Nom de l'utilisateur de la base de données
      - MYSQL_PASSWORD=$NEXTCLOUD_MYSQL_PASSWORD  # Mot de passe de l'utilisateur de la base de données

Et le fichier .env qui contient les variables :

NEXTCLOUD_MYSQL_DATABASE=nextcloud
NEXTCLOUD_MYSQL_USER=nextcloud
NEXTCLOUD_MYSQL_ROOT_PASSWORD=root_mysql_password
NEXTCLOUD_MYSQL_PASSWORD=nextcloud_password
NEXTCLOUD_PORT=port

Ce qui nous donne la structure suivante :

/docker/nextcloud/
├── data/
├── db/
├── .env
└── docker-compose.yml

On lance la stacke avec la commande docker-compose up -d.

Découverte

Vous pouvez vous rendre sur votre instance de Nextcloud avec votre navigateur sur l'adresse http://IP.DE.VOTRE.SERVEUR:<NEXTCLOUD_PORT>.

Il vous sera demandé de créer un premier utilisateur, qui sera administrateur de votre cloud. Si vous laissez la case cochée, les applications recommandées (Agenda, Contacts, Discussion, Mail et Rédaction collaborative) seront installées et activées. Cliquez sur "Terminer l'installation" pour procéder à l'initialisation de votre cloud avec les informations renseignées.

Une fois l'initialisation terminée, un ensemble d'écrans est affiché et se suivent pour vous expliquer les principes de Nextcloud, vous proposer de vous rendre sur son store d'applications pour découvrir et enrichir les fonctionnalités, vous informer de la possibilité d'installer l'application dédiée sous iOS ou Android, et vous donner les différents liens de la documentation et de la communauté.

Vous trouverez ci-dessous les différents écrans disponibles, dans l'ordre :

  • La page d'accueil, affichant un résumé des applications installées et des derniers documents utilisés ou événements à venir
  • L'interface de gestion des fichiers
  • L'interface d'affichage et de gestion des photos
  • Nextcloud Talk, pour échanger en chat ou appel vidéo
  • L'interface de gestion de vos contacts
  • L'agenda
  • Le panneau d'activité, vous montrant l'historique complet de ce qui a été fait sur votre cloud

En haut à droite, plusieurs icônes sont disponibles, dont la cloche avec un point rouge, qui vous permet d'afficher le panneau des notifications, ou encore la pastille avec l'initiale de votre nom d'utilisateur, qui affichera un menu vous permettant d'accéder aux paramètres, aux applications installées ou encore à la console de gestion des utilisateurs.

Parmi les applications disponibles, et parce qu'un lecteur me l'a demandé sur notre groupe Telegram, je vous conseille Bookmarks, qui vous permettra de sauvegarder vos favoris et de pouvoir y accéder de n'importe où, ce qui est bien pratique. Comme dans votre navigateur, vous pourrez les organiser par dossiers.


Conclusion

Nous avons vu dans cet article, en quelques minutes seulement, comment reprendre indépendance vis-à-vis des GAFAM (Google, Apple, Facebook, Amazon, Microsoft) et avoir le contrôle sur vos fichiers.
Avec les nombreuses applications que vous pouvez ajouter à Nextcloud, je ne doute pas que vous trouverez de quoi satisfaire vos besoins et permettre aux membres de votre famille de profiter de ces services.

Si vous avez des remarques ou questions, n'hésitez pas à laisser des commentaires ou même venir échanger avec nous sur notre groupe Telegram.