Обзор развертывания yourls на сервере¶
Предварительные требования¶
Для корректной работы приложения требуются следующие параметры конфигурации:
| Параметр | Значение |
|---|---|
| Операционная система | Ubuntu |
| Доступные порты (внутренние) | 8080 |
| Доступные порты (внешние) | 443 |
| Внутренний путь | / |
FDQN итоговой панели на домене hostkey.in¶
Шаблон доменного имени для доступа к приложению определяется следующим образом:
| Параметр | Значение |
|---|---|
| Префикс | yourls |
| Домен | hostkey.in |
| Полный шаблон | yourls{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
Основные директории, используемые в системе:
-
/opt/yourls— корневая директория приложения. -
/opt/yourls/mysql-data— хранилище данных базы данных MySQL. -
/root/nginx— конфигурация прокси-сервера Nginx. -
/data/nginx/user_conf.d— пользовательские конфигурации Nginx.
Процесс установки приложения¶
Развертывание выполняется путем запуска контейнеров через docker compose. Приложение состоит из основного сервиса управления короткими ссылками и базы данных MySQL. После поднятия основных контейнеров разворачивается прокси-сервер с поддержкой SSL.
Контейнеры Docker и их запуск¶
Сервис yourls¶
-
Имя образа:
yourls:latest -
Имя контейнера:
yourls{Server_ID_from_Invapi}.hostkey.in -
Порты:
127.0.0.1:8080:8080 -
Переменные окружения:
-
YOURLS_DB_HOST:mysql -
YOURLS_DB_NAME:yourls -
YOURLS_DB_USER:yourls -
YOURLS_DB_PASS:yourls -
YOURLS_SITE:https://yourls{Server_ID_from_Invapi}.hostkey.in -
YOURLS_USER:root -
YOURLS_PASS:{Пароль пользователя}
-
-
Политика перезапуска:
always
Сервис mysql¶
-
Имя образа:
mysql:8 -
Переменные окружения:
-
MYSQL_ROOT_PASSWORD:yourls -
MYSQL_DATABASE:yourls -
MYSQL_USER:yourls -
MYSQL_PASSWORD:yourls
-
-
Тома (volumes):
/opt/yourls/mysql-data:/var/lib/mysql -
Политика перезапуска:
always
Сервис nginx¶
-
Имя образа:
jonasal/nginx-certbot:latest -
Переменные окружения:
CERTBOT_EMAIL:hkadm@hostkey.com
-
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d
-
-
Режим сети:
host -
Политика перезапуска:
unless-stopped
Базы данных¶
База данных MySQL работает в отдельном контейнере. Данные хранятся локально на хосте в директории /opt/yourls/mysql-data. Приложение подключается к базе по имени сервиса mysql.
Настройки прав¶
Для обеспечения безопасности установлены следующие права доступа:
-
Директория приложения
/opt/yourls: владелецroot, группаroot, режим0750. -
Директория данных MySQL
/opt/yourls/mysql-data: владелецroot, группаroot, режим0750. -
Файл конфигурации
yourls-compose.yml: владелецroot, группаroot, режим0640.
Расположение конфигурационных файлов и данных¶
| Тип файла/директории | Путь |
|---|---|
| Конфигурация Docker Compose (приложение) | /opt/yourls/yourls-compose.yml |
| Данные MySQL | /opt/yourls/mysql-data |
| Конфигурация Nginx | /root/nginx/compose.yml |
Доступные порты для подключения¶
-
443(HTTPS) — внешний доступ через прокси-сервер. -
8080(HTTP) — внутренний доступ к приложению (ограничен интерфейсом127.0.0.1).
Запуск, остановка приложения¶
Управление контейнерами приложения осуществляется из директории /opt/yourls:
-
Запуск:
docker compose -f /opt/yourls/yourls-compose.yml up -d -
Остановка:
docker compose -f /opt/yourls/yourls-compose.yml down
Управление прокси-сервером осуществляется из директории /root/nginx:
-
Запуск:
docker compose -C /root/nginx up -d -
Остановка:
docker compose -C /root/nginx down
Прокси серверы¶
Для обеспечения работы по протоколу HTTPS используется контейнер nginx-certbot. Он использует внешнее хранилище томов nginx_secrets для хранения сертификатов Let's Encrypt. Конфигурация прокси настроена на перенаправление трафика с порта 443 на внутренний порт приложения 8080.