# Установка Есть два основных пути установки: 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](Configuration.md)) - `sudo make test-cert` (проверка без лимитов) - `sudo make obtain` (production сертификат) Полный список команд: [Commands](Commands.md). ## Где лежат файлы после установки (типовая структура, может отличаться от ваших путей) - Приложение: `/opt/letsencrypt-regru/` - Конфиг: `/etc/letsencrypt/regru_config.json` (или `/etc/letsencrypt-regru/config.json` — зависит от сценария) - Сертификаты: `/etc/letsencrypt/live//` - Логи: `/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](RegRu_API_Troubleshooting.md). --- ## 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: ```bash sudo bash -c "$(curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh)" ``` Эта команда: - Автоматически скачает установочный скрипт - Запустит его с правами root - Проведет через интерактивную настройку **Способ 2: Через клонирование репозитория** Если вы хотите изучить код перед установкой: ```bash ## 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 После установки доступна удобная глобальная команда с множеством функций: #### 🔧 Основные команды ```bash ## Проверить срок действия текущего сертификата letsencrypt-regru --check ## Получить новый сертификат Let's Encrypt letsencrypt-regru --obtain ## Обновить существующий сертификат letsencrypt-regru --renew ## Автоматически проверить и обновить при необходимости letsencrypt-regru --auto ## Создать тестовый самоподписанный сертификат letsencrypt-regru --test-cert ``` #### 🧪 Команды диагностики и тестирования ```bash ## Проверить доступ к 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 ``` #### ⚙️ Служебные команды (внутреннее использование) ```bash ## 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 для автоматической проверки: ```bash ## Проверить статус таймера 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`. ### Редактирование конфигурации ```bash ## Открыть конфигурацию в редакторе sudo nano /etc/letsencrypt-regru/config.json ## После изменений перезапустите таймер sudo systemctl restart letsencrypt-regru.timer ``` #### Пример config.json ```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" } ``` ### Обновление приложения ```bash ## Скачайте последнюю версию cd configure_nginx_manager git pull ## Запустите обновление sudo ./letsencrypt_regru.sh update ``` Обновление: - Остановит таймер - Обновит скрипт - Обновит Python зависимости - Перезапустит таймер ### Удаление ```bash ## Полное удаление приложения sudo ./letsencrypt_regru.sh uninstall ``` Скрипт удалит: - Приложение из `/opt/letsencrypt-regru/` - Systemd сервисы - Глобальную команду Сертификаты в `/etc/letsencrypt/live/` сохраняются! Опционально можно удалить: - Конфигурацию `/etc/letsencrypt-regru/` - Логи `/var/log/letsencrypt-regru/` ### Просмотр логов ```bash ## Логи 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 ``` ### Устранение проблем #### Проверка установки ```bash ## Проверить наличие команды which letsencrypt-regru ## Проверить Python окружение ls -la /opt/letsencrypt-regru/venv/ ## Проверить systemd сервисы systemctl list-unit-files | grep letsencrypt-regru ``` #### Ошибки при установке **Ошибка: "Permission denied"** ```bash ## Запустите с sudo sudo ./letsencrypt_regru.sh ``` **Ошибка: "Package not found"** ```bash ## Обновите списки пакетов sudo apt-get update # Debian/Ubuntu sudo yum update # CentOS/RHEL ``` **Ошибка: "Python module not found"** ```bash ## Переустановите виртуальное окружение sudo rm -rf /opt/letsencrypt-regru/venv sudo ./letsencrypt_regru.sh ``` #### Проблемы с сертификатами **Сертификат не создается** ```bash ## Проверьте логи tail -n 50 /var/log/letsencrypt-regru/letsencrypt_regru.log ## Проверьте конфигурацию cat /etc/letsencrypt-regru/config.json ## Попробуйте вручную letsencrypt-regru --obtain -v ``` **DNS не обновляется** ```bash ## Увеличьте время ожидания в config.json "dns_propagation_wait": 180, "dns_check_attempts": 20 ``` #### Проблемы с NPM **Не загружается в NPM** ```bash ## Проверьте доступность 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: ```bash letsencrypt-regru --test-cert ``` Создаст самоподписанный сертификат на 90 дней. #### Ручной запуск обновления ```bash ## Запустить сервис вручную sudo systemctl start letsencrypt-regru.service ## Посмотреть статус systemctl status letsencrypt-regru.service ``` #### Изменить периодичность проверки Отредактируйте `/etc/systemd/system/letsencrypt-regru.timer`: ```ini [Timer] ## Каждые 6 часов вместо 12 OnUnitActiveSec=6h ``` Затем: ```bash 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