title: Setup network access for Elasticsearch on Ubuntu running on parallels
body: <p>I have an instance of ubuntu server running version 20.04 installed on parallels on a Mac however I am unable to access it from other devices on my network, only from the instance of ubuntu.</p>
  
  <p><code>lsb_release -a</code> gives the following result</p>
  
  <pre><code>No LSB modules are available.
  Distributor ID: Ubuntu
  Description:    Ubuntu 20.04 LTS
  Release:    20.04
  Codename:   focal
  </code></pre>
  
  <p>I have installed Elasticsearch version 7.6.2 from the APT repository using the instructions <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html" rel="nofollow noreferrer">here</a></p>
  
  <p>I can run <code>curl -X GET 'http://localhost:9200'</code> on ubuntu and get the following output</p>
  
  <pre><code>{
  "name" : "dev",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "u4Xx8JDyTdaWv_HsYK6xXA",
  "version" : {
      "number" : "7.6.2",
      "build_flavor" : "default",
      "build_type" : "deb",
      "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
      "build_date" : "2020-03-26T06:34:37.794943Z",
      "build_snapshot" : false,
      "lucene_version" : "8.4.0",
      "minimum_wire_compatibility_version" : "6.8.0",
      "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
  }
  </code></pre>
  
  <p>If I run <code>hostname -I</code> I get <code>10.211.55.11 fdb2:2c26:f4e4:0:21c:42ff:fee9:e2c5</code> which is the IP address of the ubuntu instance.</p>
  
  <p>However when I run <code>curl -X GET 'http://10.211.55.11:9200'</code> from my Mac I get the following result <code>curl: (7) Failed to connect to 10.211.55.11 port 9200: Connection refused</code></p>
  
  <p><strong>How can I get access to my instance of Elasticsearch from other devices on my network?</strong></p>
  
  <p><code>sudo ufw status</code> gives me the following rules</p>
  
  <pre><code>Status: active
  
  To                         Action      From
  --                         ------      ----
  9200                       ALLOW       Anywhere                  
  9200 (v6)                  ALLOW       Anywhere (v6)   
  </code></pre>
  
  <p><code>/etc/elasticsearch/elasticsearch.yml</code> contains the following</p>
  
  <pre><code># ======================== Elasticsearch Configuration =========================
  #
  # NOTE: Elasticsearch comes with reasonable defaults for most settings.
  #       Before you set out to tweak and tune the configuration, make sure you
  #       understand what are you trying to accomplish and the consequences.
  #
  # The primary way of configuring a node is via this file. This template lists
  # the most important settings you may want to configure for a production cluster.
  #
  # Please consult the documentation for further information on configuration options:
  # https://www.elastic.co/guide/en/elasticsearch/reference/index.html
  #
  # ---------------------------------- Cluster -----------------------------------
  #
  # Use a descriptive name for your cluster:
  #
  #cluster.name: my-application
  #
  # ------------------------------------ Node ------------------------------------
  #
  # Use a descriptive name for the node:
  #
  #node.name: node-1
  #
  # Add custom attributes to the node:
  #
  #node.attr.rack: r1
  #
  # ----------------------------------- Paths ------------------------------------
  #
  # Path to directory where to store the data (separate multiple locations by comma):
  #
  path.data: /var/lib/elasticsearch
  #
  # Path to log files:
  #
  path.logs: /var/log/elasticsearch
  #
  # ----------------------------------- Memory -----------------------------------
  #
  # Lock the memory on startup:
  #
  #bootstrap.memory_lock: true
  #
  # Make sure that the heap size is set to about half the memory available
  # on the system and that the owner of the process is allowed to use this
  # limit.
  #
  # Elasticsearch performs poorly when the system is swapping the memory.
  #
  # ---------------------------------- Network -----------------------------------
  #
  # Set the bind address to a specific IP (IPv4 or IPv6):
  #
  #network.host: 0.0.0.0
  # Set a custom port for HTTP:
  #
  #http.port: 9200
  #
  # For more information, consult the network module documentation.
  #
  # --------------------------------- Discovery ----------------------------------
  #
  # Pass an initial list of hosts to perform discovery when this node is started:
  # The default list of hosts is ["127.0.0.1", "[::1]"]
  #
  #discovery.seed_hosts: ["host1", "host2"]
  #
  # Bootstrap the cluster using an initial set of master-eligible nodes:
  #
  #cluster.initial_master_nodes: ["node-1", "node-2"]
  #
  # For more information, consult the discovery and cluster formation module documentation.
  #
  # ---------------------------------- Gateway -----------------------------------
  #
  # Block initial recovery after a full cluster restart until N nodes are started:
  #
  #gateway.recover_after_nodes: 3
  #
  # For more information, consult the gateway module documentation.
  #
  # ---------------------------------- Various -----------------------------------
  #
  # Require explicit names when deleting indices:
  #
  #action.destructive_requires_name: true
  </code></pre>
  
  <p><strong>Adding network.host:0.0.0.0</strong></p>
  
  <p>After adding the above line to the elasticsearch.yml file I get the following error</p>
  
  <pre><code>Job for elasticsearch.service failed because the control process exited with error code.
  See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
  </code></pre>
  
  <p>running <code>systemctl status elasticsearch.service</code> gives me the following error message</p>
  
  <pre><code>● elasticsearch.service - Elasticsearch
      Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
      Active: failed (Result: exit-code) since Fri 2020-05-01 14:52:23 UTC; 59s ago
      Docs: http://www.elastic.co
      Process: 7086 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=78)
  Main PID: 7086 (code=exited, status=78)
  
  May 01 14:52:03 dev systemd[1]: Starting Elasticsearch...
  May 01 14:52:03 dev elasticsearch[7086]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
  May 01 14:52:23 dev elasticsearch[7086]: ERROR: [1] bootstrap checks failed
  May 01 14:52:23 dev elasticsearch[7086]: [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nod&gt;
  May 01 14:52:23 dev elasticsearch[7086]: ERROR: Elasticsearch did not exit normally - check the logs at /var/log/elasticsearch/elasticsearch.log
  May 01 14:52:23 dev systemd[1]: elasticsearch.service: Main process exited, code=exited, status=78/CONFIG
  May 01 14:52:23 dev systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
  May 01 14:52:23 dev systemd[1]: Failed to start Elasticsearch.
  </code></pre>
  
  <p><code>/var/log/elasticsearch/elasticsearch.log</code> contains the following error logs</p>
  
  <pre><code>[2020-05-01T14:52:22,378][INFO ][o.e.n.Node               ] [dev] starting ...
  [2020-05-01T14:52:22,740][INFO ][o.e.t.TransportService   ] [dev] publish_address {10.211.55.11:9300}, bound_addresses {[::]:9300}
  [2020-05-01T14:52:23,333][INFO ][o.e.b.BootstrapChecks    ] [dev] bound or publishing to a non-loopback address, enforcing bootstrap checks
  [2020-05-01T14:52:23,355][ERROR][o.e.b.Bootstrap          ] [dev] node validation exception
  [1] bootstrap checks failed
  [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
  [2020-05-01T14:52:23,361][INFO ][o.e.n.Node               ] [dev] stopping ...
  [2020-05-01T14:52:23,386][INFO ][o.e.n.Node               ] [dev] stopped
  [2020-05-01T14:52:23,387][INFO ][o.e.n.Node               ] [dev] closing ...
  [2020-05-01T14:52:23,435][INFO ][o.e.n.Node               ] [dev] closed
  [2020-05-01T14:52:23,436][INFO ][o.e.x.m.p.NativeController] [dev] Native controller process has stopped - no new native processes can be started
  </code></pre>