template.yaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. kind: compose
  2. metadata:
  3. icon:
  4. provider: selfh
  5. id: komodo
  6. name: Komodo
  7. description: 'Build and deployment automation tool for managing software across
  8. multiple servers. Komodo provides
  9. unlimited server connections, flexible API access, and comprehensive management
  10. of Docker deployments,
  11. stacks, and builds. Features include real-time container monitoring, batch operations,
  12. and integration
  13. with Docker, Docker Compose, and build systems. Supports both MongoDB and FerretDB
  14. as database backends.
  15. ## Important Notes
  16. * Requires MongoDB or FerretDB for data storage (database not included in this
  17. template)
  18. * Requires Periphery agent on managed servers for remote operations
  19. * Web interface and API accessible through configured ports
  20. ## References
  21. * **Project:** https://github.com/moghtech/komodo
  22. * **Documentation:** https://github.com/moghtech/komodo/tree/main/docsite/docs
  23. * **Docker Hub:** https://hub.docker.com/r/moghtech/komodo
  24. '
  25. draft: true
  26. version: latest
  27. author: Christian Lempa
  28. date: '2025-11-13'
  29. tags:
  30. - traefik
  31. - swarm
  32. - deployment
  33. - automation
  34. next_steps: '### 1. Prerequisites
  35. * Deploy MongoDB or FerretDB database
  36. * Configure database connection in environment variables
  37. * Install Periphery agent on servers you want to manage
  38. ### 2. Deploy the Service
  39. {% if swarm_enabled -%}
  40. Deploy to Docker Swarm:
  41. ```bash
  42. docker stack deploy -c compose.yaml komodo
  43. ```
  44. {% else -%}
  45. Start Komodo using Docker Compose:
  46. ```bash
  47. docker compose up -d
  48. ```
  49. {% endif -%}
  50. ### 3. Access the Web Interface
  51. {% if traefik_enabled -%}
  52. * Navigate to: **https://{{ traefik_host }}.{{ traefik_domain }}**
  53. {% else -%}
  54. * Navigate to: **http://localhost:{{ ports_http }}**
  55. {% endif -%}
  56. * Complete initial setup and create admin user
  57. ### 4. Install Periphery Agent
  58. On each server you want to manage:
  59. ```bash
  60. curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py
  61. | python3
  62. ```
  63. ### 5. Configure Servers
  64. * Add servers to Komodo through the web interface
  65. * Configure API keys for programmatic access
  66. * Start managing deployments, stacks, and builds
  67. '
  68. schema: '1.2'
  69. spec:
  70. general:
  71. vars:
  72. service_name:
  73. default: komodo
  74. container_name:
  75. default: komodo
  76. container_hostname:
  77. default: komodo
  78. restart_policy:
  79. type: enum
  80. options:
  81. - unless-stopped
  82. - always
  83. - on-failure
  84. - 'no'
  85. default: unless-stopped
  86. required: true
  87. traefik:
  88. vars:
  89. traefik_enabled:
  90. type: bool
  91. default: false
  92. description: Enable Traefik integration
  93. traefik_entrypoint:
  94. description: The Traefik entrypoint
  95. type: str
  96. required: true
  97. default: web
  98. traefik_host:
  99. default: homepage
  100. traefik_network:
  101. default: traefik
  102. type: str
  103. required: true
  104. traefik_domain:
  105. default: home.arpa
  106. type: str
  107. required: true
  108. toggle: traefik_enabled
  109. title: Traefik
  110. description: Configure Traefik reverse proxy integration
  111. traefik_tls:
  112. vars:
  113. traefik_tls_enabled:
  114. description: Enable Traefik TLS
  115. type: bool
  116. default: false
  117. traefik_tls_entrypoint:
  118. description: The Traefik TLS entrypoint
  119. type: str
  120. default: websecure
  121. required: true
  122. traefik_tls_certresolver:
  123. type: str
  124. required: true
  125. default: cloudflare
  126. toggle: traefik_tls_enabled
  127. title: Traefik TLS
  128. description: Configure Traefik TLS/SSL certificates
  129. needs: traefik
  130. network: null
  131. ports:
  132. vars:
  133. ports_http:
  134. description: External HTTP port (web interface and API)
  135. type: int
  136. default: 9120
  137. needs:
  138. - traefik_enabled=false
  139. - network_mode=bridge
  140. volume: null
  141. resources:
  142. vars:
  143. resources_enabled:
  144. type: bool
  145. default: false
  146. resources_cpu_limit:
  147. type: str
  148. default: 1.0
  149. required: true
  150. resources_cpu_reservation:
  151. type: str
  152. default: 0.25
  153. needs:
  154. - swarm_enabled=true
  155. required: true
  156. resources_memory_limit:
  157. type: str
  158. default: 1G
  159. required: true
  160. resources_memory_reservation:
  161. type: str
  162. default: 512M
  163. needs:
  164. - swarm_enabled=true
  165. required: true
  166. toggle: resources_enabled
  167. title: Resource Limits
  168. description: Configure container resource limits
  169. environment:
  170. title: Environment Variables
  171. toggle: environment_enabled
  172. required: true
  173. vars:
  174. environment_enabled:
  175. type: bool
  176. default: true
  177. description: Configure environment variables (required)
  178. environment_database_address:
  179. type: str
  180. default: mongodb://mongo:27017
  181. description: Database connection address (MongoDB or FerretDB)
  182. needs: environment_enabled=true
  183. environment_database_name:
  184. type: str
  185. default: komodo
  186. description: Database name
  187. needs: environment_enabled=true
  188. environment_database_username:
  189. type: str
  190. default: ''
  191. description: Database username (optional)
  192. needs: environment_enabled=true
  193. environment_database_password:
  194. type: str
  195. default: ''
  196. sensitive: true
  197. description: Database password (optional)
  198. needs: environment_enabled=true
  199. environment_jwt_secret:
  200. type: str
  201. default: ''
  202. sensitive: true
  203. autogenerated: true
  204. description: JWT secret for authentication (auto-generated if empty)
  205. needs: environment_enabled=true
  206. environment_log_level:
  207. type: enum
  208. default: info
  209. options:
  210. - debug
  211. - info
  212. - warn
  213. - error
  214. description: Log level
  215. needs: environment_enabled=true
  216. swarm:
  217. vars:
  218. swarm_enabled:
  219. type: bool
  220. default: false
  221. description: Enable Docker Swarm mode
  222. swarm_placement_host:
  223. type: str
  224. default: ''
  225. description: The placement host
  226. swarm_placement_mode:
  227. type: str
  228. default: replicated
  229. description: The placement mode
  230. swarm_replicas:
  231. type: int
  232. default: 1
  233. description: The number of replicas
  234. toggle: swarm_enabled
  235. title: Docker Swarm
  236. description: Configure Docker Swarm mode deployment