docker-compose.yml 9.3 KB

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