483 lines
16 KiB
Markdown
483 lines
16 KiB
Markdown
# Установка
|
||
|
||
Есть два основных пути установки:
|
||
|
||
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/<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](RegRu_API_Troubleshooting.md).
|
||
|
||
|
||
---
|
||
|
||
## Appendix (migrated from docs/INSTALL_GUIDE.md)
|
||
<!-- 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
|
||
|