Skip to content
Snippets Groups Projects
docker-compose.yml 5.71 KiB
version: '2.2'

services:

  # External dependencies
  redis:
    image: redis:alpine
    restart: always
    volumes:
      - "{{ basedir }}/mailu/redis:/data"
    depends_on:
      - resolver
    dns:
      - 192.168.203.254

  # Certdumper
  certdumper:
    image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}traefik-certdumper:${MAILU_VERSION:-2.0}
    restart: always
    environment:
      - DOMAIN={{ mailserver }}
      - TRAEFIK_VERSION=v2
    volumes:
      - "/srv/traefik:/traefik"
      - "{{ basedir }}/mailu/certs:/output"

  # Core services
  front:
    image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2.0}
    restart: always
    depends_on:
      - db
      - resolver
    env_file: mailu.env
    ports:
      - "25:25" #smtp
      - "465:465" #submissions
      - "587:587" #submission
      - "143:143" #imap
      - "993:993" #imaps
    volumes:
      - "{{ basedir }}/mailu/certs:/certs"
      - "{{ basedir }}/mailu/overrides/nginx:/overrides:ro"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.{{ servicename }}.entrypoints=websecure"
      - "traefik.http.routers.{{ servicename }}.rule=Host(`{{ mailserver }}`)"
      - "traefik.http.routers.{{ servicename }}.tls"
      - "traefik.http.routers.{{ servicename }}.tls.certresolver=letsencrypt"
      - "traefik.http.routers.{{ servicename }}.tls.domains[0].main={{ domain }}"
      - "traefik.http.routers.{{ servicename }}.tls.domains[0].sans={{ mailserver }}"
      - "traefik.http.routers.{{ servicename }}.service={{ servicename }}"
      - "traefik.http.services.{{ servicename }}.loadbalancer.server.port=80"
    networks:
      - default
      - web
    dns:
      - 192.168.203.254

  resolver:
    image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2.0}
    env_file: mailu.env
    restart: always
    networks:
      default:
        ipv4_address: 192.168.203.254

  admin:
    image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2.0}
    restart: always