diff --git a/app/controllers/webmin.controller.js b/app/controllers/webmin.controller.js
index 04d85bad7790b06419497f51ff70c2aab6a73467..19fe14c22e4633ac88b73c562b8ce4fc59fb311e 100644
--- a/app/controllers/webmin.controller.js
+++ b/app/controllers/webmin.controller.js
@@ -7,7 +7,6 @@ var _ = require('underscore');
 var Q = require('q');
 let co = require('co');
 let ucoin = require('../../index');
-var upnp = require('../lib/upnp');
 let ucp = require('../lib/ucp');
 let constants = require('../lib/constants');
 let base58 = require('../lib/base58');
@@ -88,7 +87,7 @@ function WebAdmin (dbConf, overConf) {
 
   this.openUPnP = () => co(function *() {
     yield pluggedDALP;
-    return upnp(server.conf.port, server.conf.remoteport);
+    return server.upnp();
   });
 
   this.regularUPnP = () => co(function *() {
@@ -97,7 +96,7 @@ function WebAdmin (dbConf, overConf) {
       server.upnpAPI.stopRegular();
     }
     try {
-      server.upnpAPI = yield upnp(server.conf.port, server.conf.remoteport);
+      yield server.upnp();
       server.upnpAPI.startRegular();
     } catch (e) {
       logger.error(e);
diff --git a/index.js b/index.js
index 16e2bb4ca898a34ee8cfbf4de905d1b381226fc9..6ee44fcab20c650e083eaa1f025bc6d67135a9a9 100644
--- a/index.js
+++ b/index.js
@@ -4,7 +4,6 @@ var co = require('co');
 var Server = require('./server');
 var bma  = require('./app/lib/streams/bma');
 var webmin  = require('./app/lib/streams/webmin');
-var upnp = require('./app/lib/upnp');
 var logger = require('./app/lib/logger')('ucoin');
 
 module.exports = function (dbConf, overConf) {
@@ -50,7 +49,7 @@ module.exports.statics = {
         if (server.upnpAPI) {
           server.upnpAPI.stopRegular();
         }
-        server.upnpAPI = yield upnp(server.conf.port, server.conf.remoteport);
+        yield server.upnp();
         server.upnpAPI.startRegular();
       } catch (e) {
         logger.warn(e);
diff --git a/server.js b/server.js
index 2f5d1fc642c2a23bdda296e313ef2eb12733a07f..5eef3cec0b18530b92da26c03cee463460e09ecd 100644
--- a/server.js
+++ b/server.js
@@ -18,6 +18,7 @@ var directory   = require('./app/lib/directory');
 var dos2unix    = require('./app/lib/dos2unix');
 var Synchroniser = require('./app/lib/sync');
 var multicaster = require('./app/lib/streams/multicaster');
+var upnp        = require('./app/lib/upnp');
 
 function Server (dbConf, overrideConf) {
 
@@ -443,6 +444,12 @@ function Server (dbConf, overrideConf) {
       // The multicaster may answer 'unreachable peer'
       .pipe(this.router());
   };
+
+  this.upnp = () => co(function *() {
+    let upnpAPI = yield upnp(that.conf.port, that.conf.remoteport);
+    that.upnpAPI = upnpAPI;
+    return upnpAPI;
+  });
 }
 
 util.inherits(Server, stream.Duplex);