LetsEncrypt with HAProxy
lxc launch ubuntu:18.04 haprx
lxc config device add haprx myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:localhost:80
#lxc config device remove haprx myport80
lxc config device add haprx myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:localhost:443
#lxc config device remove haprx myport443
lxc exec haprx -- sudo --user ubuntu --login
sudo apt update && sudo apt upgrade
sudo apt install haproxy
sudo systemctl enable haproxy
sudo systemctl start haproxy
sudo nano /etc/hosts
Добавить
127.0.0.1 localhost
10.91.211.107 web1.lxd
10.91.211.95 web2.lxd
10.91.211.176 gitlab.lxd
10.91.211.10 wordpress.lxd
10.91.211.37 wiki.lxd
Сохранить.
sudo nano /etc/haproxy/haproxy.cfg
-----
Сохранить.
sudo add-apt-repository -y ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y certbot
sudo systemctl stop haproxy
Первый раз создаем сертификаты вручную используя порт 80 (stop haproxy)
sudo certbot certonly --standalone -d web1.vt.info -d web2.vt.info -d gitlab.vt.info -d wordpress.vt.info -d wiki.vt.info --non-interactive --agree-tos --email admin@vt.info --http-01-port=80
Ниже обратить внимание что путь к папке сертификатами
/etc/letsencrypt/live/web1.vt.info/
Задан в первом -d web1.vt.info !!!
HAProxy нужен ssl-сертификат, чтобы быть одним файлом в определенном формате:
sudo su -c "cat /etc/letsencrypt/live/web1.vt.info/fullchain.pem /etc/letsencrypt/live/web1.vt.info/privkey.pem > /etc/letsencrypt/live/web1.vt.info/vt.info.pem"
sudo systemctl start haproxy
Далее будем обновляться (можно попробовать):
sudo certbot renew --tls-sni-01-port=8888
Для автоматизации сделаем скрипт:
sudo nano /opt/update-certs.sh
#!/usr/bin/env bash
# Renew the certificate
certbot renew --force-renewal --tls-sni-01-port=8888
#certbot renew --tls-sni-01-port=8888
# Concatenate new cert files, with less output (avoiding the use tee and its output to stdout)
bash -c "cat /etc/letsencrypt/live/web1.vesuchet.info/fullchain.pem /etc/letsencrypt/live/web1.vesuchet.info/privkey.pem > /etc/letsencrypt/live/web1.vesuchet.info/vesuchet.info.pem"
# Reload HAProxy
service haproxy reload
Сохранить.
lxc launch ubuntu:18.04 haprx
lxc config device add haprx myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:localhost:80
#lxc config device remove haprx myport80
lxc config device add haprx myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:localhost:443
#lxc config device remove haprx myport443
lxc exec haprx -- sudo --user ubuntu --login
sudo apt update && sudo apt upgrade
sudo apt install haproxy
sudo systemctl enable haproxy
sudo systemctl start haproxy
sudo nano /etc/hosts
Добавить
127.0.0.1 localhost
10.91.211.107 web1.lxd
10.91.211.95 web2.lxd
10.91.211.176 gitlab.lxd
10.91.211.10 wordpress.lxd
10.91.211.37 wiki.lxd
Сохранить.
sudo nano /etc/haproxy/haproxy.cfg
-----
Сохранить.
sudo add-apt-repository -y ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y certbot
sudo systemctl stop haproxy
Первый раз создаем сертификаты вручную используя порт 80 (stop haproxy)
sudo certbot certonly --standalone -d web1.vt.info -d web2.vt.info -d gitlab.vt.info -d wordpress.vt.info -d wiki.vt.info --non-interactive --agree-tos --email admin@vt.info --http-01-port=80
Ниже обратить внимание что путь к папке сертификатами
/etc/letsencrypt/live/web1.vt.info/
Задан в первом -d web1.vt.info !!!
HAProxy нужен ssl-сертификат, чтобы быть одним файлом в определенном формате:
sudo su -c "cat /etc/letsencrypt/live/web1.vt.info/fullchain.pem /etc/letsencrypt/live/web1.vt.info/privkey.pem > /etc/letsencrypt/live/web1.vt.info/vt.info.pem"
sudo systemctl start haproxy
Далее будем обновляться (можно попробовать):
sudo certbot renew --tls-sni-01-port=8888
Для автоматизации сделаем скрипт:
sudo nano /opt/update-certs.sh
#!/usr/bin/env bash
# Renew the certificate
certbot renew --force-renewal --tls-sni-01-port=8888
#certbot renew --tls-sni-01-port=8888
# Concatenate new cert files, with less output (avoiding the use tee and its output to stdout)
bash -c "cat /etc/letsencrypt/live/web1.vesuchet.info/fullchain.pem /etc/letsencrypt/live/web1.vesuchet.info/privkey.pem > /etc/letsencrypt/live/web1.vesuchet.info/vesuchet.info.pem"
# Reload HAProxy
service haproxy reload
Сохранить.