Конфигурация 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_URL | URL архива (для закрытых контуров) |
YOUGILE_NODE_IMAGE / YOUGILE_NGINX_IMAGE | Кастомные Docker-образы |
YOUGILE_CHECKSUM | SHA-256 для верификации архива |
CONTAINER_RUNTIME | Runtime: 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=
Безопасность
Сгенерированные контейнеры запускаются с минимальными привилегиями:
| Контейнер | Меры |
|---|---|
yougile | cap_drop: ALL + только необходимые capabilities; no-new-privileges: true; сервер работает под uid 1000 через gosu (сброс привилегий в entrypoint.sh) |
nginx | cap_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