Plex deployment using Dockge

I can see how

Your nesting is off

below is correct (simplified everything but volume removed)

networks:
  main:
    name: main
    external: true
services:
  plex:
    volumes:
      - ${PLEX_CONFIG_HADES}:/config
      - ${PLEX_MEDIA}:/mnt/storage:ro
      - type: tmpfs
        target: /tmptranscode
        tmpfs:
          size: 10000000000

but you dont have to mount memory to transcode you can just mount a disk path…

Also I dont think “plexpass” is a valid version

https://hub.docker.com/r/linuxserver/plex/tags

I am using 1.40.5

I always bookmark my docker hub images an that way I can easily update my stacks

Here is the small part of my env I can show

image

I reference it with

image: lscr.io/linuxserver/plex:${PLEX_VERSION}

${PLEX_VERSION} Variable in ENV below is the stack in dockge, only visible when EDITING

Also I see you are choosing to expose vs publish the port… are you using reverse proxy to get in?

if you are not using a reverse proxy you will need to publish the port

services:
  plex:
    ports:
      - 32400:32400

Also these look off… Why a space after the :

TRY this


networks:
  main:
    name: main
    external: true 
services: 
  plex:
    container_name: plex
    image: lscr.io/linuxserver/plex:1.40.5
    hostname: plex
    ports:
      - 32400:32400
    restart: unless-stopped
    environment:
      - PUID=568
      - PGID=568
      - TZ=America/Los Angeles
      - VERSION=docker
      - ADVERTISE_IP=http://192.168.0.101:32400
    volumes:
      - /mnt/apps/docker/data/Plex/PlexConfig:/config
      - /mnt/tank/media:/data
      - type: tmpfs
        target: /tmptranscode
        tmpfs:
          size: 10000000000  
    deploy:
      resources:
        limits:
          cpus: "8"
          memory: 24G

then after it deploy try

replace 192.168.X.X bellow with IP of docker host when doing ports and not expose it will publish the porst to the host

https://192.168.X.X:32400/web

Also to get your compose correct I would DL a copy of Visual Studios Code

then use the YAML plugin in, it will show you formatting errors in your COMPOSE/ YAML FILES

I like using a static address for some services, but they cannot be shared. So another alternative is defining an IP for the port for example:

ports:
  - 192.168.0.50:32400:32400

You will need to make sure that address/port is available on an interface possibly as an alias.

Thank you again for your time and attention. I seem to have plex up and running, but now the rest of these applications are eating me alive. for example:
SABNZBD

networks:
  main:
    name: main
    external: true 
services: 
  radarr:
    container_name: sabnzbd
    image: lscr.io/linuxserver/sabnzbd:latest
    hostname: sabnzbd
    ports:
      - 8080:8080
    restart: unless-stopped
    environment:
      - PUID=568
      - PGID=568
      - TZ=America/Los Angeles
      - VERSION=docker
      - ADVERTISE_IP=http://192.168.0.100:8080
    volumes:
      - /mnt/apps/docker/data/Sabnzbd/Config:/config
      - /mnt/tank/media/downloads:/downloads #completed downloads
      - /mnt/tank/media/incompletedownloads:/incomplete-downloads #incomplete Downloads
      - /mnt/tank/media/nzb:/nzb #nzb file folder
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4G

Saves and deploys correctly but gives a litany of errors AND does not deploy to the assigned IP address.

sabnzbd  | 2024-09-12 02:23:37,473::INFO::[notifier:157] Sending notification: Warning - /config/Downloads/incomplete is not writable at all. This blocks downloads.
sabnzbd  | To prevent all helpful warnings, disable Special setting 'helpful_warnings'. (type=warning, job_cat=None)
sabnzbd  | 2024-09-12 02:23:37,473::INFO::[ssdp:108] Serving SSDP on 172.21.0.2 as SABnzbd
sabnzbd  | 2024-09-12 02:23:37,473::WARNING::[misc:95] /config/Downloads/incomplete is not writable at all. This blocks downloads.
sabnzbd  | To prevent all helpful warnings, disable Special setting 'helpful_warnings'.
sabnzbd  | 2024-09-12 02:23:37,474::WARNING::[misc:95] /config/Downloads/complete is not writable at all. This blocks downloads.
sabnzbd  | To prevent all helpful warnings, disable Special setting 'helpful_warnings'.
sabnzbd  | 2024-09-12 02:23:37,474::INFO::[database:607] Scheduled history purge
sabnzbd  | [ls.io-init] done.

