Créer son propre serveur Cloud privé avec Nextcloud

Nextcloud : Une solution cloud Open-Source sécurisée et modulable

Introduction

Cet article a pour objectif Nextcloud est une plateforme cloud open source permettant l’auto-hébergement et la gestion sécurisée des données. Conçue pour offrir une alternative indépendante aux solutions propriétaires comme Google Drive et Dropbox, elle s’adresse aux particuliers, mais aussi aux entreprises et institutions souhaitant garder le contrôle sur leurs données. Cet article a pour objectif de vous permettre de réaliser une Installation de Nextcloud avec Docker Compose.

Un écosystème complet et open source

Nextcloud est issu du projet OwnCloud et bénéficie d’une large communauté de contributeurs. Cette solution s’intègre facilement aux environnements existants et fonctionne sur :

  • Ordinateurs : Windows, macOS, Linux
  • Mobiles : Android, iOS
  • Services tiers : Amazon S3, Google Drive, Microsoft Azure, Dropbox

Fonctionnalités essentielles

Nextcloud permet une synchronisation et un partage de fichiers sécurisés entre différents appareils et utilisateurs. Cela est rendu possible grâce au client Nextcloud qui permet une synchronisation entre des répertoires locaux et distants. Avec la gestion avancée des droits d’accès, il est possible de définir précisément qui peut consulter, modifier ou partager un fichier.

En plus de ses capacités de stockage, Nextcloud intègre plusieurs outils facilitant le travail en équipe, comme Nextcloud Office, qui permet l’édition collaborative de documents en ligne. Cette fonctionnalité offre une alternative open source aux solutions propriétaires (Goodle Docs ou Word pour ne citer qu’eux).

Nextcloud intègre aussi une solution de visioconférence / messagerie instantanée : Nextcloud Talk, ainsi que pleins d’autres fonctionnalités qui peuvent être configurées (mail, agenda, notes, …).

Installation de Nextcloud avec Docker Compose

Plugins et intégrations pour Nextcloud Entreprise

Nextcloud Enterprise est conçu pour s’intégrer parfaitement dans les environnements Microsoft et autres solutions tierces, avec des intégrations avancées pour :

  • Microsoft : intégration de Windows Desktop, Outlook, SharePoint, MS Office en ligne et Teams
  • Gestion des utilisateurs : intégration Active Directory et authentification LDAP
  • Solutions cloud : compatibilité avec Google Workspace et Microsoft 365
  • Messagerie et calendrier : connecteur Exchange pour synchronisation avec Outlook
  • Stockage : connecteurs pour les solutions cloud comme Amazon S3, Azure Blob Storage et Google Cloud Storage

Pourquoi adopter Nextcloud ?

Nextcloud se distingue par sa flexibilité, via de nombreux connecteurs et plugins, et par son aspect OpenSource permettant un contrôle total des données hébergées.

Pour plus de détails concernant Nextcloud, n’hésitez pas à visiter le site officiel.


Installation de Nextcloud avec Docker Compose

Prérequis

Dans cet article, nous réaliserons l’installation de Nextcloud via Docker Compose sur un serveur Linux. Il est donc nécéssaire d’avoir une installation de Docker fonctionnelle pour poursuivre l’installation.

L’image de Nextcloud sera l’image officielle, disponible à l’adresse suivante : https://hub.docker.com/_/nextcloud/

De nombreuses architectures de Nextcloud sont disponibles lors du déploiement en fonction du type de base de données choisie et de l’utilisation d’un reverse proxy ou non pour y appliquer un certificat SSL / TLS. Ces différentes architectures sont disponibles avec des exemples de configuration sur le projet Github officiel https://github.com/nextcloud/docker.

Cet article se concentrera sur le déploiement de Nextcloud sans proxy, mais le conteneur Nextcloud sera rattaché au réseau d’un Reverse Proxy existant (dans mon cas, Nginx proxy Manager) afin de tout de même sécuriser l’application avec un certificat SSL valide.

Un article dédié à la présentation et à la mise en place De Nginx Proxy Manager sera réalisé prochainement.

