# 3.13. Miscellaneous Parameters

## 3.13.1. Configuration of Attachment Storage

`[attachments]`
  `compression_level`

    Defines zlib compression level for the attachments from `1` (lowest, fastest) to `9` (highest, slowest). A value of `0` disables compression:

        [attachments]
        compression_level = 8

  `compressible_types`

    Since compression is ineffective for some types of files, it is possible to let CouchDB compress only some types of attachments, specified by their MIME type:

        [attachments]
        compressible_types = text/*, application/javascript, application/json, application/xml

## 3.13.2. Statistic Calculation

`[stats]`
  `interval`

    Interval between gathering statistics in seconds:

        [stats]
        interval = 10

## 3.13.3. UUIDs Configuration

`[uuids]`
  `algorithm`

    Changed in version 1.3: Added `utc_id` algorithm.

    CouchDB provides various algorithms to generate the UUID values that are used for document _id’s by default:

        [uuids]
        algorithm = sequential

    Available algorithms:

    - `random`: 128 bits of random awesome. All awesome, all the time:

          {
              "uuids": [
                  "5fcbbf2cb171b1d5c3bc6df3d4affb32",
                  "9115e0942372a87a977f1caf30b2ac29",
                  "3840b51b0b81b46cab99384d5cd106e3",
                  "b848dbdeb422164babf2705ac18173e1",
                  "b7a8566af7e0fc02404bb676b47c3bf7",
                  "a006879afdcae324d70e925c420c860d",
                  "5f7716ee487cc4083545d4ca02cd45d4",
                  "35fdd1c8346c22ccc43cc45cd632e6d6",
                  "97bbdb4a1c7166682dc026e1ac97a64c",
                  "eb242b506a6ae330bda6969bb2677079"
              ]
          }

    - `sequential`: Monotonically increasing ids with random increments. The first 26 hex characters are random, the last 6 increment in random amounts until an overflow occurs. On overflow, the random prefix is regenerated and the process starts over.

          {
              "uuids": [
                  "4e17c12963f4bee0e6ec90da54804894",
                  "4e17c12963f4bee0e6ec90da5480512f",
                  "4e17c12963f4bee0e6ec90da54805c25",
                  "4e17c12963f4bee0e6ec90da54806ba1",
                  "4e17c12963f4bee0e6ec90da548072b3",
                  "4e17c12963f4bee0e6ec90da54807609",
                  "4e17c12963f4bee0e6ec90da54807718",
                  "4e17c12963f4bee0e6ec90da54807754",
                  "4e17c12963f4bee0e6ec90da54807e5d",
                  "4e17c12963f4bee0e6ec90da54808d28"
              ]
          }

    - `utc_random`: The time since Jan 1, 1970 UTC, in microseconds. The first 14 characters are the time in hex. The last 18 are random.

          {
              "uuids": [
                  "04dd32b3af699659b6db9486a9c58c62",
                  "04dd32b3af69bb1c2ac7ebfee0a50d88",
                  "04dd32b3af69d8591b99a8e86a76e0fb",
                  "04dd32b3af69f4a18a76efd89867f4f4",
                  "04dd32b3af6a1f7925001274bbfde952",
                  "04dd32b3af6a3fe8ea9b120ed906a57f",
                  "04dd32b3af6a5b5c518809d3d4b76654",
                  "04dd32b3af6a78f6ab32f1e928593c73",
                  "04dd32b3af6a99916c665d6bbf857475",
                  "04dd32b3af6ab558dd3f2c0afacb7d66"
              ]
          }

    - `utc_id`: The time since Jan 1, 1970 UTC, in microseconds, plus the `utc_id_suffix` string. The first 14 characters are the time in hex. The `uuids/utc_id_suffix` string value is appended to these.

          {
              "uuids": [
                  "04dd32bd5eabcc@mycouch",
                  "04dd32bd5eabee@mycouch",
                  "04dd32bd5eac05@mycouch",
                  "04dd32bd5eac28@mycouch",
                  "04dd32bd5eac43@mycouch",
                  "04dd32bd5eac58@mycouch",
                  "04dd32bd5eac6e@mycouch",
                  "04dd32bd5eac84@mycouch",
                  "04dd32bd5eac98@mycouch",
                  "04dd32bd5eacad@mycouch"
              ]
          }

    Note

    Impact of UUID choices: the choice of UUID has a significant impact on the layout of the B-tree, prior to compaction.

    For example, using a sequential UUID algorithm while uploading a large batch of documents will avoid the need to rewrite many intermediate B-tree nodes. A random UUID algorithm may require rewriting intermediate nodes on a regular basis, resulting in significantly decreased throughput and wasted disk space space due to the append-only B-tree design.

    It is generally recommended to set your own UUIDs, or use the sequential algorithm unless you have a specific need and take into account the likely need for compaction to re-balance the B-tree and reclaim wasted space.

  `utc_id_suffix`

    New in version 1.3.

    The `utc_id_suffix` value will be appended to UUIDs generated by the `utc_id` algorithm. Replicating instances should have unique `utc_id_suffix` values to ensure uniqueness of `utc_id` ids.

        [uuid]
        utc_id_suffix = my-awesome-suffix

  `max_count`

    New in version 1.5.1.

    No more than this number of UUIDs will be sent in a single request. If more UUIDs are requested, an HTTP error response will be thrown.

        [uuid]
        max_count = 1000

## 3.13.4. Vendor information

`[vendor]`

  New in version 1.3.

  CouchDB distributors have the option of customizing CouchDB’s welcome message. This is returned when requesting `GET /`.

      [vendor]
      name = The Apache Software Foundation
      version = 1.5.0

## 3.13.5. Content-Security-Policy

`[csp]`

  You can configure `Content-Security-Policy` header for Fauxton, attachments and show/list functions separately. See MDN Content-Security-Policy for more details on CSP.

  > `utils_enable`

  >   Enable the sending of the header `Content-Security-Policy` for `/_utils`. Defaults to `true`:

  >       [csp]
  >       utils_enable = true

  > `utils_header_value`

  >   Specifies the exact header value to send. Defaults to:

  >       [csp]
  >       utils_header_value = default-src 'self'; img-src 'self'; font-src *; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline';

  > `attachments_enable`

  >   Enable sending the `Content-Security-Policy` header for attachments:

  >       [csp]
  >       attachments_enable = true

  > `attachments_header_value`

  >   Specifies the exact header value to send. Defaults to:

  >       [csp]
  >       attachments_header_value = sandbox

  > `showlist_enable`

  >   Enable sending the `Content-Security-Policy` header for show and list functions:

  >       [csp]
  >       showlist_enable = true

  > `showlist_header_value`

  >   Specifies the exact header value to send. Defaults to:

  >       [csp]
  >       showlist_header_value = sandbox

  > The pre 3.2.0 behaviour is still honoured, but we recommend updating to the new format.

  > Experimental support of CSP headers for `/_utils` (Fauxton).

  > `enable`

  >   Enable the sending of the Header `Content-Security-Policy`:

  >       [csp]
  >       enable = true

  > `header_value`

  >   You can change the default value for the Header which is sent:

  >       [csp]
  >       header_value = default-src 'self'; img-src *; font-src *;

## 3.13.6. Configuration of Database Purge

`[purge]`
  `max_document_id_number`

    New in version 3.0.

    Sets the maximum number of documents allowed in a single purge request:

        [purge]
        max_document_id_number = 100

  `max_revisions_number`

    New in version 3.0.

    Sets the maximum number of accumulated revisions allowed in a single purge request:

        [purge]
        max_revisions_number = 1000

  `index_lag_warn_seconds`

    New in version 3.0.

    Sets the allowed duration when index is not updated for local purge checkpoint document. Default is 24 hours:

        [purge]
        index_lag_warn_seconds = 86400

## 3.13.7. Configuration of Prometheus Endpoint

`[prometheus]`
  `additional_port`

    New in version 3.2.

    Sets whether or not to create a separate, non-authenticated port (default is false):

        [prometheus]
        additional_port = true

  `bind_address`

    New in version 3.2.

    The IP address to bind:

        [prometheus]
        bind_address = 127.0.0.1

  `port`

    New in version 3.2.

    The port on which clients can query prometheus endpoint data without authentication

    > [prometheus] port = 17986