| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- kind: compose
- metadata:
- icon:
- provider: selfh
- id: komodo
- 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
- '
- draft: true
- 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
- '
- schema: '1.2'
- spec:
- general:
- vars:
- service_name:
- default: komodo
- container_name:
- default: komodo
- container_hostname:
- default: komodo
- restart_policy:
- type: enum
- options:
- - unless-stopped
- - always
- - on-failure
- - 'no'
- default: unless-stopped
- required: true
- traefik:
- vars:
- traefik_enabled:
- type: bool
- default: false
- description: Enable Traefik integration
- traefik_entrypoint:
- description: The Traefik entrypoint
- type: str
- required: true
- default: web
- traefik_host:
- default: homepage
- traefik_network:
- default: traefik
- type: str
- required: true
- traefik_domain:
- default: home.arpa
- type: str
- required: true
- toggle: traefik_enabled
- title: Traefik
- description: Configure Traefik reverse proxy integration
- traefik_tls:
- vars:
- traefik_tls_enabled:
- description: Enable Traefik TLS
- type: bool
- default: false
- traefik_tls_entrypoint:
- description: The Traefik TLS entrypoint
- type: str
- default: websecure
- required: true
- traefik_tls_certresolver:
- type: str
- required: true
- default: cloudflare
- toggle: traefik_tls_enabled
- title: Traefik TLS
- description: Configure Traefik TLS/SSL certificates
- needs: traefik
- network: null
- ports:
- vars:
- ports_http:
- description: External HTTP port (web interface and API)
- type: int
- default: 9120
- needs:
- - traefik_enabled=false
- - network_mode=bridge
- volume: null
- resources:
- vars:
- resources_enabled:
- type: bool
- default: false
- resources_cpu_limit:
- type: str
- default: 1.0
- required: true
- resources_cpu_reservation:
- type: str
- default: 0.25
- needs:
- - swarm_enabled=true
- required: true
- resources_memory_limit:
- type: str
- default: 1G
- required: true
- resources_memory_reservation:
- type: str
- default: 512M
- needs:
- - swarm_enabled=true
- required: true
- toggle: resources_enabled
- title: Resource Limits
- description: Configure container resource limits
- 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
- swarm:
- vars:
- swarm_enabled:
- type: bool
- default: false
- description: Enable Docker Swarm mode
- swarm_placement_host:
- type: str
- default: ''
- description: The placement host
- swarm_placement_mode:
- type: str
- default: replicated
- description: The placement mode
- swarm_replicas:
- type: int
- default: 1
- description: The number of replicas
- toggle: swarm_enabled
- title: Docker Swarm
- description: Configure Docker Swarm mode deployment
|