# Configuration files

The server reads an existing XML configuration with one `coordinator` root and a required logger section. It applies the file at startup; edits require a restart.

## Configuration path

Without `--config-file`, the server finds `config.xml` beside the executable. A relative explicit path starts at the working directory. `--db` selects a database file independently and does not change where configuration is found.

The server does not generate or rewrite these files.

## Server example

```xml
<coordinator>
    <listen_host>127.0.0.1</listen_host>
    <tcp_port>7400</tcp_port>
    <http_port>7401</http_port>
    <users_config>users.xml</users_config>
    <logger>
        <level>information</level>
        <log>server.log</log>
        <errorlog>server.err.log</errorlog>
        <size>10M</size>
        <count>3</count>
    </logger>
</coordinator>
```

## Users example

Create `users.xml` in the configuration directory:

```xml
<coordinator>
    <users>
        <default><password></password></default>
    </users>
</coordinator>
```

## Start the server

```sh
./coordinator serve --config-file config.xml --db data.db
```

## Paths and validation

Relative users and log paths start at the configuration directory, independently of `--db`. Unknown or duplicate elements, attributes, namespaces, invalid numbers and missing required sections are configuration errors.

Comments, CDATA and standard XML entities are accepted. DTD declarations are rejected.

## Credentials

A user has exactly one `password` or `password_sha256_hex` field. The latter contains a 64-character SHA-256 digest. An optional `api_key_sha256_hex` associates an HTTP Bearer key with the same user.

Usernames are case-sensitive identifiers. Duplicate users and shared API-key digests are rejected. Password and API-key changes require a restart.

[Server settings](https://coordinatordb.com/docs/reference/settings/server-settings/settings)
