diff --git src/allmydata/node.py src/allmydata/node.py
index b68ee2f..45403c5 100644
--- src/allmydata/node.py
+++ src/allmydata/node.py
@@ -153,6 +153,11 @@ class Node(service.MultiService):
             # N.B.: this is in seconds, so use "1800" to get 30min
             self.tub.setOption("disconnectTimeout", int(disconnect_timeout_s))
 
+        # I2P: http proxy
+        http_proxy = self.get_config("node", "http_proxy", "")
+        if http_proxy:
+            self.tub.setOption("httpProxy", http_proxy)
+
         self.nodeid = b32decode(self.tub.tubID.upper()) # binary format
         self.write_config("my_nodeid", b32encode(self.nodeid).lower() + "\n")
         self.short_nodeid = b32encode(self.nodeid).lower()[:8] # ready for printing
@@ -256,7 +261,11 @@ class Node(service.MultiService):
 
         service.MultiService.startService(self)
         d = defer.succeed(None)
-        d.addCallback(lambda res: iputil.get_local_addresses_async())
+        # I2P: don't give out our other addresses
+        if self.get_config("node", "tub.anonymize", False, boolean=True):
+            d.addCallback(lambda res: ['127.0.0.1'])
+        else:
+            d.addCallback(lambda res: iputil.get_local_addresses_async())
         d.addCallback(self._setup_tub)
         def _ready(res):
             self.log("%s running" % self.NODETYPE)
diff --git src/allmydata/scripts/create_node.py src/allmydata/scripts/create_node.py
index 4e23ac0..b2b0d3e 100644
--- src/allmydata/scripts/create_node.py
+++ src/allmydata/scripts/create_node.py
@@ -73,8 +73,11 @@ def write_node_config(c, config):
         webport = ""
     c.write("web.port = %s\n" % webport)
     c.write("web.static = public_html\n")
+    c.write("web.anonymize = false\n")
+    c.write("#http_proxy =\n")
     c.write("#tub.port =\n")
     c.write("#tub.location = \n")
+    c.write("tub.anonymize = false\n")
     c.write("#log_gatherer.furl =\n")
     c.write("#timeout.keepalive =\n")
     c.write("#timeout.disconnect =\n")
diff --git src/allmydata/web/introweb.py src/allmydata/web/introweb.py
index c405cfd..77b31d4 100644
--- src/allmydata/web/introweb.py
+++ src/allmydata/web/introweb.py
@@ -66,9 +66,15 @@ class IntroducerRoot(rend.Page):
 
     # FIXME: This code is duplicated in root.py and introweb.py.
     def data_version(self, ctx, data):
-        return get_package_versions_string()
+        if self.introducer_node.get_config("node", "web.anonymize", False, boolean=True):
+            return "(hidden)"
+        else:
+            return get_package_versions_string()
     def data_import_path(self, ctx, data):
-        return str(allmydata).replace("/", "/ ") # XXX kludge for wrapping
+        if self.introducer_node.get_config("node", "web.anonymize", False, boolean=True):
+            return "(hidden)"
+        else:
+            return str(allmydata).replace("/", "/ ") # XXX kludge for wrapping
     def data_my_nodeid(self, ctx, data):
         return idlib.nodeid_b2a(self.introducer_node.nodeid)
 
diff --git src/allmydata/web/root.py src/allmydata/web/root.py
index 59ebfbd..920f614 100644
--- src/allmydata/web/root.py
+++ src/allmydata/web/root.py
@@ -184,9 +184,15 @@ class Root(rend.Page):
 
     # FIXME: This code is duplicated in root.py and introweb.py.
     def data_version(self, ctx, data):
-        return get_package_versions_string()
+        if self.client.get_config("node", "web.anonymize", False, boolean=True):
+            return "(hidden)"
+        else:
+            return get_package_versions_string()
     def data_import_path(self, ctx, data):
-        return str(allmydata)
+        if self.client.get_config("node", "web.anonymize", False, boolean=True):
+            return "(hidden)"
+        else:
+            return str(allmydata)
     def data_my_nodeid(self, ctx, data):
         return idlib.nodeid_b2a(self.client.nodeid)
     def data_my_nickname(self, ctx, data):
