Mission 4 : Serveur de fichiers - SuperKumKum/SysAdmin-ll_Project GitHub Wiki

Partage de fichiers : Nextcloud

Nextcloud
Qu'est-ce que Nextcloud ?
Un lieu sûr pour stocker ses données.
Il s'agit d'un projet forked de Owncloud qui n'était plus mis à jours.

Installation via docker-compose

Pour faire fonctionner Nextcloud d'une façon complète et sécurisée, nous avons besoin de :

 version: '2'
 services:
  mariadb:
    image: mariadb:10.1
    container_name: mariadb
    # restart: always
    # Info : These variables are ignored when the volume already exists (databases created before).
    environment:
      - MYSQL_ROOT_PASSWORD=myPassword
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=password
    volumes:
      - /mnt/docker/mysql/db:/var/lib/mysql

  nextcloud:
    image: wonderfall/nextcloud:latest
    container_name: nextcloud
    environment:
      - DB_TYPE=MYSQL
      - DB_NAME=nextcloud
      - DB_USER=nextcloud
      - DB_PASSWORD=password
      - DB_HOST=mariadb
    volumes:
      - /mnt/docker/nextcloud/data:/data
      - /mnt/docker/nextcloud/config:/config
      - /mnt/docker/nextcloud/apps:/apps2
      - /mnt/docker/nextcloud/themes:/nextcloud/themes    
    links:
      - mariadb

  nginx:
    image: wonderfall/boring-nginx
    container_name: nginx
    ports:
      - "80:8000"
      - "443:4430"
    volumes:
      - /mnt/docker/nginx/sites-enabled:/sites-enabled
      - /mnt/docker/nginx/conf:/conf.d
      - /mnt/docker/nginx/log:/var/log/nginx
      - /mnt/docker/nginx/certs:/certs

Composition du dossier Nextcloud

nextcloud
├── apps
├── config
│   └── config.php
├── data [error opening dir]
└── themes
  • apps: contient toutes les applications installées faisant partie de Nextcloud (Agenda, etc)
  • config: contient le script de lancement de Nextcloud
  • data: contient les données de chaque utilisateurs
  • themes: contient les thèmes (images, logo)

Ajout d'une entrée dans le DNS

service	IN	A	151.80.119.127
nextcloud	IN	CNAME	service

​:bulb:​ Permet l'accès au site https://nextcloud.wt7.ephec-ti.be

Création d'un vHost via boring-nginx + LetsEncrypt

Création de certificats pour la page Web :

docker run -it --rm \
-v /mnt/docker/nginx/certs/nextcloud:/etc/letsencrypt \
-p 80:80 -p 443:443 \
xataz-letsencrypt \
certonly --standalone \ 
--rsa-key-size 4096 \
--agree-tos \
-m [email protected] \
-d nextcloud.wt7.ephec-ti.be 

Création d'un vHost via boring-nginx

docker exec -ti nginx ngxproxy
Welcome to ngxproxy utility.
We're about to create a new virtual host (AKA server block).

Name: nextcloud
Domain: nextcloud.wt7.ephec-ti.be
Webroot (default is /): 
Container: postfixadmin
Port (default is 80): 8888
HTTPS [y/n]: y
Certificate path: /certs/live/nextcloud/fullchain.pem
Certificate key path: /certs/live/nextcloud/privkey.pem
Secure headers [y/n]: y
Enable HSTS header ? [y/n]: n # Use with caution
Max body size in MB (integer/null): null

Done! postfixadmin.conf has been generated.
Reload nginx now? [y/n]: y
nginx successfully reloaded.
⚠️ **GitHub.com Fallback** ⚠️