## MongoDB

MongoDB is the recommended database for Komodo. It stores all resource configuration, user accounts, audit logs, and system state. Komodo Core communicates with it directly using the MongoDB driver.

## Quick Start

1. Copy `komodo/mongo.compose.yaml` and `komodo/compose.env` to your host:

```bash
    wget -P komodo https://raw.githubusercontent.com/moghtech/komodo/main/compose/mongo.compose.yaml && \
      wget -P komodo https://raw.githubusercontent.com/moghtech/komodo/main/compose/compose.env
    ```

2. Edit the variables in `komodo/compose.env`.
3. Deploy using command:

```bash
    docker compose -p komodo -f komodo/mongo.compose.yaml --env-file komodo/compose.env up -d
    ```

- mongo.compose.yaml  
- compose.env

https://github.com/moghtech/komodo/blob/main/compose/mongo.compose.yaml

```yaml
    ################################
    # 🦎 KOMODO COMPOSE - MONGO 🦎 #
    ################################

## This compose file will deploy:
    ##   1. MongoDB
    ##   2. Komodo Core
    ##   3. Komodo Periphery

services:
      mongo:
        image: mongo
        labels:
          komodo.skip: # Prevent Komodo from stopping with StopAllContainers
        command: --quiet --wiredTigerCacheSizeGB 0.25
        restart: unless-stopped
        volumes:
          - mongo-data:/data/db
          - mongo-config:/data/configdb
        environment:
          MONGO_INITDB_ROOT_USERNAME: ${KOMODO_DATABASE_USERNAME}
          MONGO_INITDB_ROOT_PASSWORD: ${KOMODO_DATABASE_PASSWORD}

core:
        image: ghcr.io/moghtech/komodo-core:${COMPOSE_KOMODO_IMAGE_TAG:-2}
        init: true
        restart: unless-stopped
        depends_on:
          - mongo
        ports:
          - 9120:9120
        env_file: ./compose.env
        environment:
          KOMODO_DATABASE_ADDRESS: mongo:27017
        volumes:
          - keys:/config/keys
          - ${COMPOSE_KOMODO_BACKUPS_PATH}:/backups

periphery:
        image: ghcr.io/moghtech/komodo-periphery:${COMPOSE_KOMODO_IMAGE_TAG:-2}
        init: true
        restart: unless-stopped
        depends_on:
          - core
        env_file: ./compose.env
        volumes:
          - keys:/config/keys
          - /var/run/docker.sock:/var/run/docker.sock
          - /proc:/proc
          - ${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}:${PERIPHERY_ROOT_DIRECTORY:-/etc/komodo}

volumes:
      mongo-data:
      mongo-config:
      keys:
    ```

https://github.com/moghtech/komodo/blob/main/compose/compose.env

```bash
    ####################################
    # 🦎 KOMODO COMPOSE - VARIABLES 🦎 #
    ####################################

## These compose variables can be used with all Komodo deployment options.

COMPOSE_KOMODO_IMAGE_TAG="2"
    COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups

## DB credentials
    KOMODO_DATABASE_USERNAME=admin
    KOMODO_DATABASE_PASSWORD=admin

## Set your time zone for schedules
    TZ=Etc/UTC

## Full variable list + descriptions are available here:
    ## 🦎 https://github.com/moghtech/komodo/blob/main/config/core.config.toml 🦎

KOMODO_HOST=https://example.komodo.com
    KOMODO_TITLE=Komodo
    KOMODO_PERIPHERY_PUBLIC_KEY=file:/config/keys/periphery.pub
    KOMODO_LOCAL_AUTH=true
    KOMODO_INIT_ADMIN_USERNAME=admin
    KOMODO_INIT_ADMIN_PASSWORD=changeme
    KOMODO_FIRST_SERVER_NAME=Local
    KOMODO_DISABLE_CONFIRM_DIALOG=false
    KOMODO_DISABLE_INIT_RESOURCES=false
    KOMODO_WEBHOOK_SECRET=a_random_secret
    KOMODO_JWT_SECRET=a_random_jwt_secret
    KOMODO_JWT_TTL="1-day"
    KOMODO_MONITORING_INTERVAL="15-sec"
    KOMODO_RESOURCE_POLL_INTERVAL="1-hr"
    KOMODO_DISABLE_USER_REGISTRATION=false
    KOMODO_ENABLE_NEW_USERS=false
    KOMODO_DISABLE_NON_ADMIN_CREATE=false
    KOMODO_TRANSPARENT_MODE=false
    KOMODO_OIDC_ENABLED=false
    KOMODO_AWS_ACCESS_KEY_ID=
    KOMODO_AWS_SECRET_ACCESS_KEY=
    KOMODO_LOGGING_PRETTY=false
    KOMODO_PRETTY_STARTUP_CONFIG=false

## Full variable list + descriptions are available here:
    ## 🦎 https://github.com/moghtech/komodo/blob/main/config/periphery.config.toml 🦎

PERIPHERY_CORE_ADDRESS=ws://core:9120
    PERIPHERY_CONNECT_AS=${KOMODO_FIRST_SERVER_NAME}
    PERIPHERY_CORE_PUBLIC_KEYS=file:/config/keys/core.pub
    PERIPHERY_ROOT_DIRECTORY=/etc/komodo
    PERIPHERY_DISABLE_TERMINALS=false
    PERIPHERY_DISABLE_CONTAINER_TERMINALS=false
    PERIPHERY_INCLUDE_DISK_MOUNTS=/etc/hostname
    PERIPHERY_LOGGING_PRETTY=false
    PERIPHERY_PRETTY_STARTUP_CONFIG=false
    ```

- [Quick Start](/content/docs/setup/mongo#quick-start/index.html)
