Skip to content

AlexNik/letsencrypt-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Пошаговая инструкция как получить SSL сертификат для своего приложения

В каждом коммите будет полный набор рабочих файлов для конкретного шага.

Требования

  1. Установленный docker
  2. Установленный docker-compose
  3. Установленный python на хостовой машине (опционально, потребуется в 1 шаге для проверки)
  4. Открытые и незанятые порты 80 и 443
  5. Внешний IP
  6. DNS имя, настроенное на внешний IP

Шаг 1: Делаем простое Python приложение

В папке simple-server лежит файл с простым веб приложением, которое поднимается на 8000 порту.
Запустим python3 simple-server/main.py и зайдём в браузере по локальному адресу http://127.0.0.1:8000. Должно отобразиться сообщение Hello!.
Или через curl: curl http://127.0.0.1:8000

Шаг 2: Упаковываем приложение в Docker

Добавим в папку simple-server Dockerfile. Соберём docker build -t simple-server simple-server.
Запустим docker run -d --name simple-server -p 8000:8000 simple-server, проверим в браузере по локальному адресу http://127.0.0.1:8000. Видим то же сообщение Hello!. Удалим запущенный контейнер docker rm -f simple-server.

Шаг 3: Добавим nginx

Сделаем конфиг nginx по пути production/data/nginx.conf и docker-compose файл по пути production/docker-compose.yml. Перейдём в папку production и запустим контейнеры docker-compose up -d, проверим в браузере по локальному адресу на 80 порту http://127.0.0.1.
Отлично, у нас есть всё необходимое для перевода нашего приложение на работу по HTTPS.

Шаг 4: Получение сертификата от Let's Encrypt

В папку production добавим скрипт init-letsencrypt.sh. В нём требуется поменять значения domains и email на нужные. Добавляем в конфиг nginx нужные поля для получения сертификата. Обновляем docker-compose.yml.
Делаем тестовый прогон скрипта ./init-letsencrypt.sh, если всё прошло успешно, то меняем значение параметра staging на 0 и запускаем опять.

Шаг 5: Настраиваем nginx для работы по HTTPS

Обновляем конфиг nginx: добавляем пути к сертификатам (не забудьте поправить <URL> на ваш), слушаем на 443 порту, добавляем конфига letsencrypt, делаем редирект с http на https. Пробрасываем 443 порт для nginx и добавляем команду перезапуска nginx для обновления сертификатов в docker-compose-yml. Запускаем получившуюся конфигурацию docker-compose up -d. Заходим в браузере по адресу http://<ваш_URL>, должно перебросить на страницу https://<ваш_URL> и отобразить Hello!.

Готово

Шаг 6: Пример с TeamCity

Обновляем конфиг nginx c учётом требований TeamCity и docker-compose.yml.
Обратите внимание, что в конфиге nginx обязательно надо добавить server_name. Не забудьте поменять все заглушки <URL> на верное DNS имя.
Запускаем docker-compose up -d. Заходим в браузере по DNS имени и настраиваем TeamCity.

Шаг 7: Добавляем агента

Добавить агента, который находится "в любой точке мира": docker run -dt -e SERVER_URL="https://<URL>" --name teamcity-agent-instance jetbrains/teamcity-agent:2021.1

Шаг 8: Агент в локальной сети предприятия

Допустим, у нас есть защищённая сеть предприятия, в которой находятся сервер TemCity и агент. У агента нет выхода в интернет, но мы хотим на нём собирать билды.
Тогда немного видоизменяем конфиг nginx и команду запуска агента: docker run -dt -e SERVER_URL="http://<LOCAL_IP>" --name teamcity-agent-instance jetbrains/teamcity-agent:2021.1

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published