Do I need to define the “main” network settings elsewhere in the jailmaker or docker config?

Enviroment Variable ADVERTISE_IP is just for plex and it will do nothing for other images. Your exposing the container via 0.0.0.0 on port 8080 to port 8080 within the container. So thats any IP address within the docker network.

However, your errors are relating to permission for your /config/ paths. I’d recommend checking permissions first.

would your previous example work for defining the IP for SABNZBD?

networks:
  main:
    name: main
    external: true 
services: 
  radarr:
    container_name: sabnzbd
    image: lscr.io/linuxserver/sabnzbd:latest
    hostname: sabnzbd
    ports:
      - http://192.168.0.100:8080:8080
    restart: unless-stopped
    environment:
      - PUID=568
      - PGID=568
      - TZ=America/Los Angeles
      - VERSION=docker
    volumes:
      - /mnt/apps/docker/data/Sabnzbd/Config:/config
      - /mnt/tank/media/downloads:/downloads #completed downloads
      - /mnt/tank/media/incompletedownloads:/incomplete-downloads #incomplete Downloads
      - /mnt/tank/media/nzb:/nzb #nzb file folder
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4G

That would need to be:

    ports:
      - 192.168.0.100:8080:8080

Sab might not be running if the permissions are not right on the config folder.

Also check the documentation for the env’s, “VERSION=docker” will have no use:

Thanks for all the help guys. I have Plex functioning now, and SABNZBD is going as well. I’m currently trying to figure out why SONARR is not indexing any folders under the root. It sees them but wont scan the folders for series import. I’ll start a different thread for that one.

Also you are giving the stack the option to join that main network but your not adding the service to that network…

Example

networks:
  main:
    name: main
    external: true
services:
  plex:
    networks:
      main:
        ipv4_address: 172.24.5.1
  tautulli:
    networks:
      - main
  third-app-instack:

This part:

networks:
  main:
    name: main
    external: true

Application in this stack MAY join the main network (not are joining, MAY)

then

services:
  plex-hades:
    networks:
      main:
        ipv4_address: 172.24.5.1
  tautulli-hades:
    networks:
      - main
  third-app-instack:

Three apps here…

  1. Plex joins main and gets a manualy IP 172.24.5.1
  2. tautulli joins main and gets a dynamic IP
  3. The third app at the bottom will make its won network because we didnt tell it what to do… if we wanted third app to join main with dynamic then:
services:
  plex-hades:
    networks:
      main:
        ipv4_address: 172.24.5.1
  tautulli-hades:
    networks:
      - main
  third-app-instack:
    networks:
      - main

Now all would be on the same… also the internal IP does not matter if you publish your port using ports: then it just takes a port on the host.

Just remember external networks (pre-created) must have the stack reference it AND the app must join it.

Docker is done this way so a stack can join multiple networks…

More complex example (all three would need to already exist created form command line)

networks:
  frontend:
    name: frontend
    external: true
  backend:
    name: backend
    external: true
  proxy:
    name: proxy
    external: true

With this loaded into a stack the apps could join 1, 2, or 3 of these and also make their own networks

Then we add apps to that with

networks:
  frontend:
    name: frontend
    external: true
  backend:
    name: backend
    external: true
  proxy:
    name: proxy
    external: true
services:
  APP1:
    networks:
      - frontend
  APP2:
    networks:
      - backend
  APP3:
    networks:
      - main
      - frontend
      - proxy
  APP4:
    networks:
      - proxy
      - frontend
  APP5:

Notice APP 5 makes it own network as it did NOT join any of the pre-created

I think I understand all of that now, so thank you for taking the time to help me out.

I’m working on the rest of the apps now.

networks:
  main:
    name: main
    external: true 
