diff --git a/.env.sample b/.env.sample
index bfce670ec8e7447e4c7950f2384cd4f65ccb1556..33f4644dd413701344afc4e93b4990b313d16d2b 100644
--- a/.env.sample
+++ b/.env.sample
@@ -1,3 +1,8 @@
+#
+# Add all modules you need, ex :
+# COMPOSE_FILE=docker-compose.yml:onlyoffice.yml:traefik.yml:ldap.yml
+#
+COMPOSE_FILE=docker-compose.yml
 HOST=nextcloud.FQDN
 MYSQL_PASSWORD=
 MYSQL_ROOT_PASSWORD=
diff --git a/docker-compose.yml b/docker-compose.yml
index 1e04e7165ee2412880624b338fa5393688c26fde..85e813997abf805c7288a98c57206d0205cb0c46 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -12,9 +12,6 @@ services:
       - '9000'
     volumes:
       - app_data:/var/www/html
-    networks:
-      - ldap
-      - default
     environment:
       MYSQL_PASSWORD:
       MYSQL_DATABASE:
@@ -28,9 +25,6 @@ services:
     volumes:
       - app_data:/var/www/html
     entrypoint: /cron.sh
-    networks:
-      - ldap
-      - default
 
   db:
     image: mariadb
@@ -44,19 +38,6 @@ services:
       MYSQL_DATABASE:
       MYSQL_USER:
 
-  onlyoffice-document-server:
-    container_name: onlyoffice-document-server
-    image: onlyoffice/documentserver:latest
-    stdin_open: true
-    tty: true
-    restart: always
-    expose:
-      - '80'
-      - '443'
-    volumes:
-      - document_data:/var/www/onlyoffice/Data
-      - document_log:/var/log/onlyoffice
-
   nginx:
     container_name: nginx-server
     image: nginx
@@ -69,25 +50,7 @@ services:
     networks:
       - traefik
       - default
-    labels:
-      - "traefik.enable=true"
-      - "traefik.docker.network=traefik"
-      - "traefik.http.routers.nextcloud.rule=Host(`${HOST}`)"
-      - "traefik.http.routers.nextcloud.tls.certresolver=myresolver"
-      - "traefik.http.routers.nextcloud.entrypoints=web,websecure"
-      - "traefik.http.routers.nextcloud.middlewares=nextcloud-caldav@docker,hardening@docker"
-      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.permanent=true"
-      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.regex=^https://(.*)/.well-known/(card|cal)dav"
-      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.replacement=https://$${1}/remote.php/dav/"
 
 volumes:
-  document_data:
-  document_log:
   app_data:
   db:
-
-networks:
-  ldap:
-    external: true
-  traefik:
-    external: true
diff --git a/ldap.yml b/ldap.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f7758f030d040c9cd36363cbb0e70738b898da17
--- /dev/null
+++ b/ldap.yml
@@ -0,0 +1,14 @@
+version: '3'
+services:
+  nextcloud:
+    networks:
+      - ldap
+      - defautlt
+    cron:
+      - ldap
+      - defautlt
+
+networks:
+  ldap:
+    external: true
+
diff --git a/onlyoffice.yml b/onlyoffice.yml
new file mode 100644
index 0000000000000000000000000000000000000000..174bfa5b969c6e674d74b64a81d91a7c55eedaf5
--- /dev/null
+++ b/onlyoffice.yml
@@ -0,0 +1,19 @@
+version: '3'
+services:
+
+  onlyoffice-document-server:
+      container_name: onlyoffice-document-server
+      image: onlyoffice/documentserver:latest
+      stdin_open: true
+      tty: true
+      restart: always
+      expose:
+        - '80'
+        - '443'
+      volumes:
+        - document_data:/var/www/onlyoffice/Data
+        - document_log:/var/log/onlyoffice
+
+volumes:
+  document_data:
+  document_log:
diff --git a/traefik.yml b/traefik.yml
new file mode 100644
index 0000000000000000000000000000000000000000..541199ef73484a01cf27071e846dc67fac58fb38
--- /dev/null
+++ b/traefik.yml
@@ -0,0 +1,18 @@
+version: '3'
+services:
+
+  nginx:
+    labels:
+      - "traefik.enable=true"
+      - "traefik.docker.network=traefik"
+      - "traefik.http.routers.nextcloud.rule=Host(`${HOST}`)"
+      - "traefik.http.routers.nextcloud.tls.certresolver=myresolver"
+      - "traefik.http.routers.nextcloud.entrypoints=web,websecure"
+      - "traefik.http.routers.nextcloud.middlewares=nextcloud-caldav@docker,hardening@docker"
+      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.permanent=true"
+      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.regex=^https://(.*)/.well-known/(card|cal)dav"
+      - "traefik.http.middlewares.nextcloud-caldav.redirectregex.replacement=https://$${1}/remote.php/dav/"
+
+networks:
+  traefik:
+    external: true