:orphan: Node Configuration ================== When a Crossbar.io node starts in **standalone mode**, the node will read a local configuration from a file and start services as specified in the configuration. - `Configuration File Location <#configuration-file-location>`__ - `Configuration File Format <#configuration-file-format>`__ - `Checking a Configuration <#checking-a-configuration>`__ Configuration File Location --------------------------- The local configuration of a Crossbar.io node is defined in a `JSON `__ file ``.crossbar/config.json`` within the node directory. The default path of the configuration file can be overridden using the ``--cbdir`` and ``--config`` options of the Crossbar.io command line interface (CLI). See ``crossbar start --help``. While the local configuration is the only required file in the node directory, the directory will usually contain other files. For example, here are the contents of a typical Crossbar.io node directory: - ``./.crossbar/`` - **Crossbar.io node directory** - ``./.crossbar/config.json`` - Local node configuration - ``./.crossbar/myapp.sock`` - A Unix domain socket of a configured *Transport* - ``./.crossbar/log`` - Log directory - ``./.crossbar/log/node.log`` - Current log file - ``./.crossbar/log/node.log.2014_4_26`` - Archived log file - ``./.crossbar/cookies.db`` - Crossbar.io authentication cookie database - ``./.crossbar/dhparam.pem`` - TLS Diffie-Hellman server parameter file - ``./.crossbar/myserver_key.pem`` - TLS key of server - ``./.crossbar/myserver_cert.pem`` - TLS certificate of server -------------- Configuration File Format ------------------------- A configuration is a `JSON `__ file with a top level dictionary value. The simplest valid node configuration is just: .. code:: json { } Most of the time however, you will want to configure the processes and services running, and this is done from two sections: for the ``controller`` configuration and for the definition of ``workers`` .. code:: json { "controller": { }, "workers": [ ] } If present, ``controller`` must be a dictionary and ``workers``, if present must be a list of dictionaries. No other attributes other than ``controller`` and ``workers`` are currently allowed. The ``"workers"`` attribute must be a list of workers +---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | parameter | description | +===============+===================================================================================================================================================================================================+ | type | Must be one of "router", "guest" or "container". | +---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | type specific | Please see :doc:`Router Configuration `, :doc:`Guest Configuration` and :doc:`Container Configuration`. | +---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ The contents of the ``controller`` and ``workers`` section is described in the following pages: - :doc:`Controller Configuration ` - :doc:`Router Configuration ` - :doc:`Container Configuration ` - :doc:`Guest Configuration ` Checking a Configuration ------------------------ You can check a configuration by doing: .. code:: console oberstet@corei7ub1310:~/mynode1$ crossbar check Checking local configuration file /home/oberstet/mynode1/.crossbar/config.json Checking process item 1 .. Checking process item 2 .. Checking process item 3 .. Checking module item 1 .. Checking realm item 1 ('realm1') .. Checking transport item 1 .. Ok, configuration file looks good. ``crossbar check`` checks to see if there are any syntactical issues, e.g. invalid attributes. It will NOT catch all possible configuration issues. E.g. if you configure 2 router transports listening on the *same* TCP port, this will not work, but the check won't raise an error. You will only get error feedback upon starting the node.