diff --git a/app/js/controllers/init/create/RootBlockController.js b/app/js/controllers/init/create/RootBlockController.js
index 51160ac334d9697eb68255143a87c990e5b3c169..b52cddd622936e8983a95909f137c49352b3cf14 100644
--- a/app/js/controllers/init/create/RootBlockController.js
+++ b/app/js/controllers/init/create/RootBlockController.js
@@ -7,6 +7,7 @@ module.exports = ($scope, $http, $state, BMA) => {
 
   $scope.generated = '';
   $scope.started = false;
+  $scope.message = 'configuration.create_root.need_a_try';
 
   co(function *() {
     try {
@@ -19,12 +20,16 @@ module.exports = ($scope, $http, $state, BMA) => {
   });
 
   $scope.start = () => co(function *() {
-    yield BMA.webmin.server.http.start();
-    $scope.started = true;
-    yield BMA.webmin.server.sendConf({
-      conf: $scope.$parent.conf
-    });
-    yield $scope.try();
+    try {
+      yield BMA.webmin.server.http.start();
+      $scope.started = true;
+      yield BMA.webmin.server.sendConf({
+        conf: $scope.$parent.conf
+      });
+      yield $scope.try();
+    } catch (e) {
+      $scope.message = e.message;
+    }
   });
 
   $scope.stop = () => co(function *() {
@@ -33,8 +38,13 @@ module.exports = ($scope, $http, $state, BMA) => {
   });
 
   $scope.try = () => co(function *() {
-    $scope.block = yield BMA.webmin.server.previewNext();
-    $scope.generated = $scope.block.raw;
+    try {
+      $scope.block = yield BMA.webmin.server.previewNext();
+      $scope.generated = $scope.block.raw;
+      $scope.message = '';
+    } catch (e) {
+      $scope.message = e.message;
+    }
   });
 
   $scope.accept = () => co(function *() {
diff --git a/app/js/lib/conf/conf.js b/app/js/lib/conf/conf.js
index f5e5f5b1da32ff74c52df8f1cc3ef36e21fc53fa..3629194d9392e341d9e27f5f43a4dea7f31b5ff6 100644
--- a/app/js/lib/conf/conf.js
+++ b/app/js/lib/conf/conf.js
@@ -2,5 +2,6 @@ module.exports = {
   "server": "", // Empty server will use the browser current host
   "port": "",   // Empty port will use the browser current port
   "default_port": 9220,
-  "dev_autoconf": false
+  "dev_autoconf": false,
+  "api_timeout": 10000 // 10 sec timeout
 };
diff --git a/app/js/services/bma.js b/app/js/services/bma.js
index 427faf03fdb6d0230d8824524d52b5e8a9eb60f9..6c3fa8e4b41c1ef7592bd648358ad1b25b5365bb 100644
--- a/app/js/services/bma.js
+++ b/app/js/services/bma.js
@@ -14,7 +14,7 @@ module.exports = (angular) => {
           return function(params) {
             return $q.when(Q.Promise((resolve, reject) => {
               var config = {
-                timeout: 4000
+                timeout: conf.api_timeout
               }, suffix = '', pkeys = [], queryParams = null;
               if (typeof params == 'object') {
                 pkeys = _.keys(params);
diff --git a/app/views/init/create/create_root.jade b/app/views/init/create/create_root.jade
index 64629a0c46b5f2865b9ebfc0ae87cf9a83e94c46..42abced77db53cd8fa6cc7927449f534bb6588ce 100644
--- a/app/views/init/create/create_root.jade
+++ b/app/views/init/create/create_root.jade
@@ -24,7 +24,7 @@
         .card-action
 
           pre.card-panel.teal.white-text.code.left-align.small(ng-show="generated") {{ generated }}
-          blockquote.card-panel.left-align(ng-show="!generated") {{ 'configuration.create_root.need_a_try' | translate }}
+          blockquote.card-panel.left-align(ng-show="message") {{ message | translate }}
 
 
         .card-action