| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- ---
- kind: compose
- schema: "1.2"
- metadata:
- name: Komodo
- description: |
- Build and deployment automation tool for managing software across multiple servers. Komodo provides
- unlimited server connections, flexible API access, and comprehensive management of Docker deployments,
- stacks, and builds. Features include real-time container monitoring, batch operations, and integration
- with Docker, Docker Compose, and build systems. Supports both MongoDB and FerretDB as database backends.
- ## Important Notes
- * Requires MongoDB or FerretDB for data storage (database not included in this template)
- * Requires Periphery agent on managed servers for remote operations
- * Web interface and API accessible through configured ports
- ## References
- * **Project:** https://github.com/moghtech/komodo
- * **Documentation:** https://github.com/moghtech/komodo/tree/main/docsite/docs
- * **Docker Hub:** https://hub.docker.com/r/moghtech/komodo
- version: latest
- author: Christian Lempa
- date: '2025-11-13'
- tags:
- - traefik
- - swarm
- - deployment
- - automation
- next_steps: |
- ### 1. Prerequisites
- * Deploy MongoDB or FerretDB database
- * Configure database connection in environment variables
- * Install Periphery agent on servers you want to manage
- ### 2. Deploy the Service
- {% if swarm_enabled -%}
- Deploy to Docker Swarm:
- ```bash
- docker stack deploy -c compose.yaml komodo
- ```
- {% else -%}
- Start Komodo using Docker Compose:
- ```bash
- docker compose up -d
- ```
- {% endif -%}
- ### 3. Access the Web Interface
- {% if traefik_enabled -%}
- * Navigate to: **https://{{ traefik_host }}.{{ traefik_domain }}**
- {% else -%}
- * Navigate to: **http://localhost:{{ ports_http }}**
- {% endif -%}
- * Complete initial setup and create admin user
- ### 4. Install Periphery Agent
- On each server you want to manage:
- ```bash
- curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py | python3
- ```
- ### 5. Configure Servers
- * Add servers to Komodo through the web interface
- * Configure API keys for programmatic access
- * Start managing deployments, stacks, and builds
- spec:
- general:
- vars:
- service_name:
- default: "komodo"
- container_name:
- default: "komodo"
- container_hostname:
- default: "komodo"
- traefik:
- vars:
- traefik_host:
- default: "komodo"
- network:
- vars:
- network_name:
- default: "komodo_network"
- ports:
- vars:
- ports_http:
- description: "External HTTP port (web interface and API)"
- type: int
- default: 9120
- needs: ["traefik_enabled=false", "network_mode=bridge"]
- volume:
- vars:
- volume_mount_path:
- default: "/mnt/storage/komodo"
- environment:
- title: "Environment Variables"
- toggle: environment_enabled
- required: true
- vars:
- environment_enabled:
- type: bool
- default: true
- description: "Configure environment variables (required)"
- environment_database_address:
- type: str
- default: "mongodb://mongo:27017"
- description: "Database connection address (MongoDB or FerretDB)"
- needs: "environment_enabled=true"
- environment_database_name:
- type: str
- default: "komodo"
- description: "Database name"
- needs: "environment_enabled=true"
- environment_database_username:
- type: str
- default: ""
- description: "Database username (optional)"
- needs: "environment_enabled=true"
- environment_database_password:
- type: str
- default: ""
- sensitive: true
- description: "Database password (optional)"
- needs: "environment_enabled=true"
- environment_jwt_secret:
- type: str
- default: ""
- sensitive: true
- autogenerated: true
- description: "JWT secret for authentication (auto-generated if empty)"
- needs: "environment_enabled=true"
- environment_log_level:
- type: enum
- default: "info"
- options: ["debug", "info", "warn", "error"]
- description: "Log level"
- needs: "environment_enabled=true"
|