version: '3'

### Creates a named network with the default bridge driver
# See: https://docs.docker.com/engine/userguide/networking/dockernetworks/
# See: https://docs.docker.com/engine/reference/commandline/network_create/
#networks:
   #backend:

services:

   nginx-proxy:
      image: jwilder/nginx-proxy
      container_name: nginx-proxy
      ports:
         - "80:80"
         - "443:443"
      labels:
         com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
      #environment:
      #   - HTTPS_METHOD=noredirect
      restart: always
      depends_on:
         - unboundedpress
         - restheart
      volumes:
         - ./nginx/conf.d:/etc/nginx/conf.d
         - ./nginx/vhost.d:/etc/nginx/vhost.d
         - ./../nginx/html:/usr/share/nginx/html
         - ./../nginx/certs:/etc/nginx/certs:ro
         - ./../nginx/htpasswd:/etc/nginx/htpasswd:ro
         - /var/run/docker.sock:/tmp/docker.sock:ro

   letsencrypt:
      image: jrcs/letsencrypt-nginx-proxy-companion
      container_name: letsencrypt
      restart: always
      #environment:
      #   - ACME_CA_URI=https://acme-staging-v02.api.letsencrypt.org/directory
      volumes:
         - ./nginx/conf.d:/etc/nginx/conf.d
         - ./nginx/vhost.d:/etc/nginx/vhost.d
         - ./../nginx/html:/usr/share/nginx/html
         - ./../nginx/certs:/etc/nginx/certs:rw
         - /var/run/docker.sock:/var/run/docker.sock:ro
      depends_on:
         - nginx-proxy

   restheart:
      image: softinstigate/restheart:3.10.1
      container_name: restheart
      depends_on:
         - mongodb
      environment:
         - VIRTUAL_HOST=restheart.unboundedpress.org
         - VIRTUAL_PORT=8080
         - LETSENCRYPT_EMAIL=mail
         #- LETSENCRYPT_HOST=unboundedpress.org,www.unboundedpress.org,restheart.unboundedpress.org,gitea.unboundedpress.org,nextcloud.unboundedpress.org,express.unboundedpress.org
      ports:
         - "8080:8080"
      restart: always
      volumes:
         - ./restheart/etc:/opt/restheart/etc:ro

   mongodb:
      image: mongo:3.6
      container_name: mongo
      environment:
            MONGO_INITDB_ROOT_USERNAME: user
            MONGO_INITDB_ROOT_PASSWORD: pass
      command: --bind_ip_all --auth
      restart: always
      volumes:
         - ./../mongodb:/data/db
         - ./../mongodb_backup:/backup
         - ./../mongodb_file_stage:/file_stage
      ### Uncoment below if you want to map mongodb port
      ports:
         - "27017:27017"

   gitea:
      image: gitea/gitea:1.10.0
      container_name: gitea
      environment:
         - USER_UID=1000
         - USER_GID=1000
         - DB_TYPE=mysql
         - DB_HOST=mysql-gitea:3306
         - DB_NAME=gitea
         - DB_USER=user
         - DB_PASSWD=pass
         - HTTP_PORT=4000
         - VIRTUAL_HOST=gitea.unboundedpress.org
         - VIRTUAL_PORT=4000
         #- LETSENCRYPT_HOST=unboundedpress.org,www.unboundedpress.org,restheart.unboundedpress.org,gitea.unboundedpress.org,nextcloud.unboundedpress.org,express.unboundedpress.org
         - LETSENCRYPT_EMAIL=mail
         - LFS_START_SERVER=true
         - DISABLE_REGISTRATION=true
         - RUN_MODE=prod
      restart: always
      volumes:
         - ./../gitea:/data
      ports:
         - "4000:4000"
         - "222:22"
      depends_on:
         - mysql-gitea


   mysql-gitea:
      image: mariadb:10.1.40
      container_name: mysql-gitea
      restart: always
      environment:
         - MYSQL_ROOT_PASSWORD=pass
      volumes:
         - ./../mysql_gitea:/var/lib/mysql
         - ./mysql_gitea/etc:/etc/mysql/conf.d
         - ./mysql_gitea/init:/docker-entrypoint-initdb.d

   unboundedpress:
      build: .
      container_name: unboundedpress
      environment:
         - VIRTUAL_HOST=www.unboundedpress.org,unboundedpress.org
         - LETSENCRYPT_HOST=unboundedpress.org,www.unboundedpress.org,restheart.unboundedpress.org,gitea.unboundedpress.org,express.unboundedpress.org,netdata.unboundedpress.org,nextcloud.unboundedpress.org
         - LETSENCRYPT_EMAIL=mail
      volumes:
         - ./:/usr/src/unboundedpress
      ports:
         - "3000:3000"
      restart: always
      depends_on:
         - mongodb
         - restheart

   nextcloud:
      image: nextcloud:20.0.5
      container_name: nextcloud
      restart: always
      volumes:
         - ./../nextcloud:/var/www/html
      environment:
         - MYSQL_DATABASE=nextcloud
         - MYSQL_USER=user
         - MYSQL_PASSWORD=pass
         - MYSQL_HOST=mysql-nextcloud
         - NEXTCLOUD_ADMIN_USER=user
         - NEXTCLOUD_ADMIN_PASSWORD=pass
         - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.unboundedpress.org
#         - REDIS_HOST=redis
         - VIRTUAL_HOST=nextcloud.unboundedpress.org
#         #- LETSENCRYPT_HOST=unboundedpress.org,www.unboundedpress.org,restheart.unboundedpress.org,gitea.unboundedpress.org,nextcloud.unboundedpress.org,express.unboundedpress.org
#         - LETSENCRYPT_EMAIL=mail
#     hostname: nextcloud.unboundedpress.org
      depends_on:
         - mysql-nextcloud
#         #- redis
#         #- solr
      ports:
         - 8888:80

   mysql-nextcloud:
      image: mariadb:10.5.8
      container_name: mysql-nextcloud
      command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
      restart: always
      environment:
         - MYSQL_ROOT_PASSWORD=pass
         - MYSQL_PASSWORD=pass
         - MYSQL_DATABASE=nextcloud
         - MYSQL_USER=user
      volumes:
         - ./../mysql_nextcloud:/var/lib/mysql


#   nc_cron:
#     image: nextcloud:stable-apache
#      container_name: nc_cron
#      restart: always
#      volumes:
#         - ./../nextcloud:/var/www/html
#      entrypoint: /cron.sh
#      depends_on:
#         - mariadb
#         - redis
#         - solr

#   solr:
#      image: solr:8.1.1
#      container_name: solr
#      restart: always
#      volumes:
#         - ./../nextcloud/solr:/opt/solr/server/solr/mycores
#      entrypoint:
#         - docker-entrypoint.sh
#         - solr-precreate
#         - nextant

#   redis:
#      image: redis:5.0.5-alpine
#      container_name: redis
#      restart: always

   mongo-express:
      image: mongo-express
      container_name: mongo-express
      restart: always
      environment:
         - ME_CONFIG_MONGODB_SERVER=mongodb
         - ME_CONFIG_MONGODB_PORT=27017
         - ME_CONFIG_MONGODB_ADMINUSERNAME=user
         - ME_CONFIG_MONGODB_ADMINPASSWORD=pass
         - ME_CONFIG_MONGODB_ENABLE_ADMIN=true
         - ME_CONFIG_BASICAUTH_USERNAME=user
         - ME_CONFIG_BASICAUTH_PASSWORD=pass
         - ME_CONFIG_SITE_GRIDFS_ENABLED=true
         - VIRTUAL_HOST=express.unboundedpress.org
         - VIRTUAL_PORT=8081
         #- LETSENCRYPT_HOST=unboundedpress.org,www.unboundedpress.org,restheart.unboundedpress.org,gitea.unboundedpress.org,nextcloud.unboundedpress.org,express.unboundedpress.org
         - LETSENCRYPT_EMAIL=mail
      #volumes:
      #   - ./../nginx/certs:/etc/nginx/certs:ro
      depends_on:
         - mongodb
      ports:
         - "8081:8081"


   netdata:
      image: titpetric/netdata
      container_name: netdata
      hostname: netdata.unboundedpress.com # set to fqdn of host
      ports:
         - 19999:19999
      restart: unless-stopped
      cap_add:
         - SYS_PTRACE
      security_opt:
         - apparmor:unconfined
      volumes:
         - ./../netdata/netdataconfig/netdata:/etc/netdata
         #- ./../netdata/lib/netdata/conf.d:/usr/lib/netdata/conf.d
         #- ./../netdata/netdatalib:/var/lib/netdata
         #- ./../netdata/netdatacache:/var/cache/netdata
         - ./../netdata/etc/passwd:/host/etc/passwd:ro
         - ./../netdata/etc/group:/host/etc/group:ro
         - ./../netdata/proc:/host/proc:ro
         - ./../netdata/sys:/host/sys:ro
         - ./../netdata/etc/os-release:/host/etc/os-release:ro
      environment:
         - SMTP_TO=address
         #- SMTP_FROM=netdata@unboundedpress.org
         - SMTP_USER=mail
         - SMTP_PASS=pass
         - VIRTUAL_HOST=netdata.unboundedpress.org