debug-runbook

Debug runbook

Этот файл — общий порядок отладки, когда garden не работает.

1. Проверить публичный домен

curl -I https://obsidian-duck-guide.obsidians.otc.guru/

Если нет ответа — проверить nginx и локальный Caddy port.

2. Проверить локальный Caddy port

curl -I http://127.0.0.1:8089/

Если локально работает, а публично нет — проблема в nginx/certbot/domain.

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

3. Проверить garden status

cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl status obsidian-duck-guide
./gardenctl timer-status obsidian-duck-guide

4. Проверить logs

journalctl -u obsidian-duck-guide-pull.service -n 100 --no-pager
tail -n 200 /home/supervisor/leonid_projects/obsidians/obsidian-duck-guide/logs/deploy.log

5. Проверить dist

cd /home/supervisor/leonid_projects/obsidians/obsidian-duck-guide/site
ls -lah dist/index.html
ls -lah dist/graph.json dist/searchIndex.json

Если dist/index.html нет — проверить Home note.

6. Проверить опубликованные notes

find src/site/notes -maxdepth 5 -type f | sort

У нужной note должен быть:

dg-publish: true

Для Home:

dg-home: true

или:

tags:
  - gardenEntry

7. Если ссылка ведёт на /404

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

Для ссылки:

А если тут?

должна быть опубликованная note, которую engine может найти по имени, title, пути или permalink.

Команды:

find src/site/notes -maxdepth 5 -type f | sort
grep -R "А если тут" src/site/notes || true

8. Если не виден sidebar/filetree

Проверить garden.config.json:

"dgShowFileTree": true

Проверить, что notes попали в workdir:

npm run build
find .duck-garden/work/src/site/notes -maxdepth 5 -type f | sort

Если там пусто — проблема в публикации notes, а не в CSS.

cat dist/graph.json | head -c 1000
DUCK_ASSERT_MIN_LINKS=1 npm run assert:dist
DUCK_ASSERT_BACKLINK_URL=/ npm run assert:dist

Backlinks строятся по wikilinks.

10. Если картинка не открывается

В note должна быть ссылка:

![Описание](/img/user/foto/example.jpg)

Debug:

DUCK_DEBUG_IMAGES=1 npm run build
find dist/img/user -maxdepth 5 -type f | sort

Проверка через public domain:

curl -I 'https://obsidian-duck-guide.obsidians.otc.guru/img/user/foto/2026-06-15%2014.57.12.jpg'

11. Если API панели не отвечает

sudo systemctl status duck-garden-panel-api --no-pager
sudo journalctl -u duck-garden-panel-api -n 100 --no-pager
curl -s http://127.0.0.1:3017/health

Авторизованный запрос:

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

12. Если панель открывается, но actions падают

Смотреть:

sudo journalctl -u duck-garden-panel-api -n 200 --no-pager
sudo nginx -t
sudo systemctl status nginx --no-pager

Если timeout — увеличить proxy timeouts в Nginx панели.

13. Если Caddy container нужно пересоздать

cd /home/supervisor/leonid_projects/obsidians/obsidian-duck-guide
docker compose up -d --force-recreate --no-deps caddy

Подробнее: Caddy recreate.