listen on IPv4 (can't do dual-stack; Java requires an OS which allows
IPv4 connections on IPv6 sockets)

Index: conf/server.xml
--- conf/server.xml.orig
+++ conf/server.xml
@@ -68,6 +68,7 @@
          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
     -->
     <Connector port="8080" protocol="HTTP/1.1"
+               address="0.0.0.0"
                connectionTimeout="20000"
                redirectPort="8443"
                maxParameterCount="1000"
@@ -75,6 +76,7 @@
     <!-- A "Connector" using the shared thread pool-->
     <!--
     <Connector executor="tomcatThreadPool"
+               address="0.0.0.0"
                port="8080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443"
@@ -90,6 +92,7 @@
     -->
     <!--
     <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
+               address="0.0.0.0"
                maxThreads="150" SSLEnabled="true"
                maxParameterCount="1000"
                >
@@ -104,7 +107,7 @@
     <!-- Define an AJP 1.3 Connector on port 8009 -->
     <!--
     <Connector protocol="AJP/1.3"
-               address="::1"
+               address="127.0.0.1"
                port="8009"
                redirectPort="8443"
                maxParameterCount="1000"
@@ -140,7 +143,7 @@
                resourceName="UserDatabase"/>
       </Realm>
 
-      <Host name="localhost"  appBase="webapps"
+      <Host name="localhost"  appBase="${CATALINA_BASE}/webapps"
             unpackWARs="true" autoDeploy="true">
 
         <!-- SingleSignOn valve, share authentication between web applications
