version: '3'
services:
  wireguard-webadmin:
    container_name: wireguard-webadmin
    restart: unless-stopped
    image: eduardosilva/wireguard_webadmin:latest
    environment:
      - SERVER_ADDRESS=${SERVER_ADDRESS}
      - DEBUG_MODE=${DEBUG_MODE}
      - COMPOSE_VERSION=02r
      - TZ=${TIMEZONE}
    volumes:
      - wireguard:/etc/wireguard
      - static_volume:/app_static_files/
      - dnsmasq_conf:/etc/dnsmasq
      - app_secrets:/app_secrets/
      - rrd_data:/rrd_data/
    ports:
      # Do not directly expose the Django port to the internet, use the reverse proxy below instead
      # - "127.0.0.1:8000:8000"
      # Warning: Docker will have a hard time handling large amount of ports. Expose only the ports that you need.
      # Ports for multiple WireGuard instances. (Probably, you just need one)
      - "51820-51839:51820-51839/udp"
      # Ports for port forwarding rules. Add your own ports here if you need them.
      - "8080-8089:8080-8089/tcp"
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    command: /bin/bash /app/init.sh

  wireguard-webadmin-cron:
    container_name: wireguard-webadmin-cron
    restart: unless-stopped
    image: eduardosilva/wireguard_webadmin_cron:latest
    environment:
      - TZ=${TIMEZONE}
    depends_on:
      - wireguard-webadmin

  wireguard-webadmin-rrdtool:
    container_name: wireguard-webadmin-rrdtool
    restart: unless-stopped
    image: eduardosilva/wireguard_webadmin_rrdtool:latest
    volumes:
      - app_secrets:/app_secrets/
      - rrd_data:/rrd_data/
    environment:
      - TZ=${TIMEZONE}
    depends_on:
      - wireguard-webadmin

  wireguard-webadmin-dns:
    container_name: wireguard-webadmin-dns
    restart: unless-stopped
    image: eduardosilva/wireguard_webadmin_dns:latest
    environment:
      - TZ=${TIMEZONE}
    volumes:
      - dnsmasq_conf:/etc/dnsmasq/

  wireguard-webadmin-nginx:
    container_name: wireguard-webadmin-nginx
    restart: unless-stopped
    image: eduardosilva/wireguard_webadmin_nginx:latest
    volumes:
      - static_volume:/static
      - https_cert:/certificate
    environment:
      - TZ=${TIMEZONE}
    ports:
      - "80:80"
      - "443:443"

volumes:
  static_volume:
  https_cert:
  wireguard:
  dnsmasq_conf:
  app_secrets:
  rrd_data:
