diff --git a/.gitignore b/.gitignore
index fa7fa65..2899076 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,33 +1,45 @@
-.env.local
-/env/*.local
-/tmp
+**/.env.local
+**/.env.merge
-/volume/mariadb/mysql
+/services/15-mariadb/volume/mysql
+
+/services/30-minio/volume/data
+
+/services/30-openldap/volume/data
+
+/services/50-ninegate/env/*.local
+/services/50-ninegate/env/*.merge
+/services/50-ninegate/volume/data/private/*
+!/services/50-ninegate/volume/data/private/.gitkeep
+/services/50-ninegate/volume/data/public/*
+!/services/50-ninegate/volume/data/public/avatar
+/services/50-ninegate/volume/data/public/avatar/*
+!/services/50-ninegate/volume/data/public/avatar/admin.jpg
+!/services/50-ninegate/volume/data/public/avatar/noavatar.png
+!/services/50-ninegate/volume/data/public/avatar/system.jpg
+!/services/50-ninegate/volume/data/public/logo
+/services/50-ninegate/volume/data/public/logo/*
+!/services/50-ninegate/volume/data/public/logo/logo.png
+!/services/50-ninegate/volume/data/public/header
+/services/50-ninegate/volume/data/public/header/*
+!/services/50-ninegate/volume/data/public/header/header.png
+!/services/50-ninegate/volume/data/public/icon
+/services/50-ninegate/volume/data/public/icon/*
+!/services/50-ninegate/volume/data/public/icon/icon_*.png
+
+
+/services/50-nineskeletor/volume/data/private/*
+!/services/50-nineskeletor/volume/data/private/.gitkeep
+/services/50-nineskeletor/volume/data/public/*
+!/services/50-nineskeletor/volume/data/public/.gitkeep
+
+/services/50-wordpress/volume/data
-/volume/minio/data
/volume/nextcloud/data
/volume/nextcloud/html
/volume/nextcloud/app
-/volume/ninegate/data/private/*
-!/volume/ninegate/data/private/.gitkeep
-/volume/ninegate/data/public/*
-!/volume/ninegate/data/public/avatar
-/volume/ninegate/data/public/avatar/*
-!/volume/ninegate/data/public/avatar/admin.jpg
-!/volume/ninegate/data/public/avatar/noavatar.png
-!/volume/ninegate/data/public/avatar/system.jpg
-!/volume/ninegate/data/public/logo
-/volume/ninegate/data/public/logo/*
-!/volume/ninegate/data/public/logo/logo.png
-!/volume/ninegate/data/public/header
-/volume/ninegate/data/public/header/*
-!/volume/ninegate/data/public/header/header.png
-!/volume/ninegate/data/public/icon
-/volume/ninegate/data/public/icon/*
-!/volume/ninegate/data/public/icon/icon_*.png
-
/volume/nineboard/data/private/*
!/volume/nineboard/data/private/.gitkeep
/volume/nineboard/data/public/*
@@ -40,6 +52,3 @@
/volume/nineboard/data/public/logo/*
!/volume/nineboard/data/public/logo/logo.png
-/volume/openldap/data
-
-/volume/wordpress/data
diff --git a/docker-compose.svg b/docker-compose.svg
new file mode 100644
index 0000000..1c2663a
--- /dev/null
+++ b/docker-compose.svg
@@ -0,0 +1,248 @@
+services:
+
+#== SERVICES OUTILS =======================================================================================================================
+
+ # Nineapache
+ # Reverse proxy de l'ensemble des services
+ # Seul port ouvert sur l'exterieur
+ nineapache:
+ image: reg.cadoles.com/envole/nineapache:8.1
+ container_name: nine-nineapache
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.nineapache
+ networks:
+ - nine-network
+ ports:
+ - "80:80"
+ volumes:
+ - ./volume/nineapache/nine/apache.conf:/etc/apache2/conf.d/zapp.conf
+
+ # Mariadb
+ # Base de données des services
+ # Port interne 3306
+ mariadb:
+ image: docker.io/library/mariadb
+ container_name: nine-mariadb
+ restart: unless-stopped
+ healthcheck:
+ test: /nine/check.sh
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.mariadb
+ networks:
+ - nine-network
+ volumes:
+ - ./volume/mariadb/mysql:/var/lib/mysql
+ - ./volume/mariadb/nine:/nine
+
+ # Redis
+ # Base de données redis pour les services qui souhaitent stocker leur session en bdd
+ # Port interne 6379
+ redis:
+ image: redis:4.0
+ container_name: nine-redis
+ environment:
+ - TZ=Europe/Paris
+
+ # Minio
+ # Stocakge S3
+ # Port interne 9000 pour le stockage / Port interne 9001 pour l'interface web
+ minio:
+ image: minio/minio
+ container_name: nine-minio
+ restart: unless-stopped
+ env_file: ./tmp/.env.minio
+ networks:
+ - nine-network
+ volumes:
+ - './volume/minio/data:/data'
+ command: server /data --console-address ":9001"
+
+ # Openldap
+ # Annuaire
+ # Port interne 1389 & 1636
+ openldap:
+ image: docker.io/bitnami/openldap:2
+ container_name: nine-openldap
+ restart: unless-stopped
+ healthcheck:
+ test: /nine/check.sh
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.openldap
+ networks:
+ - nine-network
+ volumes:
+ - './volume/openldap/data:/bitnami/openldap'
+ - './volume/openldap/nine:/nine'
+
+ # Keycloak
+ # serveur SSO
+ # Port interne 8999 & 8443
+ keycloak:
+ image: reg.cadoles.com/envole/keycloak:24.0.5
+ container_name: nine-keycloak
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://127.0.0.1:9990 || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.keycloak
+ networks:
+ - nine-network
+ ports:
+ - 8999:8999
+ - 8443:8443
+ volumes:
+ - './volume/keycloak/nine:/nine'
+ command:
+ - start-dev
+ - --import-realm
+
+#== SERVICES APPLICATIF =======================================================================================================================
+
+ # Nextcloud
+ # Hébergement de fichiers et une plateforme de collaboration
+ # Port interne 80
+ nextcloud:
+ image: reg.cadoles.com/envole/nextcloud
+ container_name: nine-nextcloud
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.nextcloud
+ networks:
+ - nine-network
+ volumes:
+ - ./volume/nextcloud/html:/var/www/html
+ - ./volume/nextcloud/app:/var/www/html/custom_apps
+ - ./volume/nextcloud/data:/var/www/html/data
+ - ./volume/nextcloud/nine:/nine
+ - ./volume/nextcloud/prestart:/docker-entrypoint-hooks.d/before-starting
+
+ # Nineboard
+ # Tableaux de bord collaboratif
+ # Port interne 80
+ nineboard:
+ image: reg.cadoles.com/envole/nineboard
+ container_name: nine-nineboard
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost/nineboard || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.nineboard
+ networks:
+ - nine-network
+ volumes:
+ - ./volume/nineboard/data/private:/app/uploads
+ - ./volume/nineboard/data/public:/app/public/uploads
+
+ # Ninegate
+ # Portail collaboratif
+ # Port interne 80
+ ninegate:
+ image: reg.cadoles.com/envole/ninegate
+ container_name: nine-ninegate
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost/ninegate || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.ninegate
+ networks:
+ - nine-network
+ volumes:
+ - ./volume/ninegate/data/private:/app/uploads
+ - ./volume/ninegate/data/public:/app/public/uploads
+
+ # Nineskeletor
+ # Portail collaboratif V2
+ # Port interne 80
+ nineskeletor:
+ image: reg.cadoles.com/envole/nineskeletor
+ container_name: nine-nineskeletor
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost/nineskeletor || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.nineskeletor
+ networks:
+ - nine-network
+ volumes:
+ - ./volume/nineskeletor/data/private:/app/uploads
+ - ./volume/nineskeletor/data/public:/app/public/uploads
+
+ # Wiki.js
+ # Wiki
+ # Port interne 3000
+ wiki:
+ image: linuxserver/dokuwiki
+ container_name: nine-dokuwiki
+ env_file: ./tmp/.env.dokuwiki
+ networks:
+ - nine-network
+ ports:
+ - 9000:80
+
+ # Wordpress
+ # Reseau de blog
+ # Port interne 80
+ wordpress:
+ image: reg.cadoles.com/envole/wordpress
+ container_name: nine-wordpress
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost/wordpress || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./tmp/.env.wordpress
+ networks:
+ nine-network:
+ aliases:
+ - blog
+ volumes:
+ - ./volume/wordpress/data:/app/public/wp-content
+
+#== SERVIVES DEVELOPPEUR ==================================================================================================================
+
+ # Adminer
+ # Gestionnaire BDD
+ # Port interne 8080
+ adminer:
+ image: docker.io/library/adminer
+ container_name: nine-adminer
+ restart: unless-stopped
+ env_file: ./tmp/.env.adminer
+ networks:
+ - nine-network
+ ports:
+ - 9100:8080
+
+ # Phpldapadmin
+ # Gestionnaire Annuaire
+ # Port interne 80
+ phpldapadmin:
+ image: docker.io/osixia/phpldapadmin:latest
+ container_name: nine-phpldapadmin
+ restart: unless-stopped
+ env_file: ./tmp/.env.phpldapadmin
+ networks:
+ - nine-network
+ ports:
+ - "9101:80"
+
+#== NETWORKS ==============================================================================================================================
+
+networks:
+ nine-network:
+ name: nine-network
+
+
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
index 8f78ad2..dc0bcc5 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,9 +1,5 @@
-version: '3'
-
services:
-#== SERVICES OUTILS =======================================================================================================================
-
# Nineapache
# Reverse proxy de l'ensemble des services
# Seul port ouvert sur l'exterieur
@@ -15,13 +11,13 @@ services:
test: curl --fail http://localhost || exit 1
interval: 1s
timeout: 60s
- env_file: ./tmp/.env.nineapache
+ env_file: ./services/10-nineapache/env/.env.merge
networks:
- nine-network
ports:
- "80:80"
volumes:
- - ./volume/nineapache/nine/apache.conf:/etc/apache2/conf.d/zapp.conf
+ - ./services/10-nineapache/volume/nine/apache.conf:/etc/apache2/conf.d/zapp.conf
# Mariadb
# Base de données des services
@@ -34,36 +30,27 @@ services:
test: /nine/check.sh
interval: 1s
timeout: 60s
- env_file: ./tmp/.env.mariadb
+ env_file: ./services/15-mariadb/env/.env.merge
networks:
- nine-network
volumes:
- - ./volume/mariadb/mysql:/var/lib/mysql
- - ./volume/mariadb/nine:/nine
-
- # Redis
- # Base de données redis pour les services qui souhaitent stocker leur session en bdd
- # Port interne 6379
- redis:
- image: redis:4.0
- container_name: nine-redis
- environment:
- - TZ=Europe/Paris
+ - ./services/15-mariadb/volume/mysql:/var/lib/mysql
+ - ./services/15-mariadb/volume/nine:/nine
# Minio
# Stocakge S3
# Port interne 9000 pour le stockage / Port interne 9001 pour l'interface web
minio:
- image: minio/minio
+ image: bitnami/minio
container_name: nine-minio
restart: unless-stopped
- env_file: ./tmp/.env.minio
+ env_file: ./services/30-minio/env/.env.merge
+ ports:
+ - "9001:9001"
networks:
- nine-network
volumes:
- - './volume/minio/data:/data'
- command: server /data --console-address ":9001"
-
+ - './services/30-minio/volume/data:/data'
# Openldap
# Annuaire
# Port interne 1389 & 1636
@@ -75,76 +62,24 @@ services:
test: /nine/check.sh
interval: 1s
timeout: 60s
- env_file: ./tmp/.env.openldap
+ env_file: ./services/30-openldap/env/.env.merge
networks:
- nine-network
volumes:
- - './volume/openldap/data:/bitnami/openldap'
- - './volume/openldap/nine:/nine'
+ - './services/30-openldap/volume/data:/bitnami/openldap'
+ - './services/30-openldap/volume/nine:/nine'
- # Keycloak
- # serveur SSO
- # Port interne 8999 & 8443
- keycloak:
- image: reg.cadoles.com/envole/keycloak:24.0.5
- container_name: nine-keycloak
- restart: unless-stopped
- healthcheck:
- test: curl --fail http://127.0.0.1:9990 || exit 1
- interval: 1s
- timeout: 60s
- env_file: ./tmp/.env.keycloak
+ # Redis
+ # Base de données redis pour les services qui souhaitent stocker leur session en bdd
+ # Port interne 6379
+ redis:
+ image: redis:4.0
+ container_name: nine-redis
+ env_file: ./services/30-redis/env/.env.merge
networks:
- - nine-network
- ports:
- - 8999:8999
- - 8443:8443
- volumes:
- - './volume/keycloak/nine:/nine'
- command:
- - start-dev
- - --import-realm
-
-#== SERVICES APPLICATIF =======================================================================================================================
-
- # Nextcloud
- # Hébergement de fichiers et une plateforme de collaboration
- # Port interne 80
- nextcloud:
- image: reg.cadoles.com/envole/nextcloud
- container_name: nine-nextcloud
- restart: unless-stopped
- healthcheck:
- test: curl --fail http://localhost || exit 1
- interval: 1s
- timeout: 60s
- env_file: ./tmp/.env.nextcloud
- networks:
- - nine-network
- volumes:
- - ./volume/nextcloud/html:/var/www/html
- - ./volume/nextcloud/app:/var/www/html/custom_apps
- - ./volume/nextcloud/data:/var/www/html/data
- - ./volume/nextcloud/nine:/nine
- - ./volume/nextcloud/prestart:/docker-entrypoint-hooks.d/before-starting
-
- # Nineboard
- # Tableaux de bord collaboratif
- # Port interne 80
- nineboard:
- image: reg.cadoles.com/envole/nineboard
- container_name: nine-nineboard
- restart: unless-stopped
- healthcheck:
- test: curl --fail http://localhost/nineboard || exit 1
- interval: 1s
- timeout: 60s
- env_file: ./tmp/.env.nineboard
- networks:
- - nine-network
- volumes:
- - ./volume/nineboard/data/private:/app/uploads
- - ./volume/nineboard/data/public:/app/public/uploads
+ - nine-network
+ environment:
+ - TZ=Europe/Paris
# Ninegate
# Portail collaboratif
@@ -152,29 +87,27 @@ services:
ninegate:
image: reg.cadoles.com/envole/ninegate
container_name: nine-ninegate
- restart: unless-stopped
- healthcheck:
- test: curl --fail http://localhost/ninegate || exit 1
- interval: 1s
- timeout: 60s
- env_file: ./tmp/.env.ninegate
+ restart: unless-stopped
+ env_file: ./services/50-ninegate/env/.env.merge
networks:
- nine-network
volumes:
- - ./volume/ninegate/data/private:/app/uploads
- - ./volume/ninegate/data/public:/app/public/uploads
+ - ./services/50-ninegate/volume/data/private:/app/uploads
+ - ./services/50-ninegate/volume/data/public:/app/public/uploads
- # Wiki.js
- # Wiki
- # Port interne 3000
- wiki:
- image: linuxserver/dokuwiki
- container_name: nine-wiki
- env_file: ./tmp/.env.wiki
+ # Nineskeletor
+ # Portail collaboratif
+ # Port interne 80
+ nineskeletor:
+ image: reg.cadoles.com/envole/nineskeletor
+ container_name: nine-nineskeletor
+ restart: unless-stopped
+ env_file: ./services/50-nineskeletor/env/.env.merge
networks:
- nine-network
- ports:
- - 9000:80
+ volumes:
+ - ./services/50-nineskeletor/volume/data/private:/app/uploads
+ - ./services/50-nineskeletor/volume/data/public:/app/public/uploads
# Wordpress
# Reseau de blog
@@ -183,19 +116,11 @@ services:
image: reg.cadoles.com/envole/wordpress
container_name: nine-wordpress
restart: unless-stopped
- healthcheck:
- test: curl --fail http://localhost/wordpress || exit 1
- interval: 1s
- timeout: 60s
- env_file: ./tmp/.env.wordpress
+ env_file: ./services/50-wordpress/env/.env.merge
networks:
- nine-network:
- aliases:
- - blog
+ - nine-network
volumes:
- - ./volume/wordpress/data:/app/public/wp-content
-
-#== SERVIVES DEVELOPPEUR ==================================================================================================================
+ - ./services/50-wordpress/volume/data:/app/public/wp-content
# Adminer
# Gestionnaire BDD
@@ -204,11 +129,9 @@ services:
image: docker.io/library/adminer
container_name: nine-adminer
restart: unless-stopped
- env_file: ./tmp/.env.adminer
+ env_file: ./services/90-adminer/env/.env.merge
networks:
- nine-network
- ports:
- - 9100:8080
# Phpldapadmin
# Gestionnaire Annuaire
@@ -217,16 +140,9 @@ services:
image: docker.io/osixia/phpldapadmin:latest
container_name: nine-phpldapadmin
restart: unless-stopped
- env_file: ./tmp/.env.phpldapadmin
+ env_file: ./services/90-phpldapadmin/env/.env.merge
networks:
- nine-network
- ports:
- - "9101:80"
-
-#== NETWORKS ==============================================================================================================================
-
networks:
nine-network:
name: nine-network
-
-
\ No newline at end of file
diff --git a/env/.env b/env/.env
index 5842c5f..d165063 100644
--- a/env/.env
+++ b/env/.env
@@ -48,21 +48,23 @@ MARIADB_PASSWORD=${ADMIN_PASSWORD}
REDIS_SERVICE_NAME=redis
REDIS_ACTIVATE=1
REDIS_LOCAL=1
+REDIS_HOST=${REDIS_SERVICE_NAME}
+REDIS_PORT=6379
# MINIO
MINIO_SERVICE_NAME=minio
MINIO_ACTIVATE=1
MINIO_LOCAL=1
MINIO_HOST=${MINIO_SERVICE_NAME}
-MINIO_PORT=7200
-MINIO_URL=${PROTOCOLE}://${WEB_URL}/minio
+MINIO_PORT=9000
+MINIO_URL=${PROTOCOLE}://${WEB_URL}:9001
# LDAP
# LDAP_SYNC Si MASTERIDENTITY = SQL permet la synchronisation des utilisateurs SQL vers LDAP
OPENLDAP_SERVICE_NAME=openldap
-LDAP_ACTIVATE=1
-LDAP_LOCAL=1
+OPENLDAP_ACTIVATE=1
+OPENLDAP_LOCAL=1
LDAP_TYPE=LDAP
LDAP_HOST=${OPENLDAP_SERVICE_NAME}
LDAP_PORT=1389
@@ -71,10 +73,11 @@ LDAP_BASEDN=dc=nine,dc=org
LDAP_ADMIN_USERNAME=${ADMIN_USER}
LDAP_USER=cn=${LDAP_ADMIN_USERNAME},${LDAP_BASEDN}
LDAP_PASSWORD=${ADMIN_PASSWORD}
-LDAP_BASEUSER=ou=users,ou=ninegate,${LDAP_BASEDN}
-LDAP_BASENIVEAU01=ou=niveau01,ou=ninegate,${LDAP_BASEDN}
-LDAP_BASENIVEAU02=ou=niveau02,ou=ninegate,${LDAP_BASEDN}
-LDAP_BASEGROUP=ou=groups,ou=ninegate,${LDAP_BASEDN}
+LDAP_BASEORGANISATION=ou=ninegate,${LDAP_BASEDN}
+LDAP_BASEUSER=ou=users,${LDAP_BASEORGANISATION}
+LDAP_BASENIVEAU01=ou=niveau01,${LDAP_BASEORGANISATION}
+LDAP_BASENIVEAU02=ou=niveau02,${LDAP_BASEORGANISATION}
+LDAP_BASEGROUP=ou=groups,${LDAP_BASEORGANISATION}
LDAP_SYNC=1
LDAP_TEMPLATE=open
LDAP_USERNAME=uid
@@ -103,11 +106,12 @@ CAS_PORT=8999
CAS_PATH=/auth/realms/nine/protocol/cas
CAS_URL=${PROTOCOLE}://${CAS_HOST}:${CAS_PORT}
-# NINEBOARD
-NINEBOARD_SERVICE_NAME=nineboard
-NINEBOARD_ACTIVATE=1
-NINEBOARD_LOCAL=1
-NINEBOARD_URL=${PROTOCOLE}://${WEB_URL}/nineboard
+
+# DOKUWIKI
+DOKUWIKI_SERVICE_NAME=dokuwiki
+DOKUWIKI_ACTIVATE=0
+DOKUWIKI_LOCAL=1
+DOKUWIKI_URL=${PROTOCOLE}://${WEB_URL}/dokuwiki
# NEXTCLOUD
NEXTCLOUD_SERVICE_NAME=nextcloud
@@ -116,17 +120,23 @@ NEXTCLOUD_LOCAL=1
NEXTCLOUD_URL=${PROTOCOLE}://${WEB_URL}/nextcloud
NEXTCLOUD_SAMBA=0
+# NINEBOARD
+NINEBOARD_SERVICE_NAME=nineboard
+NINEBOARD_ACTIVATE=1
+NINEBOARD_LOCAL=1
+NINEBOARD_URL=${PROTOCOLE}://${WEB_URL}/nineboard
+
# NINEGATE
NINEGATE_SERVICE_NAME=ninegate
NINEGATE_ACTIVATE=1
NINEGATE_LOCAL=1
NINEGATE_URL=${PROTOCOLE}://${WEB_URL}/ninegate
-# WIKI
-WIKI_SERVICE_NAME=wiki
-WIKI_ACTIVATE=1
-WIKI_LOCAL=1
-WIKI_URL=${PROTOCOLE}://${WEB_URL}/wiki
+# NINESKELETOR
+NINESKELETOR_SERVICE_NAME=nineskeletor
+NINESKELETOR_ACTIVATE=1
+NINESKELETOR_LOCAL=1
+NINESKELETOR_URL=${PROTOCOLE}://${WEB_URL}/nineskeletor
# WORDPRESS
WORDPRESS_SERVICE_NAME=wordpress
diff --git a/env/.env.zapp.wiki b/env/.env.zapp.dokuwiki
similarity index 100%
rename from env/.env.zapp.wiki
rename to env/.env.zapp.dokuwiki
diff --git a/misc/e-ihm.sh b/misc/e-ihm.sh
deleted file mode 100755
index 75fab37..0000000
--- a/misc/e-ihm.sh
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/bin/bash
-
-TPUT=/usr/bin/tput
-#test si TPUT est utilisable
-if [ ! "$TERM" = "" ] && $TPUT hpa 60 >/dev/null 2>&1 && $TPUT setaf 1 >/dev/null 2>&1; then
- FANCYTTY=1
-else
- FANCYTTY=0
-fi
-
-Pause() {
-if [ "$ModeTxt" == "yes" ];then
- echo
-elif [ "$ModeEad" == "yes" ];then
- echo "
"
-else
- [ $FANCYTTY = 1 ] && $TPUT setaf 6
- echo " Appuyez sur Entrée pour continuer ..."
- [ $FANCYTTY = 1 ] && $TPUT sgr0
- read BiDon
-fi
-}
-
-Echo() {
-if [ "$ModeEad" != "yes" ];
-then
- echo "$1"
-else
- echo "$1
"
-fi
-}
-
-EchoColor() {
-if [ "$ModeTxt" = "yes" ];then
- echo "$1"
-elif [ "$ModeEad" = "yes" ];then
- echo " $1
"
-else
- [ "$FANCYTTY" = 1 ] && $TPUT setaf $2
- echo "$1"
- [ "$FANCYTTY" = 1 ] && $TPUT sgr0
-fi
-}
-
-EchoRouge() {
- EchoColor "$1" "1" "red"
-}
-
-EchoVert() {
- EchoColor "$1" "2" "green"
-}
-
-EchoOrange() {
- EchoColor "$1" "3" "orange"
-}
-
-EchoBleu() {
- EchoColor "$1" "4" "blue"
-}
-
-EchoMagenta() {
- EchoColor "$1" "5" "magenta"
-}
-
-EchoCyan() {
- EchoColor "$1" "6" "cyan"
-}
-
-EchoBlanc() {
- EchoColor "$1" "7" "white"
-}
-
-EchoGras() {
-if [ "$ModeTxt" == "yes" ];then
- echo "$1"
-elif [ "$ModeEad" == "yes" ];then
- echo " $1
"
-else
- [ $FANCYTTY = 1 ] && $TPUT bold
- echo "$1"
- [ $FANCYTTY = 1 ] && $TPUT sgr0
-fi
-}
-
-Clear() {
-if [ "$ModeEad" != "yes" -a "$ModeTxt" != "yes" ];then
- clear
-fi
-}
-
-Question_ouinon() {
- #attention, il faut synchroniser les modifications avec /usr/share/pyshared/pyeole/ihm.py
- question=$1
- [ "$2" = "" ] && interactive='True' || interactive=$2
- [ "$3" = "" ] && default="non" || default=$3
- [ "$4" = "" ] && level="info" || level=$4
- [ "$5" = "" ] && default_uninteractive=$default || default_uninteractive=$5
- [ ! "$interactive" = "True" ] && [ ! "$interactive" = "False" ] && echo "Question_ouinon : interactive doit être True ou False" && exit 1
- [ ! "$default" = "oui" ] && [ ! "$default" = "non" ] && echo "Question_ouinon : default doit etre oui ou non" && exit 1
- [ ! "$default_uninteractive" = "oui" ] && [ ! "$default_uninteractive" = "non" ] && echo "Question_ouinon : default_uninteractive doit etre oui ou non" && exit 1
- [ ! "$level" = "info" ] && [ ! "$level" = "warn" ] && [ ! "$level" = "err" ] && echo "Question_ouinon : level doit etre info, warn ou err" && exit 1
- #non interactive
- if [ "$interactive" = "False" ]; then
- Rep=default_uninteractive
- else
- question="$question [oui/non]"
- if [ $level = "info" ]; then
- echo "$question"
- elif [ $level = "warn" ]; then
- EchoOrange "$question"
- else
- EchoRouge "$question"
- fi
- echo -n "[$default] : "
- read Rep
- #passe en minuscule
- Rep=`echo $Rep | tr A-Z a-z`
- fi
- if [ "$default" = "non" ]; then
- if [ "$Rep" = "oui" -o "$Rep" = "o" -o "$Rep" = "yes" -o "$Rep" = "y" ];then
- return 0
- else
- return 1
- fi
- else
- if [ "$Rep" = "non" -o "$Rep" = "n" -o "$Rep" = "no" ];then
- return 1
- else
- return 0
- fi
- fi
-}
-
-EchoStart() {
- for i in $(eval echo "{1..30}")
- do
- ligne+="="
- done
- clear
-}
-
-BigTitle(){
- size=`tput cols`
- nb=${#1}
- nbchar=$(($size - $nb - 4))
-
- ligne=""
- for i in $(eval echo "{1..$size}")
- do
- ligne+="="
- done
-
- finligne=""
- for i in $(eval echo "{1..$nbchar}")
- do
- finligne+="="
- done
-
- echo
- EchoVert $ligne
- EchoVert "== $1 $finligne"
- EchoVert $ligne
- echo
-}
-
-Title(){
- size=`tput cols`
- nb=${#1}
- nbchar=$(($size - $nb - 4))
-
- ligne=""
- for i in $(eval echo "{1..$size}")
- do
- ligne+="="
- done
-
- finligne=""
- for i in $(eval echo "{1..$nbchar}")
- do
- finligne+="="
- done
-
- echo
- EchoCyan "== $1 $finligne"
- echo
-}
diff --git a/misc/tools/e-ihm.sh b/misc/tools/e-ihm.sh
index 75fab37..a35a410 100755
--- a/misc/tools/e-ihm.sh
+++ b/misc/tools/e-ihm.sh
@@ -184,3 +184,55 @@ Title(){
EchoCyan "== $1 $finligne"
echo
}
+
+# Fonction pour fusionner plusieurs fichiers .env
+mergeenv() {
+ # Vérifier si au moins deux fichiers .env sont fournis
+ if [ "$#" -lt 2 ]; then
+ echo "Usage: merge_env_files output_file .env_file1 .env_file2 [additional .env files...]"
+ return 1
+ fi
+
+ # Le premier argument est le fichier de sortie
+ output_file=$1
+ shift
+
+ # Déclaration des structures de données pour stocker les variables et maintenir l'ordre
+ declare -A env_vars
+ declare -a env_keys
+
+ # Fonction pour lire un fichier .env et mettre à jour les structures de données
+ read_env_file() {
+ local env_file=$1
+
+ # Lire chaque ligne du fichier .env
+ while IFS='=' read -r key value; do
+ # Ignorer les lignes vides et les commentaires
+ [[ -z "$key" || "$key" =~ ^# ]] && continue
+
+ # Vérifier si la variable existe déjà
+ if [[ -z "${env_vars[$key]}" ]]; then
+ # Ajouter la clé à la liste des clés si elle n'existe pas encore
+ env_keys+=("$key")
+ fi
+
+ # Mettre à jour le tableau associatif
+ env_vars["$key"]="$value"
+ done < "$env_file"
+ }
+
+ # Lire chaque fichier .env et mettre à jour les structures de données
+ for env_file in "$@"; do
+ if [ -f "$env_file" ]; then
+ read_env_file "$env_file"
+ fi
+ done
+
+ # Écrire les variables dans le fichier de sortie dans l'ordre d'apparition
+ {
+ for key in "${env_keys[@]}"; do
+ echo "$key=${env_vars[$key]}"
+ done
+ } > "$output_file"
+}
+
diff --git a/nine.sh b/nine.sh
index 1427bfe..83514e7 100755
--- a/nine.sh
+++ b/nine.sh
@@ -3,81 +3,56 @@
#1 : action = default up
#2 : service = optionnel
-# Fusionner l'ensemble des fichier .env en un seul
-rm -f ./.env.local
-cat ./env/.env* >> ./.env.local
-. ./misc/e-ihm.sh
-. ./env/.env
-if [ -f ./env/.env.local ]
-then
- . ./env/.env.local
-fi
+# Include bibliotheque de fonction
+. ./misc/tools/e-ihm.sh
+
+# Include variable d'environnement global
+mergeenv env/.env.merge env/.env env/.env.local
+. env/.env.merge
+
+# Construction du docker-compose
+echo "services:" > docker-compose.yml
+
+# Include service
+declare -A services
+for dir in $(ls -d "services"/[0-9][0-9]-* | sort); do
+ # Include bibliotheque de fonction
+ if [ -f "$dir/misc/nine.sh" ]; then
+ . $dir/misc/nine.sh
+ fi
+
+ # Include variable d'environnement global
+ if [ -f "$dir/env/.env" ]; then
+ . $dir/env/.env
+ fi
+
+ # Include variable d'environnement local
+ if [ -f "$dir/env/.env.local" ]; then
+ . $dir/env/.env.local
+ fi
+
+ # Construction du docker-compose
+ if [ -f "$dir/dockercompose/dockercompose.yml" ]; then
+ cat "$dir/dockercompose/dockercompose.yml" >> docker-compose.yml
+ fi
+
+ # Construction .env.merge
+ mergeenv $dir/env/.env.merge env/.env.merge $dir/env/.env $dir/env/.env.local
+
+ # Sauvegarder le service
+ key="${dir##*-}"
+ value="${dir##*/}"
+ services["$key"]="$value"
+done
+
+# Construction du docker-compose
+echo "networks:" >> docker-compose.yml
+echo " nine-network:" >> docker-compose.yml
+echo " name: nine-network" >> docker-compose.yml
# Start script
BigTitle "NINE"
-# Include
-. ./.env.local
-
-#===========================================================================================================================================
-#== ENV ====================================================================================================================================
-#===========================================================================================================================================
-#1 = service to stop if null all service
-
-destroyall(){
- Question_ouinon "Souhaitez-vous supprimer l'ensemble des containers : Attention cela supprimera vraiment tout ?"
- if [[ "$?" = 0 ]]
- then
- destroy $NINEAPACHE_SERVICE_NAME 1
- destroy $MARIADB_SERVICE_NAME 1
- destroy $REDIS_SERVICE_NAME 1
- destroy $MINIO_SERVICE_NAME 1
- destroy $OPENLDAP_SERVICE_NAME 1
- destroy $KEYCLOAK_SERVICE_NAME 1
-
- destroy $NEXTCLOUD_SERVICE_NAME 1
- destroy $NINEBOARD_SERVICE_NAME 1
- destroy $NINEGATE_SERVICE_NAME 1
- destroy $WIKI_SERVICE_NAME 1
- destroy $WORDPRESS_SERVICE_NAME 1
-
- destroy $ADMINER_SERVICE_NAME 1
- destroy $PHPLDAPADMIN_SERVICE_NAME 1
- fi
-}
-
-env() {
- rm -rf ./tmp/.env.$1
- mkdir -p ./tmp
-
- cat ./env/.env >> ./tmp/.env.$1
- if [[ -f ./env/.env.local ]]; then cat ./env/.env.local >> ./tmp/.env.$1; fi
- if [[ -f ./env/.env.zapp.$1 ]]; then cat ./env/.env.zapp.$1 >> ./tmp/.env.$1; fi
- if [[ -f ./env/.env.zapp.$1.local ]]; then cat ./env/.env.zapp.$1.local >> ./tmp/.env.$1; fi
-};
-
-#===========================================================================================================================================
-#== ENVALL =================================================================================================================================
-#===========================================================================================================================================
-
-envall(){
- env $NINEAPACHE_SERVICE_NAME
- env $MARIADB_SERVICE_NAME
- env $REDIS_SERVICE_NAME
- env $MINIO_SERVICE_NAME
- env $OPENLDAP_SERVICE_NAME
- env $KEYCLOAK_SERVICE_NAME
-
- env $NEXTCLOUD_SERVICE_NAME
- env $NINEBOARD_SERVICE_NAME
- env $NINEGATE_SERVICE_NAME
- env $WIKI_SERVICE_NAME
- env $WORDPRESS_SERVICE_NAME
-
- env $ADMINER_SERVICE_NAME
- env $PHPLDAPADMIN_SERVICE_NAME
-}
-
#===========================================================================================================================================
#== STOP ===================================================================================================================================
#===========================================================================================================================================
@@ -87,7 +62,10 @@ envall(){
stop() {
if [[ "$2" != 1 ]]; then Title "STOP"; fi
+ echo "docker-compose stop $1"
docker-compose stop $1
+
+ if [[ "$2" != 1 ]]; then echo; fi
}
#===========================================================================================================================================
@@ -115,68 +93,13 @@ wait_for_container() {
}
upservice(){
- docker-compose up -d $1
+ docker-compose up -d $1 --remove-orphans
if [[ $2 == "wait" ]]
then
wait_for_container $1
fi
}
-function upnineapache {
- if [[ $NINEAPACHE_ACTIVATE == 1 && $NINEAPACHE_LOCAL == 1 ]]
- then
- Title ${NINEAPACHE_SERVICE_NAME^^}
- EchoVert "CONTAINER"
- upservice ${NINEAPACHE_SERVICE_NAME}
- Echo
- fi
-}
-
-function upmariadb {
- if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
- then
- Title "MARIADB"
- EchoVert "CONTAINER"
- upservice $MARIADB_SERVICE_NAME wait
- Echo
- fi
-}
-
-function upredis {
- if [[ $REDIS_ACTIVATE == 1 && $REDIS_LOCAL == 1 ]]
- then
- Title "REDIS"
- EchoVert "CONTAINER"
- upservice $REDIS_SERVICE_NAME
- Echo
- fi
-}
-
-function upminio {
- if [[ $MINIO_ACTIVATE == 1 && $MINIO_LOCAL == 1 ]]
- then
- Title "MINIO"
- EchoVert "CONTAINER"
- upservice $MINIO_SERVICE_NAME
- Echo
- fi
-}
-
-function upopenldap {
- if [[ $LDAP_ACTIVATE == 1 && $LDAP_LOCAL == 1 ]]
- then
- Title ${OPENLDAP_SERVICE_NAME^^}
- EchoVert "CONTAINER"
-
- mkdir -p ./volume/openldap/data
- chmod a+wr ./volume/openldap/data
-
- upservice $OPENLDAP_SERVICE_NAME wait
- docker-compose exec $OPENLDAP_SERVICE_NAME /nine/init.sh
- Echo
- fi
-}
-
function upkeycloak {
if [[ $CAS_ACTIVATE == 1 && $CAS_LOCAL == 1 ]]
then
@@ -197,6 +120,16 @@ function upkeycloak {
fi
}
+function updokuwiki {
+ if [[ $DOKUWIKI_ACTIVATE == 1 && $DOKUWIKI_LOCAL == 1 ]]
+ then
+ Title ${DOKUWIKI_SERVICE_NAME^^}
+
+ EchoVert "CONTAINER"
+ upservice ${DOKUWIKI_SERVICE_NAME}
+ Echo
+ fi
+}
function upnextcloud {
if [[ $NEXTCLOUD_ACTIVATE == 1 && $NEXTCLOUD_LOCAL == 1 ]]
@@ -238,80 +171,23 @@ function upnineboard {
fi
}
-function upninegate {
- if [[ $NINEGATE_ACTIVATE == 1 && $NINEGATE_LOCAL == 1 ]]
+
+function upnineskeletor {
+ if [[ $NINESKELETOR_ACTIVATE == 1 && $NINESKELETOR_LOCAL == 1 ]]
then
- Title ${NINEGATE_SERVICE_NAME^^}
+ Title ${NINESKELETOR_SERVICE_NAME^^}
if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
then
EchoVert "DATABASE"
- Echo ${NINEGATE_SERVICE_NAME^^}
- docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NINEGATE_SERVICE_NAME
+ Echo ${NINESKELETOR_SERVICE_NAME^^}
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NINESKELETOR_SERVICE_NAME
Echo
fi
EchoVert "CONTAINER"
- upservice ${NINEGATE_SERVICE_NAME}
- chmod -R a+wr ./volume/ninegate/data
- Echo
- fi
-}
-
-function upwiki {
- if [[ $WIKI_ACTIVATE == 1 && $WIKI_LOCAL == 1 ]]
- then
- Title ${WIKI_SERVICE_NAME^^}
-
- if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
- then
- EchoVert "DATABASE"
- Echo ${WIKI_SERVICE_NAME^^}
- docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $WIKI_SERVICE_NAME
- Echo
- fi
-
- EchoVert "CONTAINER"
- upservice ${WIKI_SERVICE_NAME}
- Echo
- fi
-}
-
-function upwordpress {
- if [[ $WORDPRESS_ACTIVATE == 1 && $WORDPRESS_LOCAL == 1 ]]
- then
- Title ${WORDPRESS_SERVICE_NAME^^}
-
- if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
- then
- EchoVert "DATABASE"
- Echo ${WORDPRESS_SERVICE_NAME^^}
- docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $WORDPRESS_SERVICE_NAME
- Echo
- fi
-
- EchoVert "CONTAINER"
- upservice ${WORDPRESS_SERVICE_NAME}
- Echo
- fi
-}
-
-function upadminer {
- if [[ $ADMINER_ACTIVATE == 1 && $ADMINER_LOCAL == 1 ]]
- then
- Title ${ADMINER_SERVICE_NAME^^}
- EchoVert "CONTAINER"
- upservice ${ADMINER_SERVICE_NAME}
- Echo
- fi
-}
-
-function upphpldapadmin {
- if [[ $PHPLDAPADMIN_ACTIVATE == 1 && $PHPLDAPADMIN_LOCAL == 1 ]]
- then
- Title ${PHPLDAPADMIN_SERVICE_NAME^^}
- EchoVert "CONTAINER"
- upservice ${PHPLDAPADMIN_SERVICE_NAME}
+ upservice ${NINESKELETOR_SERVICE_NAME}
+ chmod -R a+wr ./volume/nineskeletor/data
Echo
fi
}
@@ -329,62 +205,11 @@ up(){
# SERVICES
if [[ -z "$1" ]]
then
- # NETWORK
- if [[ "$RELEASE_SYSTEM" == "eole" ]]
- then
- Title "NETWORK"
- EchoRouge "ATTENTION SOLUTION DE CONTOURNEMENT POUR LE POC"
- EchoRouge "A résoudre si l'on souhaite mettre en production"
-
- # On réinstall docker-ce car le reconf détruit le reseau docker, la reinstall de docker-ce rétablit le reseau
- apt-get install docker-ce --reinstall
-
- # ATTENTION A REVOIR car ouvre complétement le firewall
- iptables -P INPUT ACCEPT
- fi
-
-
- # NINEAPACHE
- upnineapache
-
- # MARIADB
- upmariadb
-
- # REDIS
- upredis
-
- # MINIO
- upminio
-
- # OPENLDAP
- upopenldap
-
- # KEYCLOAK
- upkeycloak
-
- # NEXTCLOUD
- upnextcloud
-
- # NINEBOARD
- upnineboard
-
- # NINEGATE
- upninegate
-
- # WIKI
- upwiki
-
- # WORDPRESS
- upwordpress
-
- # ADMINER
- upadminer
-
- # PHPLDAPADMIN
- upphpldapadmin
-
+ # Pour chaque répertoire service on execute sa fonction up
+ for key in $(for k in "${!services[@]}"; do echo "$k:${services[$k]}"; done | sort -t: -k2,2 | cut -d: -f1); do
+ up${key}
+ done
else
- env ${1}
up${1}
fi
}
@@ -397,21 +222,11 @@ destroyall(){
Question_ouinon "Souhaitez-vous supprimer l'ensemble des containers : Attention cela supprimera vraiment tout ?"
if [[ "$?" = 0 ]]
then
- destroy $NINEAPACHE_SERVICE_NAME 1
- destroy $MARIADB_SERVICE_NAME 1
- destroy $REDIS_SERVICE_NAME 1
- destroy $MINIO_SERVICE_NAME 1
- destroy $OPENLDAP_SERVICE_NAME 1
- destroy $KEYCLOAK_SERVICE_NAME 1
-
- destroy $NEXTCLOUD_SERVICE_NAME 1
- destroy $NINEBOARD_SERVICE_NAME 1
- destroy $NINEGATE_SERVICE_NAME 1
- destroy $WIKI_SERVICE_NAME 1
- destroy $WORDPRESS_SERVICE_NAME 1
-
- destroy $ADMINER_SERVICE_NAME 1
- destroy $PHPLDAPADMIN_SERVICE_NAME 1
+ # Pour chaque répertoire service on execute sa fonction destroy
+ # On part du dernier service vers le premiser
+ for key in $(for k in "${!services[@]}"; do echo "$k:${services[$k]}"; done | sort -t: -k2,2r | cut -d: -f1); do
+ destroy${key} 1
+ done
fi
}
@@ -421,102 +236,94 @@ destroyall(){
#1 = service to destroy
#2 = ne pas poser de questions
-destroy(){
- Title "DESTROY "${1^^}
-
- stop $1 1
- docker-compose rm -s -v -f "$1"
-
- if [[ "$1" == "$MARIADB_SERVICE_NAME" && $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer l'ensemble des bases ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- sudo rm -rf volume/mariadb/mysql
- fi
- fi
-
- if [[ "$1" == "$OPENLDAP_SERVICE_NAME" && $LDAP_ACTIVATE == 1 && $LDAP_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer l'annuaire associé à $1 ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- sudo rm -rf volume/openldap/data
- mkdir volume/openldap/data
- chmod a+w volume/openldap/data -R
- chmod a+r volume/openldap/data -R
- fi
- fi
-
- if [[ "$1" == "$KEYCLOAK_SERVICE_NAME" && $CAS_ACTIVATE == 1 && $CAS_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $KEYCLOAK_SERVICE_NAME
- fi
- fi
-
- if [[ "$1" == "$NINEGATE_SERVICE_NAME" && $NINEGATE_ACTIVATE == 1 && $NINEGATE_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEGATE_SERVICE_NAME
- fi
- fi
-
- if [[ "$1" == "$NINEBOARD_SERVICE_NAME" && $NINEBOARD_ACTIVATE == 1 && $NINEBOARD_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEBOARD_SERVICE_NAME
- fi
- fi
-
- if [[ "$1" == "$NEXTCLOUD_SERVICE_NAME" && $NEXTCLOUD_ACTIVATE == 1 && $NEXTCLOUD_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ainsi que les fichiers utilisateurs ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NEXTCLOUD_SERVICE_NAME
- sudo rm -rf volume/nextcloud/data
- sudo rm -rf volume/nextcloud/html
- sudo rm -rf volume/nextcloud/app
- fi
- fi
-
- if [[ "$1" == "$WIKI_SERVICE_NAME" && $WIKI_ACTIVATE == 1 && $WIKI_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $WIKI_SERVICE_NAME
- sudo rm -rf volume/wiki/data
- fi
- fi
-
- if [[ "$1" == "$WORDPRESS_SERVICE_NAME" && $WORDPRESS_ACTIVATE == 1 && $WORDPRESS_LOCAL == 1 ]]
- then
- if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
- if [[ "$?" = 0 || -z $2 ]]
- then
- docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $WORDPRESS_SERVICE_NAME
- sudo rm -rf volume/wordpress/data
- fi
- fi
-}
-
+#destroy(){
+# Title "DESTROY "${1^^}
+#
+# stop $1 1
+# docker-compose rm -s -v -f "$1"
+#
+#
+# if [[ "$1" == "$OPENLDAP_SERVICE_NAME" && $LDAP_ACTIVATE == 1 && $LDAP_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer l'annuaire associé à $1 ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# EchoRouge Suppression
+# sudo rm -rf volume/openldap/data
+# fi
+# fi
+#
+# if [[ "$1" == "$KEYCLOAK_SERVICE_NAME" && $CAS_ACTIVATE == 1 && $CAS_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $KEYCLOAK_SERVICE_NAME
+# fi
+# fi
+#
+# if [[ "$1" == "$DOKUWIKI_SERVICE_NAME" && $DOKUWIKI_ACTIVATE == 1 && $DOKUWIKI_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $DOKUWIKI_SERVICE_NAME
+# sudo rm -rf volume/dokuwiki/data
+# fi
+# fi
+#
+# if [[ "$1" == "$NEXTCLOUD_SERVICE_NAME" && $NEXTCLOUD_ACTIVATE == 1 && $NEXTCLOUD_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ainsi que les fichiers utilisateurs ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NEXTCLOUD_SERVICE_NAME
+# sudo rm -rf volume/nextcloud/data
+# sudo rm -rf volume/nextcloud/html
+# sudo rm -rf volume/nextcloud/app
+# fi
+# fi
+#
+# if [[ "$1" == "$NINEBOARD_SERVICE_NAME" && $NINEBOARD_ACTIVATE == 1 && $NINEBOARD_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEBOARD_SERVICE_NAME
+# fi
+# fi
+#
+# if [[ "$1" == "$NINESKELETOR_SERVICE_NAME" && $NINESKELETOR_ACTIVATE == 1 && $NINESKELETOR_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINESKELETOR_SERVICE_NAME
+# fi
+# fi
+#
+# if [[ "$1" == "$WORDPRESS_SERVICE_NAME" && $WORDPRESS_ACTIVATE == 1 && $WORDPRESS_LOCAL == 1 ]]
+# then
+# if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
+# if [[ "$?" = 0 || -z $2 ]]
+# then
+# docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $WORDPRESS_SERVICE_NAME
+# sudo rm -rf volume/wordpress/data
+# fi
+# fi
+#}
+#
#===========================================================================================================================================
#== MAIN ===================================================================================================================================
#===========================================================================================================================================
-envall
-
if [[ $1 == "up" || $1 == "" ]]
then
up $2
+elif [[ $1 == "uplogs" || $1 == "" ]]
+then
+ up $2
+ docker-compose logs -f $2
elif [[ $1 == "stop" ]]
then
stop $2
@@ -539,7 +346,7 @@ then
EchoRouge "Vous devez precisez un service"
EchoRouge "nine.sh destroy monservice"
else
- destroy $2
+ destroy$2
fi
elif [[ $1 == "logs" ]]
then
@@ -547,16 +354,6 @@ then
elif [[ $1 == "iswait" ]]
then
wait_for_container $2
-elif [[ $1 == "env" ]]
-then
- if [[ -z $2 ]]
- then
- EchoRouge "Vous devez precisez un service"
- EchoRouge "nine.sh env monservice"
- else
- env $2
- EchoVert "Fichier tmp/.env.$1 regénéré"
- fi
elif [[ $1 == "regen" ]]
then
if [[ -z $2 ]]
@@ -564,14 +361,16 @@ then
destroyall
up
else
- destroy $2
- up $2
+ destroy$2
+ up$2
fi
else
EchoRouge "Action possible ="
EchoRouge "nine.sh > UP de l'ensemble des services actifs"
EchoRouge "nine.sh up > UP de l'ensemble des services actifs"
EchoRouge "nine.sh up monservice> UP de monservice"
+ EchoRouge "nine.sh uplogs > UP puis logs de l'ensemble des services actifs"
+ EchoRouge "nine.sh uplogs monservice> UP puis logs de monservice"
EchoRouge "nine.sh stop > STOP de l'ensemble des services"
EchoRouge "nine.sh stop monservice> STOP de monservice"
EchoRouge "nine.sh bash monservice> lance un terminel dans le conteneur de monservice"
@@ -580,7 +379,6 @@ else
EchoRouge "nine.sh logs > LOGS de l'ensemble des services"
EchoRouge "nine.sh logs monservice > LOGS de monservice"
EchoRouge "nine.sh iswait monservice > monservice est-il en cours de construction"
- EchoRouge "nine.sh env monservice > regeneration du fichier d'environnement de monservice"
EchoRouge "nine.sh regen > lance destroyall puis up sur l'ensemble des service"
EchoRouge "nine.sh regen monservice > lance destroy monservice puis up monservice"
diff --git a/services/10-nineapache/dockercompose/dockercompose.yml b/services/10-nineapache/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..8c15e1a
--- /dev/null
+++ b/services/10-nineapache/dockercompose/dockercompose.yml
@@ -0,0 +1,19 @@
+
+ # Nineapache
+ # Reverse proxy de l'ensemble des services
+ # Seul port ouvert sur l'exterieur
+ nineapache:
+ image: reg.cadoles.com/envole/nineapache:8.1
+ container_name: nine-nineapache
+ restart: unless-stopped
+ healthcheck:
+ test: curl --fail http://localhost || exit 1
+ interval: 1s
+ timeout: 60s
+ env_file: ./services/10-nineapache/env/.env.merge
+ networks:
+ - nine-network
+ ports:
+ - "80:80"
+ volumes:
+ - ./services/10-nineapache/volume/nine/apache.conf:/etc/apache2/conf.d/zapp.conf
diff --git a/volume/ninegate/data/private/.gitkeep b/services/10-nineapache/env/.env
similarity index 100%
rename from volume/ninegate/data/private/.gitkeep
rename to services/10-nineapache/env/.env
diff --git a/services/10-nineapache/misc/nine.sh b/services/10-nineapache/misc/nine.sh
new file mode 100644
index 0000000..fa559d3
--- /dev/null
+++ b/services/10-nineapache/misc/nine.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+function upnineapache {
+ if [[ $NINEAPACHE_ACTIVATE == 1 && $NINEAPACHE_LOCAL == 1 ]]
+ then
+ Title ${NINEAPACHE_SERVICE_NAME^^}
+ EchoVert "CONTAINER"
+ upservice ${NINEAPACHE_SERVICE_NAME}
+ Echo
+ fi
+}
+
+function destroynineapache {
+ if [[ $NINEAPACHE_LOCAL == 1 ]]
+ then
+ Title "DESTROY ${NINEAPACHE_SERVICE_NAME}"
+
+ stop ${NINEAPACHE_SERVICE_NAME} 1
+ docker-compose rm -s -v -f "${NINEAPACHE_SERVICE_NAME}"
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/volume/nineapache/nine/apache.conf b/services/10-nineapache/volume/nine/apache.conf
similarity index 70%
rename from volume/nineapache/nine/apache.conf
rename to services/10-nineapache/volume/nine/apache.conf
index 2f28578..b6f0b85 100755
--- a/volume/nineapache/nine/apache.conf
+++ b/services/10-nineapache/volume/nine/apache.conf
@@ -1,8 +1,8 @@
-
LoadModule rewrite_module modules/mod_rewrite.so
+
ServerName nineapache.local
-# Options Proxy
+# Options Proxy
ProxyRequests Off
ProxyPreserveHost On
@@ -16,41 +16,56 @@ RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
RequestHeader set Host "%{HTTP_HOST}s"
RequestHeader set X-Forwarded-Proto "http"
-# Services Outils
+# Keycloak
ProxyPass /auth http://keycloak:8999/auth retry=0 keepalive=On
ProxyPassReverse /auth http://keycloak:8999/auth retry=0
-ProxyPass /minio http://minio:9001 retry=0 keepalive=On
-ProxyPassReverse /minio http://minio:9001 retry=0
+# Minio = pour l'instant je n'arrive pas à faire fonctionner la console minio derrière un proxy
+#ProxyPass /minio http://minio:9001 retry=0 keepalive=On
+#ProxyPassReverse /minio http://minio:9001 retry=0
+#RewriteEngine On
+#RewriteCond %{HTTP:Upgrade} =websocket [NC]
+#RewriteRule /minio/(.*) ws://minio:9001/$1 [P,L]
+#RewriteCond %{HTTP:Upgrade} !=websocket [NC]
+#RewriteRule /minio/(.*) http://minio:9001/$1 [P,L]
-# Services Applicatif
+# Nextcloud
ProxyPass /nextcloud http://nextcloud retry=0 keepalive=On
ProxyPassReverse /nextcloud http://nextcloud retry=0
+# Nineboard
ProxyPass /nineboard http://nineboard/nineboard retry=0 keepalive=On
ProxyPassReverse /nineboard http://nineboard/nineboard retry=0
ProxyPass /wssnineboard ws://nineboard/wssnineboard retry=0 keepalive=On
ProxyPassReverse /wssnineboard ws://nineboard/wssnineboard retry=0
+# Ninegate
ProxyPass /ninegate http://ninegate/ninegate retry=0 keepalive=On
ProxyPassReverse /ninegate http://ninegate/ninegate retry=0
ProxyPass /wssninegate ws://ninegate/wssninegate retry=0 keepalive=On
ProxyPassReverse /wssninegate ws://ninegate/wssninegate retry=0
-ProxyPass /wiki http://wiki retry=0 keepalive=On
-ProxyPassReverse /wiki http://wiki retry=0
+# Nineskeletor
+ProxyPass /nineskeletor http://nineskeletor/nineskeletor retry=0 keepalive=On
+ProxyPassReverse /nineskeletor http://nineskeletor/nineskeletor retry=0
+# Dokuwiki
+ProxyPass /dokuwiki http://dokuwiki retry=0 keepalive=On
+ProxyPassReverse /dokuwiki http://dokuwiki retry=0
+
+# Wordpress
ProxyPass /wordpress http://wordpress/wordpress retry=0 keepalive=On
ProxyPassReverse /wordpress http://wordpress/wordpress retry=0
-# Services Développeur
+# Adminer
ProxyPass /adminer http://adminer:8080 retry=0 keepalive=On
ProxyPassReverse /adminer http://adminer:8080 retry=0
+# Phpldapadmin
ProxyPass /phpldapadmin http://phpldapadmin/phpldapadmin retry=0 keepalive=On
ProxyPassReverse /phpldapadmin http://phpldapadmin/phpldapadmin retry=0
-# Page interne au proxy
+# Page interne au proxy
DocumentRoot "/app/public"
Options Indexes FollowSymLinks
@@ -65,6 +80,5 @@ DocumentRoot "/app/public"
RewriteCond %{ENV:REDIRECT_STATUS} =""
RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
- RewriteRule ^ %{ENV:BASE}/index.php [L]
+ RewriteRule ^ %{ENV:BASE}/index.php [L]
-
diff --git a/services/15-mariadb/dockercompose/dockercompose.yml b/services/15-mariadb/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..5c37a9a
--- /dev/null
+++ b/services/15-mariadb/dockercompose/dockercompose.yml
@@ -0,0 +1,18 @@
+
+ # Mariadb
+ # Base de données des services
+ # Port interne 3306
+ mariadb:
+ image: docker.io/library/mariadb
+ container_name: nine-mariadb
+ restart: unless-stopped
+ healthcheck:
+ test: /nine/check.sh
+ interval: 1s
+ timeout: 60s
+ env_file: ./services/15-mariadb/env/.env.merge
+ networks:
+ - nine-network
+ volumes:
+ - ./services/15-mariadb/volume/mysql:/var/lib/mysql
+ - ./services/15-mariadb/volume/nine:/nine
diff --git a/env/.env.zapp.mariadb b/services/15-mariadb/env/.env
similarity index 100%
rename from env/.env.zapp.mariadb
rename to services/15-mariadb/env/.env
diff --git a/services/15-mariadb/misc/nine.sh b/services/15-mariadb/misc/nine.sh
new file mode 100644
index 0000000..f4d9ca5
--- /dev/null
+++ b/services/15-mariadb/misc/nine.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+
+
+function upmariadb {
+ if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
+ then
+ Title "MARIADB"
+ EchoVert "CONTAINER"
+ upservice $MARIADB_SERVICE_NAME wait
+ Echo
+ fi
+}
+
+function destroymariadb(){
+ if [[ $MARIADB_LOCAL == 1 ]]
+ then
+ Title "DESTROY $MARIADB_SERVICE_NAME"
+
+ stop $MARIADB_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$MARIADB_SERVICE_NAME"
+
+ if [[ -z $1 ]]; then Question_ouinon "Souhaitez-vous supprimer l'ensemble des bases ?";fi
+ if [[ "$?" = 0 || -z $1 ]]
+ then
+ sudo rm -rf services/15-mariadb/volume/mysql
+ fi
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/volume/mariadb/nine/check.sh b/services/15-mariadb/volume/nine/check.sh
similarity index 100%
rename from volume/mariadb/nine/check.sh
rename to services/15-mariadb/volume/nine/check.sh
diff --git a/volume/mariadb/nine/delete.sh b/services/15-mariadb/volume/nine/delete.sh
similarity index 100%
rename from volume/mariadb/nine/delete.sh
rename to services/15-mariadb/volume/nine/delete.sh
diff --git a/services/15-mariadb/volume/nine/init.sh b/services/15-mariadb/volume/nine/init.sh
new file mode 100755
index 0000000..27147bd
--- /dev/null
+++ b/services/15-mariadb/volume/nine/init.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+mariadb -u root -p$MARIADB_ROOT_PASSWORD -e "CREATE DATABASE IF NOT EXISTS $1;"
+mariadb -u root -p$MARIADB_ROOT_PASSWORD -e "GRANT ALL PRIVILEGES ON $1.* TO '$MARIADB_USER'@'%';"
\ No newline at end of file
diff --git a/services/30-minio/dockercompose/dockercompose.yml b/services/30-minio/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..7831692
--- /dev/null
+++ b/services/30-minio/dockercompose/dockercompose.yml
@@ -0,0 +1,15 @@
+
+ # Minio
+ # Stocakge S3
+ # Port interne 9000 pour le stockage / Port interne 9001 pour l'interface web
+ minio:
+ image: bitnami/minio
+ container_name: nine-minio
+ restart: unless-stopped
+ env_file: ./services/30-minio/env/.env.merge
+ ports:
+ - "9001:9001"
+ networks:
+ - nine-network
+ volumes:
+ - './services/30-minio/volume/data:/data'
\ No newline at end of file
diff --git a/env/.env.zapp.minio b/services/30-minio/env/.env
similarity index 55%
rename from env/.env.zapp.minio
rename to services/30-minio/env/.env
index d3c16b8..fb94f3d 100644
--- a/env/.env.zapp.minio
+++ b/services/30-minio/env/.env
@@ -4,4 +4,10 @@
MINIO_ROOT_USER=${ADMIN_USER}
MINIO_ROOT_PASSWORD=${ADMIN_PASSWORD}
MINIO_DEFAULT_BUCKETS=nine
+MINIO_API_PORT_NUMBER=9000
+MINIO_CONSOLE_PORT_NUMBER=9001
+#MINIO_SERVER_URL="${PROTOCOLE}://${WEB_URL}"
+#MINIO_BROWSER_REDIRECT_URL="${MINIO_URL}"
+#MINIO_SCHEME=${PROTOCOLE}
+#BITNAMI_DEBUG=true
\ No newline at end of file
diff --git a/services/30-minio/misc/nine.sh b/services/30-minio/misc/nine.sh
new file mode 100644
index 0000000..c728936
--- /dev/null
+++ b/services/30-minio/misc/nine.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+function upminio {
+ if [[ $MINIO_ACTIVATE == 1 && $MINIO_LOCAL == 1 ]]
+ then
+ Title "MINIO"
+ EchoVert "CONTAINER"
+ upservice $MINIO_SERVICE_NAME
+ Echo
+ fi
+}
+
+function destroyminio(){
+ if [[ $MINIO_LOCAL == 1 ]]
+ then
+ Title "DESTROY $MINIO_SERVICE_NAME"
+
+ stop $MINIO_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$MINIO_SERVICE_NAME"
+
+ if [[ -z $1 ]]; then Question_ouinon "Souhaitez-vous supprimer les fichiers stockés dans $MINIO_SERVICE_NAME ?";fi
+ if [[ "$?" = 0 || -z $1 ]]
+ then
+ sudo rm -rf ./services/30-minio/volume/data
+ fi
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/services/30-openldap/dockercompose/dockercompose.yml b/services/30-openldap/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..adf280e
--- /dev/null
+++ b/services/30-openldap/dockercompose/dockercompose.yml
@@ -0,0 +1,18 @@
+
+ # Openldap
+ # Annuaire
+ # Port interne 1389 & 1636
+ openldap:
+ image: docker.io/bitnami/openldap:2
+ container_name: nine-openldap
+ restart: unless-stopped
+ healthcheck:
+ test: /nine/check.sh
+ interval: 1s
+ timeout: 60s
+ env_file: ./services/30-openldap/env/.env.merge
+ networks:
+ - nine-network
+ volumes:
+ - './services/30-openldap/volume/data:/bitnami/openldap'
+ - './services/30-openldap/volume/nine:/nine'
diff --git a/env/.env.zapp.openldap b/services/30-openldap/env/.env
similarity index 100%
rename from env/.env.zapp.openldap
rename to services/30-openldap/env/.env
diff --git a/services/30-openldap/misc/nine.sh b/services/30-openldap/misc/nine.sh
new file mode 100644
index 0000000..0fb410f
--- /dev/null
+++ b/services/30-openldap/misc/nine.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+function upopenldap {
+ if [[ $OPENLDAP_ACTIVATE == 1 && $OPENLDAP_LOCAL == 1 ]]
+ then
+ Title ${OPENLDAP_SERVICE_NAME^^}
+ EchoVert "CONTAINER"
+
+ mkdir -p ./services/30-openldap/volume/data
+ chmod a+wr ./services/30-openldap/volume/data
+
+ upservice $OPENLDAP_SERVICE_NAME wait
+ docker-compose exec $OPENLDAP_SERVICE_NAME /nine/init.sh
+ Echo
+ fi
+}
+
+function destroyopenldap {
+ if [[ $OPENLDAP_LOCAL == 1 ]]
+ then
+ Title "DESTROY $OPENLDAP_SERVICE_NAME"
+
+ stop $OPENLDAP_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$OPENLDAP_SERVICE_NAME"
+
+ if [[ -z $1 ]]; then Question_ouinon "Souhaitez-vous supprimer l'annuaire associé à $OPENLDAP_SERVICE_NAME ?";fi
+ if [[ "$?" = 0 || -z $1 ]]
+ then
+ sudo rm -rf ./services/30-openldap/volume/data
+ fi
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/volume/openldap/nine/changepassword.sh b/services/30-openldap/volume/nine/changepassword.sh
similarity index 100%
rename from volume/openldap/nine/changepassword.sh
rename to services/30-openldap/volume/nine/changepassword.sh
diff --git a/volume/openldap/nine/check.sh b/services/30-openldap/volume/nine/check.sh
similarity index 100%
rename from volume/openldap/nine/check.sh
rename to services/30-openldap/volume/nine/check.sh
diff --git a/volume/openldap/nine/debug/debug.sh b/services/30-openldap/volume/nine/debug/debug.sh
similarity index 100%
rename from volume/openldap/nine/debug/debug.sh
rename to services/30-openldap/volume/nine/debug/debug.sh
diff --git a/volume/openldap/nine/debug/libopenldap.sh b/services/30-openldap/volume/nine/debug/libopenldap.sh
similarity index 100%
rename from volume/openldap/nine/debug/libopenldap.sh
rename to services/30-openldap/volume/nine/debug/libopenldap.sh
diff --git a/volume/openldap/nine/init.sh b/services/30-openldap/volume/nine/init.sh
similarity index 100%
rename from volume/openldap/nine/init.sh
rename to services/30-openldap/volume/nine/init.sh
diff --git a/volume/openldap/nine/ldif/cadoles.ldif b/services/30-openldap/volume/nine/ldif/cadoles.ldif
similarity index 100%
rename from volume/openldap/nine/ldif/cadoles.ldif
rename to services/30-openldap/volume/nine/ldif/cadoles.ldif
diff --git a/volume/openldap/nine/schema/cadoles.ldif b/services/30-openldap/volume/nine/schema/cadoles.ldif
similarity index 100%
rename from volume/openldap/nine/schema/cadoles.ldif
rename to services/30-openldap/volume/nine/schema/cadoles.ldif
diff --git a/services/30-redis/dockercompose/dockercompose.yml b/services/30-redis/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..52b316f
--- /dev/null
+++ b/services/30-redis/dockercompose/dockercompose.yml
@@ -0,0 +1,12 @@
+
+ # Redis
+ # Base de données redis pour les services qui souhaitent stocker leur session en bdd
+ # Port interne 6379
+ redis:
+ image: redis:4.0
+ container_name: nine-redis
+ env_file: ./services/30-redis/env/.env.merge
+ networks:
+ - nine-network
+ environment:
+ - TZ=Europe/Paris
diff --git a/services/30-redis/env/.env b/services/30-redis/env/.env
new file mode 100644
index 0000000..6e4bfdd
--- /dev/null
+++ b/services/30-redis/env/.env
@@ -0,0 +1,3 @@
+
+# == REDIS ================================================================================================================================
+
diff --git a/services/30-redis/misc/nine.sh b/services/30-redis/misc/nine.sh
new file mode 100644
index 0000000..0ece7c9
--- /dev/null
+++ b/services/30-redis/misc/nine.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+function upredis {
+ if [[ $REDIS_ACTIVATE == 1 && $REDIS_LOCAL == 1 ]]
+ then
+ Title "REDIS"
+ EchoVert "CONTAINER"
+ upservice $REDIS_SERVICE_NAME
+ Echo
+ fi
+}
+
+function destroyredis(){
+ if [[ $REDIS_LOCAL == 1 ]]
+ then
+ Title "DESTROY $REDIS_SERVICE_NAME"
+
+ stop $REDIS_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$REDIS_SERVICE_NAME"
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/services/50-ninegate/dockercompose/dockercompose.yml b/services/50-ninegate/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..19693dc
--- /dev/null
+++ b/services/50-ninegate/dockercompose/dockercompose.yml
@@ -0,0 +1,14 @@
+
+ # Ninegate
+ # Portail collaboratif
+ # Port interne 80
+ ninegate:
+ image: reg.cadoles.com/envole/ninegate
+ container_name: nine-ninegate
+ restart: unless-stopped
+ env_file: ./services/50-ninegate/env/.env.merge
+ networks:
+ - nine-network
+ volumes:
+ - ./services/50-ninegate/volume/data/private:/app/uploads
+ - ./services/50-ninegate/volume/data/public:/app/public/uploads
diff --git a/services/50-ninegate/env/.env b/services/50-ninegate/env/.env
new file mode 100644
index 0000000..358c5f8
--- /dev/null
+++ b/services/50-ninegate/env/.env
@@ -0,0 +1,27 @@
+
+# == NINEGATE =============================================================================================================================
+
+# BDD
+DATABASE_NAME=${NINEGATE_SERVICE_NAME}
+DATABASE_USER=${MARIADB_USER}
+DATABASE_PASSWORD=${MARIADB_PASSWORD}
+DATABASE_HOST=${MARIADB_SERVICE_NAME}
+
+# Activation Widget
+ACTIVATE_WIDADMINER=${ADMINER_ACTIVATE}
+WIDADMINER_URL="${ADMINER_URL}"
+
+ACTIVATE_WIDPHPLDAPADMIN=${PHPLDAPADMIN_ACTIVATE}
+WIDPHPLDAPADMIN_URL=${PHPLDAPADMIN_URL}
+
+ACTIVATE_WIDNEXTCLOUD=${NEXTCLOUD_ACTIVATE}
+WIDNEXTCLOUD_URL=${NEXTCLOUD_URL}
+
+ACTIVATE_WIDNINEBOARD=${NINEBOARD_ACTIVATE}
+WIDNINEBOARD_URL=${NINEBOARD_URL}
+
+ACTIVATE_WIDWORDPRESS=${WORDPRESS_ACTIVATE}
+WIDWORDPRESS_URL=${WORDPRESS_URL}
+
+INITPWDADMIN=${ADMIN_PASSWORD}
+
diff --git a/services/50-ninegate/misc/nine.sh b/services/50-ninegate/misc/nine.sh
new file mode 100644
index 0000000..42d664c
--- /dev/null
+++ b/services/50-ninegate/misc/nine.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+
+function upninegate {
+ if [[ $NINEGATE_ACTIVATE == 1 && $NINEGATE_LOCAL == 1 ]]
+ then
+ Title ${NINEGATE_SERVICE_NAME^^}
+
+ if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
+ then
+ EchoVert "DATABASE"
+ Echo ${NINEGATE_SERVICE_NAME^^}
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NINEGATE_SERVICE_NAME
+ Echo
+ fi
+
+ EchoVert "CONTAINER"
+ upservice ${NINEGATE_SERVICE_NAME}
+ chmod -R a+wr ./services/50-ninegate/volume/data
+ Echo
+ fi
+}
+
+function destroyninegate {
+ if [[ $NINEGATE_LOCAL == 1 ]]
+ then
+ Title "DESTROY $NINEGATE_SERVICE_NAME"
+
+ stop $NINEGATE_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$NINEGATE_SERVICE_NAME"
+
+
+ if [[ -z $1 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $NINEGATE_SERVICE_NAME ?";fi
+ if [[ "$?" = 0 || -z $1 ]]
+ then
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEGATE_SERVICE_NAME
+ fi
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/services/50-ninegate/volume/data/private/.gitkeep b/services/50-ninegate/volume/data/private/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/volume/ninegate/data/public/avatar/admin.jpg b/services/50-ninegate/volume/data/public/avatar/admin.jpg
similarity index 100%
rename from volume/ninegate/data/public/avatar/admin.jpg
rename to services/50-ninegate/volume/data/public/avatar/admin.jpg
diff --git a/volume/ninegate/data/public/avatar/noavatar.png b/services/50-ninegate/volume/data/public/avatar/noavatar.png
similarity index 100%
rename from volume/ninegate/data/public/avatar/noavatar.png
rename to services/50-ninegate/volume/data/public/avatar/noavatar.png
diff --git a/volume/ninegate/data/public/avatar/system.jpg b/services/50-ninegate/volume/data/public/avatar/system.jpg
similarity index 100%
rename from volume/ninegate/data/public/avatar/system.jpg
rename to services/50-ninegate/volume/data/public/avatar/system.jpg
diff --git a/volume/ninegate/data/public/header/header.png b/services/50-ninegate/volume/data/public/header/header.png
similarity index 100%
rename from volume/ninegate/data/public/header/header.png
rename to services/50-ninegate/volume/data/public/header/header.png
diff --git a/volume/ninegate/data/public/icon/icon_add.png b/services/50-ninegate/volume/data/public/icon/icon_add.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_add.png
rename to services/50-ninegate/volume/data/public/icon/icon_add.png
diff --git a/volume/ninegate/data/public/icon/icon_adminer.png b/services/50-ninegate/volume/data/public/icon/icon_adminer.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_adminer.png
rename to services/50-ninegate/volume/data/public/icon/icon_adminer.png
diff --git a/volume/ninegate/data/public/icon/icon_anchor.png b/services/50-ninegate/volume/data/public/icon/icon_anchor.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_anchor.png
rename to services/50-ninegate/volume/data/public/icon/icon_anchor.png
diff --git a/volume/ninegate/data/public/icon/icon_aperture.png b/services/50-ninegate/volume/data/public/icon/icon_aperture.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_aperture.png
rename to services/50-ninegate/volume/data/public/icon/icon_aperture.png
diff --git a/volume/ninegate/data/public/icon/icon_arrow-down.png b/services/50-ninegate/volume/data/public/icon/icon_arrow-down.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_arrow-down.png
rename to services/50-ninegate/volume/data/public/icon/icon_arrow-down.png
diff --git a/volume/ninegate/data/public/icon/icon_arrow-up.png b/services/50-ninegate/volume/data/public/icon/icon_arrow-up.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_arrow-up.png
rename to services/50-ninegate/volume/data/public/icon/icon_arrow-up.png
diff --git a/volume/ninegate/data/public/icon/icon_art.png b/services/50-ninegate/volume/data/public/icon/icon_art.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_art.png
rename to services/50-ninegate/volume/data/public/icon/icon_art.png
diff --git a/volume/ninegate/data/public/icon/icon_balado.png b/services/50-ninegate/volume/data/public/icon/icon_balado.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_balado.png
rename to services/50-ninegate/volume/data/public/icon/icon_balado.png
diff --git a/volume/ninegate/data/public/icon/icon_bar-chart.png b/services/50-ninegate/volume/data/public/icon/icon_bar-chart.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bar-chart.png
rename to services/50-ninegate/volume/data/public/icon/icon_bar-chart.png
diff --git a/volume/ninegate/data/public/icon/icon_batteryfull.png b/services/50-ninegate/volume/data/public/icon/icon_batteryfull.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_batteryfull.png
rename to services/50-ninegate/volume/data/public/icon/icon_batteryfull.png
diff --git a/volume/ninegate/data/public/icon/icon_batterylow.png b/services/50-ninegate/volume/data/public/icon/icon_batterylow.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_batterylow.png
rename to services/50-ninegate/volume/data/public/icon/icon_batterylow.png
diff --git a/volume/ninegate/data/public/icon/icon_bdd.png b/services/50-ninegate/volume/data/public/icon/icon_bdd.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bdd.png
rename to services/50-ninegate/volume/data/public/icon/icon_bdd.png
diff --git a/volume/ninegate/data/public/icon/icon_bike.png b/services/50-ninegate/volume/data/public/icon/icon_bike.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bike.png
rename to services/50-ninegate/volume/data/public/icon/icon_bike.png
diff --git a/volume/ninegate/data/public/icon/icon_biker.png b/services/50-ninegate/volume/data/public/icon/icon_biker.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_biker.png
rename to services/50-ninegate/volume/data/public/icon/icon_biker.png
diff --git a/volume/ninegate/data/public/icon/icon_bikewheel.png b/services/50-ninegate/volume/data/public/icon/icon_bikewheel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bikewheel.png
rename to services/50-ninegate/volume/data/public/icon/icon_bikewheel.png
diff --git a/volume/ninegate/data/public/icon/icon_blimp.png b/services/50-ninegate/volume/data/public/icon/icon_blimp.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_blimp.png
rename to services/50-ninegate/volume/data/public/icon/icon_blimp.png
diff --git a/volume/ninegate/data/public/icon/icon_bolt.png b/services/50-ninegate/volume/data/public/icon/icon_bolt.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bolt.png
rename to services/50-ninegate/volume/data/public/icon/icon_bolt.png
diff --git a/volume/ninegate/data/public/icon/icon_bomb.png b/services/50-ninegate/volume/data/public/icon/icon_bomb.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bomb.png
rename to services/50-ninegate/volume/data/public/icon/icon_bomb.png
diff --git a/volume/ninegate/data/public/icon/icon_booklet.png b/services/50-ninegate/volume/data/public/icon/icon_booklet.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_booklet.png
rename to services/50-ninegate/volume/data/public/icon/icon_booklet.png
diff --git a/volume/ninegate/data/public/icon/icon_bookshelf.png b/services/50-ninegate/volume/data/public/icon/icon_bookshelf.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_bookshelf.png
rename to services/50-ninegate/volume/data/public/icon/icon_bookshelf.png
diff --git a/volume/ninegate/data/public/icon/icon_briefcase.png b/services/50-ninegate/volume/data/public/icon/icon_briefcase.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_briefcase.png
rename to services/50-ninegate/volume/data/public/icon/icon_briefcase.png
diff --git a/volume/ninegate/data/public/icon/icon_brightness.png b/services/50-ninegate/volume/data/public/icon/icon_brightness.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_brightness.png
rename to services/50-ninegate/volume/data/public/icon/icon_brightness.png
diff --git a/volume/ninegate/data/public/icon/icon_browser.png b/services/50-ninegate/volume/data/public/icon/icon_browser.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_browser.png
rename to services/50-ninegate/volume/data/public/icon/icon_browser.png
diff --git a/volume/ninegate/data/public/icon/icon_brush-pencil.png b/services/50-ninegate/volume/data/public/icon/icon_brush-pencil.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_brush-pencil.png
rename to services/50-ninegate/volume/data/public/icon/icon_brush-pencil.png
diff --git a/volume/ninegate/data/public/icon/icon_cadoles.png b/services/50-ninegate/volume/data/public/icon/icon_cadoles.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cadoles.png
rename to services/50-ninegate/volume/data/public/icon/icon_cadoles.png
diff --git a/volume/ninegate/data/public/icon/icon_calculator.png b/services/50-ninegate/volume/data/public/icon/icon_calculator.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_calculator.png
rename to services/50-ninegate/volume/data/public/icon/icon_calculator.png
diff --git a/volume/ninegate/data/public/icon/icon_calendar.png b/services/50-ninegate/volume/data/public/icon/icon_calendar.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_calendar.png
rename to services/50-ninegate/volume/data/public/icon/icon_calendar.png
diff --git a/volume/ninegate/data/public/icon/icon_camera.png b/services/50-ninegate/volume/data/public/icon/icon_camera.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_camera.png
rename to services/50-ninegate/volume/data/public/icon/icon_camera.png
diff --git a/volume/ninegate/data/public/icon/icon_car.png b/services/50-ninegate/volume/data/public/icon/icon_car.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_car.png
rename to services/50-ninegate/volume/data/public/icon/icon_car.png
diff --git a/volume/ninegate/data/public/icon/icon_cart.png b/services/50-ninegate/volume/data/public/icon/icon_cart.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cart.png
rename to services/50-ninegate/volume/data/public/icon/icon_cart.png
diff --git a/volume/ninegate/data/public/icon/icon_carwheel.png b/services/50-ninegate/volume/data/public/icon/icon_carwheel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_carwheel.png
rename to services/50-ninegate/volume/data/public/icon/icon_carwheel.png
diff --git a/volume/ninegate/data/public/icon/icon_caution.png b/services/50-ninegate/volume/data/public/icon/icon_caution.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_caution.png
rename to services/50-ninegate/volume/data/public/icon/icon_caution.png
diff --git a/volume/ninegate/data/public/icon/icon_cdt.png b/services/50-ninegate/volume/data/public/icon/icon_cdt.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cdt.png
rename to services/50-ninegate/volume/data/public/icon/icon_cdt.png
diff --git a/volume/ninegate/data/public/icon/icon_chart.png b/services/50-ninegate/volume/data/public/icon/icon_chart.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_chart.png
rename to services/50-ninegate/volume/data/public/icon/icon_chart.png
diff --git a/volume/ninegate/data/public/icon/icon_chartpie.png b/services/50-ninegate/volume/data/public/icon/icon_chartpie.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_chartpie.png
rename to services/50-ninegate/volume/data/public/icon/icon_chartpie.png
diff --git a/volume/ninegate/data/public/icon/icon_chat.png b/services/50-ninegate/volume/data/public/icon/icon_chat.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_chat.png
rename to services/50-ninegate/volume/data/public/icon/icon_chat.png
diff --git a/volume/ninegate/data/public/icon/icon_check.png b/services/50-ninegate/volume/data/public/icon/icon_check.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_check.png
rename to services/50-ninegate/volume/data/public/icon/icon_check.png
diff --git a/volume/ninegate/data/public/icon/icon_circlecompass.png b/services/50-ninegate/volume/data/public/icon/icon_circlecompass.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_circlecompass.png
rename to services/50-ninegate/volume/data/public/icon/icon_circlecompass.png
diff --git a/volume/ninegate/data/public/icon/icon_clapboard.png b/services/50-ninegate/volume/data/public/icon/icon_clapboard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_clapboard.png
rename to services/50-ninegate/volume/data/public/icon/icon_clapboard.png
diff --git a/volume/ninegate/data/public/icon/icon_clipboard.png b/services/50-ninegate/volume/data/public/icon/icon_clipboard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_clipboard.png
rename to services/50-ninegate/volume/data/public/icon/icon_clipboard.png
diff --git a/volume/ninegate/data/public/icon/icon_clock.png b/services/50-ninegate/volume/data/public/icon/icon_clock.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_clock.png
rename to services/50-ninegate/volume/data/public/icon/icon_clock.png
diff --git a/volume/ninegate/data/public/icon/icon_cloud.png b/services/50-ninegate/volume/data/public/icon/icon_cloud.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cloud.png
rename to services/50-ninegate/volume/data/public/icon/icon_cloud.png
diff --git a/volume/ninegate/data/public/icon/icon_cmyk.png b/services/50-ninegate/volume/data/public/icon/icon_cmyk.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cmyk.png
rename to services/50-ninegate/volume/data/public/icon/icon_cmyk.png
diff --git a/volume/ninegate/data/public/icon/icon_colorwheel.png b/services/50-ninegate/volume/data/public/icon/icon_colorwheel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_colorwheel.png
rename to services/50-ninegate/volume/data/public/icon/icon_colorwheel.png
diff --git a/volume/ninegate/data/public/icon/icon_compass.png b/services/50-ninegate/volume/data/public/icon/icon_compass.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_compass.png
rename to services/50-ninegate/volume/data/public/icon/icon_compass.png
diff --git a/volume/ninegate/data/public/icon/icon_compose.png b/services/50-ninegate/volume/data/public/icon/icon_compose.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_compose.png
rename to services/50-ninegate/volume/data/public/icon/icon_compose.png
diff --git a/volume/ninegate/data/public/icon/icon_computer.png b/services/50-ninegate/volume/data/public/icon/icon_computer.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_computer.png
rename to services/50-ninegate/volume/data/public/icon/icon_computer.png
diff --git a/volume/ninegate/data/public/icon/icon_cone.png b/services/50-ninegate/volume/data/public/icon/icon_cone.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cone.png
rename to services/50-ninegate/volume/data/public/icon/icon_cone.png
diff --git a/volume/ninegate/data/public/icon/icon_contacts.png b/services/50-ninegate/volume/data/public/icon/icon_contacts.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_contacts.png
rename to services/50-ninegate/volume/data/public/icon/icon_contacts.png
diff --git a/volume/ninegate/data/public/icon/icon_contrast.png b/services/50-ninegate/volume/data/public/icon/icon_contrast.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_contrast.png
rename to services/50-ninegate/volume/data/public/icon/icon_contrast.png
diff --git a/volume/ninegate/data/public/icon/icon_countdown.png b/services/50-ninegate/volume/data/public/icon/icon_countdown.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_countdown.png
rename to services/50-ninegate/volume/data/public/icon/icon_countdown.png
diff --git a/volume/ninegate/data/public/icon/icon_creditcard.png b/services/50-ninegate/volume/data/public/icon/icon_creditcard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_creditcard.png
rename to services/50-ninegate/volume/data/public/icon/icon_creditcard.png
diff --git a/volume/ninegate/data/public/icon/icon_crop.png b/services/50-ninegate/volume/data/public/icon/icon_crop.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_crop.png
rename to services/50-ninegate/volume/data/public/icon/icon_crop.png
diff --git a/volume/ninegate/data/public/icon/icon_crossroads.png b/services/50-ninegate/volume/data/public/icon/icon_crossroads.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_crossroads.png
rename to services/50-ninegate/volume/data/public/icon/icon_crossroads.png
diff --git a/volume/ninegate/data/public/icon/icon_crous.png b/services/50-ninegate/volume/data/public/icon/icon_crous.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_crous.png
rename to services/50-ninegate/volume/data/public/icon/icon_crous.png
diff --git a/volume/ninegate/data/public/icon/icon_cruise.png b/services/50-ninegate/volume/data/public/icon/icon_cruise.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cruise.png
rename to services/50-ninegate/volume/data/public/icon/icon_cruise.png
diff --git a/volume/ninegate/data/public/icon/icon_cursor.png b/services/50-ninegate/volume/data/public/icon/icon_cursor.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_cursor.png
rename to services/50-ninegate/volume/data/public/icon/icon_cursor.png
diff --git a/volume/ninegate/data/public/icon/icon_denied.png b/services/50-ninegate/volume/data/public/icon/icon_denied.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_denied.png
rename to services/50-ninegate/volume/data/public/icon/icon_denied.png
diff --git a/volume/ninegate/data/public/icon/icon_dev.png b/services/50-ninegate/volume/data/public/icon/icon_dev.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_dev.png
rename to services/50-ninegate/volume/data/public/icon/icon_dev.png
diff --git a/volume/ninegate/data/public/icon/icon_die.png b/services/50-ninegate/volume/data/public/icon/icon_die.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_die.png
rename to services/50-ninegate/volume/data/public/icon/icon_die.png
diff --git a/volume/ninegate/data/public/icon/icon_document.png b/services/50-ninegate/volume/data/public/icon/icon_document.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_document.png
rename to services/50-ninegate/volume/data/public/icon/icon_document.png
diff --git a/volume/ninegate/data/public/icon/icon_dokuwiki.png b/services/50-ninegate/volume/data/public/icon/icon_dokuwiki.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_dokuwiki.png
rename to services/50-ninegate/volume/data/public/icon/icon_dokuwiki.png
diff --git a/volume/ninegate/data/public/icon/icon_dolly.png b/services/50-ninegate/volume/data/public/icon/icon_dolly.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_dolly.png
rename to services/50-ninegate/volume/data/public/icon/icon_dolly.png
diff --git a/volume/ninegate/data/public/icon/icon_door.png b/services/50-ninegate/volume/data/public/icon/icon_door.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_door.png
rename to services/50-ninegate/volume/data/public/icon/icon_door.png
diff --git a/volume/ninegate/data/public/icon/icon_download.png b/services/50-ninegate/volume/data/public/icon/icon_download.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_download.png
rename to services/50-ninegate/volume/data/public/icon/icon_download.png
diff --git a/volume/ninegate/data/public/icon/icon_ead.png b/services/50-ninegate/volume/data/public/icon/icon_ead.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_ead.png
rename to services/50-ninegate/volume/data/public/icon/icon_ead.png
diff --git a/volume/ninegate/data/public/icon/icon_easel.png b/services/50-ninegate/volume/data/public/icon/icon_easel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_easel.png
rename to services/50-ninegate/volume/data/public/icon/icon_easel.png
diff --git a/volume/ninegate/data/public/icon/icon_econnect.png b/services/50-ninegate/volume/data/public/icon/icon_econnect.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_econnect.png
rename to services/50-ninegate/volume/data/public/icon/icon_econnect.png
diff --git a/volume/ninegate/data/public/icon/icon_email.png b/services/50-ninegate/volume/data/public/icon/icon_email.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_email.png
rename to services/50-ninegate/volume/data/public/icon/icon_email.png
diff --git a/volume/ninegate/data/public/icon/icon_eoe.png b/services/50-ninegate/volume/data/public/icon/icon_eoe.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_eoe.png
rename to services/50-ninegate/volume/data/public/icon/icon_eoe.png
diff --git a/volume/ninegate/data/public/icon/icon_eop.png b/services/50-ninegate/volume/data/public/icon/icon_eop.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_eop.png
rename to services/50-ninegate/volume/data/public/icon/icon_eop.png
diff --git a/volume/ninegate/data/public/icon/icon_etherhome.png b/services/50-ninegate/volume/data/public/icon/icon_etherhome.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_etherhome.png
rename to services/50-ninegate/volume/data/public/icon/icon_etherhome.png
diff --git a/volume/ninegate/data/public/icon/icon_euro.png b/services/50-ninegate/volume/data/public/icon/icon_euro.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_euro.png
rename to services/50-ninegate/volume/data/public/icon/icon_euro.png
diff --git a/volume/ninegate/data/public/icon/icon_eye.png b/services/50-ninegate/volume/data/public/icon/icon_eye.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_eye.png
rename to services/50-ninegate/volume/data/public/icon/icon_eye.png
diff --git a/volume/ninegate/data/public/icon/icon_eyedropper.png b/services/50-ninegate/volume/data/public/icon/icon_eyedropper.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_eyedropper.png
rename to services/50-ninegate/volume/data/public/icon/icon_eyedropper.png
diff --git a/volume/ninegate/data/public/icon/icon_fashion.png b/services/50-ninegate/volume/data/public/icon/icon_fashion.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_fashion.png
rename to services/50-ninegate/volume/data/public/icon/icon_fashion.png
diff --git a/volume/ninegate/data/public/icon/icon_filmreel.png b/services/50-ninegate/volume/data/public/icon/icon_filmreel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_filmreel.png
rename to services/50-ninegate/volume/data/public/icon/icon_filmreel.png
diff --git a/volume/ninegate/data/public/icon/icon_filmroll.png b/services/50-ninegate/volume/data/public/icon/icon_filmroll.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_filmroll.png
rename to services/50-ninegate/volume/data/public/icon/icon_filmroll.png
diff --git a/volume/ninegate/data/public/icon/icon_flag.png b/services/50-ninegate/volume/data/public/icon/icon_flag.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_flag.png
rename to services/50-ninegate/volume/data/public/icon/icon_flag.png
diff --git a/volume/ninegate/data/public/icon/icon_flame.png b/services/50-ninegate/volume/data/public/icon/icon_flame.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_flame.png
rename to services/50-ninegate/volume/data/public/icon/icon_flame.png
diff --git a/volume/ninegate/data/public/icon/icon_flash.png b/services/50-ninegate/volume/data/public/icon/icon_flash.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_flash.png
rename to services/50-ninegate/volume/data/public/icon/icon_flash.png
diff --git a/volume/ninegate/data/public/icon/icon_flower.png b/services/50-ninegate/volume/data/public/icon/icon_flower.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_flower.png
rename to services/50-ninegate/volume/data/public/icon/icon_flower.png
diff --git a/volume/ninegate/data/public/icon/icon_fluxbb.png b/services/50-ninegate/volume/data/public/icon/icon_fluxbb.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_fluxbb.png
rename to services/50-ninegate/volume/data/public/icon/icon_fluxbb.png
diff --git a/volume/ninegate/data/public/icon/icon_focus.png b/services/50-ninegate/volume/data/public/icon/icon_focus.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_focus.png
rename to services/50-ninegate/volume/data/public/icon/icon_focus.png
diff --git a/volume/ninegate/data/public/icon/icon_folder.png b/services/50-ninegate/volume/data/public/icon/icon_folder.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_folder.png
rename to services/50-ninegate/volume/data/public/icon/icon_folder.png
diff --git a/volume/ninegate/data/public/icon/icon_frames.png b/services/50-ninegate/volume/data/public/icon/icon_frames.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_frames.png
rename to services/50-ninegate/volume/data/public/icon/icon_frames.png
diff --git a/volume/ninegate/data/public/icon/icon_gamecontroller.png b/services/50-ninegate/volume/data/public/icon/icon_gamecontroller.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_gamecontroller.png
rename to services/50-ninegate/volume/data/public/icon/icon_gamecontroller.png
diff --git a/volume/ninegate/data/public/icon/icon_gas.png b/services/50-ninegate/volume/data/public/icon/icon_gas.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_gas.png
rename to services/50-ninegate/volume/data/public/icon/icon_gas.png
diff --git a/volume/ninegate/data/public/icon/icon_gear.png b/services/50-ninegate/volume/data/public/icon/icon_gear.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_gear.png
rename to services/50-ninegate/volume/data/public/icon/icon_gear.png
diff --git a/volume/ninegate/data/public/icon/icon_genconfig.png b/services/50-ninegate/volume/data/public/icon/icon_genconfig.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_genconfig.png
rename to services/50-ninegate/volume/data/public/icon/icon_genconfig.png
diff --git a/volume/ninegate/data/public/icon/icon_genius.png b/services/50-ninegate/volume/data/public/icon/icon_genius.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_genius.png
rename to services/50-ninegate/volume/data/public/icon/icon_genius.png
diff --git a/volume/ninegate/data/public/icon/icon_gepi.png b/services/50-ninegate/volume/data/public/icon/icon_gepi.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_gepi.png
rename to services/50-ninegate/volume/data/public/icon/icon_gepi.png
diff --git a/volume/ninegate/data/public/icon/icon_global.png b/services/50-ninegate/volume/data/public/icon/icon_global.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_global.png
rename to services/50-ninegate/volume/data/public/icon/icon_global.png
diff --git a/volume/ninegate/data/public/icon/icon_globe.png b/services/50-ninegate/volume/data/public/icon/icon_globe.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_globe.png
rename to services/50-ninegate/volume/data/public/icon/icon_globe.png
diff --git a/volume/ninegate/data/public/icon/icon_glpi.png b/services/50-ninegate/volume/data/public/icon/icon_glpi.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_glpi.png
rename to services/50-ninegate/volume/data/public/icon/icon_glpi.png
diff --git a/volume/ninegate/data/public/icon/icon_gps.png b/services/50-ninegate/volume/data/public/icon/icon_gps.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_gps.png
rename to services/50-ninegate/volume/data/public/icon/icon_gps.png
diff --git a/volume/ninegate/data/public/icon/icon_grr.png b/services/50-ninegate/volume/data/public/icon/icon_grr.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_grr.png
rename to services/50-ninegate/volume/data/public/icon/icon_grr.png
diff --git a/volume/ninegate/data/public/icon/icon_hazard.png b/services/50-ninegate/volume/data/public/icon/icon_hazard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_hazard.png
rename to services/50-ninegate/volume/data/public/icon/icon_hazard.png
diff --git a/volume/ninegate/data/public/icon/icon_heart.png b/services/50-ninegate/volume/data/public/icon/icon_heart.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_heart.png
rename to services/50-ninegate/volume/data/public/icon/icon_heart.png
diff --git a/volume/ninegate/data/public/icon/icon_helicopter.png b/services/50-ninegate/volume/data/public/icon/icon_helicopter.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_helicopter.png
rename to services/50-ninegate/volume/data/public/icon/icon_helicopter.png
diff --git a/volume/ninegate/data/public/icon/icon_hotair.png b/services/50-ninegate/volume/data/public/icon/icon_hotair.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_hotair.png
rename to services/50-ninegate/volume/data/public/icon/icon_hotair.png
diff --git a/volume/ninegate/data/public/icon/icon_hourglass.png b/services/50-ninegate/volume/data/public/icon/icon_hourglass.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_hourglass.png
rename to services/50-ninegate/volume/data/public/icon/icon_hourglass.png
diff --git a/volume/ninegate/data/public/icon/icon_image.png b/services/50-ninegate/volume/data/public/icon/icon_image.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_image.png
rename to services/50-ninegate/volume/data/public/icon/icon_image.png
diff --git a/volume/ninegate/data/public/icon/icon_info.png b/services/50-ninegate/volume/data/public/icon/icon_info.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_info.png
rename to services/50-ninegate/volume/data/public/icon/icon_info.png
diff --git a/volume/ninegate/data/public/icon/icon_interstate.png b/services/50-ninegate/volume/data/public/icon/icon_interstate.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_interstate.png
rename to services/50-ninegate/volume/data/public/icon/icon_interstate.png
diff --git a/volume/ninegate/data/public/icon/icon_kanboard.png b/services/50-ninegate/volume/data/public/icon/icon_kanboard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_kanboard.png
rename to services/50-ninegate/volume/data/public/icon/icon_kanboard.png
diff --git a/volume/ninegate/data/public/icon/icon_key.png b/services/50-ninegate/volume/data/public/icon/icon_key.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_key.png
rename to services/50-ninegate/volume/data/public/icon/icon_key.png
diff --git a/volume/ninegate/data/public/icon/icon_keyboard.png b/services/50-ninegate/volume/data/public/icon/icon_keyboard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_keyboard.png
rename to services/50-ninegate/volume/data/public/icon/icon_keyboard.png
diff --git a/volume/ninegate/data/public/icon/icon_lens.png b/services/50-ninegate/volume/data/public/icon/icon_lens.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_lens.png
rename to services/50-ninegate/volume/data/public/icon/icon_lens.png
diff --git a/volume/ninegate/data/public/icon/icon_lightbulb.png b/services/50-ninegate/volume/data/public/icon/icon_lightbulb.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_lightbulb.png
rename to services/50-ninegate/volume/data/public/icon/icon_lightbulb.png
diff --git a/volume/ninegate/data/public/icon/icon_limesurvey.png b/services/50-ninegate/volume/data/public/icon/icon_limesurvey.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_limesurvey.png
rename to services/50-ninegate/volume/data/public/icon/icon_limesurvey.png
diff --git a/volume/ninegate/data/public/icon/icon_loading.png b/services/50-ninegate/volume/data/public/icon/icon_loading.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_loading.png
rename to services/50-ninegate/volume/data/public/icon/icon_loading.png
diff --git a/volume/ninegate/data/public/icon/icon_location.png b/services/50-ninegate/volume/data/public/icon/icon_location.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_location.png
rename to services/50-ninegate/volume/data/public/icon/icon_location.png
diff --git a/volume/ninegate/data/public/icon/icon_locked.png b/services/50-ninegate/volume/data/public/icon/icon_locked.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_locked.png
rename to services/50-ninegate/volume/data/public/icon/icon_locked.png
diff --git a/volume/ninegate/data/public/icon/icon_loomio.png b/services/50-ninegate/volume/data/public/icon/icon_loomio.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_loomio.png
rename to services/50-ninegate/volume/data/public/icon/icon_loomio.png
diff --git a/volume/ninegate/data/public/icon/icon_magicwand.png b/services/50-ninegate/volume/data/public/icon/icon_magicwand.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_magicwand.png
rename to services/50-ninegate/volume/data/public/icon/icon_magicwand.png
diff --git a/volume/ninegate/data/public/icon/icon_magnifyingglass.png b/services/50-ninegate/volume/data/public/icon/icon_magnifyingglass.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_magnifyingglass.png
rename to services/50-ninegate/volume/data/public/icon/icon_magnifyingglass.png
diff --git a/volume/ninegate/data/public/icon/icon_mail.png b/services/50-ninegate/volume/data/public/icon/icon_mail.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_mail.png
rename to services/50-ninegate/volume/data/public/icon/icon_mail.png
diff --git a/volume/ninegate/data/public/icon/icon_map.png b/services/50-ninegate/volume/data/public/icon/icon_map.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_map.png
rename to services/50-ninegate/volume/data/public/icon/icon_map.png
diff --git a/volume/ninegate/data/public/icon/icon_mariane.png b/services/50-ninegate/volume/data/public/icon/icon_mariane.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_mariane.png
rename to services/50-ninegate/volume/data/public/icon/icon_mariane.png
diff --git a/volume/ninegate/data/public/icon/icon_megaphone.png b/services/50-ninegate/volume/data/public/icon/icon_megaphone.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_megaphone.png
rename to services/50-ninegate/volume/data/public/icon/icon_megaphone.png
diff --git a/volume/ninegate/data/public/icon/icon_megaphone2.png b/services/50-ninegate/volume/data/public/icon/icon_megaphone2.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_megaphone2.png
rename to services/50-ninegate/volume/data/public/icon/icon_megaphone2.png
diff --git a/volume/ninegate/data/public/icon/icon_memorycard.png b/services/50-ninegate/volume/data/public/icon/icon_memorycard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_memorycard.png
rename to services/50-ninegate/volume/data/public/icon/icon_memorycard.png
diff --git a/volume/ninegate/data/public/icon/icon_merge.png b/services/50-ninegate/volume/data/public/icon/icon_merge.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_merge.png
rename to services/50-ninegate/volume/data/public/icon/icon_merge.png
diff --git a/volume/ninegate/data/public/icon/icon_mic.png b/services/50-ninegate/volume/data/public/icon/icon_mic.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_mic.png
rename to services/50-ninegate/volume/data/public/icon/icon_mic.png
diff --git a/volume/ninegate/data/public/icon/icon_microphone.png b/services/50-ninegate/volume/data/public/icon/icon_microphone.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_microphone.png
rename to services/50-ninegate/volume/data/public/icon/icon_microphone.png
diff --git a/volume/ninegate/data/public/icon/icon_mindmaps.png b/services/50-ninegate/volume/data/public/icon/icon_mindmaps.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_mindmaps.png
rename to services/50-ninegate/volume/data/public/icon/icon_mindmaps.png
diff --git a/volume/ninegate/data/public/icon/icon_money.png b/services/50-ninegate/volume/data/public/icon/icon_money.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_money.png
rename to services/50-ninegate/volume/data/public/icon/icon_money.png
diff --git a/volume/ninegate/data/public/icon/icon_moodle.png b/services/50-ninegate/volume/data/public/icon/icon_moodle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_moodle.png
rename to services/50-ninegate/volume/data/public/icon/icon_moodle.png
diff --git a/volume/ninegate/data/public/icon/icon_motorcycle.png b/services/50-ninegate/volume/data/public/icon/icon_motorcycle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_motorcycle.png
rename to services/50-ninegate/volume/data/public/icon/icon_motorcycle.png
diff --git a/volume/ninegate/data/public/icon/icon_music.png b/services/50-ninegate/volume/data/public/icon/icon_music.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_music.png
rename to services/50-ninegate/volume/data/public/icon/icon_music.png
diff --git a/volume/ninegate/data/public/icon/icon_news.png b/services/50-ninegate/volume/data/public/icon/icon_news.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_news.png
rename to services/50-ninegate/volume/data/public/icon/icon_news.png
diff --git a/volume/ninegate/data/public/icon/icon_nextcloud.png b/services/50-ninegate/volume/data/public/icon/icon_nextcloud.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_nextcloud.png
rename to services/50-ninegate/volume/data/public/icon/icon_nextcloud.png
diff --git a/volume/ninegate/data/public/icon/icon_nineboard.png b/services/50-ninegate/volume/data/public/icon/icon_nineboard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_nineboard.png
rename to services/50-ninegate/volume/data/public/icon/icon_nineboard.png
diff --git a/volume/ninegate/data/public/icon/icon_nineschool.png b/services/50-ninegate/volume/data/public/icon/icon_nineschool.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_nineschool.png
rename to services/50-ninegate/volume/data/public/icon/icon_nineschool.png
diff --git a/volume/ninegate/data/public/icon/icon_ninesurvey.png b/services/50-ninegate/volume/data/public/icon/icon_ninesurvey.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_ninesurvey.png
rename to services/50-ninegate/volume/data/public/icon/icon_ninesurvey.png
diff --git a/volume/ninegate/data/public/icon/icon_onlyoffice.png b/services/50-ninegate/volume/data/public/icon/icon_onlyoffice.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_onlyoffice.png
rename to services/50-ninegate/volume/data/public/icon/icon_onlyoffice.png
diff --git a/volume/ninegate/data/public/icon/icon_opensondage.png b/services/50-ninegate/volume/data/public/icon/icon_opensondage.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_opensondage.png
rename to services/50-ninegate/volume/data/public/icon/icon_opensondage.png
diff --git a/volume/ninegate/data/public/icon/icon_paintbrush.png b/services/50-ninegate/volume/data/public/icon/icon_paintbrush.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_paintbrush.png
rename to services/50-ninegate/volume/data/public/icon/icon_paintbrush.png
diff --git a/volume/ninegate/data/public/icon/icon_paintbrush2.png b/services/50-ninegate/volume/data/public/icon/icon_paintbrush2.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_paintbrush2.png
rename to services/50-ninegate/volume/data/public/icon/icon_paintbrush2.png
diff --git a/volume/ninegate/data/public/icon/icon_paintcan.png b/services/50-ninegate/volume/data/public/icon/icon_paintcan.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_paintcan.png
rename to services/50-ninegate/volume/data/public/icon/icon_paintcan.png
diff --git a/volume/ninegate/data/public/icon/icon_paintroller.png b/services/50-ninegate/volume/data/public/icon/icon_paintroller.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_paintroller.png
rename to services/50-ninegate/volume/data/public/icon/icon_paintroller.png
diff --git a/volume/ninegate/data/public/icon/icon_parachute.png b/services/50-ninegate/volume/data/public/icon/icon_parachute.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_parachute.png
rename to services/50-ninegate/volume/data/public/icon/icon_parachute.png
diff --git a/volume/ninegate/data/public/icon/icon_pencil.png b/services/50-ninegate/volume/data/public/icon/icon_pencil.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_pencil.png
rename to services/50-ninegate/volume/data/public/icon/icon_pencil.png
diff --git a/volume/ninegate/data/public/icon/icon_phone.png b/services/50-ninegate/volume/data/public/icon/icon_phone.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_phone.png
rename to services/50-ninegate/volume/data/public/icon/icon_phone.png
diff --git a/volume/ninegate/data/public/icon/icon_phpldapadmin.png b/services/50-ninegate/volume/data/public/icon/icon_phpldapadmin.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_phpldapadmin.png
rename to services/50-ninegate/volume/data/public/icon/icon_phpldapadmin.png
diff --git a/volume/ninegate/data/public/icon/icon_piechart.png b/services/50-ninegate/volume/data/public/icon/icon_piechart.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_piechart.png
rename to services/50-ninegate/volume/data/public/icon/icon_piechart.png
diff --git a/volume/ninegate/data/public/icon/icon_pin.png b/services/50-ninegate/volume/data/public/icon/icon_pin.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_pin.png
rename to services/50-ninegate/volume/data/public/icon/icon_pin.png
diff --git a/volume/ninegate/data/public/icon/icon_pin2.png b/services/50-ninegate/volume/data/public/icon/icon_pin2.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_pin2.png
rename to services/50-ninegate/volume/data/public/icon/icon_pin2.png
diff --git a/volume/ninegate/data/public/icon/icon_piwigo.png b/services/50-ninegate/volume/data/public/icon/icon_piwigo.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_piwigo.png
rename to services/50-ninegate/volume/data/public/icon/icon_piwigo.png
diff --git a/volume/ninegate/data/public/icon/icon_piwik.png b/services/50-ninegate/volume/data/public/icon/icon_piwik.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_piwik.png
rename to services/50-ninegate/volume/data/public/icon/icon_piwik.png
diff --git a/volume/ninegate/data/public/icon/icon_plane.png b/services/50-ninegate/volume/data/public/icon/icon_plane.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_plane.png
rename to services/50-ninegate/volume/data/public/icon/icon_plane.png
diff --git a/volume/ninegate/data/public/icon/icon_play.png b/services/50-ninegate/volume/data/public/icon/icon_play.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_play.png
rename to services/50-ninegate/volume/data/public/icon/icon_play.png
diff --git a/volume/ninegate/data/public/icon/icon_plugin.png b/services/50-ninegate/volume/data/public/icon/icon_plugin.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_plugin.png
rename to services/50-ninegate/volume/data/public/icon/icon_plugin.png
diff --git a/volume/ninegate/data/public/icon/icon_polaroid.png b/services/50-ninegate/volume/data/public/icon/icon_polaroid.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_polaroid.png
rename to services/50-ninegate/volume/data/public/icon/icon_polaroid.png
diff --git a/volume/ninegate/data/public/icon/icon_polaroidcamera.png b/services/50-ninegate/volume/data/public/icon/icon_polaroidcamera.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_polaroidcamera.png
rename to services/50-ninegate/volume/data/public/icon/icon_polaroidcamera.png
diff --git a/volume/ninegate/data/public/icon/icon_polaroids.png b/services/50-ninegate/volume/data/public/icon/icon_polaroids.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_polaroids.png
rename to services/50-ninegate/volume/data/public/icon/icon_polaroids.png
diff --git a/volume/ninegate/data/public/icon/icon_power.png b/services/50-ninegate/volume/data/public/icon/icon_power.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_power.png
rename to services/50-ninegate/volume/data/public/icon/icon_power.png
diff --git a/volume/ninegate/data/public/icon/icon_present.png b/services/50-ninegate/volume/data/public/icon/icon_present.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_present.png
rename to services/50-ninegate/volume/data/public/icon/icon_present.png
diff --git a/volume/ninegate/data/public/icon/icon_profle.png b/services/50-ninegate/volume/data/public/icon/icon_profle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_profle.png
rename to services/50-ninegate/volume/data/public/icon/icon_profle.png
diff --git a/volume/ninegate/data/public/icon/icon_quote.png b/services/50-ninegate/volume/data/public/icon/icon_quote.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_quote.png
rename to services/50-ninegate/volume/data/public/icon/icon_quote.png
diff --git a/volume/ninegate/data/public/icon/icon_racingflags.png b/services/50-ninegate/volume/data/public/icon/icon_racingflags.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_racingflags.png
rename to services/50-ninegate/volume/data/public/icon/icon_racingflags.png
diff --git a/volume/ninegate/data/public/icon/icon_radio.png b/services/50-ninegate/volume/data/public/icon/icon_radio.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_radio.png
rename to services/50-ninegate/volume/data/public/icon/icon_radio.png
diff --git a/volume/ninegate/data/public/icon/icon_radiotower.png b/services/50-ninegate/volume/data/public/icon/icon_radiotower.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_radiotower.png
rename to services/50-ninegate/volume/data/public/icon/icon_radiotower.png
diff --git a/volume/ninegate/data/public/icon/icon_rainbow.png b/services/50-ninegate/volume/data/public/icon/icon_rainbow.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_rainbow.png
rename to services/50-ninegate/volume/data/public/icon/icon_rainbow.png
diff --git a/volume/ninegate/data/public/icon/icon_recycle.png b/services/50-ninegate/volume/data/public/icon/icon_recycle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_recycle.png
rename to services/50-ninegate/volume/data/public/icon/icon_recycle.png
diff --git a/volume/ninegate/data/public/icon/icon_rgb.png b/services/50-ninegate/volume/data/public/icon/icon_rgb.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_rgb.png
rename to services/50-ninegate/volume/data/public/icon/icon_rgb.png
diff --git a/volume/ninegate/data/public/icon/icon_ribbon.png b/services/50-ninegate/volume/data/public/icon/icon_ribbon.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_ribbon.png
rename to services/50-ninegate/volume/data/public/icon/icon_ribbon.png
diff --git a/volume/ninegate/data/public/icon/icon_roadblock.png b/services/50-ninegate/volume/data/public/icon/icon_roadblock.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_roadblock.png
rename to services/50-ninegate/volume/data/public/icon/icon_roadblock.png
diff --git a/volume/ninegate/data/public/icon/icon_rocket.png b/services/50-ninegate/volume/data/public/icon/icon_rocket.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_rocket.png
rename to services/50-ninegate/volume/data/public/icon/icon_rocket.png
diff --git a/volume/ninegate/data/public/icon/icon_roundcube.png b/services/50-ninegate/volume/data/public/icon/icon_roundcube.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_roundcube.png
rename to services/50-ninegate/volume/data/public/icon/icon_roundcube.png
diff --git a/volume/ninegate/data/public/icon/icon_rss.png b/services/50-ninegate/volume/data/public/icon/icon_rss.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_rss.png
rename to services/50-ninegate/volume/data/public/icon/icon_rss.png
diff --git a/volume/ninegate/data/public/icon/icon_rulertriangle.png b/services/50-ninegate/volume/data/public/icon/icon_rulertriangle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_rulertriangle.png
rename to services/50-ninegate/volume/data/public/icon/icon_rulertriangle.png
diff --git a/volume/ninegate/data/public/icon/icon_rundeck.png b/services/50-ninegate/volume/data/public/icon/icon_rundeck.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_rundeck.png
rename to services/50-ninegate/volume/data/public/icon/icon_rundeck.png
diff --git a/volume/ninegate/data/public/icon/icon_running.png b/services/50-ninegate/volume/data/public/icon/icon_running.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_running.png
rename to services/50-ninegate/volume/data/public/icon/icon_running.png
diff --git a/volume/ninegate/data/public/icon/icon_sacoche.png b/services/50-ninegate/volume/data/public/icon/icon_sacoche.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_sacoche.png
rename to services/50-ninegate/volume/data/public/icon/icon_sacoche.png
diff --git a/volume/ninegate/data/public/icon/icon_sailboat.png b/services/50-ninegate/volume/data/public/icon/icon_sailboat.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_sailboat.png
rename to services/50-ninegate/volume/data/public/icon/icon_sailboat.png
diff --git a/volume/ninegate/data/public/icon/icon_schooolbus.png b/services/50-ninegate/volume/data/public/icon/icon_schooolbus.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_schooolbus.png
rename to services/50-ninegate/volume/data/public/icon/icon_schooolbus.png
diff --git a/volume/ninegate/data/public/icon/icon_scissors.png b/services/50-ninegate/volume/data/public/icon/icon_scissors.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_scissors.png
rename to services/50-ninegate/volume/data/public/icon/icon_scissors.png
diff --git a/volume/ninegate/data/public/icon/icon_scooter.png b/services/50-ninegate/volume/data/public/icon/icon_scooter.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_scooter.png
rename to services/50-ninegate/volume/data/public/icon/icon_scooter.png
diff --git a/volume/ninegate/data/public/icon/icon_security.png b/services/50-ninegate/volume/data/public/icon/icon_security.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_security.png
rename to services/50-ninegate/volume/data/public/icon/icon_security.png
diff --git a/volume/ninegate/data/public/icon/icon_selftimer.png b/services/50-ninegate/volume/data/public/icon/icon_selftimer.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_selftimer.png
rename to services/50-ninegate/volume/data/public/icon/icon_selftimer.png
diff --git a/volume/ninegate/data/public/icon/icon_settings.png b/services/50-ninegate/volume/data/public/icon/icon_settings.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_settings.png
rename to services/50-ninegate/volume/data/public/icon/icon_settings.png
diff --git a/volume/ninegate/data/public/icon/icon_shipwheel.png b/services/50-ninegate/volume/data/public/icon/icon_shipwheel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_shipwheel.png
rename to services/50-ninegate/volume/data/public/icon/icon_shipwheel.png
diff --git a/volume/ninegate/data/public/icon/icon_shoeprints.png b/services/50-ninegate/volume/data/public/icon/icon_shoeprints.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_shoeprints.png
rename to services/50-ninegate/volume/data/public/icon/icon_shoeprints.png
diff --git a/volume/ninegate/data/public/icon/icon_shop.png b/services/50-ninegate/volume/data/public/icon/icon_shop.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_shop.png
rename to services/50-ninegate/volume/data/public/icon/icon_shop.png
diff --git a/volume/ninegate/data/public/icon/icon_skateboard.png b/services/50-ninegate/volume/data/public/icon/icon_skateboard.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_skateboard.png
rename to services/50-ninegate/volume/data/public/icon/icon_skateboard.png
diff --git a/volume/ninegate/data/public/icon/icon_slr.png b/services/50-ninegate/volume/data/public/icon/icon_slr.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_slr.png
rename to services/50-ninegate/volume/data/public/icon/icon_slr.png
diff --git a/volume/ninegate/data/public/icon/icon_smartphone.png b/services/50-ninegate/volume/data/public/icon/icon_smartphone.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_smartphone.png
rename to services/50-ninegate/volume/data/public/icon/icon_smartphone.png
diff --git a/volume/ninegate/data/public/icon/icon_spaceshuttle.png b/services/50-ninegate/volume/data/public/icon/icon_spaceshuttle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_spaceshuttle.png
rename to services/50-ninegate/volume/data/public/icon/icon_spaceshuttle.png
diff --git a/volume/ninegate/data/public/icon/icon_speaker.png b/services/50-ninegate/volume/data/public/icon/icon_speaker.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_speaker.png
rename to services/50-ninegate/volume/data/public/icon/icon_speaker.png
diff --git a/volume/ninegate/data/public/icon/icon_speedometer.png b/services/50-ninegate/volume/data/public/icon/icon_speedometer.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_speedometer.png
rename to services/50-ninegate/volume/data/public/icon/icon_speedometer.png
diff --git a/volume/ninegate/data/public/icon/icon_spraypaint.png b/services/50-ninegate/volume/data/public/icon/icon_spraypaint.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_spraypaint.png
rename to services/50-ninegate/volume/data/public/icon/icon_spraypaint.png
diff --git a/volume/ninegate/data/public/icon/icon_stack.png b/services/50-ninegate/volume/data/public/icon/icon_stack.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_stack.png
rename to services/50-ninegate/volume/data/public/icon/icon_stack.png
diff --git a/volume/ninegate/data/public/icon/icon_star.png b/services/50-ninegate/volume/data/public/icon/icon_star.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_star.png
rename to services/50-ninegate/volume/data/public/icon/icon_star.png
diff --git a/volume/ninegate/data/public/icon/icon_steeringwheel.png b/services/50-ninegate/volume/data/public/icon/icon_steeringwheel.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_steeringwheel.png
rename to services/50-ninegate/volume/data/public/icon/icon_steeringwheel.png
diff --git a/volume/ninegate/data/public/icon/icon_stop.png b/services/50-ninegate/volume/data/public/icon/icon_stop.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_stop.png
rename to services/50-ninegate/volume/data/public/icon/icon_stop.png
diff --git a/volume/ninegate/data/public/icon/icon_sub.png b/services/50-ninegate/volume/data/public/icon/icon_sub.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_sub.png
rename to services/50-ninegate/volume/data/public/icon/icon_sub.png
diff --git a/volume/ninegate/data/public/icon/icon_submarine.png b/services/50-ninegate/volume/data/public/icon/icon_submarine.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_submarine.png
rename to services/50-ninegate/volume/data/public/icon/icon_submarine.png
diff --git a/volume/ninegate/data/public/icon/icon_support.png b/services/50-ninegate/volume/data/public/icon/icon_support.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_support.png
rename to services/50-ninegate/volume/data/public/icon/icon_support.png
diff --git a/volume/ninegate/data/public/icon/icon_swatches.png b/services/50-ninegate/volume/data/public/icon/icon_swatches.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_swatches.png
rename to services/50-ninegate/volume/data/public/icon/icon_swatches.png
diff --git a/volume/ninegate/data/public/icon/icon_tablet.png b/services/50-ninegate/volume/data/public/icon/icon_tablet.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_tablet.png
rename to services/50-ninegate/volume/data/public/icon/icon_tablet.png
diff --git a/volume/ninegate/data/public/icon/icon_takeoff.png b/services/50-ninegate/volume/data/public/icon/icon_takeoff.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_takeoff.png
rename to services/50-ninegate/volume/data/public/icon/icon_takeoff.png
diff --git a/volume/ninegate/data/public/icon/icon_target.png b/services/50-ninegate/volume/data/public/icon/icon_target.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_target.png
rename to services/50-ninegate/volume/data/public/icon/icon_target.png
diff --git a/volume/ninegate/data/public/icon/icon_taxi.png b/services/50-ninegate/volume/data/public/icon/icon_taxi.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_taxi.png
rename to services/50-ninegate/volume/data/public/icon/icon_taxi.png
diff --git a/volume/ninegate/data/public/icon/icon_tchap.png b/services/50-ninegate/volume/data/public/icon/icon_tchap.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_tchap.png
rename to services/50-ninegate/volume/data/public/icon/icon_tchap.png
diff --git a/volume/ninegate/data/public/icon/icon_toolbox.png b/services/50-ninegate/volume/data/public/icon/icon_toolbox.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_toolbox.png
rename to services/50-ninegate/volume/data/public/icon/icon_toolbox.png
diff --git a/volume/ninegate/data/public/icon/icon_tools.png b/services/50-ninegate/volume/data/public/icon/icon_tools.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_tools.png
rename to services/50-ninegate/volume/data/public/icon/icon_tools.png
diff --git a/volume/ninegate/data/public/icon/icon_tractor.png b/services/50-ninegate/volume/data/public/icon/icon_tractor.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_tractor.png
rename to services/50-ninegate/volume/data/public/icon/icon_tractor.png
diff --git a/volume/ninegate/data/public/icon/icon_traffic.png b/services/50-ninegate/volume/data/public/icon/icon_traffic.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_traffic.png
rename to services/50-ninegate/volume/data/public/icon/icon_traffic.png
diff --git a/volume/ninegate/data/public/icon/icon_train.png b/services/50-ninegate/volume/data/public/icon/icon_train.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_train.png
rename to services/50-ninegate/volume/data/public/icon/icon_train.png
diff --git a/volume/ninegate/data/public/icon/icon_travelerbag.png b/services/50-ninegate/volume/data/public/icon/icon_travelerbag.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_travelerbag.png
rename to services/50-ninegate/volume/data/public/icon/icon_travelerbag.png
diff --git a/volume/ninegate/data/public/icon/icon_trends.png b/services/50-ninegate/volume/data/public/icon/icon_trends.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_trends.png
rename to services/50-ninegate/volume/data/public/icon/icon_trends.png
diff --git a/volume/ninegate/data/public/icon/icon_tripod.png b/services/50-ninegate/volume/data/public/icon/icon_tripod.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_tripod.png
rename to services/50-ninegate/volume/data/public/icon/icon_tripod.png
diff --git a/volume/ninegate/data/public/icon/icon_trophy.png b/services/50-ninegate/volume/data/public/icon/icon_trophy.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_trophy.png
rename to services/50-ninegate/volume/data/public/icon/icon_trophy.png
diff --git a/volume/ninegate/data/public/icon/icon_truck.png b/services/50-ninegate/volume/data/public/icon/icon_truck.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_truck.png
rename to services/50-ninegate/volume/data/public/icon/icon_truck.png
diff --git a/volume/ninegate/data/public/icon/icon_tv.png b/services/50-ninegate/volume/data/public/icon/icon_tv.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_tv.png
rename to services/50-ninegate/volume/data/public/icon/icon_tv.png
diff --git a/volume/ninegate/data/public/icon/icon_typography.png b/services/50-ninegate/volume/data/public/icon/icon_typography.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_typography.png
rename to services/50-ninegate/volume/data/public/icon/icon_typography.png
diff --git a/volume/ninegate/data/public/icon/icon_ufo.png b/services/50-ninegate/volume/data/public/icon/icon_ufo.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_ufo.png
rename to services/50-ninegate/volume/data/public/icon/icon_ufo.png
diff --git a/volume/ninegate/data/public/icon/icon_umbrella.png b/services/50-ninegate/volume/data/public/icon/icon_umbrella.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_umbrella.png
rename to services/50-ninegate/volume/data/public/icon/icon_umbrella.png
diff --git a/volume/ninegate/data/public/icon/icon_unicycle.png b/services/50-ninegate/volume/data/public/icon/icon_unicycle.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_unicycle.png
rename to services/50-ninegate/volume/data/public/icon/icon_unicycle.png
diff --git a/volume/ninegate/data/public/icon/icon_unlocked.png b/services/50-ninegate/volume/data/public/icon/icon_unlocked.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_unlocked.png
rename to services/50-ninegate/volume/data/public/icon/icon_unlocked.png
diff --git a/volume/ninegate/data/public/icon/icon_upload.png b/services/50-ninegate/volume/data/public/icon/icon_upload.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_upload.png
rename to services/50-ninegate/volume/data/public/icon/icon_upload.png
diff --git a/volume/ninegate/data/public/icon/icon_users.png b/services/50-ninegate/volume/data/public/icon/icon_users.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_users.png
rename to services/50-ninegate/volume/data/public/icon/icon_users.png
diff --git a/volume/ninegate/data/public/icon/icon_video.png b/services/50-ninegate/volume/data/public/icon/icon_video.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_video.png
rename to services/50-ninegate/volume/data/public/icon/icon_video.png
diff --git a/volume/ninegate/data/public/icon/icon_videocameraclassic.png b/services/50-ninegate/volume/data/public/icon/icon_videocameraclassic.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_videocameraclassic.png
rename to services/50-ninegate/volume/data/public/icon/icon_videocameraclassic.png
diff --git a/volume/ninegate/data/public/icon/icon_videocameracompact.png b/services/50-ninegate/volume/data/public/icon/icon_videocameracompact.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_videocameracompact.png
rename to services/50-ninegate/volume/data/public/icon/icon_videocameracompact.png
diff --git a/volume/ninegate/data/public/icon/icon_volume.png b/services/50-ninegate/volume/data/public/icon/icon_volume.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_volume.png
rename to services/50-ninegate/volume/data/public/icon/icon_volume.png
diff --git a/volume/ninegate/data/public/icon/icon_water.png b/services/50-ninegate/volume/data/public/icon/icon_water.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_water.png
rename to services/50-ninegate/volume/data/public/icon/icon_water.png
diff --git a/volume/ninegate/data/public/icon/icon_windsock.png b/services/50-ninegate/volume/data/public/icon/icon_windsock.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_windsock.png
rename to services/50-ninegate/volume/data/public/icon/icon_windsock.png
diff --git a/volume/ninegate/data/public/icon/icon_windy.png b/services/50-ninegate/volume/data/public/icon/icon_windy.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_windy.png
rename to services/50-ninegate/volume/data/public/icon/icon_windy.png
diff --git a/volume/ninegate/data/public/icon/icon_wordpress.png b/services/50-ninegate/volume/data/public/icon/icon_wordpress.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_wordpress.png
rename to services/50-ninegate/volume/data/public/icon/icon_wordpress.png
diff --git a/volume/ninegate/data/public/icon/icon_zoomin.png b/services/50-ninegate/volume/data/public/icon/icon_zoomin.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_zoomin.png
rename to services/50-ninegate/volume/data/public/icon/icon_zoomin.png
diff --git a/volume/ninegate/data/public/icon/icon_zoomout.png b/services/50-ninegate/volume/data/public/icon/icon_zoomout.png
similarity index 100%
rename from volume/ninegate/data/public/icon/icon_zoomout.png
rename to services/50-ninegate/volume/data/public/icon/icon_zoomout.png
diff --git a/volume/ninegate/data/public/logo/logo.png b/services/50-ninegate/volume/data/public/logo/logo.png
similarity index 100%
rename from volume/ninegate/data/public/logo/logo.png
rename to services/50-ninegate/volume/data/public/logo/logo.png
diff --git a/services/50-nineskeletor/dockercompose/dockercompose.yml b/services/50-nineskeletor/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..9349842
--- /dev/null
+++ b/services/50-nineskeletor/dockercompose/dockercompose.yml
@@ -0,0 +1,14 @@
+
+ # Nineskeletor
+ # Portail collaboratif
+ # Port interne 80
+ nineskeletor:
+ image: reg.cadoles.com/envole/nineskeletor
+ container_name: nine-nineskeletor
+ restart: unless-stopped
+ env_file: ./services/50-nineskeletor/env/.env.merge
+ networks:
+ - nine-network
+ volumes:
+ - ./services/50-nineskeletor/volume/data/private:/app/uploads
+ - ./services/50-nineskeletor/volume/data/public:/app/public/uploads
diff --git a/services/50-nineskeletor/env/.env b/services/50-nineskeletor/env/.env
new file mode 100644
index 0000000..301796d
--- /dev/null
+++ b/services/50-nineskeletor/env/.env
@@ -0,0 +1,92 @@
+
+# == NINESKELETOR =========================================================================================================================
+
+NINESKELETOR_PREFIX=nineskeletor
+
+APP_SECRET=${ADMIN_PASSWORD}
+DATABASE_URL="mysql://${MARIADB_USER}:${MARIADB_PASSWORD}@${MARIADB_SERVICE_NAME}:${MARIADB_PORT}/${NINESKELETOR_SERVICE_NAME}"
+LOCK_DSN="mysql://${MARIADB_USER}:${MARIADB_PASSWORD}@${MARIADB_SERVICE_NAME}:${MARIADB_PORT}/${NINESKELETOR_SERVICE_NAME}"
+
+# Webpack
+APP_PUBLIC_PATH=/${NINESKELETOR_PREFIX}/build
+APP_MANIFEST_KEY_PREFIX=${NINESKELETOR_PREFIX}
+
+# Mailer
+MAILER_METHOD=smtp
+MAILER_DSN=smtp://mailer:1025
+MAILER_NOREPLY=noreply@noreply.fr
+
+# Basic
+APP_WEBURL=${WEB_URL}
+APP_MASTERIDENTITY=${MASTERIDENTITY} # SQL | SSO | LDAP
+APP_AUTH=${MODE_AUTH} # SQL | CAS | LDAP | OPENID
+APP_ALIAS=/${NINESKELETOR_PREFIX}/
+APP_NAME=Nineskeletor
+APP_MODEREGISTRATION= # null | BYADMIN | BYUSER
+APP_ADMINS='["admin"]'
+
+# Module = PORTAL | DOCUMENT
+APP_MODULES='["PORTAL"]'
+
+# Structure Organisationnelle
+APP_NIVEAUUPDATABLE=0 # Quel degres de niveau est modifiable par les utilisateurs seule les admin et modo via console peuvent outre passer ce param
+
+APP_NIVEAU01LABEL="Niveau 01"
+APP_NIVEAU01LABELS="Niveaux 01"
+
+APP_NIVEAU02USE=1
+APP_NIVEAU02LABEL="Niveau 02"
+APP_NIVEAU02LABELS="Niveaux 02"
+APP_NIVEAU02MANDATORY='[""]'
+
+APP_NIVEAU03USE=1
+APP_NIVEAU03LABEL="Niveau 03"
+APP_NIVEAU03LABELS="Niveaux 03"
+APP_NIVEAU03MANDATORY='[""]'
+
+APP_NIVEAU04USE=0
+APP_NIVEAU04LABEL="Niveau 04"
+APP_NIVEAU04LABELS="Niveaux 04"
+APP_NIVEAU04MANDATORY='[""]'
+
+APP_GROUPUSE=1
+APP_GROUPSUBMITER='["ALL"]'
+
+APP_ANNUSCOPEADMIN=ALL # ALL or number of niveau view : 1||2||3||4
+APP_ANNUSCOPEMODO=ALL # ALL or number of niveau view : 1||2||3||4
+APP_ANNUSCOPEMASTER=ALL # ALL or number of niveau view : 1||2||3||4
+APP_ANNUSCOPEMANAGER=ALL # ALL or number of niveau view : 1||2||3||4
+APP_ANNUSCOPEUSER=ALL # ALL or number of niveau view : 1||2||3||4
+
+APP_USERVIEWISVISIBLE=1 # Profil user with isvisible field
+
+# Synchronisation
+APP_SYNCHRO=NINE2LDAP # Synchronisation null | LDAP2NINE | NINE2LDAP | NINE2NINE
+APP_SYNDCHROPURGENIVEAU01=1 # Purger les niveau01s obsolète en cas de synchronisation
+APP_SYNDCHROPURGENIVEAU02=1 # Purger les niveau02s obsolète en cas de synchronisation
+APP_SYNDCHROPURGENIVEAU03=1 # Purger les niveau03s obsolète en cas de synchronisation
+APP_SYNDCHROPURGENIVEAU04=1 # Purger les niveau04s obsolète en cas de synchronisation
+APP_SYNDCHROPURGEGROUP=1 # Purger les groups obsolète en cas de synchronisation
+APP_SYNDCHROPURGEUSER=1 # Purger les users obsolète en cas de synchronisation
+
+# LDAP
+LDAP_PORT=389 # port du serveur ldap ex:389
+LDAP_USETLS=0 # connection TLS 0/1
+LDAP_USERWRITER=1 # LDAP_USER compte writer ? 0/1
+LDAP_USER=${LDAP_ADMIN_USERNAME} # DN compte access ldap
+LDAP_MEMBEROF=memberof # Attribut memberof d'un user
+LDAP_GROUPGID=gidnumber # Attribut gid d'un groupe
+LDAP_GROUPNAME=cn # Attribut name d'un groupe
+LDAP_GROUPMEMBER=${LDAP_MEMBER} # Attribut stockant les membres d'un groupe
+LDAP_GROUPMEMBERISDN=0 # LDAP_GROUPMEMBER stocke un uid ou un dn ? 0/1
+LDAP_FILTERGROUP=${LDAP_GROUP_FILTER} # requete ldap pour rechercher les groupes
+LDAP_FILTERUSER=${LDAP_USER_FILTER} # requete ldap pour rechercher les users
+LDAP_AUTOSUBMIT=1 # if APP_AUTH = LDAP autocréer les users non existant
+LDAP_AUTOUPDATE=1 # if APP_AUTH = LDAP automodifier les users existant
+
+# Minio
+MINIO_URL=http://${MINIO_SERVICE_NAME}:${MINIO_PORT}
+MINIO_KEY=${ADMIN_USER}
+MINIO_SECRET=${ADMIN_PASSWORD}
+MINIO_BUCKET=nine
+
diff --git a/services/50-nineskeletor/misc/nine.sh b/services/50-nineskeletor/misc/nine.sh
new file mode 100644
index 0000000..8ca1a99
--- /dev/null
+++ b/services/50-nineskeletor/misc/nine.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+
+function upnineskeletor {
+ if [[ $NINESKELETOR_ACTIVATE == 1 && $NINESKELETOR_LOCAL == 1 ]]
+ then
+ Title ${NINESKELETOR_SERVICE_NAME^^}
+
+ if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
+ then
+ EchoVert "DATABASE"
+ Echo ${NINESKELETOR_SERVICE_NAME^^}
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NINESKELETOR_SERVICE_NAME
+ Echo
+ fi
+
+ EchoVert "CONTAINER"
+ upservice ${NINESKELETOR_SERVICE_NAME}
+ chmod -R a+wr ./services/50-nineskeletor/volume/data
+ Echo
+ fi
+}
+
+function destroynineskeletor {
+ if [[ $NINESKELETOR_LOCAL == 1 ]]
+ then
+ Title "DESTROY $NINESKELETOR_SERVICE_NAME"
+
+ stop $NINESKELETOR_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$NINESKELETOR_SERVICE_NAME"
+
+
+ if [[ -z $1 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $NINESKELETOR_SERVICE_NAME ?";fi
+ if [[ "$?" = 0 || -z $1 ]]
+ then
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINESKELETOR_SERVICE_NAME
+ fi
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/services/50-nineskeletor/volume/data/private/.gitkeep b/services/50-nineskeletor/volume/data/private/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/services/50-wordpress/dockercompose/dockercompose.yml b/services/50-wordpress/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..d1319d2
--- /dev/null
+++ b/services/50-wordpress/dockercompose/dockercompose.yml
@@ -0,0 +1,13 @@
+
+ # Wordpress
+ # Reseau de blog
+ # Port interne 80
+ wordpress:
+ image: reg.cadoles.com/envole/wordpress
+ container_name: nine-wordpress
+ restart: unless-stopped
+ env_file: ./services/50-wordpress/env/.env.merge
+ networks:
+ - nine-network
+ volumes:
+ - ./services/50-wordpress/volume/data:/app/public/wp-content
diff --git a/env/.env.zapp.wordpress b/services/50-wordpress/env/.env
similarity index 100%
rename from env/.env.zapp.wordpress
rename to services/50-wordpress/env/.env
diff --git a/services/50-wordpress/misc/nine.sh b/services/50-wordpress/misc/nine.sh
new file mode 100644
index 0000000..df3041f
--- /dev/null
+++ b/services/50-wordpress/misc/nine.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+
+function upwordpress {
+ if [[ $WORDPRESS_ACTIVATE == 1 && $WORDPRESS_LOCAL == 1 ]]
+ then
+ Title ${WORDPRESS_SERVICE_NAME^^}
+
+ if [[ $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
+ then
+ EchoVert "DATABASE"
+ Echo ${WORDPRESS_SERVICE_NAME^^}
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $WORDPRESS_SERVICE_NAME
+ Echo
+ fi
+
+ EchoVert "CONTAINER"
+ upservice ${WORDPRESS_SERVICE_NAME}
+ Echo
+ fi
+}
+
+function destroywordpress {
+ if [[ $WORDPRESS_LOCAL == 1 ]]
+ then
+ Title "DESTROY $WORDPRESS_SERVICE_NAME"
+
+ stop $WORDPRESS_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$WORDPRESS_SERVICE_NAME"
+
+
+ if [[ -z $1 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $WORDPRESS_SERVICE_NAME ?";fi
+ if [[ "$?" = 0 || -z $1 ]]
+ then
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $WORDPRESS_SERVICE_NAME
+ fi
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/services/90-adminer/dockercompose/dockercompose.yml b/services/90-adminer/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..f53a27e
--- /dev/null
+++ b/services/90-adminer/dockercompose/dockercompose.yml
@@ -0,0 +1,11 @@
+
+ # Adminer
+ # Gestionnaire BDD
+ # Port interne 8080
+ adminer:
+ image: docker.io/library/adminer
+ container_name: nine-adminer
+ restart: unless-stopped
+ env_file: ./services/90-adminer/env/.env.merge
+ networks:
+ - nine-network
diff --git a/env/.env.zapp.ninegate b/services/90-adminer/env/.env
similarity index 88%
rename from env/.env.zapp.ninegate
rename to services/90-adminer/env/.env
index e3d107f..f12c17b 100644
--- a/env/.env.zapp.ninegate
+++ b/services/90-adminer/env/.env
@@ -17,8 +17,5 @@ WIDNINEBOARD_URL=${NINEBOARD_URL}
ACTIVATE_WIDWORDPRESS=${WORDPRESS_ACTIVATE}
WIDWORDPRESS_URL=${WORDPRESS_URL}
-ACTIVATE_WIDGENCONFIG=${GENCONFIG_ACTIVATE}
-WIDGENCONFIG_URL=${GENCONFIG_URL}
-
INITPWDADMIN=${ADMIN_PASSWORD}
diff --git a/services/90-adminer/misc/nine.sh b/services/90-adminer/misc/nine.sh
new file mode 100644
index 0000000..062176b
--- /dev/null
+++ b/services/90-adminer/misc/nine.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+
+
+function upadminer {
+ if [[ $ADMINER_ACTIVATE == 1 && $ADMINER_LOCAL == 1 ]]
+ then
+ Title "ADMINER"
+ EchoVert "CONTAINER"
+ upservice $ADMINER_SERVICE_NAME
+ Echo
+ fi
+}
+
+function destroyadminer(){
+ if [[ $ADMINER_LOCAL == 1 ]]
+ then
+ Title "DESTROY $ADMINER_SERVICE_NAME"
+
+ stop $ADMINER_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$ADMINER_SERVICE_NAME"
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/services/90-phpldapadmin/dockercompose/dockercompose.yml b/services/90-phpldapadmin/dockercompose/dockercompose.yml
new file mode 100644
index 0000000..57acf7f
--- /dev/null
+++ b/services/90-phpldapadmin/dockercompose/dockercompose.yml
@@ -0,0 +1,11 @@
+
+ # Phpldapadmin
+ # Gestionnaire Annuaire
+ # Port interne 80
+ phpldapadmin:
+ image: docker.io/osixia/phpldapadmin:latest
+ container_name: nine-phpldapadmin
+ restart: unless-stopped
+ env_file: ./services/90-phpldapadmin/env/.env.merge
+ networks:
+ - nine-network
diff --git a/env/.env.zapp.phpldapadmin b/services/90-phpldapadmin/env/.env
similarity index 100%
rename from env/.env.zapp.phpldapadmin
rename to services/90-phpldapadmin/env/.env
diff --git a/services/90-phpldapadmin/misc/nine.sh b/services/90-phpldapadmin/misc/nine.sh
new file mode 100644
index 0000000..45dbd44
--- /dev/null
+++ b/services/90-phpldapadmin/misc/nine.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+
+
+function upphpldapadmin {
+ if [[ $PHPLDAPADMIN_ACTIVATE == 1 && $PHPLDAPADMIN_LOCAL == 1 ]]
+ then
+ Title "PHPLDAPADMIN"
+ EchoVert "CONTAINER"
+ upservice $PHPLDAPADMIN_SERVICE_NAME
+ Echo
+ fi
+}
+
+function destroyphpldapadmin(){
+ if [[ $PHPLDAPADMIN_LOCAL == 1 ]]
+ then
+ Title "DESTROY $PHPLDAPADMIN_SERVICE_NAME"
+
+ stop $PHPLDAPADMIN_SERVICE_NAME 1
+ docker-compose rm -s -v -f "$PHPLDAPADMIN_SERVICE_NAME"
+
+ echo ""
+ fi
+}
\ No newline at end of file
diff --git a/volume/wiki/nine/config.yml b/volume/dokuwiki/nine/config.yml
similarity index 100%
rename from volume/wiki/nine/config.yml
rename to volume/dokuwiki/nine/config.yml
diff --git a/volume/mariadb/nine/init.sh b/volume/mariadb/nine/init.sh
deleted file mode 100755
index 2a76650..0000000
--- a/volume/mariadb/nine/init.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-mariadb -u root -p$MARIADB_ROOT_PASSWORD < /nine/$1.sql
-mariadb -u root -p$MARIADB_ROOT_PASSWORD -e "GRANT ALL PRIVILEGES ON $1.* TO '$MARIADB_USER'@'%';"
\ No newline at end of file
diff --git a/volume/mariadb/nine/keycloak.sql b/volume/mariadb/nine/keycloak.sql
deleted file mode 100644
index 5c08011..0000000
--- a/volume/mariadb/nine/keycloak.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE DATABASE IF NOT EXISTS keycloak;
\ No newline at end of file
diff --git a/volume/mariadb/nine/nextcloud.sql b/volume/mariadb/nine/nextcloud.sql
deleted file mode 100644
index ea7ccdb..0000000
--- a/volume/mariadb/nine/nextcloud.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE DATABASE IF NOT EXISTS nextcloud;
\ No newline at end of file
diff --git a/volume/mariadb/nine/nineboard.sql b/volume/mariadb/nine/nineboard.sql
deleted file mode 100644
index fe28425..0000000
--- a/volume/mariadb/nine/nineboard.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE DATABASE IF NOT EXISTS nineboard;
\ No newline at end of file
diff --git a/volume/mariadb/nine/ninegate.sql b/volume/mariadb/nine/ninegate.sql
deleted file mode 100644
index 0f559cb..0000000
--- a/volume/mariadb/nine/ninegate.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE DATABASE IF NOT EXISTS ninegate;
\ No newline at end of file
diff --git a/volume/mariadb/nine/wordpress.sql b/volume/mariadb/nine/wordpress.sql
deleted file mode 100644
index 728952c..0000000
--- a/volume/mariadb/nine/wordpress.sql
+++ /dev/null
@@ -1 +0,0 @@
-CREATE DATABASE IF NOT EXISTS wordpress;
\ No newline at end of file