4
Installation
dfgit-actions[bot] edited this page 2026-02-25 08:50:36 +03:00
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.

Установка

Есть два основных пути установки:

  1. Автоустановщик letsencrypt_regru.sh (самый простой)
  2. Установка через 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 --help
  • letsencrypt-regru --test-api -v
  • letsencrypt-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

Интерактивная настройка

Во время установки скрипт спросит:

  1. Домен - ваш основной домен (например, example.com)
  2. Email - для уведомлений Let's Encrypt
  3. Учетные данные reg.ru:
    • Имя пользователя
    • Пароль
  4. Wildcard сертификат - создавать ли *.example.com (рекомендуется: Да)
  5. Интеграция с NPM (опционально):
    • Адрес NPM (например, http://10.10.10.14:81)
    • Email для входа в 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": 180,
    "dns_check_attempts": 20,
    "dns_check_interval": 15,
    "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": 180,
"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

Поддержка


Разработано: Фофанов Дмитрий
Дата: 28.10.2025
Версия: 2.0