diff --git a/include/opendht/dht_proxy_server.h b/include/opendht/dht_proxy_server.h
index 627335c98fc7fcddd063f42a383e6766bc5ef5da..8ffd9ac8a67e76d988985fabc7ab30d70dc892a2 100644
--- a/include/opendht/dht_proxy_server.h
+++ b/include/opendht/dht_proxy_server.h
@@ -360,7 +360,7 @@ private:
     mutable std::atomic<size_t> requestNum_ {0};
     mutable std::atomic<time_point> lastStatsReset_ {time_point::min()};
 
-    const std::string pushServer_;
+    std::string pushServer_;
 
 #ifdef OPENDHT_PUSH_NOTIFICATIONS
     struct Listener {
diff --git a/src/dht_proxy_server.cpp b/src/dht_proxy_server.cpp
index 22177e8875512806cf7a1c2ddc3c1117d8e1097b..00ed8796b10387d426c12952e4e03458b51d2e75 100644
--- a/src/dht_proxy_server.cpp
+++ b/src/dht_proxy_server.cpp
@@ -222,6 +222,16 @@ DhtProxyServer::DhtProxyServer(
     jsonBuilder_["commentStyle"] = "None";
     jsonBuilder_["indentation"] = "";
 
+    if (!pushServer.empty()){
+        // no host delim, assume port only
+        if (pushServer.find(":") == std::string::npos)
+            pushServer_ =  "localhost:" + pushServer_;
+        // define http request destination for push notifications
+        pushHostPort_ = splitPort(pushServer_);
+        if (logger_)
+            logger_->d("Using push server for notifications: %s:%s", pushHostPort_.first.c_str(),
+                                                                     pushHostPort_.second.c_str());
+    }
     if (identity.first and identity.second) {
         asio::error_code ec;
         // define tls context
@@ -258,8 +268,6 @@ DhtProxyServer::DhtProxyServer(
             restinio::own_io_context(),
             std::forward<restinio::run_on_this_thread_settings_t<RestRouterTraitsTls>>(std::move(settings))
         );
-        // define http request destination
-        pushHostPort_ = splitPort(pushServer_);
         // run http server
         serverThread_ = std::thread([this]{
             httpsServer_->open_async([]{/*ok*/}, [](std::exception_ptr ex){
@@ -276,8 +284,6 @@ DhtProxyServer::DhtProxyServer(
             restinio::own_io_context(),
             std::forward<restinio::run_on_this_thread_settings_t<RestRouterTraits>>(std::move(settings))
         );
-        // define http request destination
-        pushHostPort_ = splitPort(pushServer_);
         // run http server
         serverThread_ = std::thread([this](){
             httpServer_->open_async([]{/*ok*/}, [](std::exception_ptr ex){