# A alternative for Portainer. A very powerfull tool
# I have all my compose files on Git. And push them to Komodo automatic (Webhook)
# Create on your local machine in /etc/ the folder komodo (/etc/komodo)
# For full doc: https://komo.do/docs/intro

services:
  komodo_core:
    image: ghcr.io/moghtech/komodo-core:latest
    labels:
      komodo.skip:
    container_name: komodo_core
    hostname: komodo_core
    restart: always
    depends_on:
      - komodo_ferretdb
    ports:
      - 9120:9120
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - /volumeUSB1/usbshare/docker/komodo/syncs:/syncs
      - /volumeUSB1/usbshare/docker/komodo/repo-cache:/repo-cache
      - /volumeUSB1/usbshare/docker/komodo/core.config.toml:/config/config.toml
    environment:
      TZ: Europe/Budapest
      PUID: 1026
      PGID: 100
      ###########################
      #   KOMODO CORE CONFIG    #
      ###########################      
      KOMODO_TITLE: "Komodo"
      KOMODO_HOST: http://192.168.123.123
      KOMODO_PORT: 9120
      KOMODO_BIND_IP: 0.0.0.0
      KOMODO_PASSKEY: YOURPASSKEYHERE
      KOMODO_FIRST_SERVER: http://172.30.33.153:8129
      KOMODO_UI_WRITE_DISABLED: false
      KOMODO_DISABLE_CONFIRM_DIALOG: false
      KOMODO_DISABLE_WEBSOCKET_RECONNECT: false
      KOMODO_SYNC_DIRECTORY: "/syncs"
      KOMODO_REPO_DIRECTORY: "/repo-cache"
      KOMODO_ACTION_DIRECTORY: "/action-cache"
      ################
      # AUTH / LOGIN #
      ################
      KOMODO_LOCAL_AUTH: true
      KOMODO_DISABLE_USER_REGISTRATION: false
      KOMODO_ENABLE_NEW_USERS: false
      KOMODO_TRANSPARENT_MODE: false
      KOMODO_DISABLE_NON_ADMIN_CREATE: false
      KOMODO_LOCK_LOGIN_CREDENTIALS_FOR: "[]"
      KOMODO_JWT_SECRET: ""
      KOMODO_JWT_TTL: "1-day"
      #############
      # OIDC Auth #
      #############
      KOMODO_OIDC_ENABLED: false
      KOMODO_OIDC_PROVIDER: "https://oidc.provider.internal/application/o/komodo"
      KOMODO_OIDC_REDIRECT_HOST: ""
      KOMODO_OIDC_CLIENT_ID: ""
      KOMODO_OIDC_USE_FULL_EMAIL: false
      KOMODO_OIDC_ADDITIONAL_AUDIENCES: "[]"
      #########
      # OAUTH #
      #########
      KOMODO_GOOGLE_OAUTH_ENABLED: false
      KOMODO_GOOGLE_OAUTH_ID: ""
      KOMODO_GOOGLE_OAUTH_SECRET: ""
      KOMODO_GITHUB_OAUTH_ENABLED: false
      KOMODO_GITHUB_OAUTH_ID: ""
      KOMODO_GITHUB_OAUTH_SECRET: ""
      ##################
      # POLL INTERVALS #
      ##################
      KOMODO_MONITORING_INTERVAL: "15-sec"
      KOMODO_RESOURCE_POLL_INTERVAL: "1-hr"
      KOMODO_SSL_ENABLED: false
      KOMODO_SSL_KEY_FILE: "/config/ssl/key.pem"
      KOMODO_SSL_CERT_FILE: "/config/ssl/cert.pem"
      ############
      # DATABASE #
      ############
      KOMODO_DATABASE_URI: "" ## OR CONFIG BELOW ##
      KOMODO_DATABASE_ADDRESS: 172.30.33.151:27017
      KOMODO_DATABASE_USERNAME: postgres
      KOMODO_DATABASE_PASSWORD: YOURPOSTGRESPASSWORD
      KOMODO_DATABASE_DB_NAME: komodo
      KOMODO_DATABASE_APP_NAME: komodo_core
      ############
      # WEBHOOKS #
      ############
      KOMODO_WEBHOOK_SECRET: "a_random_webhook_secret"
      KOMODO_WEBHOOK_BASE_URL: ""
      KOMODO_GITHUB_WEBHOOK_APP_APP_ID: 1234455
      KOMODO_GITHUB_WEBHOOK_APP_INSTALLATIONS_IDS: 1234
      KOMODO_GITHUB_WEBHOOK_APP_INSTALLATIONS_NAMESPACES: "namespace"
      KOMODO_GITHUB_WEBHOOK_APP_PK_PATH: "/path/to/pk.pem"
      ###########
      # LOGGING #
      ###########
      KOMODO_LOGGING_LEVEL: "info"
      KOMODO_LOGGING_STDIO: "standard"
      KOMODO_LOGGING_OTLP_ENDPOINT: ""
      KOMODO_LOGGING_OPENTELEMETRY_SERVICE_NAME: "Komodo"
      KOMODO_LOGGING_PRETTY: false
      KOMODO_PRETTY_STARTUP_CONFIG: false
      ###########
      # PRUNING #
      ###########
      KOMODO_KEEP_STATS_FOR_DAYS: 14
      KOMODO_KEEP_ALERTS_FOR_DAYS: 14
      ###################
      # CLOUD PROVIDERS #
      ###################
      KOMODO_AWS_ACCESS_KEY: ""
      KOMODO_AWS_SECRET: ""
    healthcheck:
      disable: true
    extra_hosts:
     - host.docker.internal:host-gateway
    mem_limit: 512m
    cpu_shares: 512
    networks:
       synology:
         ipv4_address: 172.30.33.152
         
  komodo_postgres:
    image: ghcr.io/ferretdb/postgres-documentdb:latest
    labels:
      komodo.skip:
    container_name: komodo_postgres
    hostname: komodo_postgres
    restart: unless-stopped
    volumes:
      - /volumeUSB1/usbshare/docker/komodo/postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: passwordforpostgres
      POSTGRES_DB: postgres
    healthcheck:
      disable: true
    networks:
       synology:
         ipv4_address: 172.30.33.150
      
  komodo_ferretdb:
    image: ghcr.io/ferretdb/ferretdb:latest
    container_name: komodo_ferretdb
    hostname: komodo_ferretdb
    restart: always
    ports:
      - 27017:27017
    depends_on:
      - komodo_postgres
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /volumeUSB1/usbshare/docker/komodo/ferretdb-state:/state
    environment:
      TZ: Europe/Budapest
      PUID: 1026
      PGID: 100
      FERRETDB_POSTGRESQL_URL: postgres://postgres:passwordforpostgres@172.30.33.150:5432/postgres
    healthcheck:
      disable: true
    mem_limit: 512m
    cpu_shares: 512
    labels:
      komodo.skip:
    networks:
       synology:
         ipv4_address: 172.30.33.151
      
  komodo_periphery:
    image: ghcr.io/moghtech/komodo-periphery:latest
    labels:
      komodo.skip:
    container_name: komodo_periphery
    hostname: komodo_periphery
    restart: always
    volumes:
      - /proc:/proc
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - /volumeUSB1/usbshare/docker/komodo/global:/etc/komodo/global
      - /volumeUSB1/usbshare/docker/komodo/repo-cache:/repo-cache
      - /etc/komodo:/etc/komodo
    environment:
      # ################################
      # # 🦎 KOMODO PERIPHERY CONFIG 🦎 #
      # ###############################
      PERIPHERY_PORT: 8129
      PERIPHERY_BIND_IP: "[::]"
      PERIPHERY_ROOT_DIRECTORY: "/etc/komodo"
      PERIPHERY_REPO_DIR: "/etc/komodo/repos"
      PERIPHERY_STACK_DIR: "/etc/komodo/stacks"
      PERIPHERY_BUILD_DIR: "/etc/komodo/builds"
      PERIPHERY_DISABLE_TERMINALS: false
      PERIPHERY_DISABLE_CONTAINER_EXEC: false
      PERIPHERY_STATS_POLLING_RATE: "5-sec"
      PERIPHERY_LEGACY_COMPOSE_CLI: false
      PERIPHERY_INCLUDE_DISK_MOUNTS: "[]"
      PERIPHERY_EXCLUDE_DISK_MOUNTS: "[]"
      ########
      # AUTH #
      ########
      # PERIPHERY_ALLOWED_IPS: "[::]"
      # PERIPHERY_PASSKEYS: ""
      ############
      # Security #
      ############
      PERIPHERY_SSL_ENABLED: false
      PERIPHERY_SSL_KEY_FILE: "/etc/komodo/ssl/key.pem"
      PERIPHERY_SSL_CERT_FILE: "/etc/komodo/ssl/cert.pem"
      ###########
      # LOGGING #
      ###########
      PERIPHERY_LOGGING_LEVEL: info
      PERIPHERY_LOGGING_STDIO: standard
      PERIPHERY_LOGGING_OTLP_ENDPOINT: ""
      PERIPHERY_LOGGING_OPENTELEMETRY_SERVICE_NAME: "Periphery"
      PERIPHERY_LOGGING_PRETTY: false
      PERIPHERY_PRETTY_STARTUP_CONFIG: false
    healthcheck:
      disable: true
    mem_limit: 512m
    cpu_shares: 512
    networks:
       synology:
         ipv4_address: 172.30.33.153
networks:
  synology:
    external: true
