Forráskód Böngészése

update containers, use compose for media

Josh Bicking 2 éve
szülő
commit
1b21a1f4f7
3 módosított fájl, 113 hozzáadás és 61 törlés
  1. 4 59
      docker-compose.yml
  2. 81 0
      media-compose.yml
  3. 28 2
      static.toml

+ 4 - 59
docker-compose.yml

@@ -13,7 +13,7 @@ volumes:
 
 services:
   traefik:
-    image: traefik:v2.5.4
+    image: traefik:v2.6.6
     ports:
       - 80:80
       - 443:443
@@ -81,7 +81,7 @@ services:
       - CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY}
 
   jekyll:
-    image: jibby0/docker-jekyll-webhook
+    image: jibby0/docker-jekyll-webhook:test
     deploy:
       replicas: 2
       labels:
@@ -108,7 +108,7 @@ services:
     restart: always
 
   nextcloud:
-    image: nextcloud:20.0.9
+    image: nextcloud:23.0.0
     deploy:
       labels:
         - traefik.enable=true
@@ -142,7 +142,7 @@ services:
     restart: always
 
   matrix:
-    image: matrixdotorg/synapse:v1.46.0
+    image: matrixdotorg/synapse:v1.55.2
     deploy:
       labels:
         - traefik.enable=true
@@ -201,58 +201,3 @@ services:
     environment:
       - CRON_PERIOD=5m
     restart: always
-
-  plex:
-    image: ghcr.io/linuxserver/plex:version-1.25.1.5286-34f965be8
-    deploy:
-      labels:
-        - traefik.enable=true
-        - traefik.http.routers.plex.tls=true
-        - traefik.http.routers.plex.rule=Host(`plex.${DOMAIN}`)
-        - traefik.http.services.plex.loadbalancer.server.port=32400
-    expose:
-      - "32400"
-    volumes:
-      - ${CONTAINERS_DIR}/plex:/config
-      - ${MEDIA_DIR}/Video/Movies:/movies:ro
-      - ${MEDIA_DIR}/Video/Shows:/tv:ro
-      - ${MEDIA_DIR}/Video/Anime:/Anime:ro
-      - type: tmpfs
-        target: /transcodes
-        tmpfs:
-          size: 12000000000 # ~12gb
-    restart: always
-
-  jellyfin:
-    # 10.6.4 can't use Chromecasts properly: https://github.com/jellyfin/jellyfin/issues/3852
-    #  The "jellyfixer" service below fixes that for now. Assumes jellyfin's
-    #  baseURL is set to the default of `/jellyfin`
-    image: jellyfin/jellyfin:10.6.4
-    deploy:
-      placement:
-        constraints:
-          - node.labels.media-encoding == true
-      labels:
-        - traefik.enable=true
-        - traefik.http.routers.jellyfin.tls=true
-        - traefik.http.routers.jellyfin.rule=Host(`jellyfin.${DOMAIN}`)
-        - traefik.http.services.jellyfin.loadbalancer.server.port=8096
-    expose:
-      - "8096"
-    volumes:
-      - ${CONTAINERS_DIR}/jellyfin:/config
-      - ${MEDIA_DIR}:/media
-    restart: always
-
-  jellyfixer:
-    image: quay.io/xsteadfastx/jellyfixer:latest
-    deploy:
-      labels:
-        - traefik.enable=true
-        - traefik.http.routers.jellyfixer-secured.tls=true
-        - traefik.http.routers.jellyfixer-secured.rule=Host(`jellyfin.${DOMAIN}`) && Path(`/jellyfin/System/Info/Public`)
-        - traefik.http.services.jellyfixer-secured.loadbalancer.server.port=8088
-    command: http://jellyfin:8096/jellyfin
-    environment:
-      - JELLYFIXER_INTERNAL_URL=http://jellyfin:8096/jellyfin
-      - JELLYFIXER_EXTERNAL_URL=https://jellyfin.${DOMAIN}/jellyfin

+ 81 - 0
media-compose.yml

