- Реализован новый рабочий процесс в `.github/workflows/wiki-sync.yml` для синхронизации вики с основным репозиторием при отправке изменений в ветку master. - Рабочий процесс включает шаги клонирования репозитория, проверки наличия папки wiki и синхронизации содержимого вики с вики DFGit. Документация: Создание описания секретов для развертывания и конфигурации - Добавлен файл `secrets_description.md`, подробно описывающий необходимые секреты для развертывания и настройки проекта `configure_nginx_manager`. Документация: Добавление документации по сборке и релизам - Создан файл `Build_and_Release.md`, описывающий процесс сборки с использованием PyInstaller и этапы упаковки релиза. Документация: Введение журнала изменений для отслеживания версий - Добавлен файл `Changelog.md` для краткого описания основных версий и изменений, внесенных в проект. Документация: Документирование команд и скриптов, доступных в проекте - Создан файл `Commands.md` для перечисления команд CLI и команд Makefile для удобства пользователей. Документация: Предоставление подробной информации о конфигурации проекта - Добавлен файл `Configuration.md` для объяснения структуры конфигурации JSON и параметров. Документация: Описание действий развертывания и необходимых секретов - Создан файл `Deploy_Actions_Secrets.md` для описания секретов, необходимых для развертывания через GitHub Actions. Документация: Объяснение методов синхронизации Gitea с GitHub - Добавлен файл `Gitea_Sync.md` для описания различных методов синхронизации репозиториев из Gitea в GitHub. Документация: Создание домашней страницы для вики проекта - Создан файл `Home.md`, который служит основной точкой входа для вики проекта. Документация: Описание процедур установки проекта - Добавлен файл `Installation.md` с подробным описанием методов и требований к установке. Документация: Описание рабочего процесса Let's Encrypt для управления сертификатами - Создан файл `LetsEncrypt_Workflow.md` для объяснения процесса получения и обновления SSL-сертификатов. Документация: Интеграция с документацией Nginx Proxy Manager - Добавлен файл `Nginx_Proxy_Manager.md` для объяснения синхронизации сертификатов с NPM. Документация: Определение структуры проекта для лучшего понимания - Создан файл `Project_Structure.md` для описания ключевых файлов и скриптов проекта. Документация: Устранение распространенных проблем с API reg.ru - Добавлен файл `RegRu_API_Troubleshooting.md` для помощи пользователям в диагностике и устранении проблем, связанных с API. Документация: Предоставить рекомендации по тестированию проекта - Создан файл `Testing.md`, описывающий стратегии тестирования и ограничения, связанные с Let's Encrypt. Документация: Добавить боковую панель навигации для вики - Создан файл `_Sidebar.md` для упрощения навигации по страницам вики.
5.3 KiB
Интеграция с Nginx Proxy Manager (NPM)
Проект умеет автоматически загружать (или обновлять) сертификаты в NPM через его API.
Включение
В конфиге:
npm_enabled: truenpm_host: напримерhttp://192.168.10.14:81npm_email,npm_password
После этого:
--obtain,--renew,--auto,--test-certбудут пытаться синхронизировать сертификат в NPM.
Как работает синхронизация
- Скрипт логинится в NPM (
/api/tokens) - Получает список сертификатов
- Ищет сертификат по домену (учитывает
<domain>и*.<domain>) - Если найден — обновляет, иначе — загружает новый
Про “дубликаты” сертификатов
Иногда NPM сразу после загрузки ещё не распарсил домены (поле domain_names пустое). Скрипт дополнительно пытается сопоставлять по nice_name, чтобы не плодить дубли.
Команда для диагностики:
--list-npm— показывает сертификаты и подсвечивает дубликаты--delete-npm <ID>— удаляет сертификат по ID
Ручная загрузка существующего сертификата
--upload-npm <DOMAIN>
Скрипт возьмёт fullchain.pem и privkey.pem из cert_dir/<DOMAIN>/ и загрузит/обновит сертификат в NPM.
Один wildcard сертификат на много поддоменов
Практический сценарий:
- Получить сертификат на
example.com+*.example.com - В NPM импортировать/использовать этот сертификат для всех Proxy Hosts
Обратите внимание:
- для wildcard Let’s Encrypt нужен DNS-01 challenge
- в NPM можно использовать либо встроенный Let’s Encrypt, либо этот проект как внешний менеджер и синхронизатор
Пошагово: использовать один wildcard сертификат для всех Proxy Hosts
Ниже — практический сценарий, когда вам нужен один сертификат (например, *.example.com) и вы хотите назначать его на все хосты.
Вариант A: сертификат выдаёт этот проект (рекомендуется при reg.ru DNS-01)
- Убедитесь, что DNS API reg.ru работает:
letsencrypt-regru --test-api -vletsencrypt-regru --test-dns -v
- Получите production сертификат:
letsencrypt-regru --obtain
-
Если
npm_enabled=true, сертификат автоматически появится в NPM. -
В NPM:
- Proxy Hosts → Add/Edit Proxy Host
- SSL → выберите сертификат (обычно “Custom/Other”)
- включите нужные опции (Force SSL, HSTS по необходимости)
Вариант B: сертификат выдаёт сам NPM
Этот вариант подходит, если NPM может сам пройти challenge.
- SSL Certificates → Add SSL Certificate → Let’s Encrypt
- Domain Names: добавьте
example.comи*.example.com - Выберите challenge:
- HTTP-01: требует доступности NPM из интернета по 80/443 и корректных A/AAAA записей
- DNS-01: требует поддерживаемого DNS provider в NPM
Если нужного DNS провайдера нет (или нет корректной интеграции для reg.ru), проще использовать этот проект как внешний DNS-01 менеджер.
Вариант C: импорт уже существующего wildcard сертификата (Custom)
Если вы приобрели wildcard сертификат у CA или получили его другим способом:
- SSL Certificates → Add SSL Certificate → Custom
- Вставьте:
- Certificate: сертификат + intermediate chain (если отдельно — добавьте подряд)
- Key: приватный ключ
- Сохраните и назначайте этот сертификат на Proxy Hosts.
DNS записи для wildcard
Для проксирования поддоменов часто достаточно, чтобы DNS указывал на NPM:
example.com→ IP NPM*.example.com→ IP NPM
Точная схема зависит от вашей инфраструктуры.
Траблшутинг
- “не логинится” → проверьте
npm_host(http/https), креды, доступность - “сертификат не появился” → проверьте
npm_enabled, логи скрипта - staging сертификаты: не предназначены для production (браузер не доверяет)