Перейти к основному содержимому

Конфигурация YouGile Docker

YouGile настройки

Отредактируйте файл ./yougile/conf.json:

{
"port": 8001,
"mainPageUrl": "https://your-domain.com",
"emailFrom": "\"YouGile\" <noreply@your-domain.com>",
"logStreams": [
{"level": "error", "path": "/opt/yougile/logs/error.log"},
{"level": "info", "path": "/opt/yougile/logs/info.log"}
],
"smtp": {
"host": "smtp.your-provider.com",
"secure": true,
"port": 465,
"pool": true,
"rateLimit": 5,
"maxConnections": 20,
"auth": {
"user": "your-email@your-domain.com",
"pass": "your-password"
}
}
}

Nginx настройки

Для использования с доменным именем отредактируйте ./nginx/nginx.conf:

  • Замените localhost на ваше доменное имя
  • Раскомментируйте HTTPS-секцию после получения SSL-сертификата

Конфигурация через .env

Файл .env.example содержит полный список поддерживаемых переменных. Скопируйте его в .env и настройте нужные значения:

cp .env.example .env

После изменения .env пересоздайте конфигурацию:

./yougile-container install --regen
ПеременнаяНазначение
NGINX_ENABLEDВключить/выключить nginx (по умолчанию true)
NGINX_HTTP_PORT / NGINX_HTTPS_PORTПорты nginx (по умолчанию 80/443)
YOUGILE_MEM_LIMIT / YOUGILE_CPU_LIMITЛимиты ресурсов контейнеров
NGINX_MEM_LIMIT / NGINX_CPU_LIMITЛимиты ресурсов nginx
YOUGILE_DOWNLOAD_URLURL архива (для закрытых контуров)
YOUGILE_NODE_IMAGE / YOUGILE_NGINX_IMAGEКастомные Docker-образы
YOUGILE_CHECKSUMSHA-256 для верификации архива
CONTAINER_RUNTIMERuntime: docker или podman
YOUGILE_LANGЯзык вывода установщика: en / ru

Nginx

# true (по умолчанию) — nginx включён как reverse proxy
# false — nginx отключён, YouGile доступен напрямую на :8001
NGINX_ENABLED=true

# Порты на хосте (изменить, если 80/443 уже заняты)
NGINX_HTTP_PORT=80
NGINX_HTTPS_PORT=443

Ограничения ресурсов

# Пусто = без ограничений.
# Память: 512m, 1g, 2g и т.д. CPU: количество ядер (0.5, 1, 2 и т.д.)
YOUGILE_MEM_LIMIT=
YOUGILE_CPU_LIMIT=
NGINX_MEM_LIMIT=
NGINX_CPU_LIMIT=

Закрытый контур / внутренний реестр

Архив yougile.tar.gz скачивается установщиком до docker build — сборка образа не требует выхода в интернет. Docker-образы (node, nginx) нужно предварительно загрузить во внутренний registry.

# Архив YouGile
YOUGILE_DOWNLOAD_URL=http://nexus.corp/yougile/latest/yougile.tar.gz

# Docker-образы
YOUGILE_NODE_IMAGE=registry.corp/node:22.3.0
YOUGILE_NGINX_IMAGE=registry.corp/nginx:alpine
YOUGILE_CERTBOT_IMAGE=registry.corp/certbot:latest

Целостность архива

# SHA-256 архива yougile.tar.gz (hex). Пусто = без проверки.
# Получить: sha256sum yougile.tar.gz
YOUGILE_CHECKSUM=

Безопасность

Сгенерированные контейнеры запускаются с минимальными привилегиями:

КонтейнерМеры
yougilecap_drop: ALL + только необходимые capabilities; no-new-privileges: true; сервер работает под uid 1000 через gosu (сброс привилегий в entrypoint.sh)
nginxcap_drop: ALL + NET_BIND_SERVICE; no-new-privileges: true; конфиги и сертификаты примонтированы :ro

Порт 8001 backend-а привязан к 127.0.0.1 — он недоступен извне и проксируется только через nginx.

SSL-сертификаты

Certbot входит в поставку как вспомогательный инструмент и не запускается автоматически. Nginx изначально работает в HTTP-режиме — SSL-секция в nginx.conf закомментирована.

Для включения HTTPS подходит любой сертификат: от корпоративного УЦ, Let's Encrypt, самоподписанный и т.д.

Использование собственных SSL-сертификатов (основной способ)

Шаг 1. Подготовьте файлы сертификатов

Вам потребуются:

  • файл сертификата (обычно .crt или .pem);
  • файл приватного ключа (обычно .key);
  • опционально — цепочка сертификатов (intermediate / chain).

Шаг 2. Разместите сертификаты

Создайте директорию для вашего домена:

mkdir -p ./certbot/conf/live/your-domain.com/

Если у вас есть основной сертификат и промежуточные, объедините их в один файл:

cat your-cert.crt intermediate.crt > ./certbot/conf/live/your-domain.com/fullchain.pem

Если у вас уже есть файл с полной цепочкой:

cp your-fullchain.pem ./certbot/conf/live/your-domain.com/fullchain.pem

Скопируйте приватный ключ:

cp your-private.key ./certbot/conf/live/your-domain.com/privkey.pem

Установите права доступа:

chmod 644 ./certbot/conf/live/your-domain.com/fullchain.pem
chmod 600 ./certbot/conf/live/your-domain.com/privkey.pem

Шаг 3. (Опционально) DH-параметры

openssl dhparam -out ./certbot/conf/ssl-dhparams.pem 2048

Шаг 4. Настройте Nginx

Отредактируйте ./nginx/nginx.conf.

В секции HTTP-сервера включите редирект на HTTPS:

server {
listen 80;
server_name your-domain.com;

location /.well-known/acme-challenge/ {
root /var/www/certbot;
}

location / {
return 301 https://$server_name$request_uri;
}
}

Раскомментируйте и настройте HTTPS-сервер:

server {
listen 443 ssl;
server_name your-domain.com;

ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /etc/nginx/ssl/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/your-domain.com/privkey.pem;
ssl_dhparam /etc/nginx/ssl/ssl-dhparams.pem;

# ... остальная конфигурация сервера
}

Шаг 5. Проверьте и перезапустите Nginx

docker compose exec nginx nginx -t
docker compose restart nginx

Шаг 6. Обновите конфигурацию YouGile

Отредактируйте ./yougile/conf.json:

{
"mainPageUrl": "https://your-domain.com"
}

Перезапустите YouGile:

docker compose restart yougile

Let's Encrypt (альтернативный способ)

Для получения сертификатов Let's Encrypt выполните команду:

docker compose run --rm certbot certonly --webroot \
-w /var/www/certbot \
-d your-domain.com \
--email your-email@example.com \
--agree-tos \
--no-eff-email

После успешного получения сертификатов выполните шаги 4–6 выше.

Управление сертификатами

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

docker compose run --rm certbot certificates

Проверка срока действия

openssl x509 -in ./certbot/conf/live/your-domain.com/fullchain.pem -noout -dates

Тестовое обновление (без изменений)

docker compose run --rm certbot renew --dry-run

Ручное обновление

docker compose run --rm certbot renew
docker compose restart nginx

Автоматическое обновление (cron)

Откройте crontab:

sudo crontab -e

Добавьте задание:

0 12 * * * cd /path/to/project && docker compose run --rm certbot renew --quiet && docker compose restart nginx

Проверка HTTPS

curl -I https://your-domain.com
openssl s_client -connect your-domain.com:443 -servername your-domain.com