template.yaml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. ---
  2. kind: compose
  3. metadata:
  4. icon:
  5. provider: selfh
  6. id: homer
  7. name: Homer
  8. description: 'A very simple static homepage for your server to keep your services on hand, from a simple yaml configuration
  9. file.
  10. Project: https://github.com/bastienwirtz/homer
  11. Documentation: https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md
  12. '
  13. version: v25.11.1
  14. author: Christian Lempa
  15. date: '2025-12-11'
  16. tags:
  17. - traefik
  18. - swarm
  19. - authentik
  20. draft: true
  21. next_steps: "1. Start the Homer dashboard:\n docker compose up -d\n\n2. Customize your dashboard:\n - Edit assets/config.yml\
  22. \ to add your services\n - Organize services into groups (Applications, Monitoring, etc.)\n - Add links to the navbar\
  23. \ for quick access\n\n3. Optional: Add a logo:\n - Place your logo.png file in the assets/ directory\n - Or update\
  24. \ the logo path in assets/config.yml\n - Supported formats: PNG, SVG, JPG\n\n4. Optional: Customize the theme:\n -\
  25. \ Uncomment and modify the colors section in config.yml\n - Available themes: default, sui\n - See documentation for\
  26. \ advanced theming options\n\n5. Access your dashboard:\n {% if traefik_enabled -%}\n - Via Traefik: https://{{ traefik_host\
  27. \ }}\n {% if not traefik_enabled and network_mode == 'bridge' %}- Direct access: http://localhost:{{ ports_http }}{%\
  28. \ endif %}\n {%- else -%}\n - Open http://localhost:{{ ports_http }} in your browser\n {%- endif %}\n\nFor more\
  29. \ information, visit: https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md\n"
  30. schema: '1.2'
  31. spec:
  32. general:
  33. vars:
  34. service_name:
  35. default: homer
  36. container_name:
  37. default: homer
  38. container_hostname:
  39. type: str
  40. container_timezone:
  41. type: str
  42. restart_policy:
  43. type: enum
  44. options:
  45. - unless-stopped
  46. - always
  47. - on-failure
  48. - 'no'
  49. default: unless-stopped
  50. required: true
  51. homer_title:
  52. description: Dashboard title
  53. type: str
  54. default: My Dashboard
  55. homer_subtitle:
  56. description: Dashboard subtitle
  57. type: str
  58. default: Homer
  59. homer_logo:
  60. description: Logo file path (relative to assets/)
  61. type: str
  62. default: logo.png
  63. ports:
  64. vars:
  65. ports_http:
  66. description: Host port for HTTP (8080)
  67. type: int
  68. default: 8080
  69. traefik:
  70. vars:
  71. traefik_host:
  72. default: homer.home.arpa
  73. traefik_network:
  74. default: traefik
  75. type: str
  76. required: true
  77. traefik_domain:
  78. default: home.arpa
  79. type: str
  80. required: true
  81. traefik_enabled:
  82. type: bool
  83. default: false
  84. description: Enable Traefik integration
  85. traefik_tls:
  86. vars:
  87. traefik_tls_certresolver:
  88. type: str
  89. default: cloudflare
  90. required: true
  91. traefik_tls_enabled:
  92. type: bool
  93. default: false
  94. description: Enable Traefik TLS
  95. resources:
  96. vars:
  97. resources_enabled:
  98. type: bool
  99. default: false
  100. resources_cpu_limit:
  101. type: str
  102. default: 1.0
  103. required: true
  104. resources_cpu_reservation:
  105. type: str
  106. default: 0.25
  107. needs:
  108. - swarm_enabled=true
  109. required: true
  110. resources_memory_limit:
  111. type: str
  112. default: 1G
  113. required: true
  114. resources_memory_reservation:
  115. type: str
  116. default: 512M
  117. needs:
  118. - swarm_enabled=true
  119. required: true
  120. swarm:
  121. vars:
  122. swarm_placement_mode:
  123. type: enum
  124. options:
  125. - replicated
  126. - global
  127. default: replicated
  128. required: true
  129. swarm_replicas:
  130. type: int
  131. default: 1
  132. needs:
  133. - swarm_placement_mode=replicated
  134. required: true
  135. swarm_placement_host:
  136. type: str
  137. default: ''
  138. needs:
  139. - swarm_placement_mode=replicated
  140. extra: Constrains service to run on specific node by hostname
  141. swarm_enabled:
  142. type: bool
  143. default: false
  144. description: Enable Docker Swarm mode
  145. authentik:
  146. vars:
  147. authentik_traefik_middleware:
  148. type: str
  149. default: authentik-middleware@file
  150. needs:
  151. - traefik_enabled=true
  152. required: true
  153. authentik_client_id:
  154. type: str
  155. default: ''
  156. description: The Authentik client ID
  157. authentik_client_secret:
  158. type: str
  159. default: ''
  160. description: The Authentik client secret
  161. authentik_enabled:
  162. type: bool
  163. default: false
  164. description: Enable Authentik SSO integration
  165. authentik_slug:
  166. type: str
  167. default: ''
  168. description: The Authentik application slug
  169. authentik_url:
  170. type: str
  171. default: ''
  172. description: The Authentik URL