Докер почтового сервера с certbot

Я использую https://github.com/tomav/docker-mailserver для настройки почтового сервера. . Я хотел бы добавить поддержку Let's encrypt, поэтому я также использую https://hub.docker.com/r/certbot/certbot/~/dockerfile/

Я делаю файл компоновки Docker с этими двумя контейнерами:

version: '2'
services:
 nginx:
image: pixelfordinner/nginx
container_name: pixelcloud-nginx_proxy-nginx
restart: always
ports:
  - "80:80"
  - "443:443"
volumes:
  - "./volumes/conf.d:/etc/nginx/conf.d:ro"
  - "./volumes/vhost.d:/etc/nginx/vhost.d:ro"
  - "./volumes/certs:/etc/nginx/certs:ro"
  - "/usr/share/nginx/html"
nginx-proxy:
 image: jwilder/docker-gen
 container_name: nginx-proxy
 depends_on:
  - nginx
 volumes_from:
  - nginx
 volumes:
  - "/var/run/docker.sock:/tmp/docker.sock:ro"
  - "./data/templates:/etc/docker-gen/templates:ro"
  - "./volumes/conf.d:/etc/nginx/conf.d:rw"
entrypoint: /usr/local/bin/docker-gen -notify-sighup pixelcloud-nginx_proxy-nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf

letsencrypt-nginx-proxy:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: ssl
depends_on:
  - nginx
  - nginx-proxy
volumes_from:
  - nginx
volumes:
  - "/var/run/docker.sock:/var/run/docker.sock:ro"
  - "./volumes/vhost.d:/etc/nginx/vhost.d:rw"
  - "./volumes/certs:/etc/nginx/certs:rw"
environment:
  - "NGINX_DOCKER_GEN_CONTAINER=nginx-proxy"
 mail:
image: tvial/docker-mailserver:2.1
hostname: mail
domainname: example.com
container_name: mail
ports:
- "25:25"
- "143:143"
- "587:587"
- "993:993"
volumes:
- maildata:/var/mail
- mailstate:/var/mail-state
- ./config/:/tmp/docker-mailserver/
- "$PWD/etc/:/etc/letsencrypt/"
- "$PWD/log/:/var/log/letsencrypt/"
environment:
- ENABLE_SPAMASSASSIN=1
- ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1
- ENABLE_POSTGREY=1
- ONE_DIR=1
- DMS_DEBUG=0
- SSL_TYPE=letsencrypt
cap_add:
- NET_ADMIN
certbot:
image: certbot/certbot
container_name: certbot
command: certbot certonly --standalone -d mail.example.com
ports:
- "8083:80"
- "4432:443"
volumes:
  - /etc/letsencrypt:/etc/letsencrypt
  - /var/lib/letsencrypt:/var/lib/letsencrypt

Но certbot не создает сертификат. Существует конфликт между контейнерами nginx и certbot с портом 443.

Если я использую порт 443 для certbot, мой домен недоступен, и поэтому проверка домена certbot не выполняется. Если я использую 443 для nginx, certbot не работает. Я не знаю, что делать...


person Vana    schedule 25.04.2017    source источник


Ответы (1)


Давайте зашифруем (certbot) требуем, чтобы существующий tld, доступный через порт 80, действительно что-то делал. Вам нужно создать настоящий домен, например dev.existingdomain.com, и использовать его.

https://typo3worx.eu/2016/11/lets-encrypt-on-localhost/

Для локальной среды вы в основном используете самозаверяющие сертификаты...

person barat    schedule 25.04.2017
comment
У меня есть настоящее доменное имя с веб-сайтом. У меня также есть субдомен для веб-почты. Поэтому мне нужен certbot для создания ssl-сертификата для smtp. - person Vana; 25.04.2017
comment
Так эта строка только пример? certbot certonly --standalone -d mail.example.com - person barat; 25.04.2017
comment
Я заменяю mail.example.com своим доменом - person Vana; 25.04.2017
comment
Хорошо ... у меня есть идея, почему он не работает ... сам certbot требует связи через порт 80 или 443 ... когда вы его запускаете, он связывается с сервером, который проверяет соединение / домен ... и здесь этого не произойдет, так как на хосте certbot привязан к 8083 и 4432... github.com /certbot/certbot/issues/2697 Certbot позволяет вам получить сертификат из домена, в котором он в настоящее время работает и прослушивает 80/443 ... - person barat; 25.04.2017
comment
Я привязываюсь к 80 и 443, и у меня такое же сообщение: файл не найден - person Vana; 25.04.2017
comment
Обновляю свой первый пост. я все еще работаю над этим вопросом - person Vana; 25.04.2017