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 важливий?

  1. Один IP — багато сервісів — всі сервіси доступні через порт 443
  2. Централізований HTTPS — сертифікати в одному місці
  3. Безпека — сервіси не видно напряму з інтернету
  4. 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
}

Пов'язані теми

Шлях: services/web/index.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications