Unable to access Docker containers over network

I have a bunch of Docker containers running from a Docker Compose file on my Raspberry Pi. Most of the containers are having their traffic tunnelled through a VPN container. I have exposed all the ports I need, and still, when I try and navigate to [ip_of_pi]:port I get told that either it can’t connect because of some kind of socket error, or that the connection times out. I have checked my Docker Compose file many times, and cannot find any errors, and everything I’ve read about the containers I’m using suggests this should work, and it doesn’t.

It worked for a bit before, and now no longer works. The Compose file I am using is below, with all the credentials blacked out:

version: "3"
services:
   vpn:
      container_name: nordvpn
      image: bubuntux/nordvpn:latest
      network_mode: bridge
      cap_add:
        - NET_ADMIN
        - SYS_MODULE
      # sysctls:
      # - net.ipv4.conf.all.rp_filter=2
      devices:
        - /dev/net/tun
      environment:
        - USER=[REDACTED]
        - "PASS=[REDACTED]"
        - CONNECT=United_Kingdom
        - TECHNOLOGY=NordLynx
        - NETWORK=192.168.0.63/24
      ports:
        - "80:80"
        - "8080:8080"
        - "8081:8081"
        - "7878:7878"
        - "8989:8989"
        - "9117:9117"

   qbittorrent:
     container_name: qbittorrent
     image: linuxserver/qbittorrent:latest
     network_mode: service:vpn
     # environment:
     # - WEBUI_PORT=8081:8081
     depends_on:
        - vpn
     restart: always

   pihole:
      container_name: pihole
      image: pihole/pihole:latest
      restart: always

   radarr:
      container_name: radarr
      image: linuxserver/radarr:latest
      volumes:
         - "/media/pi/Seagate/Radarr:/media/pi/storage"
      restart: always
      depends_on:
         - vpn

   sonarr:
      container_name: sonarr
      image: linuxserver/sonarr:latest
      volumes:
         - "/media/pi/Seagate/Sonarr:/media/pi/storage"
      restart: always
      depends_on:
         - vpn

   jackett:
      container_name: jackett
      image: linuxserver/jackett:latest
      restart: always
      depends_on:
         - vpn