Синхронизация Wiki / Синхронизация Wiki (push) Successful in 3s
- Структура проекта и основные скрипты (PROJECT_STRUCTURE.md) - Быстрый старт сборки исполняемых файлов (QUICKSTART_BUILD.md) - Автоматические релизы через GitHub и Gitea (RELEASE_GUIDE.md) - Подробная инструкция по использованию скриптов (SSL_SCRIPTS_README.md) - Руководство по тестированию SSL сертификатов (TESTING_GUIDE.md) - Инструкции по настройке Nginx Proxy Manager с SSL (Настройке Nginx Manager с SSL .md) - Создание и продление wildcard сертификата в Nginx Proxy Manager (Создание и продление SSL сертификата.md)
113 lines
5.3 KiB
Markdown
113 lines
5.3 KiB
Markdown
# Интеграция с Nginx Proxy Manager (NPM)
|
||
|
||
Проект умеет автоматически загружать (или обновлять) сертификаты в NPM через его API.
|
||
|
||
## Включение
|
||
|
||
В конфиге:
|
||
|
||
- `npm_enabled: true`
|
||
- `npm_host`: например `http://192.0.2.1:81`
|
||
- `npm_email`, `npm_password`
|
||
|
||
После этого:
|
||
|
||
- `--obtain`, `--renew`, `--auto`, `--test-cert` будут пытаться синхронизировать сертификат в NPM.
|
||
|
||
## Как работает синхронизация
|
||
|
||
1) Скрипт логинится в NPM (`/api/tokens`)
|
||
2) Получает список сертификатов
|
||
3) Ищет сертификат по домену (учитывает `<domain>` и `*.<domain>`)
|
||
4) Если найден — обновляет, иначе — загружает новый
|
||
|
||
### Про “дубликаты” сертификатов
|
||
|
||
Иногда 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)
|
||
|
||
1) Убедитесь, что DNS API reg.ru работает:
|
||
|
||
- `letsencrypt-regru --test-api -v`
|
||
- `letsencrypt-regru --test-dns -v`
|
||
|
||
2) Получите production сертификат:
|
||
|
||
- `letsencrypt-regru --obtain`
|
||
|
||
3) Если `npm_enabled=true`, сертификат автоматически появится в NPM.
|
||
|
||
4) В NPM:
|
||
|
||
- Proxy Hosts → Add/Edit Proxy Host
|
||
- SSL → выберите сертификат (обычно “Custom/Other”)
|
||
- включите нужные опции (Force SSL, HSTS по необходимости)
|
||
|
||
### Вариант B: сертификат выдаёт сам NPM
|
||
|
||
Этот вариант подходит, если NPM может сам пройти challenge.
|
||
|
||
1) SSL Certificates → Add SSL Certificate → Let’s Encrypt
|
||
2) Domain Names: добавьте `example.com` и `*.example.com`
|
||
3) Выберите challenge:
|
||
|
||
- HTTP-01: требует доступности NPM из интернета по 80/443 и корректных A/AAAA записей
|
||
- DNS-01: требует поддерживаемого DNS provider в NPM
|
||
|
||
Если нужного DNS провайдера нет (или нет корректной интеграции для reg.ru), проще использовать этот проект как внешний DNS-01 менеджер.
|
||
|
||
### Вариант C: импорт уже существующего wildcard сертификата (Custom)
|
||
|
||
Если вы приобрели wildcard сертификат у CA или получили его другим способом:
|
||
|
||
1) SSL Certificates → Add SSL Certificate → Custom
|
||
2) Вставьте:
|
||
|
||
- Certificate: сертификат + intermediate chain (если отдельно — добавьте подряд)
|
||
- Key: приватный ключ
|
||
|
||
3) Сохраните и назначайте этот сертификат на Proxy Hosts.
|
||
|
||
## DNS записи для wildcard
|
||
|
||
Для проксирования поддоменов часто достаточно, чтобы DNS указывал на NPM:
|
||
|
||
- `example.com` → IP NPM
|
||
- `*.example.com` → IP NPM
|
||
|
||
Точная схема зависит от вашей инфраструктуры.
|
||
|
||
## Траблшутинг
|
||
|
||
- “не логинится” → проверьте `npm_host` (http/https), креды, доступность
|
||
- “сертификат не появился” → проверьте `npm_enabled`, логи скрипта
|
||
- staging сертификаты: не предназначены для production (браузер не доверяет)
|