diff --git a/dist/docker/server/debian/common/autostart.sh b/dist/docker/server/debian/common/autostart.sh
index 6b2af074c..579198240 100755
--- a/dist/docker/server/debian/common/autostart.sh
+++ b/dist/docker/server/debian/common/autostart.sh
@@ -1,4 +1,21 @@
#!/bin/bash
+#
+# Scritp to launch server khanat
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
declare METHOD_START=$1
@@ -11,6 +28,8 @@ tmp=$(hostname -I)
export addressip=${tmp//[[:blank:]]/}
sed -i -r 's/(FSListenHost)(.*)(=)(.*)(;)/FSListenHost = "'"$addressip"'";/g' $KHANAT_PATH/server/frontend_service.cfg || exit 2
+/opt/prepare_start_server.sh || exit 2
+
if [[ $METHOD_START -eq 1 ]]
then
export RYZOM_PATH=$KHANAT_PATH
@@ -19,7 +38,7 @@ elif [[ $METHOD_START -eq 2 ]]
then
bash /opt/launch_services.sh
sleep 10
- tail -f /home/gameserver/khanat/server/log/log.log
+ tail -n+0 -f /home/gameserver/khanat/server/log/log.log
else
bash /opt/launch_services.sh
sleep 10
diff --git a/dist/docker/server/debian/common/configure_apache.sh b/dist/docker/server/debian/common/configure_apache.sh
new file mode 100755
index 000000000..9b7fd2c3c
--- /dev/null
+++ b/dist/docker/server/debian/common/configure_apache.sh
@@ -0,0 +1,134 @@
+#!/bin/bash
+#
+# Configure apache
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+echo "CONFIGURE APACHE"
+
+if [[ ! -f /home/gameserver/.bashrc ]]
+then
+ echo "ERROR - missing /home/gameserver/.bashrc"
+ exit 2
+fi
+
+# load environment
+source /home/gameserver/.bashrc
+
+# Create directory use for patch server
+#mkdir -p $KHANAT_PATH/khanatweb/public_php/
+mkdir -p $PATCH_CLIENT_SYSTEM/patch_game/patch
+
+# configure apache
+cat << EOF > /etc/apache2/sites-available/000-default.conf
+# Default
+
+
+ Options Indexes FollowSymLinks
+ AllowOverride None
+ Require all granted
+ DirectoryIndex index.php
+ AddType text/html .php .phps
+ AddHandler application/x-httpd-php .php
+ AddHandler application/x-httpd-php-source .phps
+
+ ServerName lirria.khaganat.net
+
+ ServerAdmin webmaster@localhost
+ DocumentRoot $KHANAT_PATH/khanatweb/public_php/
+
+ ErrorLog \${APACHE_LOG_DIR}/error.log
+ CustomLog \${APACHE_LOG_DIR}/access.log combined
+
+
+# Khanat Server Web
+
+
+ Options Indexes FollowSymLinks
+ AllowOverride None
+ Require all granted
+
+ ServerName lirria.khaganat.net
+
+ ServerAdmin admin@localhost
+ DocumentRoot $KHANAT_PATH/khanatweb/public_php
+
+ ErrorLog \${APACHE_LOG_DIR}/error.log
+ CustomLog \${APACHE_LOG_DIR}/access.log combined
+
+
+# Patch Server
+
+ ServerName lirria.khaganat.net
+ DocumentRoot $PATCH_HOME/patch_service/patch_game/patch/
+
+
+ Options -Indexes
+ AllowOverride All
+ Require all granted
+
+
+EOF
+
+# Open port use by apache
+cat << EOF > /etc/apache2/ports.conf
+# If you just change the port or add more ports here, you will likely also
+# have to change the VirtualHost statement in
+# /etc/apache2/sites-enabled/000-default.conf
+
+Listen 80
+Listen 40916
+Listen 43435
+
+
+ Listen 443
+
+
+
+ Listen 443
+
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
+EOF
+
+
+# Activate php - strange beacause we have only index.php (without php code !)
+cat << EOF > /etc/apache2/conf-available/patch_service.conf
+Alias /patch /home/gameserver/patch_service/patch_game/patch
+
+ Options FollowSymLinks
+ DirectoryIndex index.php
+
+ Require all granted
+
+
+
+ AddType application/x-httpd-php .php
+
+
+ SetHandler application/x-httpd-php
+
+
+
+EOF
+
+# Activate & deploy new configuration
+a2enconf patch_service.conf
+
+
+# Restart apache
+service apache2 restart || exit 2
+
diff --git a/dist/docker/server/debian/common/configure_database.sh b/dist/docker/server/debian/common/configure_database.sh
new file mode 100755
index 000000000..cc905659d
--- /dev/null
+++ b/dist/docker/server/debian/common/configure_database.sh
@@ -0,0 +1,134 @@
+#!/bin/bash
+#
+# Configure database
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+
+echo "CONFIGURE DATABASE"
+
+export KHANAT_CLIENT_VERSION=1
+if [[ ! -f /home/gameserver/.bashrc ]]
+then
+ echo "ERROR - missing /home/gameserver/.bashrc"
+ exit 2
+fi
+
+# load environment
+source /home/gameserver/.bashrc
+
+# start/restart service mysql & apache
+service mysql restart || exit 2
+
+# Create account shard on MySQL
+mysql -u root -e "CREATE USER 'shard'@'localhost' IDENTIFIED BY '';" || exit 2
+mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'shard'@'localhost' WITH GRANT OPTION;" || exit 2
+
+# launch web configuration for khanat
+curl 'http://localhost:40916/setup/install.php' \
+ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
+ -H 'Accept-Language: en-US' \
+ -H 'Connection: keep-alive' \
+ -H 'Cookie: PHPSESSID=9jr1ssig58929bp777nrj2fa92' \
+ -H 'DNT: 1' \
+ -H 'Host: localhost:40916' \
+ -H 'Referer: http://localhost:40916/setup/install.php' \
+ -H 'Upgrade-Insecure-Requests: 1' \
+ -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \
+ -H 'Content-Type: application/x-www-form-urlencoded' \
+ --data 'roleService=on'\
+'&roleSupport=on'\
+'&roleDomain=on'\
+'&privatePhpDirectory=..%2Fprivate_php%2F'\
+'&nelSetupPassword=admin'\
+'&nelSqlHostname=localhost'\
+'&nelSqlUsername=root'\
+'&nelSqlPassword='\
+'&nelDatabase=nel'\
+'&toolDatabase=nel_tool'\
+'&toolsAdminUsername=admin'\
+'&toolsAdminPassword=admin'\
+'&amsSqlHostname=localhost'\
+'&amsSqlUsername=root'\
+'&amsSqlPassword='\
+'&amsDatabase=nel_ams'\
+'&amsLibDatabase=nel_ams_lib'\
+'&amsAdminUsername=admin'\
+'&amsAdminPassword=admin'\
+'&nelDomainName=Lirria'\
+'&domainDatabase=ring_mini01'\
+'&submit=Configure' \
+ -o /opt/setup.log || exit 2
+
+# Check account is create
+grep "Domain role successfully installed" /opt/setup.log >/dev/null || exit 2
+
+# Get IP ADDRESS
+tmp=$(hostname -I)
+export addressip=${tmp//[[:blank:]]/}
+
+## Configure Domain
+mysql -u root -e "use nel;
+INSERT INTO nel.domain (domain_id, domain_name, status, patch_version, backup_patch_url, patch_urls, login_address, session_manager_address, ring_db_name, web_host, web_host_php, description) VALUES ('12', 'Lirria', 'ds_open', '$KHANAT_CLIENT_VERSION', '$addressip:23001', '$addressip/patch', '$addressip:49998', '$addressip:49999', 'ring_mini01', '$addressip:30000', '$addressip:40916', NULL);" || exit 2
+
+# Configure nel.shard
+mysql -u root -e "use nel;
+INSERT INTO nel.shard (ShardId, domain_id, WsAddr, NbPlayers, Name, Online, Version, FixedSessionId, State, MOTD) VALUES ('302', '12', '$addressip:', '0', 'Lirria shard', '0', '', '0', 'ds_open', '');" || exit 2
+
+# Configure nel_tool.neltool_domains
+mysql -u root -e "use nel;
+INSERT INTO nel_tool.neltool_domains (domain_id, domain_name, domain_as_host, domain_as_port, domain_rrd_path, domain_las_admin_path, domain_las_local_path, domain_application, domain_sql_string, domain_hd_check, domain_mfs_web, domain_cs_sql_string) VALUES ('12', 'Lirria', '$addressip', '46700', '/home/gameserver/khanat/server/save_shard/rrd_graphs', '', '', 'ryzom_open', '', '0', NULL, NULL);" || exit 2
+
+# configure nel_tool.neltool_shards
+mysql -u root -e "use nel;
+INSERT INTO nel_tool.neltool_shards (shard_id, shard_name, shard_as_id, shard_domain_id, shard_lang, shard_restart) VALUES ('302', 'open', 'open', '12', 'fr', '0');" || exit 2
+
+# configure nel_tool.neltool_user_domains
+mysql -u root -e "use nel;
+INSERT INTO nel_tool.neltool_user_domains (user_domain_id, user_domain_user_id, user_domain_domain_id) VALUES ('1', '1', '12');" || exit 2
+
+# configure nel_tool.neltool_user_shards
+mysql -u root -e "use nel;
+INSERT INTO nel_tool.neltool_user_shards (user_shard_id, user_shard_user_id, user_shard_shard_id, user_shard_domain_id) VALUES ('1', '1', '302', '12');" || exit 2
+
+# configure ring_mini01.sessions
+mysql -u root -e "use ring_mini01;
+INSERT INTO ring_mini01.sessions (session_id, session_type, title, owner, plan_date, start_date, description, orientation, level, rule_type, access_type, state, host_shard_id, subscription_slots, reserved_slots, free_slots, estimated_duration, final_duration, folder_id, lang, icone, anim_mode, race_filter, religion_filter, guild_filter, shard_filter, level_filter, subscription_closed, newcomer) VALUES ('302', 'st_mainland', '', '0', '2005-09-21 12:41:33.000000', '2005-08-31 00:00:00.000000', '', 'so_other', 'sl_a', 'rt_strict', 'at_private', 'ss_planned', '0', '0', '0', '0', 'et_short', '0', '0', '', '', 'am_dm', '', '', 'gf_only_my_guild', 'sf_shard00,sf_shard01,sf_shard02,sf_shard03,sf_shard04,sf_shard05,sf_shard06,sf_shard07,sf_shard08,sf_shard09,sf_shard10,sf_shard11,sf_shard12,sf_shard13,sf_shard14,sf_shard15,sf_shard16,sf_shard17,sf_shard18,sf_shard19,sf_shard20,sf_shard21,sf_shard22,sf_shard23,sf_shard24,sf_shard25,sf_shard26,sf_shard27,sf_shard28,sf_shard29,sf_shard30', 'lf_a,lf_b,lf_c,lf_d,lf_e,lf_f', '0', '0');" || exit 2
+
+
+## Create one user 'tester' (password : tester)
+declare accountuser="tester"
+declare passworduser="tester"
+curl 'http://localhost:40916/ams/index.php' \
+ -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
+ -H 'Accept-Language: en-US' \
+ -H 'Connection: keep-alive' \
+ -H 'Cookie: PHPSESSID=lsoumn9f0ljgm3vo3hgjdead03' \
+ -H 'DNT: 1' \
+ -H 'Host: localhost:40916' \
+ -H 'Referer: http://localhost:40916/ams/index.php?page=register' \
+ -H 'Upgrade-Insecure-Requests: 1' \
+ -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \
+ -H 'Content-Type: application/x-www-form-urlencoded' \
+ --data 'Username='"$accountuser"'&Password='"$passworduser"'&ConfirmPass=tester&Email=tester%40get2mail.fr&TaC=on&function=add_user' \
+ -o /opt/account_tester.log || exit 2
+
+# configure nel.permission
+mysql -u root -e "use nel;
+UPDATE nel.permission SET AccessPrivilege = 'OPEN,DEV,RESTRICTED';
+" || exit 2
+
+
diff --git a/dist/docker/server/debian/common/configure_environment.sh b/dist/docker/server/debian/common/configure_environment.sh
new file mode 100755
index 000000000..27a73cd45
--- /dev/null
+++ b/dist/docker/server/debian/common/configure_environment.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+#
+# Configure environment
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+
+echo "CONFIGURE ENVIRONMENT"
+
+# configure environment
+cat << EOF > /opt/shard.sh
+export KHANAT_HOME=/home/gameserver
+export KHANAT_PATH=/home/gameserver/khanat
+export PATH=\$PATH:/usr/local/bin:/usr/local/sbin:\$KHANAT_PATH/tools/scripts/linux
+export KHANAT_DATA=/home/gameserver/khanat-ressources
+export PATCH_HOME=/home/gameserver
+export PATCH_CLIENT_SYSTEM=\$PATCH_HOME/patch_service
+EOF
+
+# configure environment
+cat << EOF > /home/gameserver/.bashrc
+export KHANAT_HOME=/home/gameserver
+export KHANAT_PATH=/home/gameserver/khanat
+export PATH=\$PATH:/usr/local/bin:\$KHANAT_PATH/tools/scripts/linux
+export KHANAT_DATA=/home/gameserver/khanat-ressources
+export PATCH_HOME=/home/gameserver
+export PATCH_CLIENT_SYSTEM=\$PATCH_HOME/patch_service
+EOF
+
+# load environment
+source /home/gameserver/.bashrc
+
+# Initialize ssh
+/etc/init.d/ssh restart
+
+
+
diff --git a/dist/docker/server/debian/common/init-basic.sh b/dist/docker/server/debian/common/init-basic.sh
index 125a239ff..723161fe7 100755
--- a/dist/docker/server/debian/common/init-basic.sh
+++ b/dist/docker/server/debian/common/init-basic.sh
@@ -1,7 +1,20 @@
#!/bin/bash
-####################################
+# Install all package we need to prepare and install khanat server
#
-####################################
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
echo "Start Basic"
diff --git a/dist/docker/server/debian/common/init-khanat.sh b/dist/docker/server/debian/common/init-khanat.sh
index e6f671350..53c43ac87 100755
--- a/dist/docker/server/debian/common/init-khanat.sh
+++ b/dist/docker/server/debian/common/init-khanat.sh
@@ -1,509 +1,29 @@
#!/bin/bash
+# Script to initialize khanat server
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
# /opt/dist/docker/server/init-khanat.sh
-# install new package
-cd /; tar xzf /opt/ryzomcore.tar.gz --strip 1 || exit 2
-cd /opt; tar xzf ryzom-ressources.tar.gz || exit 2
-
-
-# configure environment
-cat << EOF > /opt/shard.sh
-export KHANAT_HOME=/home/gameserver
-export KHANAT_PATH=/home/gameserver/khanat
-export PATH=\$PATH:/usr/local/bin:/usr/local/sbin:\$KHANAT_PATH/tools/scripts/linux
-export KHANAT_DATA=/home/gameserver/khanat-ressources
-export PATCH_HOME=/home/gameserver
-export PATCH_CLIENT_SYSTEM=\$PATCH_HOME/patch_service
-EOF
-
-# configure environment
-cat << EOF > /home/gameserver/.bashrc
-export KHANAT_HOME=/home/gameserver
-export KHANAT_PATH=/home/gameserver/khanat
-export PATH=\$PATH:/usr/local/bin:\$KHANAT_PATH/tools/scripts/linux
-export KHANAT_DATA=/home/gameserver/khanat-ressources
-export PATCH_HOME=/home/gameserver
-export PATCH_CLIENT_SYSTEM=\$PATCH_HOME/patch_service
-EOF
-
-# load environment
-source /opt/shard.sh
-
-if [[ -f /opt/khanat_config.sh ]]
-then
- echo "Configuration loaded"
- source /opt/khanat_config.sh
- echo "KHANAT_CLIENT_VERSION:$KHANAT_CLIENT_VERSION"
-fi
-
-mkdir -p $KHANAT_HOME $KHANAT_PATH $PATH || exit 2
-
-mkdir -p $KHANAT_DATA/ressources
-(cd $KHANAT_DATA; tar xzf /opt/khanat-ressources.tar.gz) || exit 2
-#cp -r /opt/ressources $KHANAT_DATA || exit 2
-
-mkdir -p $KHANAT_PATH/tools/scripts/linux
-cp -r /opt/code/ryzom/tools/scripts/linux/* $KHANAT_PATH/tools/scripts/linux || exit 2
-
-# configure ryzom
-mkdir -p $KHANAT_PATH/server || exit 2
-cp -r /opt/code/ryzom/common/ $KHANAT_PATH/common || exit 2
-cp -r /opt/code/ryzom/client/ $KHANAT_PATH/client || exit 2
-cp /opt/code/ryzom/server/*.cfg $KHANAT_PATH/server/. || exit 2
-sed -i -r 's/(FSListenHost)(.*)(=)(.*)(;)/FSListenHost = "localhost";/g' $KHANAT_PATH/server/frontend_service.cfg || exit 2
-sed -i -r 's/(DBHost)(.*)(=)(.*)(;)/DBHost = "localhost";/g' $KHANAT_PATH/server/sql.cfg || exit 2
-sed -i -r 's/(DBRingName)(.*)(=)(.*)(;)/ DBRingName = "ring_mini01";/g' $KHANAT_PATH/server/sql.cfg || exit 2
-
-# install web ryzom
-cp -r /opt/code/web $KHANAT_PATH/khanatweb || exit 2
-
-chmod -R a+w $KHANAT_PATH/khanatweb || exit 2
-chown -R www-data:www-data $KHANAT_PATH/khanatweb || exit 2
-
-# configure apache
-cat << EOF > /etc/apache2/sites-available/000-default.conf
-
-
- Options Indexes FollowSymLinks
- AllowOverride None
- Require all granted
- DirectoryIndex index.php
- AddType text/html .php .phps
- AddHandler application/x-httpd-php .php
- AddHandler application/x-httpd-php-source .phps
-
- ServerName lirria.khaganat.net
-
- ServerAdmin webmaster@localhost
- DocumentRoot $KHANAT_PATH/khanatweb/public_php/
-
- ErrorLog \${APACHE_LOG_DIR}/error.log
- CustomLog \${APACHE_LOG_DIR}/access.log combined
-
-
-
-
- Options Indexes FollowSymLinks
- AllowOverride None
- Require all granted
-
- ServerName lirria.khaganat.net
-
- ServerAdmin admin@localhost
- DocumentRoot $KHANAT_PATH/khanatweb/public_php
-
- ErrorLog \${APACHE_LOG_DIR}/error.log
- CustomLog \${APACHE_LOG_DIR}/access.log combined
-
-
-
- ServerName lirria.khaganat.net
- DocumentRoot $PATCH_HOME/patch_service/patch_game/patch/
-
-
- Options -Indexes
- AllowOverride All
- Require all granted
-
-
-EOF
-
-cat << EOF > /etc/apache2/ports.conf
-# If you just change the port or add more ports here, you will likely also
-# have to change the VirtualHost statement in
-# /etc/apache2/sites-enabled/000-default.conf
-
-Listen 80
-Listen 40916
-Listen 43435
-
-
- Listen 443
-
-
-
- Listen 443
-
-
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
-EOF
-
-# start/restart service mysql & apache
-service mysql restart || exit 2
-service apache2 restart || exit 2
-
-mysql -u root -e "CREATE USER 'shard'@'localhost' IDENTIFIED BY '';" || exit 2
-mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'shard'@'localhost' WITH GRANT OPTION;" || exit 2
-
-## DATABASE
-
-# launch web configuration for khanat
-# -H 'Accept-Encoding: gzip, deflate'
-curl 'http://localhost:40916/setup/install.php' \
- -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
- -H 'Accept-Language: en-US' \
- -H 'Connection: keep-alive' \
- -H 'Cookie: PHPSESSID=9jr1ssig58929bp777nrj2fa92' \
- -H 'DNT: 1' \
- -H 'Host: localhost:40916' \
- -H 'Referer: http://localhost:40916/setup/install.php' \
- -H 'Upgrade-Insecure-Requests: 1' \
- -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \
- -H 'Content-Type: application/x-www-form-urlencoded' \
- --data 'roleService=on'\
-'&roleSupport=on'\
-'&roleDomain=on'\
-'&privatePhpDirectory=..%2Fprivate_php%2F'\
-'&nelSetupPassword=admin'\
-'&nelSqlHostname=localhost'\
-'&nelSqlUsername=root'\
-'&nelSqlPassword='\
-'&nelDatabase=nel'\
-'&toolDatabase=nel_tool'\
-'&toolsAdminUsername=admin'\
-'&toolsAdminPassword=admin'\
-'&amsSqlHostname=localhost'\
-'&amsSqlUsername=root'\
-'&amsSqlPassword='\
-'&amsDatabase=nel_ams'\
-'&amsLibDatabase=nel_ams_lib'\
-'&amsAdminUsername=admin'\
-'&amsAdminPassword=admin'\
-'&nelDomainName=Lirria'\
-'&domainDatabase=ring_mini01'\
-'&submit=Configure' \
- -o /opt/setup.log || exit 2
-
-grep "Domain role successfully installed" /opt/setup.log >/dev/null || exit 2
-
-# configure domain
-tmp=$(hostname -I)
-export addressip=${tmp//[[:blank:]]/}
-mysql -u root -e "use nel;
-INSERT INTO nel.domain (domain_id, domain_name, status, patch_version, backup_patch_url, patch_urls, login_address, session_manager_address, ring_db_name, web_host, web_host_php, description) VALUES ('12', 'Lirria', 'ds_open', '$KHANAT_CLIENT_VERSION', '$addressip:23001', '$addressip/patch', '$addressip:49998', '$addressip:49999', 'ring_mini01', '$addressip:30000', '$addressip:40916', NULL);" || exit 2
-
-mysql -u root -e "use nel;
-INSERT INTO nel.shard (ShardId, domain_id, WsAddr, NbPlayers, Name, Online, Version, FixedSessionId, State, MOTD) VALUES ('302', '12', '$addressip:', '0', 'Lirria shard', '0', '', '0', 'ds_open', '');" || exit 2
-
-mysql -u root -e "use nel;
-INSERT INTO nel_tool.neltool_domains (domain_id, domain_name, domain_as_host, domain_as_port, domain_rrd_path, domain_las_admin_path, domain_las_local_path, domain_application, domain_sql_string, domain_hd_check, domain_mfs_web, domain_cs_sql_string) VALUES ('12', 'Lirria', '$addressip', '46700', '/home/gameserver/khanat/server/save_shard/rrd_graphs', '', '', 'ryzom_open', '', '0', NULL, NULL);" || exit 2
-
-mysql -u root -e "use nel;
-INSERT INTO nel_tool.neltool_shards (shard_id, shard_name, shard_as_id, shard_domain_id, shard_lang, shard_restart) VALUES ('302', 'open', 'open', '12', 'fr', '0');" || exit 2
-
-mysql -u root -e "use nel;
-INSERT INTO nel_tool.neltool_user_domains (user_domain_id, user_domain_user_id, user_domain_domain_id) VALUES ('1', '1', '12');" || exit 2
-
-mysql -u root -e "use nel;
-INSERT INTO nel_tool.neltool_user_shards (user_shard_id, user_shard_user_id, user_shard_shard_id, user_shard_domain_id) VALUES ('1', '1', '302', '12');" || exit 2
-
-mysql -u root -e "use ring_mini01;
-INSERT INTO ring_mini01.sessions (session_id, session_type, title, owner, plan_date, start_date, description, orientation, level, rule_type, access_type, state, host_shard_id, subscription_slots, reserved_slots, free_slots, estimated_duration, final_duration, folder_id, lang, icone, anim_mode, race_filter, religion_filter, guild_filter, shard_filter, level_filter, subscription_closed, newcomer) VALUES ('302', 'st_mainland', '', '0', '2005-09-21 12:41:33.000000', '2005-08-31 00:00:00.000000', '', 'so_other', 'sl_a', 'rt_strict', 'at_private', 'ss_planned', '0', '0', '0', '0', 'et_short', '0', '0', '', '', 'am_dm', '', '', 'gf_only_my_guild', 'sf_shard00,sf_shard01,sf_shard02,sf_shard03,sf_shard04,sf_shard05,sf_shard06,sf_shard07,sf_shard08,sf_shard09,sf_shard10,sf_shard11,sf_shard12,sf_shard13,sf_shard14,sf_shard15,sf_shard16,sf_shard17,sf_shard18,sf_shard19,sf_shard20,sf_shard21,sf_shard22,sf_shard23,sf_shard24,sf_shard25,sf_shard26,sf_shard27,sf_shard28,sf_shard29,sf_shard30', 'lf_a,lf_b,lf_c,lf_d,lf_e,lf_f', '0', '0');" || exit 2
-
-## Create an user
-# tester / tester
-curl 'http://localhost:40916/ams/index.php' \
- -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
- -H 'Accept-Language: en-US' \
- -H 'Connection: keep-alive' \
- -H 'Cookie: PHPSESSID=lsoumn9f0ljgm3vo3hgjdead03' \
- -H 'DNT: 1' \
- -H 'Host: localhost:40916' \
- -H 'Referer: http://localhost:40916/ams/index.php?page=register' \
- -H 'Upgrade-Insecure-Requests: 1' \
- -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0) Gecko/20100101 Firefox/6.0' \
- -H 'Content-Type: application/x-www-form-urlencoded' \
- --data 'Username=tester&Password=tester&ConfirmPass=tester&Email=tester%40get2mail.fr&TaC=on&function=add_user' \
- -o /opt/account_tester.log || exit 2
-
-mysql -u root -e "use nel;
-UPDATE nel.permission SET AccessPrivilege = 'OPEN,DEV,RESTRICTED';
-" || exit 2
-
-###
-
-# create link resource
-# Les dossiers :
-ln -s $KHANAT_DATA/collisions $KHANAT_PATH/server/
-ln -s $KHANAT_DATA/leveldesign $KHANAT_PATH/server/
-ln -s $KHANAT_DATA/primitives $KHANAT_PATH/server/
-ln -s $KHANAT_DATA/translation $KHANAT_PATH/server/
-ln -s $KHANAT_DATA/continents $KHANAT_PATH/server/
-ln -s $KHANAT_DATA/common $KHANAT_PATH/server/
-
-# Les fichiers :
-mkdir -p $KHANAT_PATH/server/data_shard
-cp -r /opt/code/ryzom/server/data_shard/* $KHANAT_PATH/server/data_shard/.
-ln -s $KHANAT_DATA/shard/su/dev_gm_names.xml $KHANAT_PATH/server/data_shard/dev_gm_names.xml
-ln -s $KHANAT_DATA/shard/su/invalid_entity_names.txt $KHANAT_PATH/server/data_shard/invalid_entity_names.txt
-ln -s $KHANAT_DATA/shard/su/reserved_names.xml $KHANAT_PATH/server/data_shard/reserved_names.xml
-ln -s $KHANAT_DATA/shard/egs/game_event.txt $KHANAT_PATH/server/data_shard/game_event.txt
-ln -s $KHANAT_DATA/shard/egs/mission_queues.txt $KHANAT_PATH/server/data_shard/mission_queues.txt
-ln -s $KHANAT_DATA/shard/egs/named_items.txt $KHANAT_PATH/server/data_shard/named_items.txt
-
-mkdir -p $KHANAT_DATA/mirror_sheets
-cp -r /opt/code/ryzom/server/data_shard/mirror_sheets/* $KHANAT_DATA/mirror_sheets
-
-# Generate data
-cd /usr/local; /usr/local/bin/make_sheet_id \
- -o$KHANAT_DATA/leveldesign/game_elem/sheet_id.bin \
- $KHANAT_DATA/leveldesign/game_elem \
- $KHANAT_DATA/leveldesign/game_element \
- $KHANAT_DATA/leveldesign/world \
- $KHANAT_DATA/leveldesign/ecosystems \
- $KHANAT_DATA/sound \
- $KHANAT_DATA/mirror_sheets || exit 2
-
-rm -rf /opt/sheets_packer/*
-mkdir -p /opt/sheets_packer/common /opt/sheets_packer/khanat-ressources /opt/sheets_packer/client
-cat << EOF > /opt/sheets_packer/sheets_packer.cfg
-/////////////////////////////////
-/////////////////////////////////
-/// SHEETS PACKER CONFIG FILE ///
-/////////////////////////////////
-/////////////////////////////////
-DataPath = { "/opt/sheets_packer/common/data_leveldesign",
- "/opt/sheets_packer/common/data_common",
- "/opt/sheets_packer/client/data",
- "/opt/sheets_packer/khanat-ressources/common",
- "/opt/sheets_packer/khanat-ressources/leveldesign",
- "/opt/sheets_packer/khanat-ressources/primitives" };
-WorldSheet = "ryzom.world";
-PrimitivesPath = "/opt/sheets_packer/khanat-ressources/primitives";
-OutputDataPath = "/opt/sheets_packer/client/data";
-LigoPrimitiveClass = "world_editor_classes.xml";
-DumpVisualSlotsIndex = 1;
-EOF
-
-cp -r /opt/code/ryzom/common/* /opt/sheets_packer/common || exit 2
-cp -r $KHANAT_DATA/* /opt/sheets_packer/khanat-ressources || exit 2
-cp -r /opt/code/ryzom/client/* /opt/sheets_packer/client || exit 2
-cd /opt/sheets_packer; sheets_packer || exit 2
-cp /opt/sheets_packer/visual_slot.tab $KHANAT_PATH/common/data_common/visual_slot.tab || exit 2
-cp /opt/sheets_packer/visual_slot.tab $KHANAT_PATH/client/data/visual_slot.tab || exit 2
-
-
-for var in $KHANAT_DATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done
-for var in $KHANAT_DATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done
-for var in $KHANAT_DATA/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_ru}; done
-
-# Copy default screen configuration
-cp /opt/code/ryzom/server/shard.screen.rc $KHANAT_PATH/server/shard.screen.rc
-sed -i -r 's/\$RYZOM_PATH\/\.\.\/build\/bin\///g' $KHANAT_PATH/server/shard.screen.rc
-
-ln -s /usr/local /home/gameserver/build
-
-## Initialize ssh
-/etc/init.d/ssh restart
-
-# create default directory for rrd data
-mkdir -p $KHANAT_PATH/server/save_shard/rrd_graphs
-
-
-## See on https://ryzomcore.atlassian.net/wiki/display/RC/Configure+Linux+Web+Services
-#mkdir -p $KHANAT_PATH/tools/server/admin/graphs_output
-#mkdir -p $KHANAT_PATH/tools/server/admin/templates/default_c
-#mkdir -p $KHANAT_PATH/tools/server/www/login/logs
-#mkdir -p $KHANAT_PATH/tools/server/ryzom_ams/www/
-#mkdir -p $KHANAT_PATH/tools/server/ryzom_ams/www/html/cache
-#mkdir -p $KHANAT_PATH/tools/server/ryzom_ams/www/html/templates_c
-#shard
-
-#
-# Serveur Patch
-# Account use : gameserver
-
-# Generate data to client
-echo "PATCH - CREATE DIRECTORY"
-echo "PATCH_HOME:$PATCH_HOME"
-echo "PATCH_CLIENT_SYSTEM:$PATCH_CLIENT_SYSTEM"
-mkdir -p $PATCH_HOME/patch_service/dataserver || exit 2
-
-# Search le nombre de langue
-listlang=$(ls $KHANAT_DATA/translation/translated | cut -f 1 -d '.' | sed 's/^.*\(.\{2\}\)$/\1/' | sort | uniq)
-echo "LIST LANG : $listlang"
-
-for lang in $listlang
-do
- echo "create dir : $PATCH_HOME/patch_service/dataserver/kh_translate_$lang"
- mkdir -p $PATCH_HOME/patch_service/dataserver/kh_translate_$lang || exit 2
-done
-mkdir -p $PATCH_HOME/patch_service/kh_server || exit 2
-mkdir -p $PATCH_HOME/patch_service/dataserver || exit 2
-mkdir -p $PATCH_CLIENT_SYSTEM/patch_game/bnp/
-
-echo "COPY DATA TO GENERATE PATCH"
-cp $KHANAT_PATH/common/data_common/database.xml $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
-cp $KHANAT_PATH/common/data_common/msg.xml $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
-cp /opt/sheets_packer/client/data/*.packed_sheets $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
-cp /opt/sheets_packer/client/data/*.packed $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
-cp $KHANAT_PATH/common/data_common/visual_slot.tab $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
-cp $KHANAT_DATA/leveldesign/game_elem/sheet_id.bin $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
-
-
-cd $PATCH_HOME/patch_service/dataserver; tar xzf /opt/khanat-data-client.tar.gz || exit 2
-
-# language : copy to client (to generate client patch)
-for lang in $listlang
-do
- cp $KHANAT_DATA/translation/translated/*$lang.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_$lang/ || exit 2
-done
-
-echo "GENERATE PATCH"
-for lang in $listlang
-do
- cd $PATCH_CLIENT_SYSTEM/dataserver/; bnp_make -p kh_translate_$lang || exit 2
-done
-
-# tous les bnp de khanat-data-client
-cd $PATCH_HOME/patch_service/dataserver/data/; bnp_make -p fonts || exit 2
-for dir in $PATCH_HOME/patch_service/dataserver/data/kh/*
-do
- cd $dir/..; bnp_make -p $(basename $dir) || exit 2
-done
-
-#for dir in $PATCH_HOME/patch_service/dataserver/data/kh_shard/*
-#do
-# cd $dir/..; bnp_make -p $(basename $dir) || exit 2
-#done
-
-for dir in $PATCH_HOME/patch_service/dataserver/data/ryz/*
-do
- cd $dir/..; bnp_make -p $(basename $dir) || exit 2
-done
-
-## TODO - check how generate '.ref' files
-for dir in $PATCH_HOME/patch_service/dataserver/client/*
-do
- cd $dir/..; bnp_make -p $(basename $dir) || exit 2
-done
-for file in $PATCH_HOME/patch_service/dataserver/client/*.bnp
-do
- mv "$file" "${file%.bnp}_.ref" || exit 2
-done
-
-
-# kh_server
-cd $PATCH_CLIENT_SYSTEM/; bnp_make -p kh_server || exit 2
-
-echo "MOVE PATCH"
-
-for file in $PATCH_HOME/patch_service/dataserver/client/*.ref
-do
- mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
-done
-
-for file in $PATCH_HOME/patch_service/dataserver/data/kh/*.bnp
-do
- mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
-done
-
-#for file in $PATCH_HOME/patch_service/dataserver/data/kh_shard/*.bnp
-#do
-# mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
-#done
-
-for file in $PATCH_HOME/patch_service/dataserver/data/ryz/*.bnp
-do
- mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
-done
-
-for lang in $listlang
-do
- mv $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_$lang.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
-done
-mv kh_server.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
-
-chown -R gameserver:www-data $PATCH_HOME/patch_service || exit 2
-
-echo "PREPARE PATCH"
-#
-su -c "cd $PATCH_HOME/patch_service; patch_gen createNewProduct patch_game/ryzom.xml" gameserver || exit 2
-su -c "cd $PATCH_HOME/patch_service;touch patch_game/Lirria.version" gameserver || exit 2
-sed -i -r 's/value="main"/value="khanat_lirria"/g' patch_game/ryzom.xml || exit 2
-sed -i -r 's/_NextVersionFile type="STRING" value=""/_NextVersionFile type="STRING" value="patch_game\/Lirria.version"/g' patch_game/ryzom.xml || exit 2
-
-# Edit RYZOM file
-
-# search all ref files
-ADDREF=""
-#for file in /home/gameserver/patch_service/patch_game/bnp/*.ref
-#do
-# ADDREF="$ADDREF"'<_Files type=\"STRING\" value=\"'$(basename $file)'\"/>'
-#done
-
-# Remove other _Category (keep 1st) and add ref file
-cp patch_game/ryzom.xml patch_game/ryzom.xml.ref || exit 2
-awk 'BEGIN{found=0}{
- if(found==0 && $1 == "<_Category>") {
- found = 1;
- } else if(found == 1 && $1 == "") {
- found = 2;
- print "'"$ADDREF"'";
- print $0;
- } else if(found == 2 && $1 == "") {
- found = 3;
- }
- if ( found != 2 ) {
- print $0
- }
-}' patch_game/ryzom.xml.ref > patch_game/ryzom.xml || exit 2
-
-# Force version release
-if [[ $KHANAT_CLIENT_VERSION -gt 1 ]]
-then
- # rm $PATCH_HOME/patch_service/patch_game/ryzom.hist
- # rm $PATCH_HOME/patch_service/patch_game/ref/*
- echo -n "$KHANAT_CLIENT_VERSION" > $PATCH_HOME/patch_service/patch_game/Lirria.version
-fi
-
-# Generate patch
-su -c "cd $PATCH_HOME/patch_service; patch_gen updateProduct patch_game/ryzom.xml" gameserver || exit 2
-# Edit release note
-cat << EOF > $PATCH_HOME/patch_service/patch_game/patch/index.php
-
-
-
-
-
- New test data - Release $KHANAT_CLIENT_VERSION
- An update will now be performed to your client(the /user directory to be exact).
- Please help us test the deployment of our free MMORPG server!!
-
-
-EOF
-chown gameserver:www-data $PATCH_HOME/patch_service/patch_game/patch/index.php
-
-# TODO - Strange, we need update patch - to be check
-cat << EOF > $PATCH_HOME/patch_service/patch_game/patch/Lirria.version
-$KHANAT_CLIENT_VERSION $KHANAT_CLIENT_VERSION
-EOF
-
-echo "CONFIGURE APACHE"
-cat << EOF > /etc/apache2/conf-available/patch_service.conf
-Alias /patch /home/gameserver/patch_service/patch_game/patch
-
- Options FollowSymLinks
- DirectoryIndex index.php
-
- Require all granted
-
-
-
- AddType application/x-httpd-php .php
-
-
- SetHandler application/x-httpd-php
-
-
-
-EOF
-# Activate & deploy new configuration
-a2enconf patch_service.conf
-
-chown -R gameserver:www-data $PATCH_HOME/patch_service
-chmod g+w -R $PATCH_HOME/patch_service
+/opt/configure_environment.sh || exit 2
+/opt/install_package.sh || exit 2
+/opt/configure_apache.sh || exit 2
+/opt/configure_database.sh || exit 2
+/opt/initialize_khanat_server.sh || exit 2
+/opt/initialize_patch_server.sh || exit 2
#
# Stop All
@@ -512,3 +32,6 @@ chmod g+w -R $PATCH_HOME/patch_service
service ssh stop || exit 2
service apache2 stop|| exit 2
service mysql stop || exit 2
+
+exit 0
+
diff --git a/dist/docker/server/debian/common/initialize_khanat_server.sh b/dist/docker/server/debian/common/initialize_khanat_server.sh
new file mode 100755
index 000000000..23176029c
--- /dev/null
+++ b/dist/docker/server/debian/common/initialize_khanat_server.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+#
+# Configure server Khanat
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+
+echo "INITIALIZE KHANAT SERVER"
+
+#######################
+# GET PARAM ENVIRONMENT
+#######################
+export KHANAT_CLIENT_VERSION=1
+
+if [[ ! -f /home/gameserver/.bashrc ]]
+then
+ echo "ERROR - missing /home/gameserver/.bashrc"
+ exit 2
+fi
+
+# load environment
+source /home/gameserver/.bashrc
+
+# Load
+if [[ -f /opt/khanat_config.sh ]]
+then
+ echo "Configuration loaded"
+ source /opt/khanat_config.sh
+ echo "KHANAT_CLIENT_VERSION:$KHANAT_CLIENT_VERSION"
+fi
+
+# configure khanat server
+sed -i -r 's/(FSListenHost)(.*)(=)(.*)(;)/FSListenHost = "localhost";/g' $KHANAT_PATH/server/frontend_service.cfg || exit 2
+sed -i -r 's/(DBHost)(.*)(=)(.*)(;)/DBHost = "localhost";/g' $KHANAT_PATH/server/sql.cfg || exit 2
+sed -i -r 's/(DBRingName)(.*)(=)(.*)(;)/ DBRingName = "ring_mini01";/g' $KHANAT_PATH/server/sql.cfg || exit 2
+
+# Generate data
+cd /usr/local; /usr/local/bin/make_sheet_id \
+ -o$KHANAT_DATA/leveldesign/game_elem/sheet_id.bin \
+ $KHANAT_DATA/leveldesign/game_elem \
+ $KHANAT_DATA/leveldesign/game_element \
+ $KHANAT_DATA/leveldesign/world \
+ $KHANAT_DATA/leveldesign/ecosystems \
+ $KHANAT_DATA/sound \
+ $KHANAT_DATA/mirror_sheets || exit 2
+
+# configure sheets_packer.cfg
+rm -rf /opt/sheets_packer/*
+mkdir -p /opt/sheets_packer/common /opt/sheets_packer/khanat-ressources /opt/sheets_packer/client
+cat << EOF > /opt/sheets_packer/sheets_packer.cfg
+/////////////////////////////////
+/////////////////////////////////
+/// SHEETS PACKER CONFIG FILE ///
+/////////////////////////////////
+/////////////////////////////////
+DataPath = { "/opt/sheets_packer/common/data_leveldesign",
+ "/opt/sheets_packer/common/data_common",
+ "/opt/sheets_packer/client/data",
+ "/opt/sheets_packer/khanat-ressources/common",
+ "/opt/sheets_packer/khanat-ressources/leveldesign",
+ "/opt/sheets_packer/khanat-ressources/primitives" };
+WorldSheet = "ryzom.world";
+PrimitivesPath = "/opt/sheets_packer/khanat-ressources/primitives";
+OutputDataPath = "/opt/sheets_packer/client/data";
+LigoPrimitiveClass = "world_editor_classes.xml";
+DumpVisualSlotsIndex = 1;
+EOF
+
+# copy data to target
+cp -r /opt/code/ryzom/common/* /opt/sheets_packer/common || exit 2
+cp -r $KHANAT_DATA/* /opt/sheets_packer/khanat-ressources || exit 2
+cp -r /opt/code/ryzom/client/* /opt/sheets_packer/client || exit 2
+cd /opt/sheets_packer; sheets_packer || exit 2
+cp /opt/sheets_packer/visual_slot.tab $KHANAT_PATH/common/data_common/visual_slot.tab || exit 2
+cp /opt/sheets_packer/visual_slot.tab $KHANAT_PATH/client/data/visual_slot.tab || exit 2
+
+# link translation
+for var in $KHANAT_DATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_de}; done
+for var in $KHANAT_DATA/translation/translated/*_en.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_en/_es}; done
+for var in $KHANAT_DATA/translation/translated/*_wk.txt; do nomfic=${var##*/}; ln -s $nomfic ${var%/*}/${nomfic/_wk/_ru}; done
+
+# Copy default screen configuration
+cp /opt/code/ryzom/server/shard.screen.rc $KHANAT_PATH/server/shard.screen.rc
+sed -i -r 's/\$RYZOM_PATH\/\.\.\/build\/bin\///g' $KHANAT_PATH/server/shard.screen.rc
+
+ln -s /usr/local /home/gameserver/build
+
+# create default directory for rrd data
+mkdir -p $KHANAT_PATH/server/save_shard/rrd_graphs
+
+
diff --git a/dist/docker/server/debian/common/initialize_patch_server.sh b/dist/docker/server/debian/common/initialize_patch_server.sh
new file mode 100755
index 000000000..23db6bc30
--- /dev/null
+++ b/dist/docker/server/debian/common/initialize_patch_server.sh
@@ -0,0 +1,218 @@
+#!/bin/bash
+#
+# install / compile data / configure patch server
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+echo "INITIALIZE PATCH SERVER"
+
+#######################
+# GET PARAM ENVIRONMENT
+#######################
+export KHANAT_CLIENT_VERSION=1
+
+if [[ ! -f /home/gameserver/.bashrc ]]
+then
+ echo "ERROR - missing /home/gameserver/.bashrc"
+ exit 2
+fi
+
+# load environment
+source /home/gameserver/.bashrc
+
+# Load
+if [[ -f /opt/khanat_config.sh ]]
+then
+ echo "Configuration loaded"
+ source /opt/khanat_config.sh
+ echo "KHANAT_CLIENT_VERSION:$KHANAT_CLIENT_VERSION"
+fi
+
+#
+# Serveur Patch
+# Account use : gameserver
+
+# Generate data to client
+echo "PATCH - CREATE DIRECTORY"
+echo "PATCH_HOME:$PATCH_HOME"
+echo "PATCH_CLIENT_SYSTEM:$PATCH_CLIENT_SYSTEM"
+mkdir -p $PATCH_HOME/patch_service/dataserver || exit 2
+
+# Search le nombre de langue
+listlang=$(ls $KHANAT_DATA/translation/translated | cut -f 1 -d '.' | sed 's/^.*\(.\{2\}\)$/\1/' | sort | uniq)
+echo "LIST LANG : $listlang"
+
+for lang in $listlang
+do
+ echo "create dir : $PATCH_HOME/patch_service/dataserver/kh_translate_$lang"
+ mkdir -p $PATCH_HOME/patch_service/dataserver/kh_translate_$lang || exit 2
+done
+mkdir -p $PATCH_HOME/patch_service/kh_server || exit 2
+mkdir -p $PATCH_HOME/patch_service/dataserver || exit 2
+mkdir -p $PATCH_CLIENT_SYSTEM/patch_game/bnp/
+
+echo "COPY DATA TO GENERATE PATCH"
+cp $KHANAT_PATH/common/data_common/database.xml $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
+cp $KHANAT_PATH/common/data_common/msg.xml $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
+cp /opt/sheets_packer/client/data/*.packed_sheets $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
+cp /opt/sheets_packer/client/data/*.packed $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
+cp $KHANAT_PATH/common/data_common/visual_slot.tab $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
+cp $KHANAT_DATA/leveldesign/game_elem/sheet_id.bin $PATCH_CLIENT_SYSTEM/kh_server/ || exit 2
+
+
+cd $PATCH_HOME/patch_service/dataserver; tar xzf /opt/khanat-data-client.tar.gz || exit 2
+
+# language : copy to client (to generate client patch)
+for lang in $listlang
+do
+ cp $KHANAT_DATA/translation/translated/*$lang.* $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_$lang/ || exit 2
+done
+
+echo "GENERATE PATCH"
+for lang in $listlang
+do
+ cd $PATCH_CLIENT_SYSTEM/dataserver/; bnp_make -p kh_translate_$lang || exit 2
+done
+
+# tous les bnp de khanat-data-client
+cd $PATCH_HOME/patch_service/dataserver/data/; bnp_make -p fonts || exit 2
+for dir in $PATCH_HOME/patch_service/dataserver/data/kh/*
+do
+ cd $dir/..; bnp_make -p $(basename $dir) || exit 2
+done
+
+#for dir in $PATCH_HOME/patch_service/dataserver/data/kh_shard/*
+#do
+# cd $dir/..; bnp_make -p $(basename $dir) || exit 2
+#done
+
+for dir in $PATCH_HOME/patch_service/dataserver/data/ryz/*
+do
+ cd $dir/..; bnp_make -p $(basename $dir) || exit 2
+done
+
+## TODO - check how generate '.ref' files
+for dir in $PATCH_HOME/patch_service/dataserver/client/*
+do
+ cd $dir/..; bnp_make -p $(basename $dir) || exit 2
+done
+for file in $PATCH_HOME/patch_service/dataserver/client/*.bnp
+do
+ mv "$file" "${file%.bnp}_.ref" || exit 2
+done
+
+
+# kh_server
+cd $PATCH_CLIENT_SYSTEM/; bnp_make -p kh_server || exit 2
+
+echo "MOVE PATCH"
+
+for file in $PATCH_HOME/patch_service/dataserver/client/*.ref
+do
+ mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
+done
+
+for file in $PATCH_HOME/patch_service/dataserver/data/kh/*.bnp
+do
+ mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
+done
+
+#for file in $PATCH_HOME/patch_service/dataserver/data/kh_shard/*.bnp
+#do
+# mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
+#done
+
+for file in $PATCH_HOME/patch_service/dataserver/data/ryz/*.bnp
+do
+ mv "$file" $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
+done
+
+for lang in $listlang
+do
+ mv $PATCH_CLIENT_SYSTEM/dataserver/kh_translate_$lang.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
+done
+mv kh_server.bnp $PATCH_CLIENT_SYSTEM/patch_game/bnp/ || exit 2
+
+chown -R gameserver:www-data $PATCH_HOME/patch_service || exit 2
+
+echo "PREPARE PATCH"
+#
+su -c "cd $PATCH_HOME/patch_service; patch_gen createNewProduct patch_game/ryzom.xml" gameserver || exit 2
+su -c "cd $PATCH_HOME/patch_service;touch patch_game/Lirria.version" gameserver || exit 2
+sed -i -r 's/value="main"/value="khanat_lirria"/g' patch_game/ryzom.xml || exit 2
+sed -i -r 's/_NextVersionFile type="STRING" value=""/_NextVersionFile type="STRING" value="patch_game\/Lirria.version"/g' patch_game/ryzom.xml || exit 2
+
+# Edit RYZOM file
+
+# search all ref files
+ADDREF=""
+#for file in /home/gameserver/patch_service/patch_game/bnp/*.ref
+#do
+# ADDREF="$ADDREF"'<_Files type=\"STRING\" value=\"'$(basename $file)'\"/>'
+#done
+
+# Remove other _Category (keep 1st) and add ref file
+cp patch_game/ryzom.xml patch_game/ryzom.xml.ref || exit 2
+awk 'BEGIN{found=0}{
+ if(found==0 && $1 == "<_Category>") {
+ found = 1;
+ } else if(found == 1 && $1 == "") {
+ found = 2;
+ print "'"$ADDREF"'";
+ print $0;
+ } else if(found == 2 && $1 == "") {
+ found = 3;
+ }
+ if ( found != 2 ) {
+ print $0
+ }
+}' patch_game/ryzom.xml.ref > patch_game/ryzom.xml || exit 2
+
+# Force version release
+if [[ $KHANAT_CLIENT_VERSION -gt 1 ]]
+then
+ # rm $PATCH_HOME/patch_service/patch_game/ryzom.hist
+ # rm $PATCH_HOME/patch_service/patch_game/ref/*
+ echo -n "$KHANAT_CLIENT_VERSION" > $PATCH_HOME/patch_service/patch_game/Lirria.version
+fi
+
+# Generate patch
+su -c "cd $PATCH_HOME/patch_service; patch_gen updateProduct patch_game/ryzom.xml" gameserver || exit 2
+
+# Edit release note
+cat << EOF > $PATCH_HOME/patch_service/patch_game/patch/index.php
+
+
+
+
+
+ New test data - Release $KHANAT_CLIENT_VERSION
+ An update will now be performed to your client(the /user directory to be exact).
+ Please help us test the deployment of our free MMORPG server!!
+
+
+EOF
+chown gameserver:www-data $PATCH_HOME/patch_service/patch_game/patch/index.php
+
+# TODO - Strange, we need update patch - to be check
+cat << EOF > $PATCH_HOME/patch_service/patch_game/patch/Lirria.version
+$KHANAT_CLIENT_VERSION $KHANAT_CLIENT_VERSION
+EOF
+
+# configure right (apache can read files)
+chown -R gameserver:www-data $PATCH_HOME/patch_service
+chmod g+w -R $PATCH_HOME/patch_service
+
diff --git a/dist/docker/server/debian/common/install_package.sh b/dist/docker/server/debian/common/install_package.sh
new file mode 100755
index 000000000..8894c0a03
--- /dev/null
+++ b/dist/docker/server/debian/common/install_package.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# Install binary and data
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+
+echo "INSTALL PACKAGE"
+
+# Load Environment
+export KHANAT_CLIENT_VERSION=1
+if [[ ! -f /home/gameserver/.bashrc ]]
+then
+ echo "ERROR - missing /home/gameserver/.bashrc"
+ exit 2
+fi
+source /home/gameserver/.bashrc
+
+# install new package
+cd /; tar xzf /opt/ryzomcore.tar.gz --strip 1 || exit 2
+cd /opt; tar xzf ryzom-ressources.tar.gz || exit 2
+
+# Create Home directory (if not exist)
+mkdir -p $KHANAT_PATH || exit 2
+
+# install web khanat
+cp -r /opt/code/web $KHANAT_PATH/khanatweb || exit 2
+chmod -R a+w $KHANAT_PATH/khanatweb || exit 2
+chown -R www-data:www-data $KHANAT_PATH/khanatweb || exit 2
+
+# Get Ressource
+mkdir -p $KHANAT_DATA/ressources
+(cd $KHANAT_DATA; tar xzf /opt/khanat-ressources.tar.gz) || exit 2
+
+# Copy script ryzom
+mkdir -p $KHANAT_PATH/tools/scripts/linux
+cp -r /opt/code/ryzom/tools/scripts/linux/* $KHANAT_PATH/tools/scripts/linux || exit 2
+
+# Copy data for server
+mkdir -p $KHANAT_PATH/server || exit 2
+cp -r /opt/code/ryzom/common/ $KHANAT_PATH/common || exit 2
+cp -r /opt/code/ryzom/client/ $KHANAT_PATH/client || exit 2
+cp /opt/code/ryzom/server/*.cfg $KHANAT_PATH/server/. || exit 2
+
+# create link resource
+## Directories
+ln -s $KHANAT_DATA/collisions $KHANAT_PATH/server/
+ln -s $KHANAT_DATA/leveldesign $KHANAT_PATH/server/
+ln -s $KHANAT_DATA/primitives $KHANAT_PATH/server/
+ln -s $KHANAT_DATA/translation $KHANAT_PATH/server/
+ln -s $KHANAT_DATA/continents $KHANAT_PATH/server/
+ln -s $KHANAT_DATA/common $KHANAT_PATH/server/
+## Files
+mkdir -p $KHANAT_PATH/server/data_shard
+cp -r /opt/code/ryzom/server/data_shard/* $KHANAT_PATH/server/data_shard/.
+ln -s $KHANAT_DATA/shard/su/dev_gm_names.xml $KHANAT_PATH/server/data_shard/dev_gm_names.xml
+ln -s $KHANAT_DATA/shard/su/invalid_entity_names.txt $KHANAT_PATH/server/data_shard/invalid_entity_names.txt
+ln -s $KHANAT_DATA/shard/su/reserved_names.xml $KHANAT_PATH/server/data_shard/reserved_names.xml
+ln -s $KHANAT_DATA/shard/egs/game_event.txt $KHANAT_PATH/server/data_shard/game_event.txt
+ln -s $KHANAT_DATA/shard/egs/mission_queues.txt $KHANAT_PATH/server/data_shard/mission_queues.txt
+ln -s $KHANAT_DATA/shard/egs/named_items.txt $KHANAT_PATH/server/data_shard/named_items.txt
+
+# copy data from khanat-code
+mkdir -p $KHANAT_DATA/mirror_sheets
+cp -r /opt/code/ryzom/server/data_shard/mirror_sheets/* $KHANAT_DATA/mirror_sheets
+
diff --git a/dist/docker/server/debian/common/launch_services.sh b/dist/docker/server/debian/common/launch_services.sh
index 78fdba425..f32d0494a 100755
--- a/dist/docker/server/debian/common/launch_services.sh
+++ b/dist/docker/server/debian/common/launch_services.sh
@@ -1,9 +1,22 @@
#!/bin/bash
#
-# Script to launch automatically khaganat
+# Script to launch khaganat
+# (see shard.screen.rc)
#
+# Copyright (C) 2017 AleaJactaEst
#
-# ref : shard.screen.rc
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
mkdir -p /home/gameserver/khanat/server/log
cd /home/gameserver/khanat/server/log
diff --git a/dist/docker/server/debian/common/prepare_start_server.sh b/dist/docker/server/debian/common/prepare_start_server.sh
new file mode 100644
index 000000000..8a1ce09cb
--- /dev/null
+++ b/dist/docker/server/debian/common/prepare_start_server.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+#
+# Script to update khanat configuration (change ip address)
+#
+# Copyright (C) 2017 AleaJactaEst
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+echo "PREPARE ENVIRONMENT"
+
+# Load Environment
+export KHANAT_CLIENT_VERSION=1
+if [[ ! -f /home/gameserver/.bashrc ]]
+then
+ echo "ERROR - missing /home/gameserver/.bashrc"
+ exit 2
+fi
+source /home/gameserver/.bashrc
+
+# Get IP ADDRESS
+tmp=$(hostname -I)
+export addressip=${tmp//[[:blank:]]/}
+
+## Configure Domain
+mysql -u root -e "use nel;
+UPDATE nel.domain
+SET backup_patch_url = '$addressip:23001'
+, patch_urls = '$addressip/patch'
+, login_address = '$addressip:49998'
+, session_manager_address = '$addressip:49999'
+, web_host = '$addressip:30000'
+, web_host_php = '$addressip:40916'
+WHERE domain_id = 12;" || exit 2
+
+# Configure nel.shard
+mysql -u root -e "use nel;
+UPDATE nel.shard
+SET WsAddr = '$addressip:'
+WHERE ShardId = 302;" || exit 2
+
+# Configure nel_tool.neltool_domains
+mysql -u root -e "use nel;
+UPDATE nel_tool.neltool_domains
+SET domain_as_host = '$addressip'
+WHERE domain_id = 12;" || exit 2
+