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:
    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)