###############################################################################
# Copyright (C) 2020 Simon Adlem, G7RZU <g7rzu@gb7fr.org.uk>  
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software Foundation,
#   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
###############################################################################

version: '2.4'
services:
    freedmr:
        container_name: freedmr
        cpu_shares: 1024
        mem_reservation: 600m
        volumes:
            - '/etc/freedmr/freedmr.cfg:/opt/freedmr/freedmr.cfg'
            - '/var/log/freedmr/:/opt/freedmr/log/'
            - '/etc/freedmr/rules.py:/opt/freedmr/rules.py'
            #Write JSON files outside of container
            - '/etc/freedmr/json/:/opt/freedmr/json/'

        ports:
            - '62031:62031/udp'
            #Change the below to inlude ports used for your OBP(s)
            - '62041:62041/udp'
        image: 'gitlab.hacknix.net:5050/hacknix/freedmr:latest'
        restart: "unless-stopped"
        networks:
           app_net:
             ipv4_address: 172.16.238.10
        #Control parameters inside container
        environment:
            #IPV6 support 
            - FDPROXY_IPV6=0
            #Display connection stats in log
            - FDPROXY_STATS=1
            #Display conneting client info in log
            - FDPROXY_CLIENTINFO=1
            #Debug HBP session in log (lots of data!!)
            - FDPROXY_DEBUG=0
            #Override proxy external port
            #- FDPROXY_LISTENPORT=62031
        read_only: "true"

    freedmrmonitor2:
        container_name: freedmrmonitor2
        cpu_shares: 512
        depends_on:
            - freedmr
        image: 'gitlab.hacknix.net:5050/freedmr/freedmrmonitor2/freedmrmonitor2:monitor-latest'
        restart: "unless-stopped"
        networks:
           app_net:
             ipv4_address: 172.16.238.20
        read_only: "true"
        logging:
              driver: json-file


    freedmrmonpache:
        container_name: freedmrmonapache
        cpu_shares: 512
        depends_on:
             - freedmrmonitor2
        #where to store TLS certificates
        #and acme.sh files
        volumes:
             - '/etc/freedmr/certs/:/opt/apachecerts/'
             - '/etc/freedmr/acme.sh:/root/.acme.sh/'
        ports:
            - '80:80/tcp'
            - '443:443/tcp'
        image: 'gitlab.hacknix.net:5050/freedmr/freedmrmonitor2/freedmrmonitor2:apache-latest'
        restart: "unless-stopped"
        environment:
          #Set to 1 to enable TLS support
          #you'll need to actually generate the certtificates too
          #using these commands when the container is running:

          #docker exec -it freedmrmonapache gencert.sh <admin email> <server FQDN>
          #docker-compose restart freedmrmonapache

          #This only needs to be done once - unless the files in the volumes above are deleted.

          #The container will handle renewing the certificates every 60 days.  

          #Note -the gencert.sh script only works when the webserver is available on the default port 80  
          #If it's on non-standard ports, you'll need to request the certificates manually. 
          - 'USE_TLS=1'
        networks:
           app_net:
             ipv4_address: 172.16.238.30
        logging:
              driver: json-file

networks:
  app_net:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.16.238.0/24
          gateway: 172.16.238.1
