docker-compose.yml 4.6 KB

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