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
☣️ 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 :
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.
Ajout d'un nom de domaine dans le fichier de configuration :
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!