Remove deprecated files related to homelab architecture, container context, and various scripts. This cleanup includes the removal of configuration files for Nextcloud, Gitea, and VPN setups, as well as documentation files that are no longer relevant. This helps streamline the project and eliminate outdated references.

This commit is contained in:
2026-02-25 17:03:10 +03:00
parent 3c00fbf67b
commit b0d2746490
74 changed files with 2662 additions and 7107 deletions

View File

@@ -0,0 +1,102 @@
# Инструкция: выпуск сертификата Let's Encrypt (DNS-01)
Универсальная инструкция для использования как промпт в следующих проектах. Подходит, когда HTTP-01 недоступен (порт 80 закрыт, блокировки, инстанс за NAT).
---
## Когда использовать DNS-01
- **HTTP-01** не срабатывает: таймаут, «Connection refused», порт 80 недоступен с интернета, провайдер или регион блокирует запросы от Let's Encrypt.
- **DNS-01**: проверка владения доменом по TXT-записи `_acme-challenge.<домен>`. До сервера стучаться не нужно — важен только DNS.
---
## Общий алгоритм
1. Выбрать DNS-провайдера домена и проверить, есть ли у него API или плагин для certbot/acme.sh.
2. Установить certbot и плагин для этого DNS (или использовать acme.sh с DNS API).
3. Создать файл учётных данных (логин/API-токен провайдера), права 600.
4. Запросить сертификат: `certbot certonly --authenticator dns-<провайдер> ... -d example.com`.
5. Подложить полученные `fullchain.pem` и `privkey.pem` в reverse proxy (Nginx Proxy Manager, nginx, Caddy и т.д.).
6. Настроить автообновление (systemd timer certbot + deploy-hook при продлении).
---
## Пример: Beget.com (certbot-dns-beget-api)
**Условия:** домен на Beget, доступ к API (логин + пароль или отдельный API-пароль).
1. **Установка (Debian/Ubuntu):**
```bash
apt install certbot
pip3 install certbot-dns-beget-api # или: python3 -m pip install certbot-dns-beget-api --break-system-packages
```
2. **Файл учётных данных** (например `/root/.secrets/certbot/beget.ini`):
```ini
dns_beget_api_username = ВАШ_ЛОГИН_BEGET
dns_beget_api_password = ВАШ_ПАРОЛЬ_ИЛИ_API_ПАРОЛЬ
```
```bash
chmod 600 /root/.secrets/certbot/beget.ini
```
3. **Запрос сертификата:**
```bash
certbot certonly \
--authenticator dns-beget-api \
--dns-beget-api-credentials /root/.secrets/certbot/beget.ini \
--dns-beget-api-propagation-seconds 120 \
-d example.com \
--non-interactive \
--agree-tos \
--email your@email.com
```
4. **Где лежат файлы после выпуска:**
- Сертификат: `/etc/letsencrypt/live/<домен>/fullchain.pem`
- Ключ: `/etc/letsencrypt/live/<домен>/privkey.pem`
5. **Интеграция с Nginx Proxy Manager (NPM):**
- Либо вручную скопировать в каталог custom_ssl (например `custom_ssl/npm-<id>/fullchain.pem` и `privkey.pem`) и перезагрузить nginx в контейнере NPM.
- Либо добавить запись в БД NPM (таблица `certificate`, provider `other`) и положить те же файлы в каталог, на который ссылается конфиг nginx (например `custom_ssl/npm-<certificate_id>/`).
6. **Продление и deploy-hook** (чтобы после `certbot renew` сертификат автоматически подхватывался NPM):
```bash
# /etc/letsencrypt/renewal-hooks/deploy/copy-to-npm.sh
# RENEWED_LINEAGE = путь к обновлённому сертификату, например /etc/letsencrypt/live/example.com
if [ "$RENEWED_LINEAGE" = "/etc/letsencrypt/live/EXAMPLE_DOMAIN" ]; then
cp "$RENEWED_LINEAGE/fullchain.pem" /path/to/npm/custom_ssl/npm-ID/
cp "$RENEWED_LINEAGE/privkey.pem" /path/to/npm/custom_ssl/npm-ID/
chmod 644 /path/to/npm/custom_ssl/npm-ID/fullchain.pem
chmod 600 /path/to/npm/custom_ssl/npm-ID/privkey.pem
docker exec CONTAINER_NPM nginx -s reload
fi
```
Сделать скрипт исполняемым: `chmod +x ...`
7. **Проверка автообновления:** таймер certbot обычно уже включён:
```bash
systemctl list-timers | grep certbot
```
---
## Другие DNS-провайдеры (идеи для промпта)
- **Cloudflare:** `certbot-dns-cloudflare`, переменные `dns_cloudflare_api_token` или `dns_cloudflare_email` + `dns_cloudflare_api_key`.
- **Reg.ru:** плагин `certbot-dns-regru`, свои переменные в credentials-файле.
- **NIC.ru:** `certbot-dns-nicru`.
- **Без API:** `certbot certonly --manual --preferred-challenges dns -d example.com` — выводит TXT-значение, пользователь вручную добавляет запись в DNS, затем продолжает по Enter.
---
## Краткий чеклист для нового домена/проекта
- [ ] Домен и DNS у одного провайдера; выяснить, есть ли API/плагин для ACME DNS-01.
- [ ] Установить certbot и нужный DNS-плагин.
- [ ] Создать credentials-файл (chmod 600), не коммитить в git.
- [ ] Выпустить сертификат: `certbot certonly --authenticator dns-... -d domain`.
- [ ] Подложить fullchain.pem и privkey.pem в reverse proxy.
- [ ] Добавить deploy-hook для продления и перезагрузки nginx/прокси.
- [ ] Убедиться, что certbot.timer включён для автоматического renew.