diff --git a/config/meson.build b/config/meson.build
index c2c3cac..2387e13 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -121,20 +121,20 @@
 
 ports = get_option('additional-ports')
 binds = get_option('additional-bind-to-device')
-auth = get_option('additional-auth')
+auths = get_option('additional-auth')
 foreach index : range(ports.length())
     port_number = ports[index]
     bind_to_device = '0.0.0.0'
     auth = 'auth'
     if index < binds.length()
-        bind = auth[index]
+        bind_to_device = binds[index]
     endif
 
-    if index < auth.length()
-        auth = auth[index]
+    if index < auths.length()
+        auth = auths[index]
     endif
 
-    filename = 'bmcweb_' + port_number.to_string()
+    filename = 'bmcweb_' + port_number
     configure_file(
         input: 'bmcweb.socket.in',
         output: filename,
@@ -144,7 +144,7 @@
             {
                 'BMCWEB_HTTPS_PORT': port_number,
                 'HTTP_LEVEL_ALLOWED': 'https',
-                'HTTP_BIND': bind,
+                'HTTP_BIND': bind_to_device,
                 'HTTP_AUTH_LEVEL': auth,
             },
         ),
diff --git a/http/app.hpp b/http/app.hpp
index 6d456af..9946990 100644
--- a/http/app.hpp
+++ b/http/app.hpp
@@ -144,6 +144,16 @@
             socketIndex++;
         }
 
+        if (acceptors.empty())
+        {
+            constexpr int defaultPort = 18080;
+            BMCWEB_LOG_INFO("Starting webserver on port {}", defaultPort);
+            using boost::asio::ip::tcp;
+            tcp::endpoint end(tcp::v6(), defaultPort);
+            tcp::acceptor acc(getIoContext(), end);
+            acceptors.emplace_back(std::move(acc), HttpType::HTTPS);
+        }
+
         return acceptors;
     }
 
