Node folder structure
=====================

A folder containing a Corda node files has the following structure:

.. sourcecode:: none

    .
    ├── additional-node-infos   // Additional node infos to load into the network map cache, beyond what the network map server provides
    ├── artemis                 // Stores buffered P2P messages
    ├── brokers                 // Stores buffered RPC messages
    ├── certificates            // The node's certificates
    ├── corda-webserver.jar     // The built-in node webserver (DEPRECATED)
    ├── corda.jar               // The core Corda libraries (This is the actual Corda node implementation)
    ├── cordapps                // The CorDapp JARs installed on the node
    ├── drivers                 // Contains a Jolokia driver used to export JMX metrics, the node loads any additional JAR files from this directory at startup.
    ├── logs                    // The node's logs
    ├── network-parameters      // The network parameters automatically downloaded from the network map server
    ├── node.conf               // The node's configuration files
    ├── persistence.mv.db       // The node's database
    └── shell-commands          // Custom shell commands defined by the node owner

You install CorDapps on the node by placing CorDapp JARs in the ``cordapps`` folder.

In development mode (i.e. when ``devMode = true``), the ``certificates`` directory is filled with pre-configured
keystores if they do not already exist to ensure that developers can get the nodes working as quickly as
possible.

.. warning:: These pre-configured keystores are not secure and must not used in a production environments.

The keystores store the key pairs and certificates under the following aliases:

* ``nodekeystore.jks`` uses the aliases ``cordaclientca`` and ``identity-private-key``
* ``sslkeystore.jks`` uses the alias ``cordaclienttls``

All the keystores use the password provided in the node's configuration file using the ``keyStorePassword`` attribute.
If no password is configured, it defaults to ``cordacadevpass``.

To learn more, see :doc:`permissioning`.