diff --git a/jami-nameserver/pom.xml b/jami-nameserver/pom.xml
index bbc3931e2ecbf51696584f8677532c6888f53e37..1e7327f7fb083db500109dfcb0c058b6b5d67b81 100644
--- a/jami-nameserver/pom.xml
+++ b/jami-nameserver/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>jams3-parent</artifactId>
         <groupId>net.jami</groupId>
-        <version>2.0</version>
+        <version>${revision}</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
@@ -14,13 +14,13 @@
         <dependency>
             <groupId>net.jami</groupId>
             <artifactId>jams-common</artifactId>
-            <version>2.0</version>
+            <version>${revision}</version>
             <scope>compile</scope>
         </dependency>
         <dependency>
             <groupId>net.jami</groupId>
             <artifactId>datastore</artifactId>
-            <version>2.0</version>
+            <version>${revision}</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>
diff --git a/jami-nameserver/src/main/java/module-info.java b/jami-nameserver/src/main/java/module-info.java
index 2522fa04bd36b5e58ad09dfce06e58779d5432a7..5c278edb57d106193f03d305b760d3f699a417c6 100644
--- a/jami-nameserver/src/main/java/module-info.java
+++ b/jami-nameserver/src/main/java/module-info.java
@@ -1,3 +1,8 @@
 module jami.nameserver {
+    requires jams.common;
+    requires datastore;
+    requires lombok;
     exports net.jami.jams.nameserver;
+    requires org.slf4j;
+    requires jsoniter;
 }
\ No newline at end of file
diff --git a/jams-server/src/main/java/module-info.java b/jams-server/src/main/java/module-info.java
index 32158e285c05b24ad96ad61d6e0b42fef1bf1edc..27fec84671cea9ebd16130d4d9ffe3eacedc54ca 100644
--- a/jams-server/src/main/java/module-info.java
+++ b/jams-server/src/main/java/module-info.java
@@ -16,4 +16,5 @@ module jams.server {
     exports net.jami.jams.server.servlets.api.auth.login to org.apache.tomcat.embed.core;
     exports net.jami.jams.server.servlets.api.auth.device to org.apache.tomcat.embed.core;
     exports net.jami.jams.server.servlets.api.install to org.apache.tomcat.embed.core;
+    exports net.jami.jams.server.servlets.api.jaminameserver to org.apache.tomcat.embed.core;
 }
\ No newline at end of file
diff --git a/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java b/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java
index 4d2aac960b895d17ae4b7d88b3cc06e10b681cbc..fd112ef37d6f2fb04ef33c8b89188a868f812134 100644
--- a/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java
+++ b/jams-server/src/main/java/net/jami/jams/server/core/workflows/InstallationFinalizer.java
@@ -7,6 +7,8 @@ import net.jami.jams.common.objects.roots.X509Fields;
 import net.jami.jams.common.objects.system.SystemAccount;
 import net.jami.jams.common.objects.system.SystemAccountType;
 import net.jami.jams.common.server.ServerSettings;
+import net.jami.jams.nameserver.LocalNameServer;
+import net.jami.jams.nameserver.PublicNameServer;
 import net.jami.jams.server.Server;
 import net.jami.jams.server.servlets.api.install.CachedObjects;
 import net.jami.jams.server.startup.AuthModuleLoader;
@@ -26,13 +28,25 @@ public class InstallationFinalizer {
             log.info("Building configuration from submitted variables...");
             ServerSettings serverSettings = new ServerSettings();
             serverSettings.setCaConfiguration(JsonStream.serialize(CachedObjects.certificateAuthorityConfig));
-            if (CachedObjects.activeDirectorySettings != null)
+            if (CachedObjects.activeDirectorySettings != null) {
                 serverSettings.setActiveDirectoryConfiguration(JsonStream.serialize(CachedObjects.activeDirectorySettings));
-            if (CachedObjects.ldapSettings != null)
+                nameServer = new LocalNameServer(dataStore);
+                log.info("Server configured to use Active Directory as the authentication backend!");
+            }
+            if (CachedObjects.ldapSettings != null) {
                 serverSettings.setLdapConfiguration(JsonStream.serialize(CachedObjects.ldapSettings));
-            if (CachedObjects.localAuthSettings != null)
+                nameServer = new LocalNameServer(dataStore);
+                log.info("Server configured to use LDAP as the authentication backend!");
+            }
+            if (CachedObjects.localAuthSettings != null) {
                 serverSettings.setLocalDirectoryConfiguration(JsonStream.serialize(CachedObjects.localAuthSettings));
-
+                if(CachedObjects.localAuthSettings.getPublicNames()){
+                    nameServer = new PublicNameServer(CachedObjects.localAuthSettings.getPublicNameServer());
+                    log.warn("Server configured to use {} as the nameserver for Jami clients !",CachedObjects.localAuthSettings.getPublicNameServer());
+                }
+                else nameServer = new LocalNameServer(dataStore);
+                log.info("Server is configured to use local authentication engine");
+            }
             //Now flush the server settings.
             OutputStream os = new FileOutputStream(new File("config.json"));
             os.write(JsonStream.serialize(serverSettings).getBytes());
@@ -66,7 +80,7 @@ public class InstallationFinalizer {
             if(serverSettings.getLdapConfiguration() != null)
                 userAuthenticationModule.attachAuthSource(AuthenticationSourceType.LDAP,serverSettings.getLdapConfiguration());
             Server.isInstalled.set(true);
-            log.info("The installation has completed succesfully, you can now use JAMS!");
+            log.info("The installation has completed successfully, you can now use JAMS!");
         } catch (Exception e) {
             log.error("Could not save settings to disk with error: " + e.toString());
             return false;
diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java
index c9b8cdb9c1014512d6713eefabecb6a6d265cf4e..f4ae4cb0a726338d635914ba1272172c2c1a2cb1 100644
--- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java
+++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/jaminameserver/NameServlet.java
@@ -17,8 +17,7 @@ public class NameServlet extends HttpServlet {
 
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-        String[] path = req.getServletPath().split("/");
-        NameLookupResponse nameLookupResponse = nameServer.getAddressFromName(path[path.length - 1]);
+        NameLookupResponse nameLookupResponse = nameServer.getAddressFromName(req.getPathInfo().replace("/",""));
         if(nameLookupResponse == null) resp.sendError(404);
         else resp.getOutputStream().write(JsonStream.serialize(nameLookupResponse).getBytes());
     }
diff --git a/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java b/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java
index d2eecb42181c9d21d3c9330db2e6e7875a331605..bb9e0578444ae42134e32b49a651f1062db6cbbd 100644
--- a/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java
+++ b/jams-server/src/test/java/net/jami/jams/server/core/jaminamserver/PublicNameServerTest.java
@@ -3,6 +3,7 @@ package net.jami.jams.server.core.jaminamserver;
 import net.jami.jams.common.jami.NameLookupResponse;
 import net.jami.jams.common.jami.NameRegistrationRequest;
 import net.jami.jams.common.jami.NameServer;
+import net.jami.jams.nameserver.PublicNameServer;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;