✅ Good
Web-сервери¶
Веб-сервер — це "привратник" вашої інфраструктури. Він приймає HTTP-запити з інтернету і направляє їх до правильних сервісів. В UMTC ми використовуємо Caddy — сучасний веб-сервер з автоматичним HTTPS.
Чому Caddy?
- Автоматичні SSL-сертифікати (Let's Encrypt)
- Простий конфіг (порівняйте з nginx!)
- Вбудований reverse proxy
- Написаний на Go — швидкий і надійний
Архітектура¶
Типова схема для UMTC сервера:
flowchart TB
subgraph internet["Інтернет"]
USER["Користувач"]
end
subgraph server["Сервер"]
CADDY["Caddy<br/>:443 HTTPS"]
subgraph containers["Контейнери"]
WIKI["Wiki<br/>:3000"]
MATRIX["Matrix<br/>:8008"]
API["API<br/>:8000"]
end
end
USER -->|"wiki.example.com"| CADDY
USER -->|"matrix.example.com"| CADDY
USER -->|"api.example.com"| CADDY
CADDY --> WIKI
CADDY --> MATRIX
CADDY --> API
style internet fill:#fee2e2
style server fill:#dbeafe
style containers fill:#d1fae5Матеріали розділу¶
| Стаття | Опис | Рівень |
|---|---|---|
| Caddy | Встановлення, Caddyfile, приклади | Легкий |
| Proxy та Reverse Proxy | Концепції та відмінності | Початковий |
Приклад Caddyfile¶
# wiki.example.com → контейнер wiki:3000
wiki.example.com {
reverse_proxy wiki:3000
}
# matrix.example.com → Synapse
matrix.example.com {
reverse_proxy /_matrix/* synapse:8008
reverse_proxy /_synapse/* synapse:8008
}
# api.example.com → FastAPI backend
api.example.com {
reverse_proxy api:8000
}
Автоматичний HTTPS
Caddy автоматично отримує сертифікат Let's Encrypt для кожного домену. Вам не потрібно нічого налаштовувати — просто вкажіть домен.
Чому Reverse Proxy важливий?¶
- Один IP — багато сервісів — всі сервіси доступні через порт 443
- Централізований HTTPS — сертифікати в одному місці
- Безпека — сервіси не видно напряму з інтернету
- Load balancing — розподіл навантаження (для масштабування)
Без reverse proxy
Кожен сервіс відкриває свій порт: Wiki на :3000, Matrix на :8008, API на :8000. Користувачі мусять пам'ятати порти. SSL треба налаштовувати окремо для кожного.
Типові задачі¶
Додати новий сервіс¶
# Додайте в Caddyfile
newservice.example.com {
reverse_proxy newservice:8080
}
# Перезавантажте Caddy
docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile
Перенаправлення (redirect)¶
# Старий домен → новий
old.example.com {
redir https://new.example.com{uri} permanent
}
Статичний сайт¶
static.example.com {
root * /srv/static
file_server
}
Пов'язані теми¶
- Docker Compose — запуск Caddy в контейнері
- TLS/SSL — як працює шифрування
- Caddy Reverse Proxy — покрокова інструкція
Шлях: services/web/index.md