docker-compose.ee.yml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. version: "3.4"
  2. services:
  3. netmaker:
  4. container_name: netmaker
  5. image: gravitl/netmaker:v0.16.3-ee
  6. cap_add:
  7. - NET_ADMIN
  8. - NET_RAW
  9. - SYS_MODULE
  10. sysctls:
  11. - net.ipv4.ip_forward=1
  12. - net.ipv4.conf.all.src_valid_mark=1
  13. - net.ipv6.conf.all.disable_ipv6=0
  14. - net.ipv6.conf.all.forwarding=1
  15. restart: always
  16. volumes:
  17. - dnsconfig:/root/config/dnsconfig
  18. - sqldata:/root/data
  19. - mosquitto_data:/etc/netmaker
  20. environment:
  21. SERVER_NAME: "broker.NETMAKER_BASE_DOMAIN"
  22. SERVER_HOST: "SERVER_PUBLIC_IP"
  23. SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443"
  24. COREDNS_ADDR: "SERVER_PUBLIC_IP"
  25. DNS_MODE: "on"
  26. SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN"
  27. API_PORT: "8081"
  28. CLIENT_MODE: "on"
  29. MASTER_KEY: "REPLACE_MASTER_KEY"
  30. CORS_ALLOWED_ORIGIN: "*"
  31. DISPLAY_KEYS: "on"
  32. DATABASE: "sqlite"
  33. NODE_ID: "netmaker-server-1"
  34. MQ_HOST: "mq"
  35. MQ_PORT: "443"
  36. MQ_SERVER_PORT: "1883"
  37. HOST_NETWORK: "off"
  38. VERBOSITY: "1"
  39. MANAGE_IPTABLES: "on"
  40. PORT_FORWARD_SERVICES: "dns"
  41. METRICS_EXPORTER: "on"
  42. LICENSE_KEY: "YOUR_LICENSE_KEY"
  43. NETMAKER_ACCOUNT_ID: "YOUR_ACCOUNT_ID"
  44. MQ_ADMIN_PASSWORD: "REPLACE_MQ_ADMIN_PASSWORD"
  45. ports:
  46. - "51821-51830:51821-51830/udp"
  47. expose:
  48. - "8081"
  49. labels:
  50. - traefik.enable=true
  51. - traefik.http.routers.netmaker-api.entrypoints=websecure
  52. - traefik.http.routers.netmaker-api.rule=Host(`api.NETMAKER_BASE_DOMAIN`)
  53. - traefik.http.routers.netmaker-api.service=netmaker-api
  54. - traefik.http.services.netmaker-api.loadbalancer.server.port=8081
  55. netmaker-ui:
  56. container_name: netmaker-ui
  57. image: gravitl/netmaker-ui:v0.16.3
  58. depends_on:
  59. - netmaker
  60. links:
  61. - "netmaker:api"
  62. restart: always
  63. environment:
  64. BACKEND_URL: "https://api.NETMAKER_BASE_DOMAIN"
  65. expose:
  66. - "80"
  67. labels:
  68. - traefik.enable=true
  69. - traefik.http.middlewares.nmui-security.headers.accessControlAllowOriginList=*.NETMAKER_BASE_DOMAIN
  70. - traefik.http.middlewares.nmui-security.headers.stsSeconds=31536000
  71. - traefik.http.middlewares.nmui-security.headers.browserXssFilter=true
  72. - traefik.http.middlewares.nmui-security.headers.customFrameOptionsValue=SAMEORIGIN
  73. - traefik.http.middlewares.nmui-security.headers.customResponseHeaders.X-Robots-Tag=none
  74. - traefik.http.middlewares.nmui-security.headers.customResponseHeaders.Server= # Remove the server name
  75. - traefik.http.routers.netmaker-ui.entrypoints=websecure
  76. - traefik.http.routers.netmaker-ui.middlewares=nmui-security@docker
  77. - traefik.http.routers.netmaker-ui.rule=Host(`dashboard.NETMAKER_BASE_DOMAIN`)
  78. - traefik.http.routers.netmaker-ui.service=netmaker-ui
  79. - traefik.http.services.netmaker-ui.loadbalancer.server.port=80
  80. coredns:
  81. container_name: coredns
  82. image: coredns/coredns
  83. command: -conf /root/dnsconfig/Corefile
  84. depends_on:
  85. - netmaker
  86. restart: always
  87. volumes:
  88. - dnsconfig:/root/dnsconfig
  89. traefik:
  90. image: traefik:v2.9
  91. container_name: traefik
  92. command:
  93. - "--certificatesresolvers.http.acme.email=YOUR_EMAIL"
  94. - "--certificatesresolvers.http.acme.storage=/letsencrypt/acme.json"
  95. - "--certificatesresolvers.http.acme.tlschallenge=true"
  96. - "--entrypoints.websecure.address=:443"
  97. - "--entrypoints.websecure.http.tls=true"
  98. - "--entrypoints.websecure.http.tls.certResolver=http"
  99. - "--log.level=INFO"
  100. - "--providers.docker=true"
  101. - "--providers.docker.exposedByDefault=false"
  102. - "--serverstransport.insecureskipverify=true"
  103. restart: always
  104. volumes:
  105. - /var/run/docker.sock:/var/run/docker.sock:ro
  106. - traefik_certs:/letsencrypt
  107. ports:
  108. - "443:443"
  109. mq:
  110. container_name: mq
  111. image: eclipse-mosquitto:2.0.15-openssl
  112. depends_on:
  113. - netmaker
  114. restart: unless-stopped
  115. command: ["/mosquitto/config/wait.sh"]
  116. environment:
  117. NETMAKER_SERVER_HOST: "https://api.NETMAKER_BASE_DOMAIN"
  118. volumes:
  119. - /root/mosquitto.conf:/mosquitto/config/mosquitto.conf
  120. - /root/wait.sh:/mosquitto/config/wait.sh
  121. - mosquitto_data:/mosquitto/data
  122. - mosquitto_logs:/mosquitto/log
  123. expose:
  124. - "8883"
  125. labels:
  126. - traefik.enable=true
  127. - traefik.http.routers.mqtt_websocket.rule=Host(`broker.NETMAKER_BASE_DOMAIN`)
  128. - traefik.http.routers.mqtt_websocket.entrypoints=websecure
  129. - traefik.http.routers.mqtt_websocket.tls.certresolver=http
  130. - traefik.http.services.mqtt_websocket.loadbalancer.server.port=8883
  131. prometheus:
  132. container_name: prometheus
  133. image: gravitl/netmaker-prometheus:latest
  134. environment:
  135. NETMAKER_METRICS_TARGET: "netmaker-exporter.NETMAKER_BASE_DOMAIN"
  136. LICENSE_KEY: "YOUR_LICENSE_KEY"
  137. labels:
  138. - traefik.enable=true
  139. - traefik.http.routers.prometheus.entrypoints=websecure
  140. - traefik.http.routers.prometheus.rule=Host(`prometheus.NETMAKER_BASE_DOMAIN`)
  141. - traefik.http.services.prometheus.loadbalancer.server.port=9090
  142. - traefik.http.routers.prometheus.service=prometheus
  143. restart: always
  144. volumes:
  145. - prometheus_data:/prometheus
  146. depends_on:
  147. - netmaker
  148. ports:
  149. - 9090:9090
  150. grafana:
  151. container_name: grafana
  152. image: gravitl/netmaker-grafana:latest
  153. labels:
  154. - traefik.enable=true
  155. - traefik.http.routers.grafana.entrypoints=websecure
  156. - traefik.http.routers.grafana.rule=Host(`grafana.NETMAKER_BASE_DOMAIN`)
  157. - traefik.http.services.grafana.loadbalancer.server.port=3000
  158. - traefik.http.routers.grafana.service=grafana
  159. environment:
  160. PROMETHEUS_HOST: "prometheus.NETMAKER_BASE_DOMAIN"
  161. NETMAKER_METRICS_TARGET: "netmaker-exporter.NETMAKER_BASE_DOMAIN"
  162. LICENSE_KEY: "YOUR_LICENSE_KEY"
  163. volumes:
  164. - grafana_data:/var/lib/grafana
  165. ports:
  166. - 3000:3000
  167. restart: always
  168. links:
  169. - prometheus
  170. depends_on:
  171. - prometheus
  172. - netmaker
  173. netmaker-exporter:
  174. container_name: netmaker-exporter
  175. image: gravitl/netmaker-exporter:latest
  176. labels:
  177. - traefik.enable=true
  178. - traefik.http.routers.netmaker-exporter.entrypoints=websecure
  179. - traefik.http.routers.netmaker-exporter.rule=Host(`netmaker-exporter.NETMAKER_BASE_DOMAIN`)
  180. - traefik.http.services.netmaker-exporter.loadbalancer.server.port=8085
  181. - traefik.http.routers.netmaker-exporter.service=netmaker-exporter
  182. restart: always
  183. depends_on:
  184. - netmaker
  185. environment:
  186. MQ_HOST: "mq"
  187. MQ_PORT: "443"
  188. MQ_SERVER_PORT: "1883"
  189. PROMETHEUS: "on"
  190. VERBOSITY: "1"
  191. API_PORT: "8085"
  192. LICENSE_KEY: "YOUR_LICENSE_KEY"
  193. PROMETHEUS_HOST: https://prometheus.NETMAKER_BASE_DOMAIN
  194. expose:
  195. - "8085"
  196. volumes:
  197. traefik_certs: {}
  198. sqldata: {}
  199. dnsconfig: {}
  200. mosquitto_data: {}
  201. mosquitto_logs: {}
  202. prometheus_data: {}
  203. grafana_data: {}