Skip to content

Latest commit

 

History

History
121 lines (90 loc) · 6.52 KB

README.MD

File metadata and controls

121 lines (90 loc) · 6.52 KB

Блог

Сервер

Быстрый старт

Запуск сервера

  1. Установите следующие переменные окружения в local-docker-compose.yml
  • DB_USER - имя пользователя базы данных
  • DB_PASSWORD - пароль пользователя базы данных
  • DB_NAME - имя базы данных
  • DB_HOST - хост базы данных
  • DB_PORT - порт базы данных
  • DOMAIN - домен для сайта. Требуется указывать в полной форме: scheme://host. Например: https://example.com
  • SERVER_PORT - порт для запуска сервера
  1. Выполните на базе данных SQL скрипты из папки sql-scripts
  2. Запустите сервер:
docker-compose -f local-docker-compose.yml up -d

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


Интеграция Traefik

Traefik позволит нам запускать несколько серверов одновременно и производить автоматический Load Balancing, защитить HTTP соединение с помощью применения Let's Encrypt TSL сертификата, а также защитить секьюрные пути с помощью HTTP Basic авторизации. Сервер имеет также логику авторизации и аутентификации по JWT токенам, но данная логика отключена.

Необходимые для работы Traefik файлы находятся в папке traefik. Вы можете переместить эту папку в любое удобное для вас место. Дефолтный путь, заданный в docker-compose.yml - /opt/traefik.

Настройка Traefik:

Переместите папку traefik в /opt и зайдите в данную папку. Все дальнейшие пути, файлы и команды подразумеваются относительно данной директории.

  1. Создайте нового пользователя с именем admin для последующего доступа к Traefik Dashboard:
htpasswd -nbB admin <password>

Пароль хэшируется с помощью bcrypt алгоритма (-nbB).

  1. Установите вывод данной команды в файле traefik.toml:
[entryPoints]
  [entryPoints.dashboard]
    address = ":8081"
    [entryPoints.dashboard.auth]
      [entryPoints.dashboard.auth.basic]
        users = ["admin:hash"]
  1. Установите имя вашего домена:
[docker]
domain = "<domain>"

Например: example.com.

  1. Установите вашу почту:
[acme]
email = "<email>"

Например: email@example.com.

  1. Откройте файл docker-compose.yml и установите ваш домен в пути для доступа к Traefik Dashboard:
labels: 
  - "traefik.frontend.rule=Host:monitor.<domain>"

Например: "traefik.frontend.rule=Host:monitor.example.com"

  1. Создайте Docker сеть для Traefik. Все контейнеры, которые заиспользуют данную сеть, будут доступны из интернета по тому пути, который вы укажете в frontend rule.
docker network create web
  1. Запустите Traefik (если мы использовали другую папку для хранения traefik конфигурации, то убедитесь поменять пути маунтинга в docker-compose.yml).
docker-compose up -d

Запуск сервера:

Зайдите в папку с сервером. Все дальнейшие пути, файлы и команды подразумеваются относительно данной директории.

Для запуска сервера с поддержкой Traefik используется другой docker-compose файл - docker-compose.yml. В нем должны быть установлены те же самые переменные окружения, как и в случае запуска сервера без Traefik.

  1. Откройте docker-compose.yml и установите ваш домен в следующих docker label'ах:
labels:
  - "traefik.site.frontend.rule=Host:<domain>"
  - "traefik.adminRobot.frontend.rule=Host:admin.<domain>;Path:/robots.txt"
  - "traefik.admin.frontend.rule=Host:admin.<domain>"
  - "traefik.admin.frontend.auth.basic.users=user:hash"

Объяснение:

  • traefik.site.frontend.rule=Host: - основной путь для доступа к сайту
  • traefik.adminRobot.frontend.rule=Host:admin.;Path:/robots.txt - специальное правило для поисковых роботов: мы не защищаем этот путь, чтобы робот смог получить robots.txt для админки
  • traefik.admin.frontend.rule=Host:admin. - путь для доступа к админке
  • traefik.admin.frontend.auth.basic.users=user:hash - Basic auth для админки. Используйте или уже раннее сгенерированные данные, или сгенерируйте новые по тому же принципу. Важно: знаки '$' должны быть продублированы для эскейпинга. Например, если хэш - $2y$05$qZmUyodGOgHfc7momnSAcehoXD8ue8ZXI0wFBdLpCb9faNsgWSk2W, то эскейпированная строка: $$2y$$05$$qZmUyodGOgHfc7momnSAcehoXD8ue8ZXI0wFBdLpCb9faNsgWSk2W.
  1. Убедитесь, что в label "traefik.port=" стоит тот же самый порт, что и в env переменной SERVER_PORT.

  2. Запустите сервер:

docker-compose up -d

Теперь вам доступны следующие возможности:

  • Мониторинг контейнеров из Traefik Dashboard, который находится по пути monitor.<domain>
  • Основной сайт доступен по адресу <domain>
  • Админка доступна по адресу admin.<domain>