@@ -0,0 +1,81 @@
+version: '3.7'
+
+# Made to be run with docker-compose, for GPU passthrough.
+
+networks:
+  media:
+    driver: overlay
+
+services:
+  plex:
+    image: linuxserver/plex:amd64-version-1.25.6.5577-c8bd13540
+    deploy:
+      resources:
+        reservations:
+          devices:
+            - driver: nvidia
+              count: 1
+              capabilities: [gpu]
+    expose:
+      - "32400"
+    ports:
+      - mode: host
+        published: 32400
+        target: 32400
+    environment:
+      - PUID=1000
+      - PGID=1000
+    volumes:
+      - ${CONTAINERS_DIR}/plex:/config
+      - ${MEDIA_DIR}/Video/Movies:/movies
+      - ${MEDIA_DIR}/Video/Shows:/tv
+      - ${MEDIA_DIR}/Video/Anime:/Anime
+      - type: tmpfs
+        target: /transcodes
+        tmpfs:
+          size: 12000000000 # ~12gb
+    restart: always
+    networks:
+      - media
+
+  jellyfin:
+    image: jellyfin/jellyfin:10.7.7
+    # GPU encoding doesn't work currently
+    deploy:
+      resources:
+        reservations:
+          devices:
+            - driver: nvidia
+              count: 1
+              capabilities: [gpu]
+    expose:
+      - "8096"
+    user: 1000:1000
+    ports:
+      - mode: host
+        published: 8096
+        target: 8096
+    tmpfs:
+      - /transcodes:mode=770,size=12000000000,uid=1000,gid=1000
+    volumes:
+      - ${CONTAINERS_DIR}/jellyfin:/config
+      - ${MEDIA_DIR}:/media
+    restart: always
+    networks:
+      - media
+
+  jellyfixer:
+    image: quay.io/xsteadfastx/jellyfixer:latest
+    command: http://jellyfin:8096/jellyfin
+    expose:
+      - "8088"
+    ports:
+      - mode: host
+        published: 8088
+        target: 8088
+    environment:
+      - JELLYFIXER_INTERNAL_URL=http://jellyfin:8096/jellyfin
+      - JELLYFIXER_EXTERNAL_URL=https://jellyfin.${DOMAIN}/jellyfin
+    restart: always
+    networks:
+      - media

+ 28 - 2
static.toml

@@ -8,6 +8,18 @@
       rule = "Host(`swarmpit.${DOMAIN}`)"
       service = "swarmpit"
       [http.routers.swarmpit.tls]
+    [http.routers.jellyfin]
+      rule = "Host(`jellyfin.${DOMAIN}`)"
+      service = "jellyfin"
+      [http.routers.jellyfin.tls]
+    [http.routers.jellyfixer]
+      rule = "Host(`jellyfin.${DOMAIN}`)  && Path(`/jellyfin/System/Info/Public`)"
+      service = "jellyfixer"
+      [http.routers.jellyfixer.tls]
+    [http.routers.plex]
+      rule = "Host(`plex.${DOMAIN}`)"
+      service = "plex"
+      [http.routers.plex.tls]
   [http.services]
     [http.services.ceph]
       [http.services.ceph.loadBalancer]
@@ -21,5 +33,19 @@
       [http.services.swarmpit.loadBalancer]
         passHostHeader = true
         [[http.services.swarmpit.loadBalancer.servers]]
-          # The external IP of the swarm setup
-          url = "http://${EXTERNAL_IP}:888"
+          url = "http://${EXTERNAL_SWARM_IP}:888"
+    [http.services.jellyfin]
+      [http.services.jellyfin.loadBalancer]
+        passHostHeader = true
+        [[http.services.jellyfin.loadBalancer.servers]]
+          url = "http://${MEDIA_IP}:8096"
+    [http.services.jellyfixer]
+      [http.services.jellyfixer.loadBalancer]
+        passHostHeader = true
+        [[http.services.jellyfixer.loadBalancer.servers]]
+          url = "http://${MEDIA_IP}:8088"
+    [http.services.plex]
+      [http.services.plex.loadBalancer]
+        passHostHeader = true
+        [[http.services.plex.loadBalancer.servers]]
+          url = "http://${MEDIA_IP}:32400"