docker-compose.yml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. version: "3.4"
  2. services:
  3. netmaker:
  4. container_name: netmaker
  5. image: gravitl/netmaker:v0.16.3
  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. BROKER_NAME: "broker.NETMAKER_BASE_DOMAIN"
  22. SERVER_NAME: "NETMAKER_BASE_DOMAIN"
  23. SERVER_HOST: "SERVER_PUBLIC_IP"
  24. SERVER_API_CONN_STRING: "api.NETMAKER_BASE_DOMAIN:443"
  25. COREDNS_ADDR: "SERVER_PUBLIC_IP"
  26. DNS_MODE: "on"
  27. SERVER_HTTP_HOST: "api.NETMAKER_BASE_DOMAIN"
  28. API_PORT: "8081"
  29. CLIENT_MODE: "on"
  30. MASTER_KEY: "REPLACE_MASTER_KEY"
  31. CORS_ALLOWED_ORIGIN: "*"
  32. DISPLAY_KEYS: "on"
  33. DATABASE: "sqlite"
  34. NODE_ID: "netmaker-server-1"
  35. MQ_HOST: "mq"
  36. MQ_PORT: "443"
  37. MQ_SERVER_PORT: "1883"
  38. HOST_NETWORK: "off"
  39. VERBOSITY: "1"
  40. MANAGE_IPTABLES: "on"
  41. PORT_FORWARD_SERVICES: "dns"
  42. MQ_ADMIN_PASSWORD: "REPLACE_MQ_ADMIN_PASSWORD"
  43. ports:
  44. - "51821-51830:51821-51830/udp"
  45. expose:
  46. - "8081"
  47. labels:
  48. - traefik.enable=true
  49. - traefik.http.routers.netmaker-api.entrypoints=websecure
  50. - traefik.http.routers.netmaker-api.rule=Host(`api.NETMAKER_BASE_DOMAIN`)
  51. - traefik.http.routers.netmaker-api.service=netmaker-api
  52. - traefik.http.services.netmaker-api.loadbalancer.server.port=8081
  53. netmaker-ui:
  54. container_name: netmaker-ui
  55. image: gravitl/netmaker-ui:v0.16.3
  56. depends_on:
  57. - netmaker
  58. links:
  59. - "netmaker:api"
  60. restart: always
  61. environment:
  62. BACKEND_URL: "https://api.NETMAKER_BASE_DOMAIN"
  63. expose:
  64. - "80"
  65. labels:
  66. - traefik.enable=true
  67. - traefik.http.middlewares.nmui-security.headers.accessControlAllowOriginList=*.NETMAKER_BASE_DOMAIN
  68. - traefik.http.middlewares.nmui-security.headers.stsSeconds=31536000
  69. - traefik.http.middlewares.nmui-security.headers.browserXssFilter=true
  70. - traefik.http.middlewares.nmui-security.headers.customFrameOptionsValue=SAMEORIGIN
  71. - traefik.http.middlewares.nmui-security.headers.customResponseHeaders.X-Robots-Tag=none
  72. - traefik.http.middlewares.nmui-security.headers.customResponseHeaders.Server= # Remove the server name
  73. - traefik.http.routers.netmaker-ui.entrypoints=websecure
  74. - traefik.http.routers.netmaker-ui.middlewares=nmui-security@docker
  75. - traefik.http.routers.netmaker-ui.rule=Host(`dashboard.NETMAKER_BASE_DOMAIN`)
  76. - traefik.http.routers.netmaker-ui.service=netmaker-ui
  77. - traefik.http.services.netmaker-ui.loadbalancer.server.port=80
  78. coredns:
  79. container_name: coredns
  80. image: coredns/coredns
  81. command: -conf /root/dnsconfig/Corefile
  82. depends_on:
  83. - netmaker
  84. restart: always
  85. volumes:
  86. - dnsconfig:/root/dnsconfig
  87. traefik:
  88. image: traefik:v2.9
  89. container_name: traefik
  90. command:
  91. - "--certificatesresolvers.http.acme.email=YOUR_EMAIL"
  92. - "--certificatesresolvers.http.acme.storage=/letsencrypt/acme.json"
  93. - "--certificatesresolvers.http.acme.tlschallenge=true"
  94. - "--entrypoints.websecure.address=:443"
  95. - "--entrypoints.websecure.http.tls=true"
  96. - "--entrypoints.websecure.http.tls.certResolver=http"
  97. - "--log.level=INFO"
  98. - "--providers.docker=true"
  99. - "--providers.docker.exposedByDefault=false"
  100. - "--serverstransport.insecureskipverify=true"
  101. restart: always
  102. volumes:
  103. - /var/run/docker.sock:/var/run/docker.sock:ro
  104. - traefik_certs:/letsencrypt
  105. ports:
  106. - "443:443"
  107. mq:
  108. container_name: mq
  109. image: eclipse-mosquitto:2.0.15-openssl
  110. depends_on:
  111. - netmaker
  112. restart: unless-stopped
  113. command: ["/mosquitto/config/wait.sh"]
  114. environment:
  115. NETMAKER_SERVER_HOST: "https://api.NETMAKER_BASE_DOMAIN"
  116. volumes:
  117. - /root/mosquitto.conf:/mosquitto/config/mosquitto.conf
  118. - /root/wait.sh:/mosquitto/config/wait.sh
  119. - mosquitto_data:/mosquitto/data
  120. - mosquitto_logs:/mosquitto/log
  121. expose:
  122. - "8883"
  123. labels:
  124. - traefik.enable=true
  125. - traefik.http.routers.mqtt_websocket.rule=Host(`broker.NETMAKER_BASE_DOMAIN`)
  126. - traefik.http.routers.mqtt_websocket.entrypoints=websecure
  127. - traefik.http.routers.mqtt_websocket.tls.certresolver=http
  128. - traefik.http.services.mqtt_websocket.loadbalancer.server.port=8883
  129. volumes:
  130. traefik_certs: {}
  131. sqldata: {}
  132. dnsconfig: {}
  133. mosquitto_data: {}
  134. mosquitto_logs: {}