fix(infra/caddy): site-блоки с секретами переживают деплой — import caddy/local/*.caddy #2921

Merged
bot-backend merged 1 commit from fix/caddy-garmin-import into main 2026-08-18 06:45:10 +00:00
3 changed files with 24 additions and 0 deletions

View file

@ -504,3 +504,19 @@ git.gendsgn.ru {
}
}
# Test deploy flow 2026-05-15T21:43:32Z
# ─────────────────────────────────────────────────────────────────────────────
# Локальные site-блоки, которых не может быть в git.
#
# Мотив: garmin.gendsgn.ru (личный remote MCP на этом же VPS). Апстрим-сервер
# аутентификации не имеет вовсе, а claude.ai custom connector ходит на голый URL
# без кастомных заголовков — единственный доступный рубеж это секрет в пути.
# Секрет в git класть нельзя, а блок, вписанный руками прямо сюда, сносится
# первым же деплоем (`git reset --hard origin/main`; 2026-08-16 так и вышло —
# контейнер остался жив, но хост пропал вместе со своим сертификатом).
#
# Поэтому: сам блок лежит на VPS как untracked `caddy/local/*.caddy` (reset
# --hard untracked не трогает), а в репозитории живёт только этот import.
# Пустой glob для Caddy не ошибка — `caddy validate` проходит, на машинах без
# локальных блоков строка просто ничего не делает.
import caddy/local/*.caddy

4
caddy/local/.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
# Локальные site-блоки Caddy с секретами (см. import в конце Caddyfile).
# Кладутся руками на VPS и намеренно не версионируются — в git только каталог.
*
!.gitignore

View file

@ -423,6 +423,10 @@ services:
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy/users.caddy.snippet:/etc/caddy/caddy/users.caddy.snippet:ro
# Untracked локальные site-блоки (см. import в конце Caddyfile). Каталог
# держится в git через caddy/local/.gitignore — иначе docker создал бы
# отсутствующий bind-source сам, root-owned пустышкой.
- ./caddy/local:/etc/caddy/caddy/local:ro
- ./preview:/srv/preview:ro
- caddy_data:/data
- caddy_config:/config