Reverse proxy и TLS
То, как устроены TLS и домены, зависит от способа установки Copula.
Автоматическая установка (мастер): Caddy включён
Мастер разворачивает Caddy (caddy:2.11.4-alpine, сервис copula-caddy) как часть стека:
- Caddy — единственный сервис, публикующий порты
80и443. - Он автоматически получает и продлевает сертификат Let's Encrypt для домена инстанса (HTTP-01 challenge — порт
80должен быть доступен, а DNS уже должен резолвиться). - Он проксирует HTTPS-трафик на
copula-back.
Дополнительная настройка не требуется. Если вы используете собственный домен, его запись A должна указывать на сервер до начала подготовки — иначе выпуск сертификата завершится ошибкой.
Hairpin NAT
Если сервер не может обратиться к собственному публичному домену изнутри (роутер не поддерживает hairpin NAT), финальная health-проверка деплоя может завершиться ошибкой, хотя сама установка работоспособна. См. Устранение неполадок.
Ручная установка: собственный прокси
В ручном compose-стеке нет ни TLS, ни прокси — бэкенд слушает порт хоста 8901. Поставьте перед ним reverse proxy. Бэкенд обслуживает WebSocket-чат, поэтому прокси должен пересылать WebSocket upgrade.
Пример server-блока nginx, проксирующего https://copula.example.com на бэкенд:
server {
listen 443 ssl;
server_name copula.example.com;
ssl_certificate /etc/letsencrypt/live/copula.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/copula.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8901;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support (the backend serves WebSocket chat)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}Сертификаты получайте через certbot или установите собственные. Когда прокси поднят, добавьте https://<domain> как Space в приложении Copula.