template.yaml 6.1 KB

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