template.yaml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. ---
  2. kind: compose
  3. metadata:
  4. icon:
  5. provider: selfh
  6. id: komodo
  7. name: Komodo
  8. description: |
  9. Build and deployment automation tool for managing software across multiple servers. Komodo provides
  10. unlimited server connections, flexible API access, and comprehensive management of Docker deployments,
  11. stacks, and builds. Features include real-time container monitoring, batch operations, and integration
  12. with Docker, Docker Compose, and build systems. Supports both MongoDB and FerretDB as database backends.
  13. ## Important Notes
  14. * Requires MongoDB or FerretDB for data storage (database not included in this template)
  15. * Requires Periphery agent on managed servers for remote operations
  16. * Web interface and API accessible through configured ports
  17. ## References
  18. * **Project:** https://github.com/moghtech/komodo
  19. * **Documentation:** https://github.com/moghtech/komodo/tree/main/docsite/docs
  20. * **Docker Hub:** https://hub.docker.com/r/moghtech/komodo
  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: |
  31. ### 1. Prerequisites
  32. * Deploy MongoDB or FerretDB database
  33. * Configure database connection in environment variables
  34. * Install Periphery agent on servers you want to manage
  35. ### 2. Deploy the Service
  36. {% if swarm_enabled -%}
  37. Deploy to Docker Swarm:
  38. ```bash
  39. docker stack deploy -c compose.yaml komodo
  40. ```
  41. {% else -%}
  42. Start Komodo using Docker Compose:
  43. ```bash
  44. docker compose up -d
  45. ```
  46. {% endif -%}
  47. ### 3. Access the Web Interface
  48. {% if traefik_enabled -%}
  49. * Navigate to: **https://{{ traefik_host }}.{{ traefik_domain }}**
  50. {% else -%}
  51. * Navigate to: **http://localhost:{{ ports_http }}**
  52. {% endif -%}
  53. * Complete initial setup and create admin user
  54. ### 4. Install Periphery Agent
  55. On each server you want to manage:
  56. ```bash
  57. curl -sSL https://raw.githubusercontent.com/moghtech/komodo/main/scripts/setup-periphery.py | python3
  58. ```
  59. ### 5. Configure Servers
  60. * Add servers to Komodo through the web interface
  61. * Configure API keys for programmatic access
  62. * Start managing deployments, stacks, and builds
  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. 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"