diff --git a/.env b/.env
deleted file mode 100644
index f491ce8..0000000
--- a/.env
+++ /dev/null
@@ -1,2 +0,0 @@
-PODBIN=docker
-PODCOMPOSEBIN=docker-compose
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index f544ea7..fa7fa65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,14 +4,41 @@
/volume/mariadb/mysql
+/volume/minio/data
+
/volume/nextcloud/data
/volume/nextcloud/html
/volume/nextcloud/app
-/volume/ninegate/data
-/volume/ninegate/data
+/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
+/volume/nineboard/data/private/*
+!/volume/nineboard/data/private/.gitkeep
+/volume/nineboard/data/public/*
+!/volume/nineboard/data/public/avatar
+/volume/nineboard/data/public/avatar/*
+!/volume/nineboard/data/public/avatar/admin.jpg
+!/volume/nineboard/data/public/avatar/noavatar.png
+!/volume/nineboard/data/public/avatar/system.jpg
+!/volume/nineboard/data/public/logo
+/volume/nineboard/data/public/logo/*
+!/volume/nineboard/data/public/logo/logo.png
/volume/openldap/data
diff --git a/docker-compose.yml b/docker-compose.yml
index 25e2b7c..00e4789 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,6 +1,22 @@
version: '3'
services:
+ nineapache:
+ image: reg.cadoles.com/envole/nineapache:8.1
+ container_name: nine-nineapache
+ restart: always
+ 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:
image: docker.io/library/mariadb
container_name: nine-mariadb
@@ -18,6 +34,28 @@ services:
- ./volume/mariadb/mysql:/var/lib/mysql
- ./volume/mariadb/nine:/nine
+ redis:
+ image: redis:4.0
+ container_name: nine-redis
+ ports:
+ - 6379:6379
+ environment:
+ - TZ=Europe/Paris
+
+ minio:
+ image: minio/minio
+ container_name: nine-minio
+ restart: always
+ env_file: ./tmp/.env.minio
+ networks:
+ - nine-network
+ ports:
+ - '7200:9000'
+ - '7201:9001'
+ volumes:
+ - './volume/minio/data:/data'
+ command: server /data --console-address ":9001"
+
openldap:
image: docker.io/bitnami/openldap:2
container_name: nine-openldap
@@ -127,7 +165,9 @@ services:
timeout: 60s
env_file: ./tmp/.env.wordpress
networks:
- - nine-network
+ nine-network:
+ aliases:
+ - blog
ports:
- "9003:80"
volumes:
@@ -153,20 +193,8 @@ services:
ports:
- "9101:80"
- nineapache:
- image: reg.cadoles.com/envole/nineapache:7.4
- container_name: nine-nineapache
- restart: always
- healthcheck:
- test: curl --fail http://localhost || exit 1
- interval: 1s
- timeout: 60s
- env_file: ./tmp/.env.nineapache
- networks:
- - nine-network
- ports:
- - "9102:80"
-
networks:
nine-network:
- name: nine-network
\ No newline at end of file
+ name: nine-network
+
+
\ No newline at end of file
diff --git a/env/.env b/env/.env
index d415c3d..1bde0cc 100644
--- a/env/.env
+++ b/env/.env
@@ -5,6 +5,7 @@
# votre localhost devra aussi disposer d'un certificat
# si vous changer le web_url penser à modifier nine.local par votre web_url dans volume/keycloak/nine/realm-export.json
# sinon il vous faudra vous connecter à keycloak pour changer l'url du client nine
+# Si vous souhaitez faire marcher wordpress il est indispensable que nineapache écoute soit le port 80 ou 443
# RELEASE SYSTEM = linux ou eole si eole le réseau du compose sera supprimé et regénéré à chaque UP
RELEASE_SYSTEM=linux
@@ -12,7 +13,7 @@ RELEASE_SYSTEM=linux
# GLOBAL
APP_ENV=PROD
WEB_URL=nine.local
-PROTOCOLE=https
+PROTOCOLE=http
# ADMIN USER
ADMIN_USER=admin
@@ -24,7 +25,13 @@ MASTERIDENTITY=SQL
# AUTHENTIFICATION
# SQL or CAS (todo LDAP or OPENID)
-MODE_AUTH=CAS
+MODE_AUTH=SQL
+
+# NINEAPACHE
+# Il sert de reverse proxy
+NINEAPACHE_SERVICE_NAME=nineapache
+NINEAPACHE_ACTIVATE=1
+NINEAPACHE_LOCAL=1
# MARIADB
MARIADB_SERVICE_NAME=mariadb
@@ -34,6 +41,20 @@ MARIADB_ROOT_PASSWORD=${ADMIN_PASSWORD}
MARIADB_USER=user
MARIADB_PASSWORD=${ADMIN_PASSWORD}
+# REDIS
+REDIS_SERVICE_NAME=redis
+REDIS_ACTIVATE=1
+REDIS_LOCAL=1
+
+# 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
+
+
# LDAP
# LDAP_SYNC Si MASTERIDENTITY = SQL permet la synchronisation des utilisateurs SQL vers LDAP
OPENLDAP_SERVICE_NAME=openldap
@@ -60,7 +81,7 @@ LDAP_DISPLAYNAME=displayName
LDAP_EMAIL=mail
LDAP_MEMBER=memberUid
LDAP_USER_FILTER="(&(${LDAP_USERNAME}=*)(objectClass=person)(!(description=Computer)))"
-LDAP_LOGIN_FILTER="(&(${LDAP_USERNAME}=%uid)(objectClass=person)(!(description=Computer)))"
+LDAP_LOGIN_FILTER="(&(${LDAP_USERNAME}=%uid%)(objectClass=person)(!(description=Computer)))"
LDAP_GROUP_FILTER="(&(objectClass=posixGroup))"
SCRIBE_GROUP=1
SCRIBE_MASTER=1
@@ -75,7 +96,7 @@ CAS_LOCAL=1
CAS_USER=${ADMIN_USER}-keycloak
CAS_PASSWORD=${ADMIN_PASSWORD}-keycloak
CAS_HOST=${WEB_URL}
-CAS_PORT=443
+CAS_PORT=8999
CAS_PATH=/auth/realms/nine/protocol/cas
CAS_URL=${PROTOCOLE}://${CAS_HOST}:${CAS_PORT}
@@ -106,19 +127,12 @@ WORDPRESS_URL=${PROTOCOLE}://${WEB_URL}/wordpress
# ADMINER
ADMINER_SERVICE_NAME=adminer
-ADMINER_ACTIVATE=0
+ADMINER_ACTIVATE=1
ADMINER_LOCAL=1
ADMINER_URL=${PROTOCOLE}://${WEB_URL}/adminer/?server=${MARIADB_SERVICE_NAME}&username=${MARIADB_USER}
# PHPLDAPADMIN
PHPLDAPADMIN_SERVICE_NAME=phpldapadmin
-PHPLDAPADMIN_ACTIVATE=0
+PHPLDAPADMIN_ACTIVATE=1
PHPLDAPADMIN_LOCAL=1
PHPLDAPADMIN_URL=${PROTOCOLE}://${WEB_URL}/phpldapadmin
-
-# NINEAPACHE
-NINEAPACHE_SERVICE_NAME=nineapache
-NINEAPACHE_ACTIVATE=0
-NINEAPACHE_LOCAL=1
-NINEAPACHE_URL=${PROTOCOLE}://${WEB_URL}:9102
-
diff --git a/env/.env.zapp.minio b/env/.env.zapp.minio
new file mode 100644
index 0000000..dcf683e
--- /dev/null
+++ b/env/.env.zapp.minio
@@ -0,0 +1,3 @@
+MINIO_ROOT_USER=${ADMIN_USER}
+MINIO_ROOT_PASSWORD=${ADMIN_PASSWORD}
+MINIO_DEFAULT_BUCKETS=nine
diff --git a/env/.env.zapp.phpldapadmin b/env/.env.zapp.phpldapadmin
index 7bb8822..ac5328b 100644
--- a/env/.env.zapp.phpldapadmin
+++ b/env/.env.zapp.phpldapadmin
@@ -3,5 +3,5 @@
PHPLDAPADMIN_LDAP_HOSTS=ldap://${LDAP_HOST}:${LDAP_PORT}
PHPLDAPADMIN_HTTPS="false"
-PHPLDAPADMIN_SERVER_PATH=
+PHPLDAPADMIN_SERVER_PATH=/phpldapadmin
diff --git a/misc/images/wordpress/containers/nineapache/apache.conf b/misc/images/wordpress/containers/nineapache/apache.conf
new file mode 100755
index 0000000..5287e7e
--- /dev/null
+++ b/misc/images/wordpress/containers/nineapache/apache.conf
@@ -0,0 +1,59 @@
+
+LoadModule rewrite_module modules/mod_rewrite.so
+ServerName nineapache.local
+
+ProxyRequests Off
+ProxyPreserveHost On
+
+
+ Require all granted
+
+
+ProxyPass /auth http://keycloak:8999/auth retry=0 keepalive=On
+ProxyPassReverse /auth http://keycloak:8999/auth retry=0
+
+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 /nextcloud http://nextcloud retry=0 keepalive=On
+ProxyPassReverse /nextcloud http://nextcloud retry=0
+
+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
+
+ProxyPass /wordpress http://wordpress/wordpress retry=0 keepalive=On
+ProxyPassReverse /wordpress http://wordpress/wordpress retry=0
+
+ProxyPass /adminer http://adminer:8080 retry=0 keepalive=On
+ProxyPassReverse /adminer http://adminer:8080 retry=0
+
+ProxyPass /phpldapadmin http://phpldapadmin/phpldapadmin retry=0 keepalive=On
+ProxyPassReverse /phpldapadmin http://phpldapadmin/phpldapadmin retry=0
+
+RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"
+RequestHeader set X-Forwarded-Server "%{HTTP_HOST}s"
+RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
+RequestHeader set Host "%{HTTP_HOST}s"
+RequestHeader set X-Forwarded-Proto "http"
+
+DocumentRoot "/app/public"
+
+ Options Indexes FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+ RewriteEngine On
+ RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
+ RewriteRule .* - [E=BASE:%1]
+ RewriteCond %{HTTP:Authorization} .+
+ RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
+ RewriteCond %{ENV:REDIRECT_STATUS} =""
+ RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^ %{ENV:BASE}/index.php [L]
+
+
diff --git a/misc/images/wordpress/containers/volume/entrypoint.sh b/misc/images/wordpress/containers/volume/entrypoint.sh
deleted file mode 100755
index 3eeb92e..0000000
--- a/misc/images/wordpress/containers/volume/entrypoint.sh
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/bash
-set -eo pipefail
-
-cd /app/public
-
-
-if [[ ! -f /app/public/wp-config.php ]]
-then
- wp config create \
- --allow-root \
- --dbhost="${WORDPRESS_DB_HOST}" \
- --dbname="${WORDPRESS_DB_NAME}" \
- --dbuser="${WORDPRESS_DB_USER}" \
- --dbpass="${WORDPRESS_DB_PASSWORD}" \
- --dbcharset="utf8mb4" \
- --locale="fr_FR"
-fi
-
-wp core multisite-install \
- --allow-root \
- --url="${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}" \
- --title="${WORDPRESS_TITLE}" \
- --admin_user="${WORDPRESS_USER}" \
- --admin_password="${WORDPRESS_PASSWORD}" \
- --admin_email="${WORDPRESS_EMAIL}" \
- --skip-email
-
-wp config set --allow-root DB_HOST ${WORDPRESS_DB_HOST}
-wp config set --allow-root DB_NAME ${WORDPRESS_DB_NAME}
-wp config set --allow-root DB_USER ${WORDPRESS_DB_USER}
-wp config set --allow-root DB_PASSWORD ${WORDPRESS_DB_PASSWORD}
-
-wp config set --allow-root WP_HOME ${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}${WORDPRESS_ALIAS}
-wp config set --allow-root WP_SITEURL ${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}${WORDPRESS_ALIAS}
-
-wp config set --allow-root WP_ALLOW_MULTISITE true
-wp config set --allow-root MULTISITE true
-wp config set --allow-root SUBDOMAIN_INSTALL false
-wp config set --allow-root DOMAIN_CURRENT_SITE ${WORDPRESS_DOMAINE}
-wp config set --allow-root PATH_CURRENT_SITE ${WORDPRESS_ALIAS}
-wp config set --allow-root FORCE_ADMIN_SSL false
-wp config set --allow-root SITE_ID_CURRENT_SITE 1
-wp config set --allow-root BLOG_ID_CURRENT_SITE 1
-
-# On fait croire à WP qu'il est en https
-if grep -qF "_SERVER['HTTPS']='on'" "wp-config.php"; then
- if [[ "${WORDPRESS_PROTOCOL}" == "https" ]]
- then
- echo "FORCE HTTPS already set"
- fi
-else
- if [[ "${WORDPRESS_PROTOCOL}" == "https" ]]
- then
- echo "FORCE HTTPS set"
- head -n 1 "wp-config.php" > "wp-config.tmp"
- echo "\$_SERVER['HTTPS']='on';" >> "wp-config.tmp"
- tail -n +2 "wp-config.php" >> "wp-config.tmp"
- mv "wp-config.tmp" "wp-config.php"
- fi
-fi
-
-# Mise à jour theme / plugin / network
-wp theme update --allow-root --all
-wp plugin update --allow-root --all
-wp core update-db --network
-
-exec $@
\ No newline at end of file
diff --git a/misc/images/wordpress/containers/wordpress/apache.conf b/misc/images/wordpress/containers/wordpress/apache.conf
index b5bfe45..6cf4914 100644
--- a/misc/images/wordpress/containers/wordpress/apache.conf
+++ b/misc/images/wordpress/containers/wordpress/apache.conf
@@ -8,17 +8,24 @@ Alias /wordpress /app/public
DirectoryIndex index.php
Require all granted
- RewriteEngine On
- RewriteBase /wordpress/
+ # BEGIN WordPress Multisite
+ # Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
+ RewriteEngine On
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+ RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
+
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
+
+ # END WordPress Multisite
+
\ No newline at end of file
diff --git a/misc/images/wordpress/containers/wordpress/entrypoint.sh b/misc/images/wordpress/containers/wordpress/entrypoint.sh
index a282942..bd886e2 100755
--- a/misc/images/wordpress/containers/wordpress/entrypoint.sh
+++ b/misc/images/wordpress/containers/wordpress/entrypoint.sh
@@ -17,22 +17,24 @@ then
fi
+
wp config set --allow-root DB_HOST ${WORDPRESS_DB_HOST}
wp config set --allow-root DB_NAME ${WORDPRESS_DB_NAME}
wp config set --allow-root DB_USER ${WORDPRESS_DB_USER}
wp config set --allow-root DB_PASSWORD ${WORDPRESS_DB_PASSWORD}
-wp config set --allow-root WP_HOME ${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}${WORDPRESS_ALIAS}
-wp config set --allow-root WP_SITEURL ${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}${WORDPRESS_ALIAS}
+# le ? permet d'enlever le / à la fin de WORDPRESS_ALIAS
+wp config set --allow-root WP_HOME ${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}${WORDPRESS_ALIAS::-1}
+wp config set --allow-root WP_SITEURL ${WORDPRESS_PROTOCOL}://${WORDPRESS_DOMAINE}${WORDPRESS_ALIAS::-1}
-wp config set --allow-root WP_ALLOW_MULTISITE true
-wp config set --allow-root MULTISITE true
-wp config set --allow-root SUBDOMAIN_INSTALL false
+wp config set --allow-root WP_ALLOW_MULTISITE true --raw
+wp config set --allow-root MULTISITE true --raw
+wp config set --allow-root SUBDOMAIN_INSTALL false --raw
wp config set --allow-root DOMAIN_CURRENT_SITE ${WORDPRESS_DOMAINE}
wp config set --allow-root PATH_CURRENT_SITE ${WORDPRESS_ALIAS}
-wp config set --allow-root FORCE_ADMIN_SSL false
-wp config set --allow-root SITE_ID_CURRENT_SITE 1
-wp config set --allow-root BLOG_ID_CURRENT_SITE 1
+wp config set --allow-root FORCE_ADMIN_SSL false --raw
+wp config set --allow-root SITE_ID_CURRENT_SITE 1 --raw
+wp config set --allow-root BLOG_ID_CURRENT_SITE 1 --raw
# On fait croire à WP qu'il est en https
if grep -qF "_SERVER['HTTPS']='on'" "wp-config.php"; then
diff --git a/misc/images/wordpress/docker-compose.yml b/misc/images/wordpress/docker-compose.yml
index 45a0ce5..fcf34a9 100755
--- a/misc/images/wordpress/docker-compose.yml
+++ b/misc/images/wordpress/docker-compose.yml
@@ -1,6 +1,21 @@
version: '3'
services:
+ nineapache:
+ image: reg.cadoles.com/envole/nineapache:8.1
+ container_name: wordpress-nineapache
+ restart: always
+ healthcheck:
+ test: curl --fail http://localhost || exit 1
+ interval: 1s
+ timeout: 60s
+ networks:
+ - wordpress-network
+ ports:
+ - "80:80"
+ volumes:
+ - ./containers/nineapache/apache.conf:/etc/apache2/conf.d/zapp.conf
+
mariadb:
image: mariadb
container_name: wordpress-mariadb
@@ -14,6 +29,8 @@ services:
MYSQL_PASSWORD: changeme
volumes:
- mariadb-data:/var/lib/mysql
+ networks:
+ - wordpress-network
wordpress:
build:
@@ -34,12 +51,15 @@ services:
- WORDPRESS_USER=admin
- WORDPRESS_PASSWORD=changeme
- WORDPRESS_EMAIL=admin@noreply.fr
- - WORDPRESS_PROTOCOL=https
- - WORDPRESS_DOMAINE=eolebase.ac-test.fr
+ - WORDPRESS_PROTOCOL=http
+ - WORDPRESS_DOMAINE=nine.local
- WORDPRESS_ALIAS=/wordpress/
-
- #volumes:
- # - ./containers/data:/app/public/wp-content/plugins/wp-cas
+ volumes:
+ - ./containers/wordpress/entrypoint.sh:/docker/entrypoint.sh
+ - ./containers/wordpress/apache.conf:/etc/apache2/conf.d/zapp.conf
+
+ networks:
+ - wordpress-network
adminer:
image: docker.io/library/adminer
@@ -47,6 +67,12 @@ services:
restart: always
ports:
- 9100:8080
+ networks:
+ - wordpress-network
volumes:
- mariadb-data:
\ No newline at end of file
+ mariadb-data:
+
+networks:
+ wordpress-network:
+ name: wordpress-network
diff --git a/nine.sh b/nine.sh
index 17238b3..ed94736 100755
--- a/nine.sh
+++ b/nine.sh
@@ -7,49 +7,15 @@
rm -f ./.env.local
cat ./env/.env* >> ./.env.local
. ./misc/e-ihm.sh
-. .env
. ./env/.env
-. ./env/.env.local
+if [ -f ./env/.env.local ]
+then
+ . ./env/.env.local
+fi
# Start script
BigTitle "NINE"
-# on remplace les valeur reprise dans les autres .env car podman interprète mal
-if [[ "$PODCOMPOSEBIN" == "podman-compose" ]]
-then
- sed -i 's#${WEB_URL}#'${WEB_URL}'#g' ./.env.local
- sed -i 's#${WEB_PROTOCOL}#'${WEB_PROTOCOL}'#g' ./.env.local
- . ./.env.local
-
- sed -i 's#${ADMIN_PASSWORD}#'${ADMIN_PASSWORD}'#g' ./.env.local
- sed -i 's#${ADMIN_USER}#'${ADMIN_USER}'#g' ./.env.local
-
- sed -i 's#${CAS_HOST}#'${CAS_HOST}'#g' ./.env.local
- sed -i 's#${CAS_PORT}#'${CAS_PORT}'#g' ./.env.local
- sed -i 's#${CAS_USER}#'${CAS_USER}'#g' ./.env.local
- sed -i 's#${CAS_PASSWORD}#'${CAS_PASSWORD}'#g' ./.env.local
-
- sed -i 's#${OPENLDAP_SERVICE_NAME}#'${OPENLDAP_SERVICE_NAME}'#g' ./.env.local
- sed -i 's#${LDAP_ADMIN_USERNAME}#'${LDAP_ADMIN_USERNAME}'#g' ./.env.local
- sed -i 's#${LDAP_BASEDN}#'${LDAP_BASEDN}'#g' ./.env.local
- sed -i 's#${LDAP_PASSWORD}#'${LDAP_PASSWORD}'#g' ./.env.local
- sed -i 's#${LDAP_USER}#'${LDAP_USER}'#g' ./.env.local
- sed -i 's#${LDAP_PORT}#'${LDAP_PORT}'#g' ./.env.local
-
- sed -i 's#${MARIADB_SERVICE_NAME}#'${MARIADB_SERVICE_NAME}'#g' ./.env.local
- sed -i 's#${MARIADB_USER}#'${MARIADB_USER}'#g' ./.env.local
- sed -i 's#${MARIADB_PASSWORD}#'${MARIADB_PASSWORD}'#g' ./.env.local
-
- sed -i 's#${ADMINER_ACTIVATE}#'${ADMINER_ACTIVATE}'#g' ./.env.local
- sed -i 's#${ADMINER_URL}#'${ADMINER_URL}'#g' ./.env.local
-
- sed -i 's#${PHPLDAPADMIN_ACTIVATE}#'${PHPLDAPADMIN_ACTIVATE}'#g' ./.env.local
- sed -i 's#${PHPLDAPADMIN_URL}#'${PHPLDAPADMIN_URL}'#g' ./.env.local
-
- sed -i 's#${NEXTCLOUD_ACTIVATE}#'${NEXTCLOUD_ACTIVATE}'#g' ./.env.local
- sed -i 's#${NEXTCLOUD_URL}#'${NEXTCLOUD_URL}'#g' ./.env.local
-fi
-
# Include
. ./.env.local
@@ -62,7 +28,10 @@ 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 $NINEGATE_SERVICE_NAME 1
@@ -71,7 +40,6 @@ destroyall(){
destroy $WORDPRESS_SERVICE_NAME 1
destroy $ADMINER_SERVICE_NAME 1
destroy $PHPLDAPADMIN_SERVICE_NAME 1
- destroy $NINEAPACHE_SERVICE_NAME 1
fi
}
@@ -90,7 +58,10 @@ env() {
#===========================================================================================================================================
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 $NINEGATE_SERVICE_NAME
@@ -99,7 +70,6 @@ envall(){
env $WORDPRESS_SERVICE_NAME
env $ADMINER_SERVICE_NAME
env $PHPLDAPADMIN_SERVICE_NAME
- env $NINEAPACHE_SERVICE_NAME
}
#===========================================================================================================================================
@@ -111,19 +81,7 @@ envall(){
stop() {
if [[ "$2" != 1 ]]; then Title "STOP"; fi
- $PODCOMPOSEBIN stop $1
- if [[ "$PODCOMPOSEBIN" == "podman-compose" ]]
- then
- if [[ "$1" == "" ]]
- then
- CONTAINER_NAMES=$($PODCOMPOSEBIN -f docker-compose.yml ps | awk 'NR > 1 {print $1}')
- for CONTAINER_NAME in $CONTAINER_NAMES; do
- $PODBIN rm -f $CONTAINER_NAME
- done
- else
- $PODBIN rm "nine-"$1
- fi
- fi
+ docker-compose stop $1
}
#===========================================================================================================================================
@@ -133,13 +91,13 @@ stop() {
wait_for_container() {
container_id="nine-$1"
- container_name="$($PODBIN inspect "${container_id}" --format '{{ .Name }}')"
+ container_name="$(docker inspect "${container_id}" --format '{{ .Name }}')"
waiting_done="false"
while [[ "${waiting_done}" != "true" ]]; do
- container_state="$($PODBIN inspect "${container_id}" --format '{{ .State.Status }}')"
+ container_state="$(docker inspect "${container_id}" --format '{{ .State.Status }}')"
if [[ "${container_state}" == "running" ]]; then
- health_status="$($PODBIN inspect "${container_id}" --format '{{ .State.Health.Status }}')"
+ health_status="$(docker inspect "${container_id}" --format '{{ .State.Health.Status }}')"
if [[ ${health_status} == "healthy" ]]; then
waiting_done="true"
fi
@@ -151,13 +109,23 @@ wait_for_container() {
}
upservice(){
- $PODCOMPOSEBIN up -d $1
+ docker-compose up -d $1
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
@@ -168,6 +136,26 @@ function upmariadb {
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
@@ -178,7 +166,7 @@ function upopenldap {
chmod a+wr ./volume/openldap/data
upservice $OPENLDAP_SERVICE_NAME wait
- $PODCOMPOSEBIN exec $OPENLDAP_SERVICE_NAME /nine/init.sh
+ docker-compose exec $OPENLDAP_SERVICE_NAME /nine/init.sh
Echo
fi
}
@@ -193,7 +181,7 @@ function upkeycloak {
then
EchoVert "DATABASE"
Echo ${KEYCLOAK_SERVICE_NAME^^}
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/init.sh $KEYCLOAK_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $KEYCLOAK_SERVICE_NAME
Echo
fi
@@ -212,7 +200,7 @@ function upninegate {
then
EchoVert "DATABASE"
Echo ${NINEGATE_SERVICE_NAME^^}
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/init.sh $NINEGATE_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NINEGATE_SERVICE_NAME
Echo
fi
@@ -232,7 +220,7 @@ function upnineboard {
then
EchoVert "DATABASE"
Echo ${NINEBOARD_SERVICE_NAME^^}
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/init.sh $NINEBOARD_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NINEBOARD_SERVICE_NAME
Echo
fi
@@ -253,7 +241,7 @@ function upnextcloud {
EchoVert "DATABASE"
Echo ${NEXTCLOUD_SERVICE_NAME^^}
Echo
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/init.sh $NEXTCLOUD_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $NEXTCLOUD_SERVICE_NAME
fi
EchoVert "CONTAINER"
@@ -272,7 +260,7 @@ function upwordpress {
then
EchoVert "DATABASE"
Echo ${WORDPRESS_SERVICE_NAME^^}
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/init.sh $WORDPRESS_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/init.sh $WORDPRESS_SERVICE_NAME
Echo
fi
@@ -302,15 +290,6 @@ function upphpldapadmin {
fi
}
-function upnineapache {
- if [[ $NINEAPACHE_ACTIVATE == 1 && $NINEAPACHE_LOCAL == 1 ]]
- then
- Title ${NINEAPACHE_SERVICE_NAME^^}
- EchoVert "CONTAINER"
- upservice ${WORDPRESS_SERVICE_NAME}
- Echo
- fi
-}
#===========================================================================================================================================
#== UP =====================================================================================================================================
@@ -338,9 +317,19 @@ up(){
iptables -P INPUT ACCEPT
fi
+
+ # NINEAPACHE
+ upnineapache
+
# MARIADB
upmariadb
+ # REDIS
+ upredis
+
+ # MINIO
+ upminio
+
# OPENLDAP
upopenldap
@@ -364,9 +353,7 @@ up(){
# PHPLDAPADMIN
upphpldapadmin
-
- # NINEAPACHE
- upnineapache
+
else
env ${1}
up${1}
@@ -381,7 +368,10 @@ 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 $NINEGATE_SERVICE_NAME 1
@@ -390,7 +380,6 @@ destroyall(){
destroy $WORDPRESS_SERVICE_NAME 1
destroy $ADMINER_SERVICE_NAME 1
destroy $PHPLDAPADMIN_SERVICE_NAME 1
- destroy $NINEAPACHE_SERVICE_NAME 1
fi
}
@@ -404,12 +393,7 @@ destroy(){
Title "DESTROY "${1^^}
stop $1 1
-
- if [[ "$PODCOMPOSEBIN" == "docker-compose" ]]
- then
- $PODCOMPOSEBIN rm -s -v -f "$1"
- fi
-
+ docker-compose rm -s -v -f "$1"
if [[ "$1" == "$MARIADB_SERVICE_NAME" && $MARIADB_ACTIVATE == 1 && $MARIADB_LOCAL == 1 ]]
then
@@ -437,7 +421,7 @@ destroy(){
if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
if [[ "$?" = 0 || -z $2 ]]
then
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/delete.sh $KEYCLOAK_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $KEYCLOAK_SERVICE_NAME
fi
fi
@@ -446,7 +430,7 @@ destroy(){
if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
if [[ "$?" = 0 || -z $2 ]]
then
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEGATE_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEGATE_SERVICE_NAME
fi
fi
@@ -455,7 +439,7 @@ destroy(){
if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
if [[ "$?" = 0 || -z $2 ]]
then
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEBOARD_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $NINEBOARD_SERVICE_NAME
fi
fi
@@ -464,7 +448,7 @@ destroy(){
if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ainsi que les fichiers utilisateurs ?";fi
if [[ "$?" = 0 || -z $2 ]]
then
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/delete.sh $NEXTCLOUD_SERVICE_NAME
+ 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
@@ -476,7 +460,7 @@ destroy(){
if [[ -z $2 ]]; then Question_ouinon "Souhaitez-vous supprimer la BDD associé à $1 ?";fi
if [[ "$?" = 0 || -z $2 ]]
then
- $PODCOMPOSEBIN exec $MARIADB_SERVICE_NAME /nine/delete.sh $WORDPRESS_SERVICE_NAME
+ docker-compose exec $MARIADB_SERVICE_NAME /nine/delete.sh $WORDPRESS_SERVICE_NAME
sudo rm -rf volume/wordpress/data
fi
fi
@@ -501,7 +485,7 @@ then
EchoRouge "Vous devez precisez un service"
EchoRouge "nine.sh bash monservice"
else
- $PODCOMPOSEBIN exec $2 "/bin/bash"
+ docker-compose exec $2 "/bin/bash"
fi
elif [[ $1 == "destroyall" ]]
then
@@ -517,7 +501,7 @@ then
fi
elif [[ $1 == "logs" ]]
then
- $PODCOMPOSEBIN logs -f $2
+ docker-compose logs -f $2
elif [[ $1 == "iswait" ]]
then
wait_for_container $2
diff --git a/readme.md b/readme.md
index 915b7f0..81833f8 100644
--- a/readme.md
+++ b/readme.md
@@ -4,6 +4,16 @@
git clone --branch master https://forge.cadoles.com/afornerot/ninedocker.git
+## Nine sur localhost
+
+Vous devez ajouter un domaine dans votre host qui pointe sur 127.0.0.0
+
+Sans personnalisation nine est configuré pour travailler avec nine.local et il écoute le port 7080
+
+```
+127.0.0.0 nine.local
+```
+
## Comment personnaliser
Pour personnaliser la configuration de base
@@ -18,8 +28,8 @@ De base ninedocker est configuré pour fonctionner sur nine.local en https
Exemple de faire fonctionner le docker en local et en http
```
-WEB_URL=localhost
-PROTOCOLE=http
+WEB_URL=mondomaine
+PROTOCOLE=https
```
### Ports & Services associés
diff --git a/volume/nineapache/nine/apache.conf b/volume/nineapache/nine/apache.conf
new file mode 100755
index 0000000..5287e7e
--- /dev/null
+++ b/volume/nineapache/nine/apache.conf
@@ -0,0 +1,59 @@
+
+LoadModule rewrite_module modules/mod_rewrite.so
+ServerName nineapache.local
+
+ProxyRequests Off
+ProxyPreserveHost On
+
+
+ Require all granted
+
+
+ProxyPass /auth http://keycloak:8999/auth retry=0 keepalive=On
+ProxyPassReverse /auth http://keycloak:8999/auth retry=0
+
+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 /nextcloud http://nextcloud retry=0 keepalive=On
+ProxyPassReverse /nextcloud http://nextcloud retry=0
+
+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
+
+ProxyPass /wordpress http://wordpress/wordpress retry=0 keepalive=On
+ProxyPassReverse /wordpress http://wordpress/wordpress retry=0
+
+ProxyPass /adminer http://adminer:8080 retry=0 keepalive=On
+ProxyPassReverse /adminer http://adminer:8080 retry=0
+
+ProxyPass /phpldapadmin http://phpldapadmin/phpldapadmin retry=0 keepalive=On
+ProxyPassReverse /phpldapadmin http://phpldapadmin/phpldapadmin retry=0
+
+RequestHeader set X-Forwarded-Host "%{HTTP_HOST}s"
+RequestHeader set X-Forwarded-Server "%{HTTP_HOST}s"
+RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
+RequestHeader set Host "%{HTTP_HOST}s"
+RequestHeader set X-Forwarded-Proto "http"
+
+DocumentRoot "/app/public"
+
+ Options Indexes FollowSymLinks
+ AllowOverride All
+ Require all granted
+
+ RewriteEngine On
+ RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
+ RewriteRule .* - [E=BASE:%1]
+ RewriteCond %{HTTP:Authorization} .+
+ RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]
+ RewriteCond %{ENV:REDIRECT_STATUS} =""
+ RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^ %{ENV:BASE}/index.php [L]
+
+
diff --git a/volume/nineboard/data/private/.gitkeep b/volume/nineboard/data/private/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/volume/nineboard/data/public/avatar/admin.jpg b/volume/nineboard/data/public/avatar/admin.jpg
new file mode 100644
index 0000000..0fa3174
Binary files /dev/null and b/volume/nineboard/data/public/avatar/admin.jpg differ
diff --git a/volume/nineboard/data/public/avatar/system.jpg b/volume/nineboard/data/public/avatar/system.jpg
new file mode 100644
index 0000000..4c8a16b
Binary files /dev/null and b/volume/nineboard/data/public/avatar/system.jpg differ
diff --git a/volume/nineboard/data/public/logo/logo.png b/volume/nineboard/data/public/logo/logo.png
new file mode 100644
index 0000000..f84fa12
Binary files /dev/null and b/volume/nineboard/data/public/logo/logo.png differ
diff --git a/volume/ninegate/data/private/.gitkeep b/volume/ninegate/data/private/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/volume/ninegate/data/public/avatar/admin.jpg b/volume/ninegate/data/public/avatar/admin.jpg
new file mode 100644
index 0000000..0fa3174
Binary files /dev/null and b/volume/ninegate/data/public/avatar/admin.jpg differ
diff --git a/volume/ninegate/data/public/avatar/noavatar.png b/volume/ninegate/data/public/avatar/noavatar.png
new file mode 100644
index 0000000..6867515
Binary files /dev/null and b/volume/ninegate/data/public/avatar/noavatar.png differ
diff --git a/volume/ninegate/data/public/avatar/system.jpg b/volume/ninegate/data/public/avatar/system.jpg
new file mode 100644
index 0000000..4c8a16b
Binary files /dev/null and b/volume/ninegate/data/public/avatar/system.jpg differ
diff --git a/volume/ninegate/data/public/header/header.png b/volume/ninegate/data/public/header/header.png
new file mode 100644
index 0000000..ff43948
Binary files /dev/null and b/volume/ninegate/data/public/header/header.png differ
diff --git a/volume/ninegate/data/public/icon/icon_add.png b/volume/ninegate/data/public/icon/icon_add.png
new file mode 100644
index 0000000..51fa2e3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_add.png differ
diff --git a/volume/ninegate/data/public/icon/icon_adminer.png b/volume/ninegate/data/public/icon/icon_adminer.png
new file mode 100644
index 0000000..a4db9c2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_adminer.png differ
diff --git a/volume/ninegate/data/public/icon/icon_anchor.png b/volume/ninegate/data/public/icon/icon_anchor.png
new file mode 100644
index 0000000..af7dc56
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_anchor.png differ
diff --git a/volume/ninegate/data/public/icon/icon_aperture.png b/volume/ninegate/data/public/icon/icon_aperture.png
new file mode 100644
index 0000000..62bb7bb
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_aperture.png differ
diff --git a/volume/ninegate/data/public/icon/icon_arrow-down.png b/volume/ninegate/data/public/icon/icon_arrow-down.png
new file mode 100644
index 0000000..2c676bc
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_arrow-down.png differ
diff --git a/volume/ninegate/data/public/icon/icon_arrow-up.png b/volume/ninegate/data/public/icon/icon_arrow-up.png
new file mode 100644
index 0000000..dd115e7
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_arrow-up.png differ
diff --git a/volume/ninegate/data/public/icon/icon_art.png b/volume/ninegate/data/public/icon/icon_art.png
new file mode 100644
index 0000000..45e1f76
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_art.png differ
diff --git a/volume/ninegate/data/public/icon/icon_balado.png b/volume/ninegate/data/public/icon/icon_balado.png
new file mode 100644
index 0000000..39be851
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_balado.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bar-chart.png b/volume/ninegate/data/public/icon/icon_bar-chart.png
new file mode 100644
index 0000000..61f778f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bar-chart.png differ
diff --git a/volume/ninegate/data/public/icon/icon_batteryfull.png b/volume/ninegate/data/public/icon/icon_batteryfull.png
new file mode 100644
index 0000000..78bb1b2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_batteryfull.png differ
diff --git a/volume/ninegate/data/public/icon/icon_batterylow.png b/volume/ninegate/data/public/icon/icon_batterylow.png
new file mode 100644
index 0000000..db1e48d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_batterylow.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bdd.png b/volume/ninegate/data/public/icon/icon_bdd.png
new file mode 100644
index 0000000..e717e29
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bdd.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bike.png b/volume/ninegate/data/public/icon/icon_bike.png
new file mode 100644
index 0000000..b816bb1
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bike.png differ
diff --git a/volume/ninegate/data/public/icon/icon_biker.png b/volume/ninegate/data/public/icon/icon_biker.png
new file mode 100644
index 0000000..9a0fbb1
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_biker.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bikewheel.png b/volume/ninegate/data/public/icon/icon_bikewheel.png
new file mode 100644
index 0000000..e328e44
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bikewheel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_blimp.png b/volume/ninegate/data/public/icon/icon_blimp.png
new file mode 100644
index 0000000..961f127
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_blimp.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bolt.png b/volume/ninegate/data/public/icon/icon_bolt.png
new file mode 100644
index 0000000..0916bfc
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bolt.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bomb.png b/volume/ninegate/data/public/icon/icon_bomb.png
new file mode 100644
index 0000000..5ede7f3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bomb.png differ
diff --git a/volume/ninegate/data/public/icon/icon_booklet.png b/volume/ninegate/data/public/icon/icon_booklet.png
new file mode 100644
index 0000000..5cb7820
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_booklet.png differ
diff --git a/volume/ninegate/data/public/icon/icon_bookshelf.png b/volume/ninegate/data/public/icon/icon_bookshelf.png
new file mode 100644
index 0000000..eb4cb99
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_bookshelf.png differ
diff --git a/volume/ninegate/data/public/icon/icon_briefcase.png b/volume/ninegate/data/public/icon/icon_briefcase.png
new file mode 100644
index 0000000..a9eae6b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_briefcase.png differ
diff --git a/volume/ninegate/data/public/icon/icon_brightness.png b/volume/ninegate/data/public/icon/icon_brightness.png
new file mode 100644
index 0000000..7e548ed
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_brightness.png differ
diff --git a/volume/ninegate/data/public/icon/icon_browser.png b/volume/ninegate/data/public/icon/icon_browser.png
new file mode 100644
index 0000000..7ae24e9
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_browser.png differ
diff --git a/volume/ninegate/data/public/icon/icon_brush-pencil.png b/volume/ninegate/data/public/icon/icon_brush-pencil.png
new file mode 100644
index 0000000..f5dfa6d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_brush-pencil.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cadoles.png b/volume/ninegate/data/public/icon/icon_cadoles.png
new file mode 100644
index 0000000..8ae8887
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cadoles.png differ
diff --git a/volume/ninegate/data/public/icon/icon_calculator.png b/volume/ninegate/data/public/icon/icon_calculator.png
new file mode 100644
index 0000000..e774c4d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_calculator.png differ
diff --git a/volume/ninegate/data/public/icon/icon_calendar.png b/volume/ninegate/data/public/icon/icon_calendar.png
new file mode 100644
index 0000000..a4e22bf
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_calendar.png differ
diff --git a/volume/ninegate/data/public/icon/icon_camera.png b/volume/ninegate/data/public/icon/icon_camera.png
new file mode 100644
index 0000000..c8a5a87
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_camera.png differ
diff --git a/volume/ninegate/data/public/icon/icon_car.png b/volume/ninegate/data/public/icon/icon_car.png
new file mode 100644
index 0000000..43b4609
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_car.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cart.png b/volume/ninegate/data/public/icon/icon_cart.png
new file mode 100644
index 0000000..92abdfc
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cart.png differ
diff --git a/volume/ninegate/data/public/icon/icon_carwheel.png b/volume/ninegate/data/public/icon/icon_carwheel.png
new file mode 100644
index 0000000..547d662
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_carwheel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_caution.png b/volume/ninegate/data/public/icon/icon_caution.png
new file mode 100644
index 0000000..f1c2dd6
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_caution.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cdt.png b/volume/ninegate/data/public/icon/icon_cdt.png
new file mode 100644
index 0000000..9b17a13
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cdt.png differ
diff --git a/volume/ninegate/data/public/icon/icon_chart.png b/volume/ninegate/data/public/icon/icon_chart.png
new file mode 100644
index 0000000..9ae9a5d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_chart.png differ
diff --git a/volume/ninegate/data/public/icon/icon_chartpie.png b/volume/ninegate/data/public/icon/icon_chartpie.png
new file mode 100644
index 0000000..c457e17
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_chartpie.png differ
diff --git a/volume/ninegate/data/public/icon/icon_chat.png b/volume/ninegate/data/public/icon/icon_chat.png
new file mode 100644
index 0000000..e3a2997
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_chat.png differ
diff --git a/volume/ninegate/data/public/icon/icon_check.png b/volume/ninegate/data/public/icon/icon_check.png
new file mode 100644
index 0000000..399af35
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_check.png differ
diff --git a/volume/ninegate/data/public/icon/icon_circlecompass.png b/volume/ninegate/data/public/icon/icon_circlecompass.png
new file mode 100644
index 0000000..b49cf52
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_circlecompass.png differ
diff --git a/volume/ninegate/data/public/icon/icon_clapboard.png b/volume/ninegate/data/public/icon/icon_clapboard.png
new file mode 100644
index 0000000..d0b1933
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_clapboard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_clipboard.png b/volume/ninegate/data/public/icon/icon_clipboard.png
new file mode 100644
index 0000000..ebc0dcd
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_clipboard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_clock.png b/volume/ninegate/data/public/icon/icon_clock.png
new file mode 100644
index 0000000..e68fcf1
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_clock.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cloud.png b/volume/ninegate/data/public/icon/icon_cloud.png
new file mode 100644
index 0000000..20a8797
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cloud.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cmyk.png b/volume/ninegate/data/public/icon/icon_cmyk.png
new file mode 100644
index 0000000..666a586
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cmyk.png differ
diff --git a/volume/ninegate/data/public/icon/icon_colorwheel.png b/volume/ninegate/data/public/icon/icon_colorwheel.png
new file mode 100644
index 0000000..c847f1a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_colorwheel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_compass.png b/volume/ninegate/data/public/icon/icon_compass.png
new file mode 100644
index 0000000..a42db4a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_compass.png differ
diff --git a/volume/ninegate/data/public/icon/icon_compose.png b/volume/ninegate/data/public/icon/icon_compose.png
new file mode 100644
index 0000000..278cef3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_compose.png differ
diff --git a/volume/ninegate/data/public/icon/icon_computer.png b/volume/ninegate/data/public/icon/icon_computer.png
new file mode 100644
index 0000000..f1bc1b4
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_computer.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cone.png b/volume/ninegate/data/public/icon/icon_cone.png
new file mode 100644
index 0000000..46588e2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cone.png differ
diff --git a/volume/ninegate/data/public/icon/icon_contacts.png b/volume/ninegate/data/public/icon/icon_contacts.png
new file mode 100644
index 0000000..edc0f56
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_contacts.png differ
diff --git a/volume/ninegate/data/public/icon/icon_contrast.png b/volume/ninegate/data/public/icon/icon_contrast.png
new file mode 100644
index 0000000..36be705
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_contrast.png differ
diff --git a/volume/ninegate/data/public/icon/icon_countdown.png b/volume/ninegate/data/public/icon/icon_countdown.png
new file mode 100644
index 0000000..c7d938a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_countdown.png differ
diff --git a/volume/ninegate/data/public/icon/icon_creditcard.png b/volume/ninegate/data/public/icon/icon_creditcard.png
new file mode 100644
index 0000000..85d1f2a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_creditcard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_crop.png b/volume/ninegate/data/public/icon/icon_crop.png
new file mode 100644
index 0000000..871e601
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_crop.png differ
diff --git a/volume/ninegate/data/public/icon/icon_crossroads.png b/volume/ninegate/data/public/icon/icon_crossroads.png
new file mode 100644
index 0000000..4b2a942
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_crossroads.png differ
diff --git a/volume/ninegate/data/public/icon/icon_crous.png b/volume/ninegate/data/public/icon/icon_crous.png
new file mode 100644
index 0000000..7111bc0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_crous.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cruise.png b/volume/ninegate/data/public/icon/icon_cruise.png
new file mode 100644
index 0000000..e848d13
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cruise.png differ
diff --git a/volume/ninegate/data/public/icon/icon_cursor.png b/volume/ninegate/data/public/icon/icon_cursor.png
new file mode 100644
index 0000000..558bc2a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_cursor.png differ
diff --git a/volume/ninegate/data/public/icon/icon_denied.png b/volume/ninegate/data/public/icon/icon_denied.png
new file mode 100644
index 0000000..eb58be6
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_denied.png differ
diff --git a/volume/ninegate/data/public/icon/icon_dev.png b/volume/ninegate/data/public/icon/icon_dev.png
new file mode 100644
index 0000000..2df1e9a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_dev.png differ
diff --git a/volume/ninegate/data/public/icon/icon_die.png b/volume/ninegate/data/public/icon/icon_die.png
new file mode 100644
index 0000000..6ae47ab
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_die.png differ
diff --git a/volume/ninegate/data/public/icon/icon_document.png b/volume/ninegate/data/public/icon/icon_document.png
new file mode 100644
index 0000000..9743d51
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_document.png differ
diff --git a/volume/ninegate/data/public/icon/icon_dokuwiki.png b/volume/ninegate/data/public/icon/icon_dokuwiki.png
new file mode 100644
index 0000000..04a402e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_dokuwiki.png differ
diff --git a/volume/ninegate/data/public/icon/icon_dolly.png b/volume/ninegate/data/public/icon/icon_dolly.png
new file mode 100644
index 0000000..17b12e8
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_dolly.png differ
diff --git a/volume/ninegate/data/public/icon/icon_door.png b/volume/ninegate/data/public/icon/icon_door.png
new file mode 100644
index 0000000..ce9d911
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_door.png differ
diff --git a/volume/ninegate/data/public/icon/icon_download.png b/volume/ninegate/data/public/icon/icon_download.png
new file mode 100644
index 0000000..fa1d0a5
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_download.png differ
diff --git a/volume/ninegate/data/public/icon/icon_ead.png b/volume/ninegate/data/public/icon/icon_ead.png
new file mode 100644
index 0000000..777365f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_ead.png differ
diff --git a/volume/ninegate/data/public/icon/icon_easel.png b/volume/ninegate/data/public/icon/icon_easel.png
new file mode 100644
index 0000000..48efd8c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_easel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_econnect.png b/volume/ninegate/data/public/icon/icon_econnect.png
new file mode 100644
index 0000000..2fcf489
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_econnect.png differ
diff --git a/volume/ninegate/data/public/icon/icon_email.png b/volume/ninegate/data/public/icon/icon_email.png
new file mode 100644
index 0000000..ddd3095
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_email.png differ
diff --git a/volume/ninegate/data/public/icon/icon_eoe.png b/volume/ninegate/data/public/icon/icon_eoe.png
new file mode 100644
index 0000000..a4d1f7f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_eoe.png differ
diff --git a/volume/ninegate/data/public/icon/icon_eop.png b/volume/ninegate/data/public/icon/icon_eop.png
new file mode 100644
index 0000000..b974039
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_eop.png differ
diff --git a/volume/ninegate/data/public/icon/icon_etherhome.png b/volume/ninegate/data/public/icon/icon_etherhome.png
new file mode 100644
index 0000000..ece5812
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_etherhome.png differ
diff --git a/volume/ninegate/data/public/icon/icon_euro.png b/volume/ninegate/data/public/icon/icon_euro.png
new file mode 100644
index 0000000..60fcaad
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_euro.png differ
diff --git a/volume/ninegate/data/public/icon/icon_eye.png b/volume/ninegate/data/public/icon/icon_eye.png
new file mode 100644
index 0000000..9acf5db
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_eye.png differ
diff --git a/volume/ninegate/data/public/icon/icon_eyedropper.png b/volume/ninegate/data/public/icon/icon_eyedropper.png
new file mode 100644
index 0000000..abaa9f5
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_eyedropper.png differ
diff --git a/volume/ninegate/data/public/icon/icon_fashion.png b/volume/ninegate/data/public/icon/icon_fashion.png
new file mode 100644
index 0000000..357e7b2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_fashion.png differ
diff --git a/volume/ninegate/data/public/icon/icon_filmreel.png b/volume/ninegate/data/public/icon/icon_filmreel.png
new file mode 100644
index 0000000..4852656
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_filmreel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_filmroll.png b/volume/ninegate/data/public/icon/icon_filmroll.png
new file mode 100644
index 0000000..17ad9b5
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_filmroll.png differ
diff --git a/volume/ninegate/data/public/icon/icon_flag.png b/volume/ninegate/data/public/icon/icon_flag.png
new file mode 100644
index 0000000..8b9fa42
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_flag.png differ
diff --git a/volume/ninegate/data/public/icon/icon_flame.png b/volume/ninegate/data/public/icon/icon_flame.png
new file mode 100644
index 0000000..808b8da
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_flame.png differ
diff --git a/volume/ninegate/data/public/icon/icon_flash.png b/volume/ninegate/data/public/icon/icon_flash.png
new file mode 100644
index 0000000..d08c400
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_flash.png differ
diff --git a/volume/ninegate/data/public/icon/icon_flower.png b/volume/ninegate/data/public/icon/icon_flower.png
new file mode 100644
index 0000000..6d95c6e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_flower.png differ
diff --git a/volume/ninegate/data/public/icon/icon_fluxbb.png b/volume/ninegate/data/public/icon/icon_fluxbb.png
new file mode 100644
index 0000000..ff9d8c2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_fluxbb.png differ
diff --git a/volume/ninegate/data/public/icon/icon_focus.png b/volume/ninegate/data/public/icon/icon_focus.png
new file mode 100644
index 0000000..ebe505b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_focus.png differ
diff --git a/volume/ninegate/data/public/icon/icon_folder.png b/volume/ninegate/data/public/icon/icon_folder.png
new file mode 100644
index 0000000..ba7264f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_folder.png differ
diff --git a/volume/ninegate/data/public/icon/icon_frames.png b/volume/ninegate/data/public/icon/icon_frames.png
new file mode 100644
index 0000000..d0de0eb
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_frames.png differ
diff --git a/volume/ninegate/data/public/icon/icon_gamecontroller.png b/volume/ninegate/data/public/icon/icon_gamecontroller.png
new file mode 100644
index 0000000..f9f85d9
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_gamecontroller.png differ
diff --git a/volume/ninegate/data/public/icon/icon_gas.png b/volume/ninegate/data/public/icon/icon_gas.png
new file mode 100644
index 0000000..866b926
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_gas.png differ
diff --git a/volume/ninegate/data/public/icon/icon_gear.png b/volume/ninegate/data/public/icon/icon_gear.png
new file mode 100644
index 0000000..1a74a4f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_gear.png differ
diff --git a/volume/ninegate/data/public/icon/icon_genconfig.png b/volume/ninegate/data/public/icon/icon_genconfig.png
new file mode 100644
index 0000000..b85cca3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_genconfig.png differ
diff --git a/volume/ninegate/data/public/icon/icon_genius.png b/volume/ninegate/data/public/icon/icon_genius.png
new file mode 100644
index 0000000..632ee24
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_genius.png differ
diff --git a/volume/ninegate/data/public/icon/icon_gepi.png b/volume/ninegate/data/public/icon/icon_gepi.png
new file mode 100644
index 0000000..1d99ae3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_gepi.png differ
diff --git a/volume/ninegate/data/public/icon/icon_global.png b/volume/ninegate/data/public/icon/icon_global.png
new file mode 100644
index 0000000..a1bb645
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_global.png differ
diff --git a/volume/ninegate/data/public/icon/icon_globe.png b/volume/ninegate/data/public/icon/icon_globe.png
new file mode 100644
index 0000000..bd458e0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_globe.png differ
diff --git a/volume/ninegate/data/public/icon/icon_glpi.png b/volume/ninegate/data/public/icon/icon_glpi.png
new file mode 100644
index 0000000..c1e4fe6
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_glpi.png differ
diff --git a/volume/ninegate/data/public/icon/icon_gps.png b/volume/ninegate/data/public/icon/icon_gps.png
new file mode 100644
index 0000000..270afbb
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_gps.png differ
diff --git a/volume/ninegate/data/public/icon/icon_grr.png b/volume/ninegate/data/public/icon/icon_grr.png
new file mode 100644
index 0000000..0966e03
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_grr.png differ
diff --git a/volume/ninegate/data/public/icon/icon_hazard.png b/volume/ninegate/data/public/icon/icon_hazard.png
new file mode 100644
index 0000000..2789918
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_hazard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_heart.png b/volume/ninegate/data/public/icon/icon_heart.png
new file mode 100644
index 0000000..8109854
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_heart.png differ
diff --git a/volume/ninegate/data/public/icon/icon_helicopter.png b/volume/ninegate/data/public/icon/icon_helicopter.png
new file mode 100644
index 0000000..0d25230
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_helicopter.png differ
diff --git a/volume/ninegate/data/public/icon/icon_hotair.png b/volume/ninegate/data/public/icon/icon_hotair.png
new file mode 100644
index 0000000..8089149
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_hotair.png differ
diff --git a/volume/ninegate/data/public/icon/icon_hourglass.png b/volume/ninegate/data/public/icon/icon_hourglass.png
new file mode 100644
index 0000000..9856c80
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_hourglass.png differ
diff --git a/volume/ninegate/data/public/icon/icon_image.png b/volume/ninegate/data/public/icon/icon_image.png
new file mode 100644
index 0000000..9e1bd3a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_image.png differ
diff --git a/volume/ninegate/data/public/icon/icon_info.png b/volume/ninegate/data/public/icon/icon_info.png
new file mode 100644
index 0000000..81b674b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_info.png differ
diff --git a/volume/ninegate/data/public/icon/icon_interstate.png b/volume/ninegate/data/public/icon/icon_interstate.png
new file mode 100644
index 0000000..bb8445a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_interstate.png differ
diff --git a/volume/ninegate/data/public/icon/icon_kanboard.png b/volume/ninegate/data/public/icon/icon_kanboard.png
new file mode 100755
index 0000000..b959be1
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_kanboard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_key.png b/volume/ninegate/data/public/icon/icon_key.png
new file mode 100644
index 0000000..103fbab
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_key.png differ
diff --git a/volume/ninegate/data/public/icon/icon_keyboard.png b/volume/ninegate/data/public/icon/icon_keyboard.png
new file mode 100644
index 0000000..c041d28
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_keyboard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_lens.png b/volume/ninegate/data/public/icon/icon_lens.png
new file mode 100644
index 0000000..d549f74
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_lens.png differ
diff --git a/volume/ninegate/data/public/icon/icon_lightbulb.png b/volume/ninegate/data/public/icon/icon_lightbulb.png
new file mode 100644
index 0000000..eea9ba8
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_lightbulb.png differ
diff --git a/volume/ninegate/data/public/icon/icon_limesurvey.png b/volume/ninegate/data/public/icon/icon_limesurvey.png
new file mode 100644
index 0000000..0a8caa3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_limesurvey.png differ
diff --git a/volume/ninegate/data/public/icon/icon_loading.png b/volume/ninegate/data/public/icon/icon_loading.png
new file mode 100644
index 0000000..a289868
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_loading.png differ
diff --git a/volume/ninegate/data/public/icon/icon_location.png b/volume/ninegate/data/public/icon/icon_location.png
new file mode 100644
index 0000000..d817891
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_location.png differ
diff --git a/volume/ninegate/data/public/icon/icon_locked.png b/volume/ninegate/data/public/icon/icon_locked.png
new file mode 100644
index 0000000..cd8b228
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_locked.png differ
diff --git a/volume/ninegate/data/public/icon/icon_loomio.png b/volume/ninegate/data/public/icon/icon_loomio.png
new file mode 100644
index 0000000..c04741e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_loomio.png differ
diff --git a/volume/ninegate/data/public/icon/icon_magicwand.png b/volume/ninegate/data/public/icon/icon_magicwand.png
new file mode 100644
index 0000000..c52ca5c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_magicwand.png differ
diff --git a/volume/ninegate/data/public/icon/icon_magnifyingglass.png b/volume/ninegate/data/public/icon/icon_magnifyingglass.png
new file mode 100644
index 0000000..0991168
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_magnifyingglass.png differ
diff --git a/volume/ninegate/data/public/icon/icon_mail.png b/volume/ninegate/data/public/icon/icon_mail.png
new file mode 100644
index 0000000..9a62d45
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_mail.png differ
diff --git a/volume/ninegate/data/public/icon/icon_map.png b/volume/ninegate/data/public/icon/icon_map.png
new file mode 100644
index 0000000..8c7febe
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_map.png differ
diff --git a/volume/ninegate/data/public/icon/icon_mariane.png b/volume/ninegate/data/public/icon/icon_mariane.png
new file mode 100644
index 0000000..f6baa92
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_mariane.png differ
diff --git a/volume/ninegate/data/public/icon/icon_megaphone.png b/volume/ninegate/data/public/icon/icon_megaphone.png
new file mode 100644
index 0000000..8154b9c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_megaphone.png differ
diff --git a/volume/ninegate/data/public/icon/icon_megaphone2.png b/volume/ninegate/data/public/icon/icon_megaphone2.png
new file mode 100644
index 0000000..7596de6
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_megaphone2.png differ
diff --git a/volume/ninegate/data/public/icon/icon_memorycard.png b/volume/ninegate/data/public/icon/icon_memorycard.png
new file mode 100644
index 0000000..02b20a6
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_memorycard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_merge.png b/volume/ninegate/data/public/icon/icon_merge.png
new file mode 100644
index 0000000..b5e406c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_merge.png differ
diff --git a/volume/ninegate/data/public/icon/icon_mic.png b/volume/ninegate/data/public/icon/icon_mic.png
new file mode 100644
index 0000000..9343c52
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_mic.png differ
diff --git a/volume/ninegate/data/public/icon/icon_microphone.png b/volume/ninegate/data/public/icon/icon_microphone.png
new file mode 100644
index 0000000..f48af83
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_microphone.png differ
diff --git a/volume/ninegate/data/public/icon/icon_mindmaps.png b/volume/ninegate/data/public/icon/icon_mindmaps.png
new file mode 100644
index 0000000..74a881a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_mindmaps.png differ
diff --git a/volume/ninegate/data/public/icon/icon_money.png b/volume/ninegate/data/public/icon/icon_money.png
new file mode 100644
index 0000000..538c053
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_money.png differ
diff --git a/volume/ninegate/data/public/icon/icon_moodle.png b/volume/ninegate/data/public/icon/icon_moodle.png
new file mode 100644
index 0000000..9633a88
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_moodle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_motorcycle.png b/volume/ninegate/data/public/icon/icon_motorcycle.png
new file mode 100644
index 0000000..3ae8a93
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_motorcycle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_music.png b/volume/ninegate/data/public/icon/icon_music.png
new file mode 100644
index 0000000..8916291
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_music.png differ
diff --git a/volume/ninegate/data/public/icon/icon_news.png b/volume/ninegate/data/public/icon/icon_news.png
new file mode 100644
index 0000000..1863fba
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_news.png differ
diff --git a/volume/ninegate/data/public/icon/icon_nextcloud.png b/volume/ninegate/data/public/icon/icon_nextcloud.png
new file mode 100644
index 0000000..6e70208
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_nextcloud.png differ
diff --git a/volume/ninegate/data/public/icon/icon_nineboard.png b/volume/ninegate/data/public/icon/icon_nineboard.png
new file mode 100644
index 0000000..f84fa12
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_nineboard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_nineschool.png b/volume/ninegate/data/public/icon/icon_nineschool.png
new file mode 100644
index 0000000..7d69e85
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_nineschool.png differ
diff --git a/volume/ninegate/data/public/icon/icon_ninesurvey.png b/volume/ninegate/data/public/icon/icon_ninesurvey.png
new file mode 100644
index 0000000..c2a11c0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_ninesurvey.png differ
diff --git a/volume/ninegate/data/public/icon/icon_onlyoffice.png b/volume/ninegate/data/public/icon/icon_onlyoffice.png
new file mode 100644
index 0000000..1579862
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_onlyoffice.png differ
diff --git a/volume/ninegate/data/public/icon/icon_opensondage.png b/volume/ninegate/data/public/icon/icon_opensondage.png
new file mode 100644
index 0000000..1d6f334
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_opensondage.png differ
diff --git a/volume/ninegate/data/public/icon/icon_paintbrush.png b/volume/ninegate/data/public/icon/icon_paintbrush.png
new file mode 100644
index 0000000..431a595
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_paintbrush.png differ
diff --git a/volume/ninegate/data/public/icon/icon_paintbrush2.png b/volume/ninegate/data/public/icon/icon_paintbrush2.png
new file mode 100644
index 0000000..1e87e0c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_paintbrush2.png differ
diff --git a/volume/ninegate/data/public/icon/icon_paintcan.png b/volume/ninegate/data/public/icon/icon_paintcan.png
new file mode 100644
index 0000000..7f7f605
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_paintcan.png differ
diff --git a/volume/ninegate/data/public/icon/icon_paintroller.png b/volume/ninegate/data/public/icon/icon_paintroller.png
new file mode 100644
index 0000000..472c69f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_paintroller.png differ
diff --git a/volume/ninegate/data/public/icon/icon_parachute.png b/volume/ninegate/data/public/icon/icon_parachute.png
new file mode 100644
index 0000000..856517a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_parachute.png differ
diff --git a/volume/ninegate/data/public/icon/icon_pencil.png b/volume/ninegate/data/public/icon/icon_pencil.png
new file mode 100644
index 0000000..a9c5e54
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_pencil.png differ
diff --git a/volume/ninegate/data/public/icon/icon_phone.png b/volume/ninegate/data/public/icon/icon_phone.png
new file mode 100644
index 0000000..1f49677
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_phone.png differ
diff --git a/volume/ninegate/data/public/icon/icon_phpldapadmin.png b/volume/ninegate/data/public/icon/icon_phpldapadmin.png
new file mode 100644
index 0000000..39a1f48
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_phpldapadmin.png differ
diff --git a/volume/ninegate/data/public/icon/icon_piechart.png b/volume/ninegate/data/public/icon/icon_piechart.png
new file mode 100644
index 0000000..ec74a32
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_piechart.png differ
diff --git a/volume/ninegate/data/public/icon/icon_pin.png b/volume/ninegate/data/public/icon/icon_pin.png
new file mode 100644
index 0000000..cfe3ad5
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_pin.png differ
diff --git a/volume/ninegate/data/public/icon/icon_pin2.png b/volume/ninegate/data/public/icon/icon_pin2.png
new file mode 100644
index 0000000..2ddd41e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_pin2.png differ
diff --git a/volume/ninegate/data/public/icon/icon_piwigo.png b/volume/ninegate/data/public/icon/icon_piwigo.png
new file mode 100644
index 0000000..74c251c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_piwigo.png differ
diff --git a/volume/ninegate/data/public/icon/icon_piwik.png b/volume/ninegate/data/public/icon/icon_piwik.png
new file mode 100644
index 0000000..b98f329
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_piwik.png differ
diff --git a/volume/ninegate/data/public/icon/icon_plane.png b/volume/ninegate/data/public/icon/icon_plane.png
new file mode 100644
index 0000000..f94d6ee
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_plane.png differ
diff --git a/volume/ninegate/data/public/icon/icon_play.png b/volume/ninegate/data/public/icon/icon_play.png
new file mode 100644
index 0000000..04d8d7f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_play.png differ
diff --git a/volume/ninegate/data/public/icon/icon_plugin.png b/volume/ninegate/data/public/icon/icon_plugin.png
new file mode 100644
index 0000000..344e8b5
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_plugin.png differ
diff --git a/volume/ninegate/data/public/icon/icon_polaroid.png b/volume/ninegate/data/public/icon/icon_polaroid.png
new file mode 100644
index 0000000..c1fa5c0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_polaroid.png differ
diff --git a/volume/ninegate/data/public/icon/icon_polaroidcamera.png b/volume/ninegate/data/public/icon/icon_polaroidcamera.png
new file mode 100644
index 0000000..8a7b9d0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_polaroidcamera.png differ
diff --git a/volume/ninegate/data/public/icon/icon_polaroids.png b/volume/ninegate/data/public/icon/icon_polaroids.png
new file mode 100644
index 0000000..d64b72d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_polaroids.png differ
diff --git a/volume/ninegate/data/public/icon/icon_power.png b/volume/ninegate/data/public/icon/icon_power.png
new file mode 100644
index 0000000..d7220f3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_power.png differ
diff --git a/volume/ninegate/data/public/icon/icon_present.png b/volume/ninegate/data/public/icon/icon_present.png
new file mode 100644
index 0000000..40c7836
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_present.png differ
diff --git a/volume/ninegate/data/public/icon/icon_profle.png b/volume/ninegate/data/public/icon/icon_profle.png
new file mode 100644
index 0000000..ccb6b6d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_profle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_quote.png b/volume/ninegate/data/public/icon/icon_quote.png
new file mode 100644
index 0000000..7a70747
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_quote.png differ
diff --git a/volume/ninegate/data/public/icon/icon_racingflags.png b/volume/ninegate/data/public/icon/icon_racingflags.png
new file mode 100644
index 0000000..444a334
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_racingflags.png differ
diff --git a/volume/ninegate/data/public/icon/icon_radio.png b/volume/ninegate/data/public/icon/icon_radio.png
new file mode 100644
index 0000000..b6c250d
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_radio.png differ
diff --git a/volume/ninegate/data/public/icon/icon_radiotower.png b/volume/ninegate/data/public/icon/icon_radiotower.png
new file mode 100644
index 0000000..fc84ad5
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_radiotower.png differ
diff --git a/volume/ninegate/data/public/icon/icon_rainbow.png b/volume/ninegate/data/public/icon/icon_rainbow.png
new file mode 100644
index 0000000..8e56862
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_rainbow.png differ
diff --git a/volume/ninegate/data/public/icon/icon_recycle.png b/volume/ninegate/data/public/icon/icon_recycle.png
new file mode 100644
index 0000000..b10aa59
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_recycle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_rgb.png b/volume/ninegate/data/public/icon/icon_rgb.png
new file mode 100644
index 0000000..b74d24a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_rgb.png differ
diff --git a/volume/ninegate/data/public/icon/icon_ribbon.png b/volume/ninegate/data/public/icon/icon_ribbon.png
new file mode 100644
index 0000000..9c9f94e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_ribbon.png differ
diff --git a/volume/ninegate/data/public/icon/icon_roadblock.png b/volume/ninegate/data/public/icon/icon_roadblock.png
new file mode 100644
index 0000000..2240dd0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_roadblock.png differ
diff --git a/volume/ninegate/data/public/icon/icon_rocket.png b/volume/ninegate/data/public/icon/icon_rocket.png
new file mode 100644
index 0000000..b73e03e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_rocket.png differ
diff --git a/volume/ninegate/data/public/icon/icon_roundcube.png b/volume/ninegate/data/public/icon/icon_roundcube.png
new file mode 100644
index 0000000..77be092
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_roundcube.png differ
diff --git a/volume/ninegate/data/public/icon/icon_rss.png b/volume/ninegate/data/public/icon/icon_rss.png
new file mode 100644
index 0000000..3b77b30
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_rss.png differ
diff --git a/volume/ninegate/data/public/icon/icon_rulertriangle.png b/volume/ninegate/data/public/icon/icon_rulertriangle.png
new file mode 100644
index 0000000..cee3b45
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_rulertriangle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_rundeck.png b/volume/ninegate/data/public/icon/icon_rundeck.png
new file mode 100644
index 0000000..7bde972
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_rundeck.png differ
diff --git a/volume/ninegate/data/public/icon/icon_running.png b/volume/ninegate/data/public/icon/icon_running.png
new file mode 100644
index 0000000..b753946
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_running.png differ
diff --git a/volume/ninegate/data/public/icon/icon_sacoche.png b/volume/ninegate/data/public/icon/icon_sacoche.png
new file mode 100644
index 0000000..d1deb40
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_sacoche.png differ
diff --git a/volume/ninegate/data/public/icon/icon_sailboat.png b/volume/ninegate/data/public/icon/icon_sailboat.png
new file mode 100644
index 0000000..7bdb19c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_sailboat.png differ
diff --git a/volume/ninegate/data/public/icon/icon_schooolbus.png b/volume/ninegate/data/public/icon/icon_schooolbus.png
new file mode 100644
index 0000000..49ea70e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_schooolbus.png differ
diff --git a/volume/ninegate/data/public/icon/icon_scissors.png b/volume/ninegate/data/public/icon/icon_scissors.png
new file mode 100644
index 0000000..842c1c3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_scissors.png differ
diff --git a/volume/ninegate/data/public/icon/icon_scooter.png b/volume/ninegate/data/public/icon/icon_scooter.png
new file mode 100644
index 0000000..2807878
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_scooter.png differ
diff --git a/volume/ninegate/data/public/icon/icon_security.png b/volume/ninegate/data/public/icon/icon_security.png
new file mode 100644
index 0000000..bfddd67
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_security.png differ
diff --git a/volume/ninegate/data/public/icon/icon_selftimer.png b/volume/ninegate/data/public/icon/icon_selftimer.png
new file mode 100644
index 0000000..005832b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_selftimer.png differ
diff --git a/volume/ninegate/data/public/icon/icon_settings.png b/volume/ninegate/data/public/icon/icon_settings.png
new file mode 100644
index 0000000..c2e58bd
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_settings.png differ
diff --git a/volume/ninegate/data/public/icon/icon_shipwheel.png b/volume/ninegate/data/public/icon/icon_shipwheel.png
new file mode 100644
index 0000000..6387e69
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_shipwheel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_shoeprints.png b/volume/ninegate/data/public/icon/icon_shoeprints.png
new file mode 100644
index 0000000..bf6dbb7
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_shoeprints.png differ
diff --git a/volume/ninegate/data/public/icon/icon_shop.png b/volume/ninegate/data/public/icon/icon_shop.png
new file mode 100644
index 0000000..622e89f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_shop.png differ
diff --git a/volume/ninegate/data/public/icon/icon_skateboard.png b/volume/ninegate/data/public/icon/icon_skateboard.png
new file mode 100644
index 0000000..660b5c8
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_skateboard.png differ
diff --git a/volume/ninegate/data/public/icon/icon_slr.png b/volume/ninegate/data/public/icon/icon_slr.png
new file mode 100644
index 0000000..115ab6c
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_slr.png differ
diff --git a/volume/ninegate/data/public/icon/icon_smartphone.png b/volume/ninegate/data/public/icon/icon_smartphone.png
new file mode 100644
index 0000000..bdf5eef
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_smartphone.png differ
diff --git a/volume/ninegate/data/public/icon/icon_spaceshuttle.png b/volume/ninegate/data/public/icon/icon_spaceshuttle.png
new file mode 100644
index 0000000..a438c1f
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_spaceshuttle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_speaker.png b/volume/ninegate/data/public/icon/icon_speaker.png
new file mode 100644
index 0000000..c94065e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_speaker.png differ
diff --git a/volume/ninegate/data/public/icon/icon_speedometer.png b/volume/ninegate/data/public/icon/icon_speedometer.png
new file mode 100644
index 0000000..624bbf3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_speedometer.png differ
diff --git a/volume/ninegate/data/public/icon/icon_spraypaint.png b/volume/ninegate/data/public/icon/icon_spraypaint.png
new file mode 100644
index 0000000..456cfe0
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_spraypaint.png differ
diff --git a/volume/ninegate/data/public/icon/icon_stack.png b/volume/ninegate/data/public/icon/icon_stack.png
new file mode 100644
index 0000000..9a88a27
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_stack.png differ
diff --git a/volume/ninegate/data/public/icon/icon_star.png b/volume/ninegate/data/public/icon/icon_star.png
new file mode 100644
index 0000000..b1deca3
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_star.png differ
diff --git a/volume/ninegate/data/public/icon/icon_steeringwheel.png b/volume/ninegate/data/public/icon/icon_steeringwheel.png
new file mode 100644
index 0000000..b2d7a57
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_steeringwheel.png differ
diff --git a/volume/ninegate/data/public/icon/icon_stop.png b/volume/ninegate/data/public/icon/icon_stop.png
new file mode 100644
index 0000000..d94da0a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_stop.png differ
diff --git a/volume/ninegate/data/public/icon/icon_sub.png b/volume/ninegate/data/public/icon/icon_sub.png
new file mode 100644
index 0000000..542d81a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_sub.png differ
diff --git a/volume/ninegate/data/public/icon/icon_submarine.png b/volume/ninegate/data/public/icon/icon_submarine.png
new file mode 100644
index 0000000..c95c68b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_submarine.png differ
diff --git a/volume/ninegate/data/public/icon/icon_support.png b/volume/ninegate/data/public/icon/icon_support.png
new file mode 100644
index 0000000..1e480c4
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_support.png differ
diff --git a/volume/ninegate/data/public/icon/icon_swatches.png b/volume/ninegate/data/public/icon/icon_swatches.png
new file mode 100644
index 0000000..3afd42e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_swatches.png differ
diff --git a/volume/ninegate/data/public/icon/icon_tablet.png b/volume/ninegate/data/public/icon/icon_tablet.png
new file mode 100644
index 0000000..0d718c2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_tablet.png differ
diff --git a/volume/ninegate/data/public/icon/icon_takeoff.png b/volume/ninegate/data/public/icon/icon_takeoff.png
new file mode 100644
index 0000000..319c94a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_takeoff.png differ
diff --git a/volume/ninegate/data/public/icon/icon_target.png b/volume/ninegate/data/public/icon/icon_target.png
new file mode 100644
index 0000000..3e61236
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_target.png differ
diff --git a/volume/ninegate/data/public/icon/icon_taxi.png b/volume/ninegate/data/public/icon/icon_taxi.png
new file mode 100644
index 0000000..4714269
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_taxi.png differ
diff --git a/volume/ninegate/data/public/icon/icon_tchap.png b/volume/ninegate/data/public/icon/icon_tchap.png
new file mode 100644
index 0000000..fd0be35
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_tchap.png differ
diff --git a/volume/ninegate/data/public/icon/icon_toolbox.png b/volume/ninegate/data/public/icon/icon_toolbox.png
new file mode 100644
index 0000000..52a155e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_toolbox.png differ
diff --git a/volume/ninegate/data/public/icon/icon_tools.png b/volume/ninegate/data/public/icon/icon_tools.png
new file mode 100644
index 0000000..7a10cfd
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_tools.png differ
diff --git a/volume/ninegate/data/public/icon/icon_tractor.png b/volume/ninegate/data/public/icon/icon_tractor.png
new file mode 100644
index 0000000..75ac7b9
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_tractor.png differ
diff --git a/volume/ninegate/data/public/icon/icon_traffic.png b/volume/ninegate/data/public/icon/icon_traffic.png
new file mode 100644
index 0000000..bb7bae2
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_traffic.png differ
diff --git a/volume/ninegate/data/public/icon/icon_train.png b/volume/ninegate/data/public/icon/icon_train.png
new file mode 100644
index 0000000..1ecdd79
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_train.png differ
diff --git a/volume/ninegate/data/public/icon/icon_travelerbag.png b/volume/ninegate/data/public/icon/icon_travelerbag.png
new file mode 100644
index 0000000..bb9d673
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_travelerbag.png differ
diff --git a/volume/ninegate/data/public/icon/icon_trends.png b/volume/ninegate/data/public/icon/icon_trends.png
new file mode 100644
index 0000000..e5ed867
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_trends.png differ
diff --git a/volume/ninegate/data/public/icon/icon_tripod.png b/volume/ninegate/data/public/icon/icon_tripod.png
new file mode 100644
index 0000000..ea8c255
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_tripod.png differ
diff --git a/volume/ninegate/data/public/icon/icon_trophy.png b/volume/ninegate/data/public/icon/icon_trophy.png
new file mode 100644
index 0000000..5413c9b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_trophy.png differ
diff --git a/volume/ninegate/data/public/icon/icon_truck.png b/volume/ninegate/data/public/icon/icon_truck.png
new file mode 100644
index 0000000..4fbc387
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_truck.png differ
diff --git a/volume/ninegate/data/public/icon/icon_tv.png b/volume/ninegate/data/public/icon/icon_tv.png
new file mode 100644
index 0000000..05ef118
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_tv.png differ
diff --git a/volume/ninegate/data/public/icon/icon_typography.png b/volume/ninegate/data/public/icon/icon_typography.png
new file mode 100644
index 0000000..d8807c1
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_typography.png differ
diff --git a/volume/ninegate/data/public/icon/icon_ufo.png b/volume/ninegate/data/public/icon/icon_ufo.png
new file mode 100644
index 0000000..8149060
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_ufo.png differ
diff --git a/volume/ninegate/data/public/icon/icon_umbrella.png b/volume/ninegate/data/public/icon/icon_umbrella.png
new file mode 100644
index 0000000..c63641b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_umbrella.png differ
diff --git a/volume/ninegate/data/public/icon/icon_unicycle.png b/volume/ninegate/data/public/icon/icon_unicycle.png
new file mode 100644
index 0000000..b0a0028
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_unicycle.png differ
diff --git a/volume/ninegate/data/public/icon/icon_unlocked.png b/volume/ninegate/data/public/icon/icon_unlocked.png
new file mode 100644
index 0000000..15676f1
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_unlocked.png differ
diff --git a/volume/ninegate/data/public/icon/icon_upload.png b/volume/ninegate/data/public/icon/icon_upload.png
new file mode 100644
index 0000000..35da78b
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_upload.png differ
diff --git a/volume/ninegate/data/public/icon/icon_users.png b/volume/ninegate/data/public/icon/icon_users.png
new file mode 100644
index 0000000..5ec1a65
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_users.png differ
diff --git a/volume/ninegate/data/public/icon/icon_video.png b/volume/ninegate/data/public/icon/icon_video.png
new file mode 100644
index 0000000..89d115a
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_video.png differ
diff --git a/volume/ninegate/data/public/icon/icon_videocameraclassic.png b/volume/ninegate/data/public/icon/icon_videocameraclassic.png
new file mode 100644
index 0000000..d98b398
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_videocameraclassic.png differ
diff --git a/volume/ninegate/data/public/icon/icon_videocameracompact.png b/volume/ninegate/data/public/icon/icon_videocameracompact.png
new file mode 100644
index 0000000..177c39e
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_videocameracompact.png differ
diff --git a/volume/ninegate/data/public/icon/icon_volume.png b/volume/ninegate/data/public/icon/icon_volume.png
new file mode 100644
index 0000000..b8c32a9
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_volume.png differ
diff --git a/volume/ninegate/data/public/icon/icon_water.png b/volume/ninegate/data/public/icon/icon_water.png
new file mode 100644
index 0000000..9bc5352
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_water.png differ
diff --git a/volume/ninegate/data/public/icon/icon_windsock.png b/volume/ninegate/data/public/icon/icon_windsock.png
new file mode 100644
index 0000000..9fedbf8
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_windsock.png differ
diff --git a/volume/ninegate/data/public/icon/icon_windy.png b/volume/ninegate/data/public/icon/icon_windy.png
new file mode 100644
index 0000000..3c56630
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_windy.png differ
diff --git a/volume/ninegate/data/public/icon/icon_wordpress.png b/volume/ninegate/data/public/icon/icon_wordpress.png
new file mode 100644
index 0000000..92d5b18
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_wordpress.png differ
diff --git a/volume/ninegate/data/public/icon/icon_zoomin.png b/volume/ninegate/data/public/icon/icon_zoomin.png
new file mode 100644
index 0000000..9579726
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_zoomin.png differ
diff --git a/volume/ninegate/data/public/icon/icon_zoomout.png b/volume/ninegate/data/public/icon/icon_zoomout.png
new file mode 100644
index 0000000..597e585
Binary files /dev/null and b/volume/ninegate/data/public/icon/icon_zoomout.png differ
diff --git a/volume/ninegate/data/public/logo/logo.png b/volume/ninegate/data/public/logo/logo.png
new file mode 100755
index 0000000..ce9d911
Binary files /dev/null and b/volume/ninegate/data/public/logo/logo.png differ