view Sphinx/source/users/configuration.rst @ 1032:6814e5adb789

end of dual licensing and cla
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 02 Feb 2024 16:37:39 +0100
parents a3436ae3709c
children d2be251975d1
line wrap: on
line source

.. _configuration:

Configuration of Orthanc
========================

.. highlight:: bash

Configuring Orthanc simply consists in providing a configuration file.
Orthanc has numerous configuration that are documented in the `default
configuration file
<https://orthanc.uclouvain.be/hg/orthanc/file/Orthanc-1.12.3/OrthancServer/Resources/Configuration.json>`_. This
file is in the `JSON <https://en.wikipedia.org/wiki/JSON>`_ file
format. You can generate this file file with the following call::

    $ Orthanc --config=Configuration.json

The default configuration file would:

* Create a DICOM server with the DICOM AET (Application Entity Title)
  ``ORTHANC`` that listens on the port 4242.
* Create a HTTP server for the REST API that listens on the port 8042.
* Store the Orthanc database in a folder called ``OrthancStorage``.

.. highlight:: json

However, we recommend that you start from an empty configuration file
and only specify the options for which you don't wan't to use
the default value.  In example, a simple configuration file would be::

    {
        "Name": "My archive",
        "HttpPort": 80,
        "DicomAet": "ARCHIVE",
        "DicomPort": 104
    }

It's also a very good practice to split your configuration files per
topic.  In example, have a ``dicom.json`` for everything that is
related to DICOM, a ``http.json`` for all HTTP related configurations,
one file per plugin.  This is how the configuration files are provided
with the Windows Installer.

.. highlight:: bash

Once your configuration file is ready, start Orthanc by giving it the path to the 
configuration file path as a command-line argument.  If you use multiple configuration
files, you may provide the path to the folder containing all configuration files 
(all ``.json`` files will be loaded)::

    $ Orthanc ./Configuration.json
    $ Orthanc ./config/


**Remark 1:** When specifying paths under Microsoft Windows,
backslashes (i.e. ``\``) should be either escaped by doubling them (as
in ``\\``), or replaced by forward slashes (as in ``/``).

**Remark 2:** When installing Orthanc using the `official Windows
installers <https://www.orthanc-server.com/download-windows.php>`__,
you won't be able to edit your files unless you start your editor with
``Run as administrator``. We recommend to edit your configuration file
with an editor such as `Notepad++ <https://notepad-plus-plus.org/>`_.
It shall warn you that this file can be edited only by an admin, and
will suggest you to restart Notepad++ as an admin such that you'll be
able to save it.

**Remark 3:** The official Windows installers include a `Windows
service <https://en.wikipedia.org/wiki/Windows_service>`__ that
automatically starts Orthanc during the startup of Microsoft
Windows. You can control the parameters of the service by typing
``services.msc`` at a command-line prompt. The Windows service of
Orthanc will do its best to cleanly stop Orthanc at the shutdown of
Windows, but `there are some caveats
<https://orthanc.uclouvain.be/bugs/show_bug.cgi?id=48>`__.
 
**Remark 4:** To obtain more diagnostic, you can use the ``--verbose``
or the ``--trace`` options::

    $ Orthanc ./Configuration.json --verbose
    $ Orthanc ./Configuration.json --trace

To learn more about the Orthanc logs, :ref:`check out the dedicated
page <log>`.


.. _orthanc-environment-variables:

Environment variables
---------------------

.. highlight:: json

Starting with Orthanc 1.5.0, the configuration file can include the
value of environment variables. Consider the following configuration::

  {
    "Name" : "${ORTHANC_NAME}"
  }


.. highlight:: bash

In this case, once Orthanc starts, the configuration option ``Name``
will be read from the value of the environment variable
``ORTHANC_NAME``. For instance::

  $ ORTHANC_NAME=Hello ./Orthanc Configuration.json
  $ curl http://localhost:8042/system
  {
    "Name" : "Hello",
    [...]
  }


.. highlight:: json

It is also possible to set a default value if the environment variable
is not set. Here is the syntax in the configuration file::

  {
    "Name" : "${ORTHANC_NAME:-DefaultName}"
  }


.. highlight:: bash

If the environment variable ``ORTHANC_NAME`` is not set, here is the
result::

  $ ./Orthanc Configuration2.json
  $ curl http://localhost:8042/system
  {
    "Name" : "DefaultName",
    [...]
  }