prod-rebuild
Production rebuild
Production rebuild нужен, когда нужно вручную пересобрать garden на сервере.
Основная команда
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl rebuild obsidian-duck-guide
Для другого garden меняем slug:
./gardenctl rebuild <slug>
Что делает rebuild
gardenctl rebuild заходит в project directory и запускает:
FORCE_REBUILD=1 HARD_CLEAN=1 ./pull-and-rebuild.sh
Это означает:
FORCE_REBUILD=1 — пересобрать даже если commit не изменился
HARD_CLEAN=1 — удалить старые build artifacts
Hard clean удаляет:
site/dist
site/.duck-garden
Затем сборка идёт с нуля.
Проверить сайт после rebuild
Главная страница:
curl -I https://obsidian-duck-guide.obsidians.otc.guru/
Конкретный asset:
curl -I 'https://obsidian-duck-guide.obsidians.otc.guru/img/user/foto/2026-06-15%2014.57.12.jpg'
Нужно увидеть:
HTTP/1.1 200 OK
Проверить локальный Caddy port
curl -I http://127.0.0.1:8089/
Если локально отвечает, а публичный домен нет — смотреть nginx.
Если локально не отвечает — смотреть docker/caddy/build.
Логи rebuild
Systemd logs:
journalctl -u obsidian-duck-guide-pull.service -n 100 --no-pager
Deploy log:
tail -n 200 /home/supervisor/leonid_projects/obsidians/obsidian-duck-guide/logs/deploy.log
Live logs:
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl logs obsidian-duck-guide
Когда сначала делать pause
Если ты вручную редактируешь files внутри garden repo на сервере, сначала останови timer:
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl pause obsidian-duck-guide
После правок:
./gardenctl rebuild obsidian-duck-guide
./gardenctl resume obsidian-duck-guide
Если rebuild завис
cd /home/supervisor/leonid_projects/duck-obsidian/.deploy
./gardenctl stop-service obsidian-duck-guide
sudo lslocks | grep obsidian-duck-guide-deploy || true
После этого можно попробовать снова:
./gardenctl rebuild obsidian-duck-guide
См. также: debug runbook.