Эх сурвалжийг харах

move the stack stuff out of the way because it is tricky to get working

Jason Playne 3 жил өмнө
parent
commit
2f721f3940

+ 0 - 98
docker-compose.yml

@@ -1,98 +0,0 @@
-version: "3.9"
-
-volumes:
-  traefik:
-  nextcloud:
-  db:
-        
-services:
-  reverse-proxy:
-    restart: always
-    # The official v2 Traefik docker image
-    image: traefik:v2.7
-    # Enables the web UI and tells Traefik to listen to docker //--api.insecure=true 
-    command: 
-     - "--api=true"
-     - "--api.dashboard=true"
-     - "--accesslog"
-     - "--log.level=DEBUG"
-     - "--providers.docker"
-     - "--providers.docker.endpoint=unix:///var/run/docker.sock"
-     - "--providers.docker.swarmMode=true"
-     - "--entrypoints.web.address=:80"
-     #- "--entrypoints.websecure.address=:443"
-     #- "--certificatesresolvers.letsencrypt.acme.email=jason@jasonplayne.com"
-     #- "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
-     #- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
-     #- "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
-      
-    ports:
-      # The HTTP port
-      - "80:80"
-      - "443:443"
-    volumes:
-      # So that Traefik can listen to the Docker events
-      - /var/run/docker.sock:/var/run/docker.sock
-      - traefik:/etc/traefik
-    deploy:
-      mode: replicated
-      replicas: 1
-      endpoint_mode: vip
-      labels:
-        - "traefik.enable=true"
-        - "traefik.http.routers.dashboard.rule=Host(`10.10.20.197`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
-        - "traefik.http.routers.dashboard.service=api@internal"
-        - "traefik.http.routers.dashboard.entrypoints=web"
-        #- "traefik.http.routers.dashboard.middlewares=ipwhitelist"
-        #- "traefik.http.middlewares.dashboard.ipwhitelist.sourcerange=`127.0.0.1/32, 10.10.20.0/24`"
-        # Dummy service for Swarm port detection. The port can be any valid integer value.
-        - "traefik.http.services.dashboard-svc.loadbalancer.server.port=9999"
-    
-      placement:
-        constraints:
-          - node.role == manager
-      resources:
-        limits:
-          memory: 1G
-  
-  postgres:
-    image: postgres
-    restart: always
-    environment:
-      POSTGRES_USER: nextcloud
-      POSTGRES_PASSWORD: disgrace-quickstep-fleshy
-    volumes:
-      - db:/var/lib/postgresql/data
-    ports:
-     - "5432"
-    deploy:
-      labels:
-        - traefik.enable=false
-      mode: replicated
-      replicas: 1
-      resources:
-        limits:
-          memory: 2G
-  
-  nextcloud:
-    image: nextcloud:stable-apache
-    restart: always
-    ports:
-      - "8001:80"
-    labels:
-      - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
-    deploy:
-      mode: replicated
-      replicas: 1
-      labels:
-        - traefik.enable=true
-        - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
-        #- traefik.http.routers.nextcloud.tls=true
-        #- traefik.http.routers.nextcloud.tls.certresolver=letsencrypt
-        #- traefik.http.routers.nextcloud.entrypoints=websecure
-        - traefik.http.routers.nextcloud.entrypoints=web
-        - traefik.http.services.nextcloud.loadbalancer.server.port=8001
-      resources:
-        limits:
-          memory: 2G
-

+ 0 - 0
deploy.sh → stack/deploy.sh


+ 176 - 0
stack/docker-compose.yml

