docker-compose.yml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. heimdall:
  21. environment:
  22. - PGID=1000
  23. - PUID=1000
  24. image: ghcr.io/linuxserver/heimdall
  25. ports:
  26. - "10.10.20.254:80:80/tcp"
  27. restart: unless-stopped
  28. volumes:
  29. - heimdall_config:/config:rw
  30. - /etc/timezone:/etc/timezone:ro
  31. - /etc/localtime:/etc/localtime:ro
  32. labels:
  33. - traefik.http.routers.heimdall.rule=Host(`media.playne.au`)
  34. - traefik.http.routers.heimdall.tls=true
  35. - traefik.http.routers.heimdall.tls.certresolver=le
  36. pihole:
  37. dns:
  38. - 202.142.142.142
  39. - 202.142.142.242
  40. environment:
  41. - PUID=1000
  42. - CONDITIONAL_FORWARDING_IP=10.10.20.1
  43. - CONDITIONAL_FORWARDING_DOMAIN=playne.id.au
  44. - DNS2=202.142.142.242
  45. - ServerIP=10.10.20.253
  46. - CONDITIONAL_FORWARDING=True
  47. - DNS1=202.142.142.142
  48. - PGID=1000
  49. - DNS_IPv6=2403:5800:c100:7802::feed
  50. - DNS_IP=10.10.20.253
  51. - IPv6=True
  52. image: pihole/pihole:latest
  53. ports:
  54. - "10.10.20.253:443:443/tcp"
  55. - "10.10.20.253:53:53/tcp"
  56. - "10.10.20.253:53:53/udp"
  57. - "10.10.20.253:80:80/tcp"
  58. restart: unless-stopped
  59. volumes:
  60. - /etc/timezone:/etc/timezone:ro
  61. - /etc/localtime:/etc/localtime:ro
  62. - pihole_config_etc:/etc/pihole:rw
  63. - pihole_config_dnsmasq:/etc/dnsmasq.d:rw
  64. git:
  65. image: gogs/gogs
  66. ports:
  67. - "10022:22"
  68. - "3000:3000"
  69. volumes:
  70. - git_data:/data
  71. labels:
  72. - traefik.http.routers.git.rule=Host(`git.playne.au`)
  73. - traefik.http.routers.git.tls=true
  74. - traefik.http.routers.git.tls.certresolver=le
  75. - traefik.http.services.git.loadbalancer.server.port=3000
  76. # - traefik.tcp.routers.git.entrypoints[0]=gitssh
  77. # - traefik.tcp.routers.git.rule=HostSNI(`*`)
  78. # - traefik.tcp.services.git.loadbalancer.server.port=10022
  79. nextcloud:
  80. image: nextcloud
  81. restart: unless-stopped
  82. ports:
  83. - "10.10.20.252:80:80/tcp"
  84. volumes:
  85. - /mnt/documents/files/cloud/:/var/www/html
  86. environment:
  87. - POSTGRES_DB=nextcloud
  88. - POSTGRES_USER=nextcloud
  89. - POSTGRES_PASSWORD=nextcloud
  90. - POSTGRES_HOST=postgres
  91. depends_on:
  92. - postgres
  93. labels:
  94. - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
  95. - traefik.http.routers.nextcloud.tls=true
  96. - traefik.http.routers.nextcloud.tls.certresolver=le
  97. - traefik.http.routers.nextcloud.middlewares=nextcloud_redirectregex
  98. - traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent=true
  99. - traefik.http.middlewares.nextcloud_redirectregex.redirectregex.regex='https://(.*)/.well-known/(?:card|cal)dav'
  100. - traefik.http.middlewares.nextcloud_redirectregex.redirectregex.replacement='https://$${1}/remote.php/dav'
  101. postgres:
  102. image: postgres:14
  103. ports:
  104. - "5432"
  105. volumes:
  106. - postgres_data:/var/lib/postgresql/data
  107. environment:
  108. - POSTGRES_PASSWORD=nextcloud
  109. - POSTGRES_USER=nextcloud
  110. - POSTGRES_DB=nextcloud