template.yaml 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  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_host:
  85. default: komodo
  86. traefik_network:
  87. default: traefik
  88. type: str
  89. required: true
  90. traefik_domain:
  91. default: home.arpa
  92. type: str
  93. required: true
  94. traefik_enabled:
  95. type: bool
  96. default: false
  97. description: Enable Traefik integration
  98. traefik_tls:
  99. vars:
  100. traefik_tls_certresolver:
  101. type: str
  102. default: cloudflare
  103. required: true
  104. traefik_tls_enabled:
  105. type: bool
  106. default: false
  107. description: Enable Traefik TLS
  108. network:
  109. vars:
  110. network_name:
  111. default: komodo_network
  112. network_macvlan_ipv4_address:
  113. type: str
  114. default: 192.168.1.253
  115. needs:
  116. - network_mode=macvlan
  117. required: true
  118. network_macvlan_parent_interface:
  119. type: str
  120. default: eth0
  121. needs:
  122. - network_mode=macvlan
  123. required: true
  124. network_macvlan_subnet:
  125. type: str
  126. default: 192.168.1.0/24
  127. needs:
  128. - network_mode=macvlan
  129. required: true
  130. network_macvlan_gateway:
  131. type: str
  132. default: 192.168.1.1
  133. needs:
  134. - network_mode=macvlan
  135. required: true
  136. network_external:
  137. type: bool
  138. default: false
  139. description: Whether the network is external
  140. network_mode:
  141. type: str
  142. default: bridge
  143. description: The network mode for the container
  144. ports:
  145. vars:
  146. ports_http:
  147. description: External HTTP port (web interface and API)
  148. type: int
  149. default: 9120
  150. needs:
  151. - traefik_enabled=false
  152. - network_mode=bridge
  153. volume:
  154. vars:
  155. volume_mount_path:
  156. default: /mnt/storage/komodo
  157. volume_nfs_server:
  158. type: str
  159. default: 192.168.1.1
  160. needs:
  161. - volume_mode=nfs
  162. required: true
  163. volume_nfs_path:
  164. type: str
  165. default: /export
  166. needs:
  167. - volume_mode=nfs
  168. required: true
  169. volume_nfs_options:
  170. type: str
  171. default: rw,nolock,soft
  172. needs:
  173. - volume_mode=nfs
  174. required: true
  175. volume_mode:
  176. type: enum
  177. options:
  178. - local
  179. - mount
  180. - nfs
  181. default: local
  182. description: The volume mode
  183. resources:
  184. vars:
  185. resources_enabled:
  186. type: bool
  187. default: false
  188. resources_cpu_limit:
  189. type: str
  190. default: 1.0
  191. required: true
  192. resources_cpu_reservation:
  193. type: str
  194. default: 0.25
  195. needs:
  196. - swarm_enabled=true
  197. required: true
  198. resources_memory_limit:
  199. type: str
  200. default: 1G
  201. required: true
  202. resources_memory_reservation:
  203. type: str
  204. default: 512M
  205. needs:
  206. - swarm_enabled=true
  207. required: true
  208. environment:
  209. title: Environment Variables
  210. toggle: environment_enabled
  211. required: true
  212. vars:
  213. environment_enabled:
  214. type: bool
  215. default: true
  216. description: Configure environment variables (required)
  217. environment_database_address:
  218. type: str
  219. default: mongodb://mongo:27017
  220. description: Database connection address (MongoDB or FerretDB)
  221. needs: environment_enabled=true
  222. environment_database_name:
  223. type: str
  224. default: komodo
  225. description: Database name
  226. needs: environment_enabled=true
  227. environment_database_username:
  228. type: str
  229. default: ''
  230. description: Database username (optional)
  231. needs: environment_enabled=true
  232. environment_database_password:
  233. type: str
  234. default: ''
  235. sensitive: true
  236. description: Database password (optional)
  237. needs: environment_enabled=true
  238. environment_jwt_secret:
  239. type: str
  240. default: ''
  241. sensitive: true
  242. autogenerated: true
  243. description: JWT secret for authentication (auto-generated if empty)
  244. needs: environment_enabled=true
  245. environment_log_level:
  246. type: enum
  247. default: info
  248. options:
  249. - debug
  250. - info
  251. - warn
  252. - error
  253. description: Log level
  254. needs: environment_enabled=true
  255. swarm:
  256. vars:
  257. swarm_enabled:
  258. type: bool
  259. default: false
  260. description: Enable Docker Swarm mode
  261. swarm_placement_host:
  262. type: str
  263. default: ''
  264. description: The placement host
  265. swarm_placement_mode:
  266. type: str
  267. default: replicated
  268. description: The placement mode
  269. swarm_replicas:
  270. type: int
  271. default: 1
  272. description: The number of replicas