docker-compose.yml 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. version: "3.9"
  2. volumes:
  3. traefik:
  4. nextcloud:
  5. driver: local
  6. driver_opts:
  7. type: nfs
  8. o: addr=10.10.20.254,nfsvers=4,nolock,soft,async,rw
  9. device: ":/mnt/documents/files/cloud"
  10. db:
  11. plex_config:
  12. plex_transcode:
  13. media_movies:
  14. driver: local
  15. driver_opts:
  16. type: nfs
  17. o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
  18. device: ":/mnt/media/Movies"
  19. media_movies_archive:
  20. driver: local
  21. driver_opts:
  22. type: nfs
  23. o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
  24. device: ":/mnt/media/Movie Archive"
  25. media_music:
  26. driver: local
  27. driver_opts:
  28. type: nfs
  29. o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
  30. device: "::/mnt/media/Music"
  31. media_music_backup:
  32. media_movies_kids:
  33. driver: local
  34. driver_opts:
  35. type: nfs
  36. o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
  37. device: ":/mnt/media/Kids Movies"
  38. media_tv:
  39. driver: local
  40. driver_opts:
  41. type: nfs
  42. o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
  43. device: ":/mnt/media/TV"
  44. services:
  45. reverse-proxy:
  46. restart: always
  47. # The official v2 Traefik docker image
  48. image: traefik:v2.7
  49. # Enables the web UI and tells Traefik to listen to docker //--api.insecure=true
  50. command:
  51. - "--api=true"
  52. - "--api.dashboard=true"
  53. - "--accesslog"
  54. - "--log.level=DEBUG"
  55. - "--providers.docker"
  56. - "--providers.docker.endpoint=unix:///var/run/docker.sock"
  57. - "--providers.docker.swarmMode=true"
  58. - "--entrypoints.web.address=:80"
  59. - "--entrypoints.websecure.address=:443"
  60. - "--certificatesresolvers.letsencrypt.acme.email=jason@jasonplayne.com"
  61. - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
  62. - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
  63. - "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
  64. ports:
  65. # The HTTP port
  66. - "80:80"
  67. - "443:443"
  68. volumes:
  69. # So that Traefik can listen to the Docker events
  70. - /var/run/docker.sock:/var/run/docker.sock
  71. - traefik:/etc/traefik
  72. deploy:
  73. mode: replicated
  74. replicas: 1
  75. endpoint_mode: vip
  76. labels:
  77. - "traefik.enable=true"
  78. - "traefik.http.routers.dashboard.rule=Host(`10.10.20.197`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
  79. - "traefik.http.routers.dashboard.service=api@internal"
  80. - "traefik.http.routers.dashboard.entrypoints=web"
  81. # - "traefik.http.routers.dashboard.middlewares=local-ips@docker"
  82. # - "traefik.http.middlewares.local-ips.ipwhitelist.sourcerange=10.0.0.0/8"
  83. # Dummy service for Swarm port detection. The port can be any valid integer value.
  84. - "traefik.http.services.dashboard-svc.loadbalancer.server.port=9999"
  85. placement:
  86. constraints:
  87. - node.role == manager
  88. resources:
  89. limits:
  90. memory: 1G
  91. postgres:
  92. image: postgres
  93. restart: always
  94. environment:
  95. POSTGRES_USER: nextcloud
  96. POSTGRES_PASSWORD: disgrace-quickstep-fleshy
  97. volumes:
  98. - db:/var/lib/postgresql/data
  99. ports:
  100. - "5432"
  101. deploy:
  102. labels:
  103. - traefik.enable=false
  104. mode: replicated
  105. replicas: 1
  106. resources:
  107. limits:
  108. memory: 2G
  109. nextcloud:
  110. image: nextcloud:stable-apache
  111. restart: always
  112. ports:
  113. - "80"
  114. labels:
  115. - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
  116. volumes:
  117. - "nextcloud:/var/www/html/data"
  118. deploy:
  119. mode: replicated
  120. replicas: 1
  121. labels:
  122. - "traefik.enable=true"
  123. - "traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)"
  124. - "traefik.http.routers.nextcloud.tls=true"
  125. - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
  126. - "traefik.http.routers.nextcloud.entrypoints=websecure"
  127. - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
  128. resources:
  129. limits:
  130. memory: 2G
  131. plex:
  132. image: linuxserver/plex
  133. restart: unless-stopped
  134. ports:
  135. - "32400:32400"
  136. volumes:
  137. - /etc/timezone:/etc/timezone:ro
  138. - /etc/localtime:/etc/localtime:ro
  139. - plex_config:/config
  140. - media_tv:/data/tv
  141. - media_movies:/data/movies
  142. - media_movies_archive:/data/movies-archive
  143. - media_movies_kids:/data/movies-kids
  144. - plex_transcode:/transcode
  145. environment:
  146. - PUID=1001
  147. - PGID=1001
  148. - VERSION=latest
  149. deploy:
  150. mode: replicated
  151. replicas: 1
  152. labels:
  153. - "traefik.enable=true"
  154. - "traefik.http.routers.plex.rule=Host(`plex.playne.au`)"
  155. - "traefik.http.routers.plex.entrypoints=web"
  156. - "traefik.http.services.plex.loadbalancer.server.port=32400"
  157. resources:
  158. limits:
  159. memory: 2G