@@ -0,0 +1,176 @@
+version: "3.9"
+
+volumes:
+  traefik:
+  nextcloud:
+    driver: local
+    driver_opts:
+      type: nfs
+      o: addr=10.10.20.254,nfsvers=4,nolock,soft,async,rw
+      device: ":/mnt/documents/files/cloud"
+  db:
+  
+  plex_config:
+  plex_transcode:
+  
+  media_movies:
+    driver: local
+    driver_opts:
+      type: nfs
+      o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
+      device: ":/mnt/media/Movies"
+
+  media_movies_archive:
+    driver: local
+    driver_opts:
+      type: nfs
+      o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
+      device: ":/mnt/media/Movie Archive"
+  
+  media_music:
+    driver: local
+    driver_opts:
+      type: nfs
+      o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
+      device: "::/mnt/media/Music"
+      
+  media_music_backup:
+  
+      
+  media_movies_kids:
+    driver: local
+    driver_opts:
+      type: nfs
+      o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
+      device: ":/mnt/media/Kids Movies"
+  
+  media_tv:
+    driver: local
+    driver_opts:
+      type: nfs
+      o: addr=10.10.20.200,nfsvers=4,nolock,soft,async,rw
+      device: ":/mnt/media/TV"
+  
+        
+services:
+  reverse-proxy:
+    restart: always
+    # The official v2 Traefik docker image
+    image: traefik:v2.7
+    # Enables the web UI and tells Traefik to listen to docker //--api.insecure=true 
+    command: 
+     - "--api=true"
+     - "--api.dashboard=true"
+     - "--accesslog"
+     - "--log.level=DEBUG"
+     - "--providers.docker"
+     - "--providers.docker.endpoint=unix:///var/run/docker.sock"
+     - "--providers.docker.swarmMode=true"
+     - "--entrypoints.web.address=:80"
+     - "--entrypoints.websecure.address=:443"
+     - "--certificatesresolvers.letsencrypt.acme.email=jason@jasonplayne.com"
+     - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme.json"
+     - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web"
+     - "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
+      
+    ports:
+      # The HTTP port
+      - "80:80"
+      - "443:443"
+    volumes:
+      # So that Traefik can listen to the Docker events
+      - /var/run/docker.sock:/var/run/docker.sock
+      - traefik:/etc/traefik
+    deploy:
+      mode: replicated
+      replicas: 1
+      endpoint_mode: vip
+      labels:
+        - "traefik.enable=true"
+        - "traefik.http.routers.dashboard.rule=Host(`10.10.20.197`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
+        - "traefik.http.routers.dashboard.service=api@internal"
+        - "traefik.http.routers.dashboard.entrypoints=web"
+#        - "traefik.http.routers.dashboard.middlewares=local-ips@docker"
+#        - "traefik.http.middlewares.local-ips.ipwhitelist.sourcerange=10.0.0.0/8"
+        # Dummy service for Swarm port detection. The port can be any valid integer value.
+        - "traefik.http.services.dashboard-svc.loadbalancer.server.port=9999"
+    
+      placement:
+        constraints:
+          - node.role == manager
+      resources:
+        limits:
+          memory: 1G
+  
+  postgres:
+    image: postgres
+    restart: always
+    environment:
+      POSTGRES_USER: nextcloud
+      POSTGRES_PASSWORD: disgrace-quickstep-fleshy
+    volumes:
+      - db:/var/lib/postgresql/data
+    ports:
+     - "5432"
+    deploy:
+      labels:
+        - traefik.enable=false
+      mode: replicated
+      replicas: 1
+      resources:
+        limits:
+          memory: 2G
+  
+  nextcloud:
+    image: nextcloud:stable-apache
+    restart: always
+    ports:
+      - "80"
+    labels:
+      - traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)
+    volumes:
+      - "nextcloud:/var/www/html/data"
+    deploy:
+      mode: replicated
+      replicas: 1
+      labels:
+        - "traefik.enable=true"
+        - "traefik.http.routers.nextcloud.rule=Host(`cloud.playne.au`)"
+        - "traefik.http.routers.nextcloud.tls=true"
+        - "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
+        - "traefik.http.routers.nextcloud.entrypoints=websecure"
+        - "traefik.http.services.nextcloud.loadbalancer.server.port=80"
+      resources:
+        limits:
+          memory: 2G
+
+          
+  plex:
+    image: linuxserver/plex
+    restart: unless-stopped
+    ports:
+      - "32400:32400"
+    volumes:
+      - /etc/timezone:/etc/timezone:ro
+      - /etc/localtime:/etc/localtime:ro
+      - plex_config:/config
+      - media_tv:/data/tv
+      - media_movies:/data/movies
+      - media_movies_archive:/data/movies-archive
+      - media_movies_kids:/data/movies-kids
+      - plex_transcode:/transcode
+    environment:
+      - PUID=1001
+      - PGID=1001
+      - VERSION=latest
+    deploy:
+      mode: replicated
+      replicas: 1
+      labels:
+        - "traefik.enable=true"
+        - "traefik.http.routers.plex.rule=Host(`plex.playne.au`)"
+        - "traefik.http.routers.plex.entrypoints=web"
+        - "traefik.http.services.plex.loadbalancer.server.port=32400"
+      resources:
+        limits:
+          memory: 2G