Caddy incident — 2026-06-29 (пропал блок assistai.unf86.org)

Связано: Quartz wiki - Caddy incident 2026-06-23 Связано: Inventory серверов и VPS

Симптом

  • https://assistai.unf86.org/ (веб-консоль OpenClaw) не открывалась.
  • Браузер/Curl: tlsv1 alert internal error на HTTPS; HTTP отдавал 308 (редирект на HTTPS).
  • Сервер и OpenClaw при этом были живы.

Диагностика

  • Сервер assistai: uptime 34 дня, load 0.17 — OK.
  • OpenClaw процесс: node openclaw gateway --port 18789 — жив с 25.06, curl 127.0.0.1:18789 → HTTP 200.
  • caddy.service: active, running 5 дней.
  • Caddyfile /etc/caddy/Caddyfile (283 байт, mtime 25.06 01:34 CEST): содержал только блок memos.unf86.org127.0.0.1:8000 (+ /api/openmem/v1/*:8001). Блок assistai.unf86.org отсутствовал.
  • TLS-хранилище Caddy: для assistai.unf86.org остался только .json, .crt/.key отсутствовали → Caddy не обслуживал TLS для этого хоста → tlsv1 alert internal error.

Корневая причина

Агентская правка с побочным эффектом. 24–25.06 OpenClaw (Дедус) настраивал MemOS — см. Agent-OpenClaw/daily/2026-06-24.md, запись 02:33 «MemOS MCP integration»: ✅ Caddy: /api/openmem/v1/* → :8001. При добавлении блока memos.unf86.org Caddyfile был перезаписан целиком, а не дополнен — блок assistai.unf86.org выкинули. Timestamp 25.06 01:34 совпадает с финалом MemOS-настройки. Это не атака и не ручная правка.

Фикс

Бэкап: cp /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak.2026-06-29-pre-fix Восстановлен Caddyfile с обоими блоками (assistai + memos):

{
	email admin@unf86.org
}
 
(cloudflare) {
	@cloudflare {
		header CF-Connecting-IP *
	}
}
 
# OpenClaw Web UI
assistai.unf86.org {
	encode gzip zstd
	reverse_proxy 127.0.0.1:18789
	log {
		output file /var/log/caddy/openclaw-access.log
	}
}
 
memos.unf86.org {
	encode gzip zstd
	handle_path /api/openmem/v1/* {
		reverse_proxy 127.0.0.1:8001
	}
	reverse_proxy 127.0.0.1:8000
	log {
		output file /var/log/caddy/memos-access.log
	}
}

caddy validateValid configuration; systemctl reload caddy (мягкий reload, без stop/start).

Проверка

curl -sS -o /dev/null -w "HTTP %{http_code}" https://assistai.unf86.org/   # → HTTP 200
curl -sS -o /dev/null -w "HTTP %{http_code}" https://memos.unf86.org/      # → HTTP 404 (норма для memos на /)

TLS: Let’s Encrypt, CN=assistai.unf86.org, валиден до 08.09.2026. Права на log: /var/log/caddy/openclaw-access.logcaddy:caddy, WRITABLE (инцидент 2026-06-23 с правами не повторился).

Итог

  • Веб-консоль OpenClaw снова доступна по https://assistai.unf86.org.
  • memos.unf86.org сохранён и работает.
  • memos на корне отдаёт 404 — это поведение самого memos-бэкенда, не проблема Caddy.

Профилактика

  • Любая правка Caddyfile — только дополнением (patch), не перезаписью всего файла. Перед записью читать текущий Caddyfile и сохранять все существующие блоки.
  • Перед reload всегда: caddy validate --config /etc/caddy/Caddyfile.
  • После правки проверять снаружи все хосты, а не только тот, ради которого правили: assistai, memos (и прочие, если появятся).
  • Зафиксировать в AGENTS.md OpenClaw правило: правки /etc/caddy/Caddyfile — через diff/patch, не cat >.