How to use Gluetun VPN Container while i use Nginx proxy manager for exposing application container to internet?

235 Views Asked by At

I have an application container called "Nextcloud" that depends on MySQL DB and Redis. I expose the Nextcloud application using Nginx Proxy Manager.

However, I now want to make sure that the Nextcloud container operates under the Gluetun VPN container network (all Internet calls made by it needs to go through Gluetun)

I tried a lot of combinations - but none of them worked

Here is my Docker Compose

version: "3"
volumes:
  nextcloud-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /portainer/nextcloud
  mysql-db:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /portainer/mysql
  proxymanager-data:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /portainer/proxymanager/data
  proxymanager-ssl:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /portainer/proxymanager/ssl

networks:
  frontend:
    # add this if the network is already existing!
    # external: true
  backend:

services:
  nextcloud-app:
    image: nextcloud
    restart: always
    volumes:
      - nextcloud-data:/var/www/html
    environment:
      - MYSQL_PASSWORD=<redacted>
      - MYSQL_DATABASE=common
      - MYSQL_USER=<redacted>
      - MYSQL_HOST=mysql-db
    networks:
      - frontend
      - backend

  mysql-db:
    image: mysql
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - mysql-db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=<redacted>
      - MYSQL_PASSWORD=<redacted>
      - MYSQL_DATABASE=common
      - MYSQL_USER=prateek-nextcloud
    networks:
      - backend

  proxymanager:
    image: jc21/nginx-proxy-manager:latest
    restart: always
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - proxymanager-data:/data
      - proxymanager-ssl:/etc/letsencrypt
    networks:
      - frontend

The Gluetun container config I know I need to add is like this

  vpn:
    image: qmcgaw/gluetun
    container_name: vpn
    cap_add:
      - NET_ADMIN
    environment:
      - VPN_SERVICE_PROVIDER=surfshark
      - OPENVPN_USER=<redacted>
      - OPENVPN_PASSWORD=<redacted>
      - SERVER_COUNTRIES=Netherlands
    ports:
      - "80:80"    # Im not sure of which ports to expose
      - "81:81"
      - "443:443"
      - "6881-6999:6881-6999/tcp" # But I need these ports and protocols for Aria2
      - "6881-6999:6881-6999/udp"

How can I fix this config file so that I can achieve what I want?

0

There are 0 best solutions below