services: 
  radarr:
    container_name: radarr
    image: lscr.io/linuxserver/radarr:latest
    hostname: radarr
    ports:
      - 192.168.0.100:7878:7878
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los Angeles
      - ADVERTISE_IP=http://192.168.0.100:7878
    volumes:
      - /mnt/apps/docker/data/radarr/config:/config
      - /mnt/tank/media:/data
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4G
  sabnzbd:
    networks:
      main:
        ipv4_address: 192.168.0.100
    container_name: sabnzbd
    image: lscr.io/linuxserver/sabnzbd:latest
    hostname: sabnzbd
    ports:
      - http://192.168.0.100:8080:8080
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los Angeles
    volumes:
      - /mnt/apps/docker/data/sabnzbd/config:/config
      - /mnt/tank/media/usenet:/data/usenet
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4G
  sonarr:
    networks:
      main:
        ipv4_address: 192.168.0.100
    container_name: sonarr
    image: lscr.io/linuxserver/sonarr:latest
    hostname: sonarr
    ports:
      - 192.168.0.100:8989:8989
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los Angeles
      - ADVERTISE_IP=http://192.168.0.100:8989
    volumes:
      - /mnt/apps/docker/data/sonarr/config:/config
      - /mnt/tank/media:/data
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4G
tautulli:
    networks:
      main:
        ipv4_address: 192.168.0.101
    container_name: tautulli
    image: lscr.io/linuxserver/tautulli:latest
    hostname: tautulli
    ports:
      - 192.168.0.101:8181:8181
    restart: unless-stopped
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los Angeles
      - ADVERTISE_IP=http://192.168.0.101:8181
    volumes:
      - /mnt/apps/docker/data/tautulli/config:/config
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 4G

And starting with the Radarr app, it broke down. the application loaded but would not start. Here is the error message:
"
Error response from daemon: driver failed programming external connectivity on endpoint radarr (49605a4d54e65499d26c338f012fb2a302f3b480eeda9649e4b0c68928000c20): failed to bind port 192.168.0.100:7878/tcp: Error starting userland proxy: listen tcp4 192.168.0.100:7878: bind: cannot assign requested address
"
THe address is not currently assigned in my network. I can’t ping it and the DHCP server shows it as free.

I don’t know what makes you think that apps won’t work under eel.

Always best to use the built in apps.

If “use case” can’t be achieved with the built in apps, then use docker compose!!!

But as with truecharts I rather use “built in, developed by ix”

As of now I’m running disque, xteve on compose (electric eel beta1), but Tailscale, Plex,(surprisingly qbit works) stays on stable. As long as they work I would stay off the edge!!!

I was hesitant to spin up apps on dragonfish knowing that there was a change in how they were operating and supported in the next release. Even the best releases sometimes end up breaking features as shifts in underlying code support manifests.

I decided I’d run eel and upgraded the other night. Plex seems to work fine as an app and they added a lot of the customizability I was looking for in there.

SABNZBD and NZBGET don’t exist as apps yet so I am going to need to run those in Docker for a while at least. Sonarr, Radarr, and Bazarr are there and I could run them as apps.

What the applications do NOT allow (or at least I haven’t figured out) is IP address assignment. I want the entire download drone system on s separate IP address to place behind a VPN.

This is not yet exposed in GUI, so you have to define your IPVLAN or MACVLAN through the CLI:

You may also vote on this Feature Request to keep the ball rolling (and motivate iX to close and release the votes on an already decided issue…).

Thank you for that update etorix. I haven’t made it through all documentation on all features current or planned yet, so that is helpful.

I’m just about at my wits end on this whole application front though.

Apps don’t exist in eel for Sabnzbd, so I finally was able to get one going on Docker. It refused to index all the folders correctly. It has to be a permissions issue, but I thought I had it running as “apps” which has all the permissions necessary for the folders.

Spun up Sonarr as an application just to see if it worked. It did! but I couldn’t attach it to sabnzbd, don’t know why.

Tried to use my old download drones on a windows computer, but I can’t get either the SMB shares or the NFS shares to play nice with the remote box.

Sonarr is set to run as a service, I can set the service to run as any user i need it to if I’m attaching to an SMB share. I still can’t write to it and the remote Sonarr will not index anything. Still trying to figure that one out.

SABNZBD appears to be just fine with both SMB or NFS shares on the remote box, but that isn’t gonna help me if Sonarr isn’t gonna work.

Every time I try to spin up docker versions of the apps and specify the IPs I get errors and the apps won’t start. The only way they launch is if I let them all attach to the Dockge IP. Once they are live, they don’t talk to each other (attach to Sabnzbd inside Sonarr for instance).

I had all of this working on my old FreeNAS Core setup, but the hardware was over 5 years old and beginning to fail so I migrated to this new box. None of my notes from 5 years ago helped because I initially set all that up on Freenas 10 or 11 I think.

you assign the same 192.168.0.100 ip for sabnzb and sonarr