diff --git a/index.js b/index.js
index 65c0086ae9ee09c975fc5c2221d7493f3b7ecf34..87dd6ac4024b125c2ed2f1232171ffd5c6b9603a 100644
--- a/index.js
+++ b/index.js
@@ -25,7 +25,28 @@ module.exports = {
     ],
 
     cli: [{
+
       name: 'webstart',
+      desc: 'Starts Duniter as a daemon (background task).',
+      logs: false,
+      onConfiguredExecute: (server, conf, program, params) => co(function*() {
+        yield server.checkConfig()
+        const daemon = server.getDaemon('direct_webstart', 'webstart')
+        yield startDaemon(daemon)
+      })
+    }, {
+
+      name: 'webrestart',
+      desc: 'Stops Duniter daemon and restart it with its web interface.',
+      logs: false,
+      onConfiguredExecute: (server, conf, program, params) => co(function*() {
+        yield server.checkConfig()
+        const daemon = server.getDaemon('direct_webstart', 'webrestart')
+        yield stopDaemon(daemon)
+        yield startDaemon(daemon)
+      })
+    }, {
+      name: 'direct_webstart',
       desc: 'Do a webstart',
       onDatabaseExecute: (server, conf, program, params, startServices, stopServices) => co(function*(){
 
@@ -57,7 +78,7 @@ module.exports = {
           const wbmin = webminController(server, startServices, stopServices);
           const httpServer = http.createServer(app);
           httpServer.listen(PORT, HOTE);
-          console.log("Serveur web disponible a l'adresse http://%s:%s", HOTE, PORT);
+          server.logger.info("Serveur web disponible a l'adresse http://%s:%s", HOTE, PORT);
 
           require('./server/lib/routes').webmin(wbmin, app);
           require('./server/lib/routes').webminWS(wbmin)(httpServer);
@@ -77,3 +98,18 @@ module.exports = {
     }]
   }
 };
+
+function startDaemon(daemon) {
+  return new Promise((resolve, reject) => daemon.start((err) => {
+    if (err) return reject(err)
+    resolve()
+  }))
+}
+
+function stopDaemon(daemon) {
+  return new Promise((resolve, reject) => daemon.stop((err) => {
+    err && console.error(err);
+    if (err) return reject(err)
+    resolve()
+  }))
+}
diff --git a/package.json b/package.json
index 1f2075397c07f21826d17dfe59e8454b387545b4..83f4602f8407e29a96e383485468c44cf12aa32f 100644
--- a/package.json
+++ b/package.json
@@ -34,8 +34,9 @@
     "brunch": "2.10.9",
     "co": "4.6.0",
     "cors": "2.8.2",
-    "duniter-crawler": "^0.2.17",
-    "duniter-keypair": "^1.0.0",
+    "duniter-bma": "^1.0.7",
+    "duniter-crawler": "^1.0.8",
+    "duniter-keypair": "^1.0.1",
     "event-stream": "3.3.4",
     "express": "4.15.2",
     "express-fileupload": "0.0.5",
diff --git a/run.js b/run.js
new file mode 100644
index 0000000000000000000000000000000000000000..87dc365734a96be12d8f7e218d77c1155a1d0aad
--- /dev/null
+++ b/run.js
@@ -0,0 +1,18 @@
+"use strict";
+
+const co = require('co');
+
+// Inject 'webstart' command if no argument was given
+if (process.argv.length === 2) {
+  process.argv.push('direct_webstart');
+}
+
+const stack = require('duniter').statics.autoStack([{
+  name: 'duniter-ui',
+  required: require('./index')
+}]);
+
+co(function*() {
+  yield stack.executeStack(process.argv);
+  process.exit();
+});
diff --git a/server/controller/webmin.js b/server/controller/webmin.js
index 683eed590045699655a69d1c0be7294cc327db7d..4237515d84e3583b72eba0448fcc0ebc609b47a0 100644
--- a/server/controller/webmin.js
+++ b/server/controller/webmin.js
@@ -10,6 +10,8 @@ const _ = require('underscore');
 const Q = require('q');
 const co = require('co');
 const duniterKeypair = require('duniter-keypair');
+const network = require('duniter-bma').duniter.methods;
+const contacter = require('duniter-crawler').duniter.methods.contacter;
 
 module.exports = (duniterServer, startServices, stopServices) => {
   return new WebAdmin(duniterServer, startServices, stopServices);
@@ -24,8 +26,6 @@ function WebAdmin (duniterServer, startServices, stopServices) {
   const rawer = duniterServer.lib.rawer;
   const http2raw = duniterServer.lib.http2raw;
   const dos2unix = duniterServer.lib.dos2unix;
-  const contacter = duniterServer.lib.contacter;
-  const network = duniterServer.lib.network;
   const constants = duniterServer.lib.constants;
   const ucp = duniterServer.lib.ucp;
 
diff --git a/yarn.lock b/yarn.lock
index 6289e92fd21dcc9e5356157fed0e64c53cecafb0..fa9782571ffe7e35af594552a7b5dd20104bb6c6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -279,12 +279,18 @@ async@1.5.2, async@^1.5.2:
   version "1.5.2"
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
 
-async@2.1.4, async@^2.0.0:
+async@2.1.4:
   version "2.1.4"
   resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
   dependencies:
     lodash "^4.14.0"
 
+async@2.2.0, async@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/async/-/async-2.2.0.tgz#c324eba010a237e4fbd55a12dee86367d5c0ef32"
+  dependencies:
+    lodash "^4.14.0"
+
 async@~0.2.6:
   version "0.2.10"
   resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
@@ -929,6 +935,10 @@ basic-auth@~1.0.3:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.4.tgz#030935b01de7c9b94a824b29f3fccb750d3a5290"
 
+basic-auth@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884"
+
 batch@0.2.1:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/batch/-/batch-0.2.1.tgz#4463997bb4d5fd1c7a011548813e52aa189c2c79"
@@ -1553,8 +1563,8 @@ cookie@0.3.1:
   resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
 
 cookiejar@^2.0.6:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.0.tgz#86549689539b6d0e269b6637a304be508194d898"
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a"
 
 core-js@^1.0.0, core-js@^1.0.1:
   version "1.2.7"
@@ -1707,9 +1717,9 @@ ddos@0.1.16:
     hashish ""
     response ""
 
-debug@*, debug@2.6.3:
-  version "2.6.3"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
+debug@*, debug@2.6.1, debug@^2.2, debug@^2.2.0:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
   dependencies:
     ms "0.7.2"
 
@@ -1719,9 +1729,9 @@ debug@2.0.0:
   dependencies:
     ms "0.6.2"
 
-debug@2.6.1, debug@^2.1.1, debug@^2.2, debug@^2.2.0:
-  version "2.6.1"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351"
+debug@2.6.3, debug@^2.1.1:
+  version "2.6.3"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
   dependencies:
     ms "0.7.2"
 
@@ -1877,6 +1887,29 @@ duniter-bma@^0.2.11, duniter-bma@^0.2.4:
     underscore "1.8.3"
     ws "1.1.1"
 
+duniter-bma@^1.0.4, duniter-bma@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/duniter-bma/-/duniter-bma-1.0.7.tgz#6eb008c486f2dac51609ab54ac27a094a3ada183"
+  dependencies:
+    async "2.2.0"
+    body-parser "1.17.1"
+    co "4.6.0"
+    cors "2.8.2"
+    ddos "0.1.16"
+    errorhandler "1.5.0"
+    event-stream "3.3.4"
+    express "4.15.2"
+    express-cors "0.0.3"
+    express-fileupload "0.0.5"
+    inquirer "3.0.6"
+    morgan "1.8.1"
+    nnupnp "1.0.2"
+    q "1.5.0"
+    request "2.81.0"
+    request-promise "4.2.0"
+    underscore "1.8.3"
+    ws "1.1.1"
+
 duniter-common@0.1.0, duniter-common@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/duniter-common/-/duniter-common-0.1.0.tgz#f5cbdc301ba8e57fcc1ab39521ac8f621e3df691"
@@ -1886,7 +1919,16 @@ duniter-common@0.1.0, duniter-common@^0.1.0:
     node-pre-gyp "0.6.32"
     tweetnacl "0.14.3"
 
-duniter-crawler@^0.2.1, duniter-crawler@^0.2.14, duniter-crawler@^0.2.17, duniter-crawler@^0.2.4:
+duniter-common@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/duniter-common/-/duniter-common-1.0.0.tgz#d11b8cb9296e2d29943f2969b1c9291fec8d4d3d"
+  dependencies:
+    co "4.6.0"
+    naclb "1.3.7"
+    node-pre-gyp "0.6.32"
+    tweetnacl "0.14.3"
+
+duniter-crawler@^0.2.1, duniter-crawler@^0.2.14, duniter-crawler@^0.2.4:
   version "0.2.17"
   resolved "https://registry.yarnpkg.com/duniter-crawler/-/duniter-crawler-0.2.17.tgz#dc3e1757cf04160cf62b1e737d666be59b392d2f"
   dependencies:
@@ -1904,6 +1946,21 @@ duniter-crawler@^0.2.1, duniter-crawler@^0.2.14, duniter-crawler@^0.2.17, dunite
     request-promise "4.1.1"
     underscore "1.8.3"
 
+duniter-crawler@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/duniter-crawler/-/duniter-crawler-1.0.8.tgz#aeea9edcf5f79842eee315d8fec7c5ced6931d3c"
+  dependencies:
+    async "2.2.0"
+    co "4.6.0"
+    duniter-bma "^1.0.4"
+    duniter-common "^1.0.0"
+    moment "2.18.1"
+    multimeter "0.1.1"
+    querablep "0.1.0"
+    request "2.81.0"
+    request-promise "4.2.0"
+    underscore "1.8.3"
+
 duniter-keypair@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/duniter-keypair/-/duniter-keypair-0.2.0.tgz#8cdca5cf7e3e5db792d5ab018e34bd73ee977f61"
@@ -1931,9 +1988,9 @@ duniter-keypair@^0.3.0:
     tweetnacl "0.14.3"
     tweetnacl-util "0.13.5"
 
-duniter-keypair@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/duniter-keypair/-/duniter-keypair-1.0.1.tgz#a4830905b8b6216f944582a0ef4787c657a95f0b"
+duniter-keypair@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/duniter-keypair/-/duniter-keypair-1.0.2.tgz#f4994617bb63f60bf389075ad437c9562de9410d"
   dependencies:
     bs58 "4.0.0"
     co "4.6.0"
@@ -2080,6 +2137,13 @@ errorhandler@1.4.3:
     accepts "~1.3.0"
     escape-html "~1.0.3"
 
+errorhandler@1.5.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.0.tgz#eaba64ca5d542a311ac945f582defc336165d9f4"
+  dependencies:
+    accepts "~1.3.3"
+    escape-html "~1.0.3"
+
 es-abstract@^1.6.1:
   version "1.7.0"
   resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
@@ -2957,7 +3021,7 @@ inquirer@2.0.0, inquirer@^2.0.0:
     strip-ansi "^3.0.0"
     through "^2.3.6"
 
-inquirer@^3.0.6:
+inquirer@3.0.6, inquirer@^3.0.6:
   version "3.0.6"
   resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347"
   dependencies:
@@ -3645,6 +3709,16 @@ morgan@1.7.0:
     on-finished "~2.3.0"
     on-headers "~1.0.1"
 
+morgan@1.8.1:
+  version "1.8.1"
+  resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.8.1.tgz#f93023d3887bd27b78dfd6023cea7892ee27a4b1"
+  dependencies:
+    basic-auth "~1.1.0"
+    debug "2.6.1"
+    depd "~1.1.0"
+    on-finished "~2.3.0"
+    on-headers "~1.0.1"
+
 mout@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/mout/-/mout-1.0.0.tgz#9bdf1d4af57d66d47cb353a6335a3281098e1501"
@@ -3691,14 +3765,18 @@ nan@2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.2.0.tgz#779c07135629503cf6a7b7e6aab33049b3c3853c"
 
-nan@^2.0.5, nan@^2.3.0, nan@^2.3.3, nan@~2.4.0:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232"
+nan@^2.0.5, nan@^2.3.0, nan@^2.3.2, nan@^2.3.3:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.1.tgz#8c84f7b14c96b89f57fbc838012180ec8ca39a01"
 
-nan@^2.3.2, nan@~2.3.3:
+nan@~2.3.3:
   version "2.3.5"
   resolved "https://registry.yarnpkg.com/nan/-/nan-2.3.5.tgz#822a0dc266290ce4cd3a12282ca3e7e364668a08"
 
+nan@~2.4.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232"
+
 native-notifier@~0.1.0:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/native-notifier/-/native-notifier-0.1.1.tgz#0f719731a410a7a243409eaba10a1446c2df831a"