В нашей команде мы часто сталкиваемся с необходимостью развертывания новых серверов с одинаковой конфигурацией: nginx, docker, docker-compose и certbot. nginx используем для проксирования докера и назначения человеческого DNS. Для того чтобы не повторяться мы, мы разработали набор скриптов, которые позволяют быстро и легко устанавливать и настраивать эти компоненты на серверах с операционной системой Ubuntu 22 и выше. В этой статье мы поделимся этими скриптами и расскажем, как они помогают сократить время и избежать ошибок при создании нового окружения.

Скрипты

Репозиторий со скриптами доступен на GitHub: prepare-server. В него входят три основных скрипта:

  1. install_docker.sh — для установки docker.io и docker-compose.

  2. install_nginx.sh — для установки nginx и certbot.

  3. add_proxy.sh — для настройки nginx в качестве прокси для docker-контейнеров.

Установка Docker и Docker Compose

Скрипт install_docker.sh выполняет установку docker.io и docker-compose, а также добавляет текущего пользователя в группу docker, чтобы можно было запускать docker-команды без sudo.

Инструкция по использованию:

  1. Клонируйте репозиторий:

    git clone https://github.com/CloudLab-Studio/prepare-server.git
    cd prepare-server
  2. Сделайте скрипт исполняемым:

    chmod +x install_docker.sh
  3. Запустите скрипт:

    ./install_docker.sh

Установка Nginx и Certbot

Скрипт install_nginx.sh устанавливает nginx, certbot и настраивает файервол для разрешения http и https трафика.

Инструкция по использованию:

  1. Сделайте скрипт исполняемым:

    chmod +x install_nginx.sh
  2. Запустите скрипт с указанием желаемой версии nginx:

    ./install_nginx.sh [stable|mainline]

Настройка Nginx в качестве прокси

Скрипт add_proxy.sh настраивает конфигурацию прокси для nginx и получает SSL-сертификат с помощью certbot.

Инструкция по использованию:

  1. Сделайте скрипт исполняемым:

    chmod +x add_proxy.sh
  2. Запустите скрипт и следуйте подсказкам:

    ./add_proxy.sh
  3. Вам будет предложено ввести:

    • Доменное имя.

    • Номер порта для проксирования.

    • Адрес электронной почты для получения SSL-сертификата.

Вместо заключения

  1. Безопасность: Скрипт не настраивает безопасность, вам нужно озаботиться об этом самим. Часто хостеры выдают VDS со всеми открытыми портами наружу и ваш сервис будет доступен как по доменному имени, так и по порту.

  2. Почему скрипто только под Ubuntu: Я потратил много ночей на изучение дистрибутивов 20 лет назад и первый человеческий диутрибутив, который у меня завелся Ubuntu - с ним и живем для большинства проектов.

  3. Если у вас есть похожие скрипты для быстрого поднятия сервисов на новых серверах, делитесь и контрибьютьте, велкам.

Комментарии (7)


  1. Desert-Eagle
    24.06.2024 10:04
    +9

    Статья с 3-мя ссылками на скрипты и командой как запустить скрипт. Очень познавательно, спасибо.


    1. WondeRu Автор
      24.06.2024 10:04

      Подскажите, как должна была выглядеть статья с 3 скриптами? Самый простой вариант: можно было её не писать, но уже больше 20 человек добавили ее в закладки, видимо, кому-то она оказалась полезной.


  1. jkreet
    24.06.2024 10:04
    +2

    Кажется, вы изобретаете велосипед.
    Откройте для себя ansible


    1. WondeRu Автор
      24.06.2024 10:04

      Я буду счастлив, если напишите кальку этой статьи, но для ansible. У меня как раз все руки не доходят его изучить.


  1. vasyakrg
    24.06.2024 10:04
    +1

    Посмотрите в сторону траефика


  1. Kahelman
    24.06.2024 10:04
    +1

    Если вы под Ubuntu/ Debian то смотрите уж в сторону создания пакетов. Чтобы все поднималось из своего репозитарий командой apt install :)

    Докер убрав то у вас откуда качается? Из заблокированного/разблокированного dickerhub?


    1. WondeRu Автор
      24.06.2024 10:04

      Через apt install вы поднимаете старые версии по-умолчанию. Обратите внимание, что nginx здесь ставится тоже через apt-get install, но предварительно проводятся манипуляции со ссылками на репозитории.