vault backup: 2025-05-13 18:22:29

This commit is contained in:
sShemet
2025-05-13 18:22:29 +05:00
parent ac2f933c56
commit 1b2d31031c
2 changed files with 155 additions and 3 deletions

View File

@@ -13,12 +13,12 @@
"state": {
"type": "markdown",
"state": {
"file": "WORK & PROJECTS/Mol/Ideas/Все идеи для Моли.md",
"file": "WORK & PROJECTS/Mol/Серверы/PROXY_PASS/Traefik config.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "Все идеи для Моли"
"title": "Traefik config"
}
}
]
@@ -171,6 +171,7 @@
},
"active": "343836aed0394d03",
"lastOpenFiles": [
"WORK & PROJECTS/Mol/Ideas/Все идеи для Моли.md",
"WORK & PROJECTS/Mol/Серверы/PROXY_PASS/Traefik config.md",
"WORK & PROJECTS/Mol/Серверы/PROXY_PASS/Angie config.md",
"WORK & PROJECTS/Mol/Серверы/Схема инфраструктуры.canvas",
@@ -194,7 +195,6 @@
"SKILLS DOCS/OLD PHP INSTALL.md",
"SKILLS DOCS/DOCS/Load Balancer 2.md",
"SKILLS DOCS/DOCS/Load Balancer.md",
"WORK & PROJECTS/Mol/Ideas/Все идеи для Моли.md",
"WORK & PROJECTS/Mol/Code Chunks/Tiptap resizeTableColumnWidth.md",
"WORK & PROJECTS/Mol/Code Chunks/TipTap Plugin.md",
"WORK & PROJECTS/Mol/Серверы/Alfa cloud prod_canvas2doc-data/newdoc-node_72b797b472986e84_fromCanvas.md",

View File

@@ -603,4 +603,156 @@ accessLog:
| Как масштабироваться | Горизонтально: добавление ещё Traefik-нод (в кластере) |
---
Отлично, давай разберём **конкретный сценарий**:
> Ты хочешь:
>
> - Добавить новый поддомен (например, `client1.example.com`),
> - Чтобы Traefik автоматически получил для него **TLS-сертификат через HTTP-01 чаллендж**,
> - Чтобы домен работал по HTTPS,
> - А внутрь сети проксировался на бэкенд в подсети (например, `http://192.168.10.10:8080`),
> - И всё это — без ручного участия после добавления конфига.
---
# ✅ Что нужно сделать
## 1. **Настроить статический конфиг (`traefik.yml`)**
```yaml
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
file:
filename: /etc/traefik/dynamic_conf.yml
watch: true
certificatesResolvers:
myresolver:
acme:
email: admin@example.com
storage: acme.json
httpChallenge:
entryPoint: web
```
### 📌 Важные моменты:
- `myresolver` — это имя resolver'а, которое будем использовать в динамическом конфиге.
- `storage: acme.json` — файл, где будут храниться сертификаты.
- `httpChallenge.entryPoint: web` — указывает, что проверка будет идти через порт 80.
---
## 2. **Добавить динамический маршрут в `dynamic_conf.yml`**
```yaml
http:
routers:
client1-router:
rule: "Host(`client1.example.com`)"
service: client1-service
entryPoints:
- websecure
tls:
certResolver: myresolver
services:
client1-service:
loadBalancer:
servers:
- url: http://192.168.10.10:8080
```
### 🔍 Что здесь происходит:
- При запросе `https://client1.example.com`:
- Traefik проверяет, есть ли уже выданный сертификат.
- Если нет — запрашивает его у Lets Encrypt.
- Для проверки прав на домен — создаёт временный маршрут `//.well-known/acme-challenge/...`.
- После успешной проверки — сохраняет сертификат в `acme.json`.
- Запрос перенаправляется на внутренний сервер `http://192.168.10.10:8080`.
---
## 3. **Как работает HTTP-челлендж?**
Lets Encrypt делает GET-запрос:
```
GET http://client1.example.com/.well-known/acme-challenge/<токен>
```
Traefik:
- Автоматически отвечает на этот запрос,
- Не требует дополнительных правил,
- Работает **без участия пользователя**.
> ⚠️ Убедись, что порт **80 открыт** и доступен извне (Let's Encrypt должен видеть твой сервер).
---
## 4. **Файл `acme.json`**
Это **ключевой файл**, в котором Traefik хранит:
- Приватные ключи,
- Сертификаты,
- Сроки действия,
- Информацию о доменах.
Создай его и установи права:
```bash
touch /etc/traefik/acme.json
chmod 600 /etc/traefik/acme.json
```
---
## 🧩 Как работает вся система?
1. **Ты добавляешь новый поддомен в `dynamic_conf.yml`**
2. **Traefik обнаруживает изменение** (если включен `watch: true`)
3. **Запрашивает сертификат у Lets Encrypt**
- Через HTTP-чаллендж (порт 80),
- Проверяет владение доменом,
- Получает сертификат.
4. **Начинает обслуживать сайт по HTTPS**
5. **Проксирует запросы во внутреннюю сеть**
6. **Автоматически обновляет сертификат за 7 дней до истечения**
---
## 📋 Пример полной структуры файлов
```
/etc/traefik/
├── traefik.yml # основной статический конфиг
├── dynamic_conf.yml # динамические маршруты
├── acme.json # хранилище сертификатов
```
---
## 📈 Полезные советы
| Задача | Совет |
|-------------------------------------|----------------------------------------------------------------------|
| Обновление сертификатов | Происходит автоматически каждые 24 часа |
| Проверка сертификатов | Открой Traefik Dashboard → раздел HTTPS > Certificates |
| Лимиты Let's Encrypt | Не более 300 новых сертификатов в день на один домен |
| Избегать блокировок | Не делай много ошибочных запросов |
| Бэкапы | Регулярно бэкапь `acme.json` |
---
## 🚀 Хотите пример скрипта или API?
Если интересно, могу показать:
- Как написать скрипт на Python, который автоматически добавляет поддомены в `dynamic_conf.yml`.
- Как использовать REST API Traefik вместо файла.
- Как проверить, что HTTP-чаллендж прошёл успешно.
- Как использовать staging-среду Lets Encrypt для тестирования.
Просто напиши — подготовлю конкретный пример под твой случай!