docker-compose.yml 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. version: "3.9"
  2. networks:
  3. home_network:
  4. name: "home_network"
  5. volumes:
  6. pihole_config_etc:
  7. pihole_config_dnsmasq:
  8. heimdall_config:
  9. git_data:
  10. postgres_data:
  11. services:
  12. traefik:
  13. image: traefik:v2.9
  14. command: --api.insecure=true
  15. ports:
  16. - "10.10.20.251:80:80/tcp"
  17. - "10.10.20.251:443:443/tcp"
  18. - "10.10.20.254:8080:8080/tcp"
  19. networks:
  20. - "home_network"
  21. volumes:
  22. # So that Traefik can listen to the Docker events
  23. - /var/run/docker.sock:/var/run/docker.sock
  24. - ./traefik:/etc/traefik/
  25. traefik-forward-auth:
  26. image: thomseddon/traefik-forward-auth:2
  27. env_file: traefik/traefik-forward-auth.env
  28. labels: # you only need these if you're using an auth host
  29. - traefik.http.routers.auth.rule=Host(`auth.playne.au`)
  30. - traefik.http.routers.auth.entrypoints=websecure
  31. - traefik.http.routers.auth.tls=true
  32. - traefik.http.routers.auth.tls.domains[0].main=auth.playne.au
  33. # - traefik.http.routers.auth.tls.domains[0].sans=*.auth.playne.au
  34. - traefik.http.routers.auth.tls.certresolver=le
  35. - traefik.http.routers.auth.service=auth@docker
  36. - traefik.http.services.auth.loadbalancer.server.port=4181
  37. - traefik.http.middlewares.forward-auth.forwardauth.address=http://traefik-forward-auth:4181
  38. - traefik.http.middlewares.forward-auth.forwardauth.trustForwardHeader=true
  39. - traefik.http.middlewares.forward-auth.forwardauth.authResponseHeaders=X-Forwarded-User
  40. - traefik.http.routers.auth.middlewares=forward-auth
  41. heimdall:
  42. environment:
  43. - PGID=1000
  44. - PUID=1000
  45. image: ghcr.io/linuxserver/heimdall
  46. ports:
  47. - "10.10.20.254:80:80/tcp"
  48. restart: unless-stopped
  49. networks:
  50. - "home_network"
  51. volumes:
  52. - heimdall_config:/config:rw
  53. - /etc/timezone:/etc/timezone:ro
  54. - /etc/localtime:/etc/localtime:ro
  55. labels:
  56. - traefik.http.routers.heimdall.rule=Host(`media.playne.au`)
  57. - traefik.http.routers.heimdall.tls=true
  58. - traefik.http.routers.heimdall.tls.certresolver=le
  59. - traefik.http.routers.heimdall.entrypoints=websecure
  60. - traefik.http.routers.heimdall.middlewares=forward-auth
  61. - traefik.http.services.heimdall.loadbalancer.healthCheck.path=/
  62. pihole:
  63. dns:
  64. - 202.142.142.142
  65. - 202.142.142.242
  66. environment:
  67. - PUID=1000
  68. - CONDITIONAL_FORWARDING_IP=10.10.20.1
  69. - CONDITIONAL_FORWARDING_DOMAIN=playne.id.au
  70. - DNS2=202.142.142.242
  71. - ServerIP=10.10.20.253
  72. - CONDITIONAL_FORWARDING=True
  73. - DNS1=202.142.142.142
  74. - PGID=1000
  75. - DNS_IPv6=2403:5800:c100:7802::feed
  76. - DNS_IP=10.10.20.253
  77. - IPv6=True
  78. image: pihole/pihole:latest
  79. ports:
  80. - "10.10.20.253:443:443/tcp"
  81. - "10.10.20.253:53:53/tcp"
  82. - "10.10.20.253:53:53/udp"
  83. - "10.10.20.253:80:80/tcp"
  84. restart: unless-stopped
  85. volumes:
  86. - /etc/timezone:/etc/timezone:ro
  87. - /etc/localtime:/etc/localtime:ro
  88. - pihole_config_etc:/etc/pihole:rw
  89. - pihole_config_dnsmasq:/etc/dnsmasq.d:rw
  90. labels:
  91. - traefik.enable=false
  92. git:
  93. image: gogs/gogs
  94. ports:
  95. - "10022:22"
  96. - "3000:3000"
  97. networks:
  98. - "home_network"
  99. volumes:
  100. - git_data:/data
  101. labels:
  102. - traefik.http.routers.git.rule=Host(`git.playne.au`)
  103. - traefik.http.routers.git.tls=true
  104. - traefik.http.routers.git.tls.certresolver=le
  105. - traefik.http.routers.git.entrypoints=websecure
  106. - traefik.http.services.git.loadbalancer.server.port=3000
  107. # - traefik.tcp.routers.git.entrypoints[0]=gitssh
  108. # - traefik.tcp.routers.git.rule=HostSNI(`*`)
  109. # - traefik.tcp.services.git.loadbalancer.server.port=10022
  110. nextcloud:
  111. image: nextcloud
  112. restart: unless-stopped
  113. ports:
  114. - "10.10.20.252:80:80/tcp"
  115. networks:
  116. - "home_network"
  117. volumes:
  118. - /mnt/documents/files/cloud/:/var/www/html
  119. environment:
  120. - POSTGRES_DB=nextcloud
  121. - POSTGRES_USER=nextcloud
  122. - POSTGRES_PASSWORD=nextcloud
  123. - POSTGRES_HOST=postgres
  124. depends_on:
  125. - postgres
  126. labels:
  127. - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
  128. - traefik.http.routers.nextcloud.tls=true
  129. - traefik.http.routers.nextcloud.tls.certresolver=le
  130. - traefik.http.routers.nextcloud.middlewares=nextcloud_redirectregex
  131. - traefik.http.routers.nextcloud.entrypoints=websecure
  132. - traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent=true
  133. - traefik.http.middlewares.nextcloud_redirectregex.redirectregex.regex='https://(.*)/.well-known/(?:card|cal)dav'
  134. - traefik.http.middlewares.nextcloud_redirectregex.redirectregex.replacement='https://$${1}/remote.php/dav'
  135. postgres:
  136. image: postgres:14
  137. ports:
  138. - "5432"
  139. networks:
  140. - "home_network"
  141. volumes:
  142. - postgres_data:/var/lib/postgresql/data
  143. environment:
  144. - POSTGRES_PASSWORD=nextcloud
  145. - POSTGRES_USER=nextcloud
  146. - POSTGRES_DB=nextcloud
  147. labels:
  148. - traefik.enable=false
  149. watchtower:
  150. image: containrrr/watchtower
  151. environment:
  152. - WATCHTOWER_CLEANUP=true
  153. networks:
  154. - "home_network"
  155. volumes:
  156. - /var/run/docker.sock:/var/run/docker.sock
  157. labels:
  158. - traefik.enable=false