# Nextcloud on Docker
Guide détaillé pour déployer Nextcloud avec Docker, en utilisant trois conteneurs Docker différents pour Nextcloud, la base de données et le stockage, chacun dans un conteneur Docker différents
## Prérequis
- Docker
- Docker compose
- Droit super-utilisateur
### Installation de Docker
Documentation officielle : https://docs.docker.com/engine/installation/
### Installation de Docker Compose
Documentation officielle : https://docs.docker.com/compose/install/
## Configuration de la base de données
### Création du conteneur de la base de données
On utiliseras l'image docker officielle de MySQL
Créer un fichier `docker-compose.yml` et ajouter les éléments suivants :
```
version: '3'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Ducky12
MYSQL_ROOT_PASSWORD: Ducky12
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- nextcloud
networks:
nextcloud:
volumes:
db_data:
```
### Lancement du conteneur de la base de données
```
docker-compose up -d db
```
## Configuration du stockage
Dans cette étape, nous allons créer un conteneur Docker pour stocker les fichiers de Nextcloud.
### Création du conteneur de stockage
Nous allons utiliser l'image Docker "minio/minio" pour stocker les fichiers de Nextcloud.
Créer un fichier `docker-compose.yml` et ajouter les éléments suivants :
```
version: '3'
services:
storage:
image: minio/minio
restart: always
environment:
MINIO_ACCESS_KEY: Ducky
MINIO_SECRET_KEY: DUcky12
volumes:
- data:/data
- config:/root/.minio
ports:
- "9000:9000"
networks:
- nextcloud
networks:
nextcloud:
volumes:
data:
config:
```
### Lancement du conteneur de stockage
```
docker-compose up -d storage
```
## Configuration de Nextcloud
Dans cette étape, nous allons configurer Nextcloud pour qu'il utilise la base de données et le stockage que nous avons créés précédemment.
### Création du conteneur Nextcloud
Nous allons utiliser l'image Docker officielle de Nextcloud pour créer notre conteneur Nextcloud.
Créer un fichier `docker-compose.yml` et ajouter les éléments suivants :
```
version: '3'
services:
app:
image: nextcloud:latest
restart: always
depends_on:
- db
- storage
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Ducky12
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: Ducky12
NEXTCLOUD_TRUSTED_DOMAINS: 192.168.11.58
NEXTCLOUD_DATADIRECTORY: /data
OBJECT_STORAGE: s3
OBJECT_STORAGE_BUCKET: my-bucket
OBJECT_STORAGE_REGION: us-east-1
OBJECT_STORAGE_ENDPOINT: http://storage:9000
OBJECT_STORAGE_ACCESS_KEY: Ducky
OBJECT_STORAGE_SECRET_KEY: Ducky12
LDAP_HOST: 192.168.135.142
LDAP_PORT: 389
LDAP_BASE_DN: OU=Utilisateurs,DC=ADKRY,DC=local
LDAP_BASE: OU=Utilisateurs,DC=ADKRY,DC=local
LDAP_BIND_DN: CN=krymi,OU=Utilisateurs,DC=ADKRY,DC=local
LDAP_BIND_PASSWORD: OuRaffik96!
LDAP_TLS: 'false'
LDAP_USERNAME_ATTRIBUTE: samaccountname
LDAP_LOGIN_FILTER: (&(|(objectClass=person))(samaccountname=%uid))
LDAP_GROUP_FILTER: (|(objectClass=person)
LDAP_GROUP_MEMBER_FILTER: (memberUid=%uid)
volumes:
- data:/var/www/html
ports:
- "80:80"
networks:
- nextcloud
networks:
nextcloud:
volumes:
data:
```
### Lancement du conteneur Nextcloud
```
docker-compose up -d app
```
## Accéder à Nextcloud
http://192.168.11.58
Utiliser le compte renseigné dans le docker compose plus haut :
USER: admin
PASSWORD: Ducky12
Nous sommes maintenant connecté sur Nextcloud avecun stockage distant S3 sur un autre docker, un base de donnée MySQL sur autre docker et le nextcloud sur un dokcer apart. Tous sont connecté entre eux grâce à un réseau nommé "nextcloud"