incident-checklists

Чеклист инцидентов

Garden не открывается публично

curl -I https://<slug>.obsidians.otc.guru/
curl -I http://127.0.0.1:<port>/
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl status <slug>
sudo nginx -t
sudo systemctl status nginx --no-pager
docker ps --filter "name=<slug>-garden"

Если локальный порт работает, а домен нет — nginx/domain/certbot.

Если локальный порт не работает — docker/caddy/build.

Rebuild падает

cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl logs <slug>
tail -n 200 /home/supervisor/leonid_projects/obsidians/<slug>/logs/deploy.log

Потом локально в site:

cd /home/supervisor/leonid_projects/obsidians/<slug>/site
npm run build
npm run assert:dist

Timer мешает ручным правкам

cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl pause <slug>
./gardenctl stop-service <slug>

Проверка lock:

sudo lslocks | grep <slug>-deploy || true

Вернуть:

./gardenctl resume <slug>

Build не создал dist/index.html

Проверить Home note:

find src/site/notes -maxdepth 5 -type f | sort
grep -R "dg-home\|gardenEntry\|permalink: /" src/site/notes || true

Нужен один из признаков:

dg-home: true

или:

tags:
  - gardenEntry
find src/site/notes -maxdepth 5 -type f | sort
grep -R "\[\[.*\]\]" src/site/notes | head -50

Проверить, что целевая note опубликована:

dg-publish: true

Картинка 404

cd /home/supervisor/leonid_projects/obsidians/<slug>/site
DUCK_DEBUG_IMAGES=1 npm run build
find . -iname 'имя-файла.jpg' -print
find dist/img/user -maxdepth 5 -type f | sort

Потом публично:

curl -I 'https://<slug>.obsidians.otc.guru/img/user/...'

Панель: 401 Unauthorized

TOKEN="$(sudo awk -F= '$1=="DUCK_PANEL_TOKEN"{print $2}' /etc/duck-garden-panel.env)"
curl -s -H "Authorization: Bearer $TOKEN" http://127.0.0.1:3017/api/gardens

Если напрямую ok, проверить Nginx:

proxy_set_header Authorization "Bearer long-random-token";

Панель: 504 Gateway Timeout

Проверить Nginx timeouts:

proxy_connect_timeout 60s;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
send_timeout 900s;

Применить:

sudo nginx -t
sudo systemctl reload nginx

Engine test branch забыли в production

Проверить:

cd /home/supervisor/leonid_projects/obsidians/<slug>/site
cat package.json | grep '@duck/garden-engine'
cat garden.config.json | grep -A3 '"engine"'

Для production dependency должна быть по tag:

git+ssh://git@github.com/leo-mmmmmmm/duck-garden-engine.git#vX.Y.Z

Не по debug branch.