template.yaml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. ---
  2. kind: compose
  3. schema: "1.2"
  4. metadata:
  5. icon:
  6. provider: selfh
  7. id: komodo
  8. name: Komodo
  9. description: |
  10. Build and deployment automation tool for managing software across multiple servers. Komodo provides
  11. unlimited server connections, flexible API access, and comprehensive management of Docker deployments,
  12. stacks, and builds. Features include real-time container monitoring, batch operations, and integration
  13. with Docker, Docker Compose, and build systems. Supports both MongoDB and FerretDB as database backends.
  14. ## Important Notes
  15. * Requires MongoDB or FerretDB for data storage (database not included in this template)
  16. * Requires Periphery agent on managed servers for remote operations
  17. * Web interface and API accessible through configured ports
  18. ## References
  19. * **Project:** https://github.com/moghtech/komodo
  20. * **Documentation:** https://github.com/moghtech/komodo/tree/main/docsite/docs
  21. * **Docker Hub:** https://hub.docker.com/r/moghtech/komodo
  22. draft: true
  23. version: latest
  24. author: Christian Lempa
  25. date: '2025-11-13'
  26. tags:
  27. - traefik
  28. - swarm
  29. - deployment
  30. - automation
  31. next_steps: |
  32. ### 1. Prerequisites
  33. * Deploy MongoDB or FerretDB database
  34. * Configure database connection in environment variables
  35. * Install Periphery agent on servers you want to manage
  36. ### 2. Deploy the Service
  37. {% if swarm_enabled -%}
  38. Deploy to Docker Swarm:
  39. ```bash
  40. docker stack deploy -c compose.yaml komodo
  41. ```
  42. {% else -%}
  43. Start Komodo using Docker Compose:
  44. ```bash
  45. docker compose up -d
  46. ```
  47. {% endif -%}
  48. ### 3. Access the Web Interface
  49. {% if traefik_enabled -%}
  50. * Navigate to: **https://{{ traefik_host }}.{{ traefik_domain }}**
  51. {% else -%}
  52. * Navigate to: **http://localhost:{{ ports_http }}**
  53. {% endif -%}
  54. * Complete initial setup and create admin user
  55. ### 4. Install Periphery Agent
  56. On each server you want to manage:
  57. ```bash
  58. curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py | python3
  59. ```
  60. ### 5. Configure Servers
  61. * Add servers to Komodo through the web interface
  62. * Configure API keys for programmatic access
  63. * Start managing deployments, stacks, and builds
  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. traefik:
  74. vars:
  75. traefik_host:
  76. default: "komodo"
  77. network:
  78. vars:
  79. network_name:
  80. default: "komodo_network"
  81. ports:
  82. vars:
  83. ports_http:
  84. description: "External HTTP port (web interface and API)"
  85. type: int
  86. default: 9120
  87. needs: ["traefik_enabled=false", "network_mode=bridge"]
  88. volume:
  89. vars:
  90. volume_mount_path:
  91. default: "/mnt/storage/komodo"
  92. environment:
  93. title: "Environment Variables"
  94. toggle: environment_enabled
  95. required: true
  96. vars:
  97. environment_enabled:
  98. type: bool
  99. default: true
  100. description: "Configure environment variables (required)"
  101. environment_database_address:
  102. type: str
  103. default: "mongodb://mongo:27017"
  104. description: "Database connection address (MongoDB or FerretDB)"
  105. needs: "environment_enabled=true"
  106. environment_database_name:
  107. type: str
  108. default: "komodo"
  109. description: "Database name"
  110. needs: "environment_enabled=true"
  111. environment_database_username:
  112. type: str
  113. default: ""
  114. description: "Database username (optional)"
  115. needs: "environment_enabled=true"
  116. environment_database_password:
  117. type: str
  118. default: ""
  119. sensitive: true
  120. description: "Database password (optional)"
  121. needs: "environment_enabled=true"
  122. environment_jwt_secret:
  123. type: str
  124. default: ""
  125. sensitive: true
  126. autogenerated: true
  127. description: "JWT secret for authentication (auto-generated if empty)"
  128. needs: "environment_enabled=true"
  129. environment_log_level:
  130. type: enum
  131. default: "info"
  132. options: ["debug", "info", "warn", "error"]
  133. description: "Log level"
  134. needs: "environment_enabled=true"