Netpulse_SasS/deploy/Caddyfile
byrsapty a0eb2ff5f1
Some checks are pending
CI / web (push) Waiting to run
CI / server (push) Waiting to run
CI / agent (push) Waiting to run
Пакування: образи, повний стек, TLS, CI, процедура бекапу
Два образи замість пʼяти: серверні команди їдуть з одного модуля й
мусять ходити в схему БД однією версією, а зонд лишається окремо —
у чужій мережі йому не місце з DSN і ключами шифрування.

Стек піднімає БД, кеш, міграції, API, колектор і Caddy з автоматичним
TLS. Міграції окремою службою, бо API піднімається в кількох
примірниках і гонка за схему нікому не потрібна.

deploy/README.md описує бекап як три речі: дамп, DEK і JWT-ключ.
Без DEK дамп не відновлюється — у БД лише шифротекст.

Дорогою виправлено .gitignore: голі "netpulse-agent" і
"netpulse-server" ігнорували ще й каталоги cmd/ з кодом команд.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 12:47:54 +03:00

57 lines
2.1 KiB
Caddyfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Зворотний проксі NetPulse.
#
# Caddy бере на себе сертифікати Let's Encrypt і оновлює їх сам. Це
# знімає з розгортання найчастішу причину нічного дзвінка — прострочений
# сертифікат на системі, яка сама має повідомляти про проблеми.
{
email {$ACME_EMAIL}
}
# --- інтерфейс і API -------------------------------------------------
{$NETPULSE_DOMAIN} {
encode zstd gzip
# WebSocket живих оновлень. Окремим блоком, бо йому не можна
# ставити таймаут на відповідь: зʼєднання висить годинами й
# мовчить, поки на мапі нічого не змінюється.
@ws path /api/v1/ws
reverse_proxy @ws api:8080 {
flush_interval -1
}
# API і вшитий у бінарник інтерфейс — за однією адресою, тож
# розділяти їх не потрібно: SPA віддає той самий процес.
reverse_proxy api:8080
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
X-Frame-Options "DENY"
Referrer-Policy "strict-origin-when-cross-origin"
-Server
}
log {
output stdout
format console
}
}
# --- колектор зондів -------------------------------------------------
#
# Зонди говорять gRPC поверх HTTP/2. Усередині мережі — h2c без TLS:
# сертифікат живе тут, а не в кожному примірнику колектора.
{$NETPULSE_DOMAIN}:9443 {
reverse_proxy h2c://collector:9443 {
# Потік Control двонаправлений і довгий: агент тримає його
# відкритим, доки живий. Буферизація тут ламає саме те, заради
# чого потік існує — миттєву доставку команд.
flush_interval -1
}
log {
output stdout
format console
}
}