Un fichier .env sera généré pour stocker les variables d’environnement sensibles en dehors du fichier docker-compose.yml.

Le déploiement est également possible en créant un nouveau Stack via Portainer.

docker-compose.yml

services:
  db:
    image: mariadb:latest
    deploy:
      resources:
        limits:
          memory: 4096m
        reservations:
          memory: 160m
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql
    environment:
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
      - MYSQL_PASSWORD
      - MYSQL_DATABASE
      - MYSQL_USER
      - MYSQL_ROOT_PASSWORD

  redis:
    image: redis:alpine
    restart: always
    
  app:
    image: nextcloud:apache
    deploy:
      resources:
        limits:
          memory: 16g
        reservations:
          memory: 500m
    restart: always
    volumes:
      - nextcloud:/var/www/html
      - ./nextcloud/data:/var/www/html/data
      - clamsocket:/var/run/clamav/
      - clamav_db:/var/lib/clamav/
    environment:
      - MYSQL_HOST=db
      - MYSQL_PASSWORD
      - MYSQL_DATABASE
      - MYSQL_USER
      - PHP_MEMORY_LIMIT=8192M
      - PHP_UPLOAD_LIMIT=100G
      - MAX_EXECUTION_TIME=3600
      - NEXTCLOUD_TRUSTED_DOMAINS= nextcloud.sudo-ad.fr www.nextcloud.sudo-ad.fr
      - OVERWRITECLIURL=https://nextcloud.sudo-ad.fr
      - OVERWRITEPROTOCOL=https
      - REDIS_HOST=redis
      - TRUSTED_PROXIES
    links:
      - db
    depends_on:
      - db
      - redis
      - antivirus
    networks:
      - nginx-proxy_nginx-proxy
      - default
  #ports:
  #    - 8080:80


  cron:
    image: nextcloud:apache
    restart: always
    volumes:
      - nextcloud:/var/www/html
      - ./nextcloud/data:/var/www/html/data
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis

  antivirus:
    image: clamav/clamav:stable_base
    volumes:
      # Socket
      - clamsocket:/var/run/clamav/
      # Virus DB
      - clamav_db:/var/lib/clamav/
    restart: unless-stopped
    networks:
      - default
      

volumes:
  db:
  nextcloud:
  clamsocket:
  clamav_db:

networks:
   nginx-proxy_nginx-proxy:
    name:  nginx-proxy_nginx-proxy
    external: true

Il est ensuite nécessaire de remplir le fichier .env avec les informations suivantes :

MYSQL_USER=username
MYSQL_PASSWORD=password
MYSQL_DATABASE=nextcloud_db
MYSQL_ROOT_PASSWORD=root-password
TRUSTED_PROXIES=172.0.0.0/16 #CIDR notation for the network proxy

Quelques précisions sur le docker-compose :

  • MariaDB : Base de données
  • Redis : Système de gestion de base de données
  • Cron : pour les jobs planifiés du conteneur Nextcloud (tâches de maintenance, …)
  • Clamav : antivirus pour scanner les fichiers
  • nginx-proxy_nginx-proxy : réseau externe (autre conteneur docker) qui est relié à Nginx Proxy Manager

Toutes les variables d’environnement sont expliquées sur la page officiel du dépôt https://hub.docker.com/_/nextcloud/

Déploiement des conteneurs

Si vous ne possédez pas de sous réseau relié à un reverse proxy, il est possible d’en ajouter un directement à ce fichier en déployer des conteneurs comme Nginx Proxy manager, Nginx ou encore Squid. Il est également possible de décomenter la section suivante pour executer votre serveur nextcloud sur le port 8080 sans certificat SSL :

  #ports:
  #    - 8080:80

Il suffit ensuite de se placer dans le répertoire contenant votre fichier docker-compose.yml et votre fichier .env et de lancer la commande suivante :

docker compose up -d

Il vous suffit ensuite de vous rendre sur l’URL sélectionnée et vous pourrez commencer à utiliser Nextcloud.


CATEGORIES:

Docker-Linux

Comments are closed