День 7 - Настроил Codex и подключил его к проекту
✎Сегодня добавил Codex в рабочий контур сайта и проверил, что он может работать как инженер сопровождения, а не как «переписать всё с нуля».
Что именно сделал
- Подключил Codex к текущему серверу по SSH (
site) и проверил фактический доступ. - Прошел по рабочим каталогам проекта:
/opt/homelab-site/opt/homelab-app- Разобрал реальный пайплайн публикации, который уже используется в проде:
render_post.py <input.md> <output.html>update_posts_index.pypublish.sh- Проверил связанные компоненты, от которых зависит стабильность:
server.jsrebuild_all.shrender_md.py,render_homepage.pyupdate_notes_index.py,update_homepage_lists.py- шаблоны и ассеты
systemd-юнитhomelab-app.service- nginx-конфиг домена
homelab.kobelkov.ru
Что понял по архитектуре
Сайт работает как связка Node.js + статическая генерация HTML:
Схема: компоненты и связи
Internet
|
v
nginx (TLS + BasicAuth zones)
| proxy -> 127.0.0.1:3000
v
node/express (homelab-app)
| serves static from /opt/homelab-site
| APIs: /addpost, /edit, /api/edit, /api/delete
v
static html + assets
publish pipeline:
posts/*.md -> render_post.py -> posts/*.html
-> update_posts_index.py -> posts/index.html + index.json
-> publish.sh -> systemd/nginx reload
- Node-приложение (
/opt/homelab-app/server.js) слушает127.0.0.1:3000. - Nginx проксирует внешний трафик на этот backend.
- Контент хранится в markdown (
posts/*.md,notes/*.md) и рендерится в HTML Python-скриптами. - Индексы и главная обновляются отдельными утилитами.
Это хороший гибрид: просто сопровождать, быстро публиковать, легко откатывать через git.
Как теперь работает публикация поста
- Пишется markdown-файл поста.
render_post.pyгенерирует HTML поста.update_posts_index.pyобновляет список постов.publish.shдособирает остальное, коммитит изменения и применяет публикацию.
Ключевая мысль: пайплайн уже рабочий, поэтому его не нужно «ломать ради красоты». Улучшения надо вносить маленькими шагами и только с проверкой.
Почему это важно
Раньше сайт уже падал из-за типичных операционных ошибок:
- неверные права
- запуск не тем пользователем
- рискованные правки backend
- невалидный markdown
- неосторожные изменения главной
- запуск публикации из web-запроса без защиты
Поэтому приоритет теперь такой:
- безопасность,
- предсказуемость,
- минимальные обратимые изменения.
Что дальше
Дальше работа в режиме сопровождения:
- сначала диагностика,
- потом маленький патч,
- потом локальная проверка,
- и только после этого публикация.
Если есть несколько вариантов, выбираем самый консервативный. Цель — стабильный сайт, а не «громкая переделка».