Hi there!

I’m trying to set up two services (through docker) both of which use port 8080 by default. However I am wanting these to services to sit behind a VPN using Gluetun. I added both of the ports I want to use to the compose file, but this just leads to only one of the services working as the other one will say “port already in use”. How can I strictly tell these services what port they shall use in the compose file?

This is how I did it so far;

docker-compose.yml

---
version: '3'
services:
  vpn:
   image: qmcgaw/gluetun:latest
   container_name: vpn
   restart: unless-stopped
   cap_add:
    - NET_ADMIN
   environment:
      - VPN_SERVICE_PROVIDER=custom
      - VPN_TYPE=wireguard
      - VPN_ENDPOINT_IP=####
      - VPN_ENDPOINT_PORT=####
      - WIREGUARD_PUBLIC_KEY=####
      - WIREGUARD_PRIVATE_KEY=####
      - WIREGUARD_PRESHARED_KEY=####
      - WIREGUARD_ADDRESSES=####
   devices:
    - /dev/net/tun:/dev/net/tun
   ports:
    - '8080:8080'
    #VPN
    - 8888:8888/tcp
    - 8388:8388/tcp
    - 8388:8388/udp
    - 8000:8000/tcp
    - 8584:8584
    - 8585:8585
   volumes:
    - /docker/appdata/gluetun:/gluetun
  sabnzbd:
    image: lscr.io/linuxserver/sabnzbd:latest
    container_name: sabnzbd
	network_mode: container:vpn
    volumes:
      - /docker/appdata/sabnzbd/data:/config
    restart: unless-stopped
  qbittorrent:  
    container_name: qbittorrent  
    image: linuxserver/qbittorrent:latest
    restart: unless-stopped
    network_mode: container:vpn  
    volumes:  
     - /docker/appdata/qbitorrent:/config  
  • Fjor@lemm.eeOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    Sorry that was my question, dont want to use the port twice, I want to tell the compose file what to use for each container, but I dont know how.

    • Fixed the title, mb
    • breadsmasher@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      In the VPN service you just expose the port you want and map it to the listener port on the service

      vpn: ports: - 5000:8080 - 6000:8080

      where you have

      servicea listening on 8080 and serviceB on 8080 but exposed on 5000 and 6000 in the VPN service

      for example

      • Fjor@lemm.eeOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        sorry im still quite new to this… do u have an example of another compose file that does this? Not sure where I put what.

        • breadsmasher@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          1 year ago

          On my phone so I haven’t got the access to give you a good example.

          You see in your compose file in your original post you have ‘8080:8080’ under ports?

          You should be able to add another line, the left hand side of the colon exposing a different port like so

          …
          ports: 
              - ‘8080:8080’
              - ‘9090:9090’ 
          …
          

          then one service you can access on port 8080 and the other you access on 9090

          then under each service you want to expose you add the other port mappings

          qtorrent:
              ports: 
                  - 8080:8080
          
          sabnzb:
              ports: 
                  - 9090:8080
          

          edit - so you should end up with the vpn container exposing 8080 which points to the service exposing 8080 which maps to application listening on 8080

          and the same for 9090 -> 9090 -> 8080

          • Fjor@lemm.eeOP
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            when I do this I get the error message that the ports are already in use by the vpn container :|

          • Fjor@lemm.eeOP
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            but I thought the containers had to have “network_mode: container:vpn”, in order to strictly only be able to communicate through the VPN.