Files
configure_nginx_manager/wiki/Nginx_Proxy_Manager.md
Dmitriy Fofanov 44f7ab1f5c
Синхронизация Wiki / Синхронизация Wiki (push) Successful in 3s
Добавлены новые документы и инструкции по автоматизации SSL сертификатов Let's Encrypt для reg.ru, включая:
- Структура проекта и основные скрипты (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)
2026-02-25 01:42:29 +03:00

113 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Интеграция с 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 Lets Encrypt нужен DNS-01 challenge
- в NPM можно использовать либо встроенный Lets 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 → Lets 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 (браузер не доверяет)