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