Aller au contenu

Nextcloud

Recherche de la solution de partage

Nextcloud étant une très bonne solution de partage, je l'ai donc choisie pour ces multiples fonctionnalités par défaut ou crée par la communauté.

Dans le concret, je vais donc mettre en place sous 'Ubuntu Server 22' avec plusieurs containers docker :

PostegreSQL

Un service de base de données pour sauvegarder les données persistantes (utilisateurs, mot de passe, etc.) C'est une alternative a d'autres services de base de données (Mysql, MariaDB).

🖼️ Image docker: https://hub.docker.com/_/postgres
📖 Documentations et articles :

Redis

Redis est une base de données *NoSQL, en quelque sorte elle permet de sauvegarder TRÈS rapidement des données. Dans nextcloud il est utilisé pour améliorer la rapidité du service.

🖼️ Image docker: https://hub.docker.com/_/redis 📖 Documentations et articles :

NOSQL : bases de données avec des valeurs rangées par clé/valeur sans schéma définie.

Nextcloud

Cela permet le stockage de fichier et un accès avec un simple client web. Il peut etre installer de facon native sur la machine.

Par exemple il est possible d'upload, télécharger, supprimer, partager et meme herberger ca propre application de tchat. Il est souvent utiliser pour ca simple utilisation et sont prix imbatable! (gratuit)

🖼️ Image docker: https://hub.docker.com/_/nextcloud

Nginx Proxy Manager

Cette application à été crée dans le but de simplifier l'utilisation de NGINX en une interface Web. Il peut gérer les certificats SSL et géré les sous domaines de site web.

Par exemple nous pouvons rediriger supersite.test.monge sur une addrese IP et un port spécifique.

🖼️ Image docker: https://hub.docker.com/r/jc21/nginx-proxy-manager
📖 Site Web: https://nginxproxymanager.com/

Installation de docker

Docker va permettre la création de plusieur container d'application. Il peut etre installer depuis le dépot par défault sous le nom de docker.io mais il est recommandé de prendre depuis les dépots de docker.

Documentation d'installation : https://docs.docker.com/engine/install/

#Mise à jour des dépots 
apt-get update -y && apt-get upgrade

#Installation de Docker
apt-get install docker.io

Création du fichier docker compose

Docker Compose permet la création de multiple container grace à la création d'un fichier nommé docker-compose.yml. Grace a cela je peux garder un fichier de configuration qui peut etre déployé sur n'importe quelle machine suportant Docker.

Pour la recherche d'information la documentation de docker est très bien expliquer : https://docs.docker.com/compose/

version: "3.9"

services:
  nextcloud-postgres:
    image: postgres:14
    container_name: nextcloud-postgres
    restart: unless-stopped
    volumes:
      - /postgres:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: 2003
      POSTGRES_USER: nextcloud
      POSTGRES_DB: nextcloud

  nextcloud-redis:
    image: redis:latest
    container_name: nextcloud-redis
    hostname: nextcloud-redis
    restart: unless-stopped

  nextcloud:
    image: nextcloud:apache
    container_name: nextcloud
    restart: unless-stopped
    depends_on:
      - nextcloud-redis
      - nextcloud-postgres
    volumes:
      - /nextcloud:/var/www/html
    environment:
      NEXTCLOUD_ADMIN_USER: admin
      NEXTCLOUD_ADMIN_PASSWORD: admin
      NEXTCLOUD_TRUSTED_DOMAINS: nextcloud.mateo.monge

      POSTGRES_DB: nextcloud
      POSTGRES_USER: nextcloud
      POSTGRES_PASSWORD: nextcloud
      POSTGRES_HOST: nextcloud-postgres

      REDIS_HOST: nextcloud-redis

  nginx-proxy-manager:
    image: jc21/nginx-proxy-manager:latest
    container_name: nginx-proxy-manager
    restart: unless-stopped
    links:
      - nextcloud
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    volumes:
      - /nginx:/data
Tout les données qui doivent etre persisant sont sauvegarder a l'aide de volume.

☣️ ATTENTION, il est important d'utiliser la version 14 de postegres SQL pour éviter un problème de permission à la création de la base de donnée. (Oui j'ai eu le souci et j'ai chercher...)

Pour avoir accès plus simple à mon nextcloud j'ai demander la création d'un domaine mateo.monge, dans la prochaine étape je vais donc crée la redirection web du domaine `nextcloud.mateo.monge.

Création de la redirection web

L'interface web est accèsible depuis le port 81 de la machine.

E-mail : [email protected]
Mot de passe : changeme

Ici je vais donc crée la redirection de nextcloud.mateo.monge à nextcloud (qui est le nom dns du container) sur le port 80.

Il faut activer les websockets pour etre sur d'avoir toute les fonctionnalités de nextcloud. Pour ma part j'ai aussi activer le cache pour améliorer les performances.

"Cache assets" va demander au client de ne pas demander de nouveau les images quand il sont le meme.

Vérifier l'intégriter d'une image docker

Il est important de regarder l'autentisité de ces donnée pour etre sur de télécharger le bon fichier.

Si jamais le fichier a été modifier ou échanger par des perssonnes malveillante il est de nécessaire de vérifier sont intégralité.

Grace a la commande :

docker images --digests

Sur le screen on peut observer un hash en format SHA256, on peut récuperer le hash original sur le repo source de l'image ici Docker HUB.

Ajout du domaine

Nextcloud à des sécurités qui permet l'accès depuis un certain nom de domaine. On les appeles les "Trusted Domaine"

Erreur:

Pour ajouter un nouveau domaine a la configuration il faut editer le fichier configuration.

nano /nextcloud/config/config.php

Ajout d'un nom de domaine dans le fichier de configuration :

'trusted_domains' =>
  array (
    1 => 'nextcloud.mateo.monge',
    2 => 'ip_proxy',
  ),

ATTENTION, avec l'utilisation d'un proxy je dois autoriser l'ip du proxy.

Conclusion

Dans cette installation j'ai essayer de proriser la performance. J'ai donc utiliser des services que je n'avais jamais utiliser (REDIS). J'ai donc reussi a crée un nextcloud performant et utlisable!

Les plus gros problème dans se projet à été un problème de permission sur la base de donnée. J'ai pu le regler avec la recherche sur des forums.

Pour moi l'instalation de nextcloud sur docker est une très bonne manière de faire pour l'administration!