docker-compose.yml 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. version: "3.9"
  2. volumes:
  3. pihole_config_etc:
  4. pihole_config_dnsmasq:
  5. heimdall_config:
  6. git_data:
  7. postgres_data:
  8. plex_config:
  9. plex_transcode:
  10. lidarr_config:
  11. radarr_config:
  12. sonarr_config:
  13. nzbget_config:
  14. media_share:
  15. driver_opts:
  16. type: nfs
  17. o: addr=10.10.20.200,rw,hard
  18. device: :/mnt/media/
  19. services:
  20. traefik:
  21. image: traefik:v2.9
  22. command: --api.insecure=true
  23. ports:
  24. - "10.10.20.251:80:80/tcp"
  25. - "10.10.20.251:443:443/tcp"
  26. - "10.10.20.254:8080:8080/tcp"
  27. volumes:
  28. # So that Traefik can listen to the Docker events
  29. - /var/run/docker.sock:/var/run/docker.sock
  30. - ./traefik:/etc/traefik/
  31. traefik-forward-auth:
  32. image: thomseddon/traefik-forward-auth:2
  33. env_file: traefik/traefik-forward-auth.env
  34. labels: # you only need these if you're using an auth host
  35. - traefik.http.routers.auth.rule=Host(`auth.playne.au`)
  36. - traefik.http.routers.auth.entrypoints=websecure
  37. - traefik.http.routers.auth.tls=true
  38. - traefik.http.routers.auth.tls.domains[0].main=auth.playne.au
  39. - traefik.http.routers.auth.tls.certresolver=le
  40. - traefik.http.routers.auth.service=auth@docker
  41. - traefik.http.services.auth.loadbalancer.server.port=4181
  42. - traefik.http.middlewares.forward-auth.forwardauth.address=http://traefik-forward-auth:4181
  43. - traefik.http.middlewares.forward-auth.forwardauth.trustForwardHeader=true
  44. - traefik.http.middlewares.forward-auth.forwardauth.authResponseHeaders=X-Forwarded-User
  45. - traefik.http.routers.auth.middlewares=forward-auth
  46. heimdall:
  47. environment:
  48. - PGID=1000
  49. - PUID=1000
  50. image: ghcr.io/linuxserver/heimdall
  51. ports:
  52. - "10.10.20.254:80:80/tcp"
  53. restart: unless-stopped
  54. volumes:
  55. - heimdall_config:/config:rw
  56. - /etc/timezone:/etc/timezone:ro
  57. - /etc/localtime:/etc/localtime:ro
  58. labels:
  59. - traefik.http.routers.heimdall.rule=Host(`media.playne.au`)
  60. - traefik.http.routers.heimdall.tls=true
  61. - traefik.http.routers.heimdall.tls.certresolver=le
  62. - traefik.http.routers.heimdall.entrypoints=websecure
  63. - traefik.http.routers.heimdall.middlewares=forward-auth
  64. - traefik.http.services.heimdall.loadbalancer.healthCheck.path=/
  65. pihole:
  66. dns:
  67. - 202.142.142.142
  68. - 202.142.142.242
  69. environment:
  70. - PUID=1000
  71. - CONDITIONAL_FORWARDING_IP=10.10.20.1
  72. - CONDITIONAL_FORWARDING_DOMAIN=playne.id.au
  73. - DNS2=202.142.142.242
  74. - ServerIP=10.10.20.253
  75. - CONDITIONAL_FORWARDING=True
  76. - DNS1=202.142.142.142
  77. - PGID=1000
  78. - DNS_IPv6=2403:5800:c100:7802::feed
  79. - DNS_IP=10.10.20.253
  80. - IPv6=True
  81. image: pihole/pihole:latest
  82. ports:
  83. - "10.10.20.253:443:443/tcp"
  84. - "10.10.20.253:53:53/tcp"
  85. - "10.10.20.253:53:53/udp"
  86. - "10.10.20.253:80:80/tcp"
  87. restart: unless-stopped
  88. volumes:
  89. - /etc/timezone:/etc/timezone:ro
  90. - /etc/localtime:/etc/localtime:ro
  91. - pihole_config_etc:/etc/pihole:rw
  92. - pihole_config_dnsmasq:/etc/dnsmasq.d:rw
  93. labels:
  94. - traefik.enable=false
  95. - com.centurylinklabs.watchtower.enable=false
  96. git:
  97. image: gogs/gogs
  98. ports:
  99. - "10022:22"
  100. - "3000:3000"
  101. volumes:
  102. - git_data:/data
  103. labels:
  104. - traefik.http.routers.git.rule=Host(`git.playne.au`)
  105. - traefik.http.routers.git.tls=true
  106. - traefik.http.routers.git.tls.certresolver=le
  107. - traefik.http.routers.git.entrypoints=websecure
  108. - traefik.http.services.git.loadbalancer.server.port=3000
  109. # - traefik.tcp.routers.git.entrypoints[0]=gitssh
  110. # - traefik.tcp.routers.git.rule=HostSNI(`*`)
  111. # - traefik.tcp.services.git.loadbalancer.server.port=10022
  112. nextcloud:
  113. image: nextcloud
  114. restart: unless-stopped
  115. ports:
  116. - "10.10.20.252:80:80/tcp"
  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. volumes:
  140. - postgres_data:/var/lib/postgresql/data
  141. environment:
  142. - POSTGRES_PASSWORD=nextcloud
  143. - POSTGRES_USER=nextcloud
  144. - POSTGRES_DB=nextcloud
  145. labels:
  146. - traefik.enable=false
  147. watchtower:
  148. image: containrrr/watchtower
  149. environment:
  150. - WATCHTOWER_CLEANUP=true
  151. volumes:
  152. - /var/run/docker.sock:/var/run/docker.sock
  153. labels:
  154. - traefik.enable=false
  155. lidarr:
  156. environment:
  157. - PUID=65534
  158. - PGID=65534
  159. image: ghcr.io/linuxserver/lidarr
  160. ports:
  161. - "10.10.20.254:8686:8686/tcp"
  162. restart: unless-stopped
  163. volumes:
  164. - /etc/timezone:/etc/timezone:ro
  165. - /etc/localtime:/etc/localtime:ro
  166. - lidarr_config:/config:rw
  167. - media_share:/data
  168. labels:
  169. - traefik.http.routers.lidarr.rule=Host(`lidarr.playne.au`)
  170. - traefik.http.routers.lidarr.tls=true
  171. - traefik.http.routers.lidarr.tls.certresolver=le
  172. - traefik.http.routers.lidarr.entrypoints=websecure
  173. - traefik.http.routers.lidarr.middlewares=forward-auth
  174. nzbget:
  175. environment:
  176. - PGID=65534
  177. - PUID=65534
  178. - NZBGET_USER=nzbget
  179. - NZBGET_PASS=sd9f769342krw
  180. image: ghcr.io/linuxserver/nzbget
  181. ports:
  182. - "10.10.20.254:6790:6789/tcp"
  183. restart: unless-stopped
  184. volumes:
  185. - nzbget_config:/config:rw
  186. - /etc/localtime:/etc/localtime:ro
  187. - /etc/timezone:/etc/timezone:ro
  188. - media_share:/data
  189. labels:
  190. - traefik.http.routers.nzbget.rule=Host(`nzbget.playne.au`)
  191. - traefik.http.routers.nzbget.tls=true
  192. - traefik.http.routers.nzbget.tls.certresolver=le
  193. - traefik.http.routers.nzbget.entrypoints=websecure
  194. - traefik.http.routers.nzbget.middlewares=forward-auth
  195. plex:
  196. devices:
  197. - /dev/bus/usb:/dev/bus/usb
  198. environment:
  199. - PUID=65534
  200. - PGID=65534
  201. ports:
  202. - "10.10.20.254:1900:1900/udp"
  203. - "10.10.20.254:3005:3005/tcp"
  204. - "10.10.20.254:32400:32400/tcp"
  205. - "10.10.20.254:32410:32410/udp"
  206. - "10.10.20.254:32412:32412/udp"
  207. - "10.10.20.254:32413:32413/udp"
  208. - "10.10.20.254:32414:32414/udp"
  209. - "10.10.20.254:32469:32469/tcp"
  210. # - "10.10.20.254:5353:5353/udp"
  211. - "10.10.20.254:8324:8324/tcp"
  212. image: ghcr.io/linuxserver/plex
  213. network_mode: host
  214. privileged: true
  215. restart: unless-stopped
  216. volumes:
  217. - /etc/timezone:/etc/timezone:ro
  218. - /etc/localtime:/etc/localtime:ro
  219. - media_share:/data
  220. - plex_config:/config
  221. - plex_transcode:/transcode
  222. labels:
  223. - traefik.enable=false
  224. radarr:
  225. environment:
  226. - PUID=65534
  227. - PGID=65534
  228. image: ghcr.io/linuxserver/radarr
  229. ports:
  230. - "10.10.20.254:7878:7878/tcp"
  231. restart: unless-stopped
  232. volumes:
  233. - radarr_config:/config:rw
  234. - /etc/timezone:/etc/timezone:ro
  235. - /etc/localtime:/etc/localtime:ro
  236. - media_share:/data
  237. labels:
  238. - traefik.http.routers.radarr.rule=Host(`radarr.playne.au`)
  239. - traefik.http.routers.radarr.tls=true
  240. - traefik.http.routers.radarr.tls.certresolver=le
  241. - traefik.http.routers.radarr.entrypoints=websecure
  242. - traefik.http.routers.radarr.middlewares=forward-auth
  243. sonarr:
  244. environment:
  245. - PGID=65534
  246. - PUID=65534
  247. image: ghcr.io/linuxserver/sonarr
  248. ports:
  249. - "10.10.20.254:8989:8989/tcp"
  250. restart: unless-stopped
  251. volumes:
  252. - /etc/timezone:/etc/timezone:ro
  253. - /etc/localtime:/etc/localtime:ro
  254. - sonarr_config:/config:rw
  255. - media_share:/data
  256. labels:
  257. - traefik.http.routers.sonarr.rule=Host(`sonarr.playne.au`)
  258. - traefik.http.routers.sonarr.tls=true
  259. - traefik.http.routers.sonarr.tls.certresolver=le
  260. - traefik.http.routers.sonarr.entrypoints=websecure
  261. - traefik.http.routers.sonarr.middlewares=forward-auth
  262. #todo: once ipv6 is enabled, enable it here too
  263. ddns_cloudflare:
  264. restart: always
  265. environment:
  266. - API_KEY=nPHKK83fNj2bCKUtyytc3uOFqh0CukVyZWWKxH3p
  267. - ZONE=playne.id.au
  268. - SUBDOMAIN=apps
  269. - PROXIED=false