diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java
index f482daa4d855a582a6543993798d574406767ce6..ac9f4ecc2a95c87e96af6ce1963779d836dc87af 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java
@@ -315,17 +315,22 @@ public class HomeHelper extends HelperBase {
                 url = app.url;
                 // check for disabled webapps and other things
                 if (url.equals("/dns")) {
-                    if (!pm.isRegistered("susidns"))
+                    if (!pm.isRegistered(PortMapper.SVC_SUSIDNS))
                         continue;
                 } else if (url.equals("/webmail")) {
-                    if (!pm.isRegistered("susimail"))
+                    if (!pm.isRegistered(PortMapper.SVC_SUSIMAIL))
                         continue;
                 } else if (url.equals("/torrents")) {
-                    if (!pm.isRegistered("i2psnark"))
+                    if (!pm.isRegistered(PortMapper.SVC_I2PSNARK))
                         continue;
                 } else if (url.equals("/i2ptunnelmgr")) {
-                    if (!pm.isRegistered("i2ptunnel"))
+                    if (!pm.isRegistered(PortMapper.SVC_I2PTUNNEL))
                         continue;
+                    // need both webapp and TCG, but we aren't refreshing
+                    // the icons, so let's not do this
+                    //ClientAppManager cmgr = _context.clientAppManager();
+                    //if (cmgr != null && cmgr.getRegisteredApp("i2ptunnel") == null)
+                    //    continue;
                 } else if (url.equals("/configplugins")) {
                     if (!PluginStarter.pluginsEnabled(_context))
                         continue;
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
index 88977c7c14e209b1058e1b03f3495f215d03a61c..98915f0de1b2a0583c55e432d06668f67a33b648 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryBarRenderer.java
@@ -354,7 +354,7 @@ class SummaryBarRenderer {
             svcs.put(tx, rbuf.toString());
         }
 
-        if (pm.isRegistered(PortMapper.SVC_I2PTUNNEL)) {
+        if (_helper.isI2PTunnelRunning()) {
             String tx = _t("Hidden Services Manager");
             rbuf.setLength(0);
             rbuf.append("<a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"")
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java
index dc9480c094287ae3e9a7936249bd3802ea704231..689ea3d5342ff46c3d6c8c516ae74577e219c292 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/SummaryHelper.java
@@ -11,6 +11,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
+import net.i2p.app.ClientAppManager;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.data.Hash;
@@ -565,6 +566,18 @@ public class SummaryHelper extends HelperBase {
         return DataHelper.formatSize2Decimal(sent) + 'B';
     }
 
+    /**
+     * Are both the webapp and TCG running?
+     *
+     * @since 0.9.58
+     */
+    public boolean isI2PTunnelRunning() {
+        if (!_context.portMapper().isRegistered(PortMapper.SVC_I2PTUNNEL))
+            return false;
+        ClientAppManager cmgr = _context.clientAppManager();
+        return cmgr != null && cmgr.getRegisteredApp("i2ptunnel") != null;
+    }
+
     /**
      * Client destinations connected locally.
      *
@@ -575,7 +588,7 @@ public class SummaryHelper extends HelperBase {
         List<Destination> clients = new ArrayList<Destination>(_context.clientManager().listClients());
 
         StringBuilder buf = new StringBuilder(512);
-        boolean link = _context.portMapper().isRegistered("i2ptunnel");
+        boolean link = isI2PTunnelRunning();
         buf.append("<h3>");
         if (link) {
             buf.append("<a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"")
diff --git a/core/java/src/net/i2p/util/PortMapper.java b/core/java/src/net/i2p/util/PortMapper.java
index 661904f20183dc0bacfb6d0f0acd39b832b53cb5..3553c9b5ae166ab0c384d25210438541ca990fb7 100644
--- a/core/java/src/net/i2p/util/PortMapper.java
+++ b/core/java/src/net/i2p/util/PortMapper.java
@@ -60,6 +60,10 @@ public class PortMapper {
     /**
      *  To indicate presence, alternative to WebAppStarter.isWebappRunning().
      *  For actual base URL, use getConsoleURL()
+     *
+     *  Note: This is only the webapp. Also requires TCG running to be useful.
+     *  The webapp does not start TCG.
+     *
      *  @since 0.9.34
      */
     public static final String SVC_I2PTUNNEL = "i2ptunnel";