16 KiB
Установка
Есть два основных пути установки:
- Автоустановщик
letsencrypt_regru.sh(самый простой) - Установка через
Makefile(контролируемый сценарий)
Требования
- Linux (Debian/Ubuntu/CentOS/RHEL/Fedora)
- Root (запуск через
sudo) - Python 3.6+ (для исходников) или готовый бинарник
- certbot (системный)
- Доступ к API reg.ru (разрешённый IP, корректные учётные данные)
Вариант A — автоустановщик (рекомендуется)
Установка одной командой
- Через
curl:
sudo bash -c "$(curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh)"
Что делает установщик
- Ставит зависимости
- Создаёт виртуальное окружение
- Помогает интерактивно собрать конфиг
- Настраивает systemd service/timer
- Добавляет глобальную команду
letsencrypt-regru
Вариант B — через Makefile
Типовой сценарий:
sudo make install- отредактировать конфиг (см. Configuration)
sudo make test-cert(проверка без лимитов)sudo make obtain(production сертификат)
Полный список команд: Commands.
Где лежат файлы после установки
(типовая структура, может отличаться от ваших путей)
- Приложение:
/opt/letsencrypt-regru/ - Конфиг:
/etc/letsencrypt/regru_config.json(или/etc/letsencrypt-regru/config.json— зависит от сценария) - Сертификаты:
/etc/letsencrypt/live/<domain>/ - Логи:
/var/log/letsencrypt_regru.log(или/var/log/letsencrypt-regru/letsencrypt_regru.log) - systemd units:
/etc/systemd/system/letsencrypt-regru.serviceи.timer
Проверка после установки
letsencrypt-regru --helpletsencrypt-regru --test-api -vletsencrypt-regru --test-dns -v
Если ловите ошибку Access to API from this IP denied, см. RegRu_API_Troubleshooting.
Appendix (migrated from docs/INSTALL_GUIDE.md)
Руководство по использованию letsencrypt_regru.sh
Автор: Фофанов Дмитрий
Дата: 28.10.2025
Описание
letsencrypt_regru.sh - это автоматический установщик для Let's Encrypt Manager с интеграцией reg.ru и Nginx Proxy Manager.
Скрипт автоматизирует:
- Установку всех системных зависимостей
- Создание виртуального окружения Python
- Установку Python библиотек (requests, cryptography, certbot)
- Интерактивную настройку конфигурации
- Создание и настройку systemd сервисов
- Настройку автоматического обновления сертификатов
Требования
- Linux (Debian/Ubuntu, CentOS/RHEL/Fedora)
- Root доступ (sudo)
- Минимум 512MB RAM
- Минимум 1GB свободного места на диске
- Интернет соединение
Быстрая установка
Способ 1: Автоматическая установка (рекомендуется)
Самый быстрый способ - запустить установку напрямую с GitHub:
sudo bash -c "$(curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh)"
Эта команда:
- Автоматически скачает установочный скрипт
- Запустит его с правами root
- Проведет через интерактивную настройку
Способ 2: Через клонирование репозитория
Если вы хотите изучить код перед установкой:
## 1. Скачайте репозиторий
git clone https://github.com/DFofanov/configure_nginx_manager.git
cd configure_nginx_manager
## 2. Дайте права на выполнение
chmod +x letsencrypt_regru.sh
## 3. Запустите установку
sudo ./letsencrypt_regru.sh
Интерактивная настройка
Во время установки скрипт спросит:
- Домен - ваш основной домен (например,
example.com) - Email - для уведомлений Let's Encrypt
- Учетные данные reg.ru:
- Имя пользователя
- Пароль
- Wildcard сертификат - создавать ли
*.example.com(рекомендуется: Да) - Интеграция с NPM (опционально):
- Адрес NPM (например,
http://10.10.10.14:81) - Email для входа в NPM
- Пароль NPM
- Адрес NPM (например,
Структура после установки
/opt/letsencrypt-regru/ # Приложение
├── letsencrypt_regru_api.py # Основной скрипт
├── venv/ # Виртуальное окружение Python
└── (docs) # Документация — см. Wiki/README репозитория
/etc/letsencrypt-regru/ # Конфигурация
└── config.json # Настройки (credentials, домен, NPM)
/var/log/letsencrypt-regru/ # Логи
└── letsencrypt_regru.log
/etc/letsencrypt/live/ # Сертификаты Let's Encrypt
└── example.com/
├── privkey.pem
├── cert.pem
├── chain.pem
└── fullchain.pem
/etc/systemd/system/ # Systemd сервисы
├── letsencrypt-regru.service # Сервис обновления
└── letsencrypt-regru.timer # Таймер (каждые 12 часов)
/usr/local/bin/
└── letsencrypt-regru # Глобальная команда
Использование команды letsencrypt-regru
После установки доступна удобная глобальная команда с множеством функций:
🔧 Основные команды
## Проверить срок действия текущего сертификата
letsencrypt-regru --check
## Получить новый сертификат Let's Encrypt
letsencrypt-regru --obtain
## Обновить существующий сертификат
letsencrypt-regru --renew
## Автоматически проверить и обновить при необходимости
letsencrypt-regru --auto
## Создать тестовый самоподписанный сертификат
letsencrypt-regru --test-cert
🧪 Команды диагностики и тестирования
## Проверить доступ к API reg.ru
## - Показывает текущий IP
## - Тестирует подключение к API
## - Отображает баланс аккаунта
letsencrypt-regru --test-api
## Тестовое создание DNS записи TXT
## - Полная симуляция процесса SSL сертификации
## - Создает временную TXT запись _acme-challenge
## - Ожидает распространения DNS (60 секунд)
## - Проверяет через публичные DNS серверы
## - Автоматически удаляет тестовую запись
letsencrypt-regru --test-dns
## Показать справку по всем командам
letsencrypt-regru --help
## Включить подробный вывод (verbose mode)
letsencrypt-regru --obtain -v
letsencrypt-regru --check -v
⚙️ Служебные команды (внутреннее использование)
## Certbot authentication hook (используется certbot автоматически)
letsencrypt-regru --auth-hook
## Certbot cleanup hook (используется certbot автоматически)
letsencrypt-regru --cleanup-hook
📋 Описание команд
| Команда | Описание | Использование |
|---|---|---|
--check |
Проверяет срок действия сертификата | Регулярная проверка |
--obtain |
Получает новый сертификат от Let's Encrypt | Первое создание |
--renew |
Обновляет существующий сертификат | Продление срока |
--auto |
Автоматическая проверка и обновление | Для cron/systemd |
--test-cert |
Создает тестовый самоподписанный сертификат | Разработка/тестирование |
--test-api |
Проверяет доступ к API reg.ru | Диагностика подключения |
--test-dns |
Тестирует создание DNS записи | Проверка перед SSL |
--auth-hook |
Hook для certbot (создание DNS) | Внутреннее |
--cleanup-hook |
Hook для certbot (удаление DNS) | Внутреннее |
--help |
Показывает справку | Помощь |
-v |
Подробный вывод | Отладка |
Автоматическое обновление
Установщик настраивает systemd timer для автоматической проверки:
## Проверить статус таймера
systemctl status letsencrypt-regru.timer
## Когда следующий запуск
systemctl list-timers letsencrypt-regru.timer
## Посмотреть историю запусков
journalctl -u letsencrypt-regru
## Следить за логами в реальном времени
journalctl -u letsencrypt-regru -f
Настройки таймера
По умолчанию:
- Первый запуск: через 15 минут после загрузки системы
- Периодичность: каждые 12 часов
- Случайная задержка: до 1 часа (чтобы не создавать нагрузку)
Изменить можно в /etc/systemd/system/letsencrypt-regru.timer.
Редактирование конфигурации
## Открыть конфигурацию в редакторе
sudo nano /etc/letsencrypt-regru/config.json
## После изменений перезапустите таймер
sudo systemctl restart letsencrypt-regru.timer
Пример config.json
{
"regru_username": "your_username",
"regru_password": "your_password",
"domain": "example.com",
"wildcard": true,
"email": "admin@example.com",
"cert_dir": "/etc/letsencrypt/live",
"log_file": "/var/log/letsencrypt-regru/letsencrypt_regru.log",
"dns_propagation_wait": 60,
"dns_check_attempts": 10,
"dns_check_interval": 10,
"renewal_days": 30,
"npm_enabled": true,
"npm_host": "http://10.10.10.14:81",
"npm_email": "admin@npm.local",
"npm_password": "secure_password"
}
Обновление приложения
## Скачайте последнюю версию
cd configure_nginx_manager
git pull
## Запустите обновление
sudo ./letsencrypt_regru.sh update
Обновление:
- Остановит таймер
- Обновит скрипт
- Обновит Python зависимости
- Перезапустит таймер
Удаление
## Полное удаление приложения
sudo ./letsencrypt_regru.sh uninstall
Скрипт удалит:
- Приложение из
/opt/letsencrypt-regru/ - Systemd сервисы
- Глобальную команду
Сертификаты в /etc/letsencrypt/live/ сохраняются!
Опционально можно удалить:
- Конфигурацию
/etc/letsencrypt-regru/ - Логи
/var/log/letsencrypt-regru/
Просмотр логов
## Логи systemd (рекомендуется)
journalctl -u letsencrypt-regru -f
## Файл лога
tail -f /var/log/letsencrypt-regru/letsencrypt_regru.log
## Последние 100 строк
tail -n 100 /var/log/letsencrypt-regru/letsencrypt_regru.log
Устранение проблем
Проверка установки
## Проверить наличие команды
which letsencrypt-regru
## Проверить Python окружение
ls -la /opt/letsencrypt-regru/venv/
## Проверить systemd сервисы
systemctl list-unit-files | grep letsencrypt-regru
Ошибки при установке
Ошибка: "Permission denied"
## Запустите с sudo
sudo ./letsencrypt_regru.sh
Ошибка: "Package not found"
## Обновите списки пакетов
sudo apt-get update # Debian/Ubuntu
sudo yum update # CentOS/RHEL
Ошибка: "Python module not found"
## Переустановите виртуальное окружение
sudo rm -rf /opt/letsencrypt-regru/venv
sudo ./letsencrypt_regru.sh
Проблемы с сертификатами
Сертификат не создается
## Проверьте логи
tail -n 50 /var/log/letsencrypt-regru/letsencrypt_regru.log
## Проверьте конфигурацию
cat /etc/letsencrypt-regru/config.json
## Попробуйте вручную
letsencrypt-regru --obtain -v
DNS не обновляется
## Увеличьте время ожидания в config.json
"dns_propagation_wait": 120,
"dns_check_attempts": 20
Проблемы с NPM
Не загружается в NPM
## Проверьте доступность NPM
curl http://192.0.2.1:81
## Проверьте учетные данные в config.json
## Попробуйте вручную
letsencrypt-regru --test-cert -v
Поддерживаемые ОС
✅ Debian 10, 11, 12
✅ Ubuntu 20.04, 22.04, 24.04
✅ CentOS 7, 8
✅ RHEL 7, 8, 9
✅ Fedora 35+
Дополнительные возможности
Тестовый сертификат
Для тестирования без лимитов Let's Encrypt:
letsencrypt-regru --test-cert
Создаст самоподписанный сертификат на 90 дней.
Ручной запуск обновления
## Запустить сервис вручную
sudo systemctl start letsencrypt-regru.service
## Посмотреть статус
systemctl status letsencrypt-regru.service
Изменить периодичность проверки
Отредактируйте /etc/systemd/system/letsencrypt-regru.timer:
[Timer]
## Каждые 6 часов вместо 12
OnUnitActiveSec=6h
Затем:
sudo systemctl daemon-reload
sudo systemctl restart letsencrypt-regru.timer
Безопасность
- Конфигурация с паролями имеет права
600(только root) - Приватные ключи сертификатов имеют права
600 - Все операции выполняются от root
- Логи доступны только root
Поддержка
- GitHub Issues: https://github.com/YOUR_USERNAME/configure_nginx_manager/issues
- Документация: Wiki/README в этом репозитории
- Email: admin@example.com
Разработано: Фофанов Дмитрий
Дата: 28.10.2025
Версия: 2.0