Создание самохостируемого резюме с помощью Astro, SQLite и локальной LLM
Этот сайт заменил установку WordPress на нечто более легковесное и полностью под моим контролем: один контейнер Astro (SSR), SQLite как единственный источник истины и никаких сторонних сервисов в пути запроса.
Изменяемые части
- Astro + Node adapter рендерит каждую публичную страницу на сервере, при этом весь CV питается из SQLite. Светлая/темная темы, три языка (EN/RU/UK) и файл стилей для печати, который служит загружаемым PDF.
- Админка только по Passkey. Никаких паролей — WebAuthn с несколькими учетными данными и аварийный CLI для регистрации нового ключа в случае потери всех.
- Ежедневный пайплайн. Cron job перечисляет мои приватные репозитории GitHub, а для тех, которые изменились, запрашивает у локальной модели Gemma (Ollama) черновик короткого фактического описания. Новые репо появляются как неопубликованные черновики — ничего приватного не выходит в эфир, пока я не опубликую это вручную.
- Первичная аналитика. Посещения геопозиционируются и разрешаются по ASN с использованием локальной базы данных MaxMind (без внешних вызовов), а баннер согласия GDPR блокирует GA и клиентский маяк.
Почему это важно
LLM и синхронизация с GitHub полностью находятся в офлайн-пакетном режиме — если модель недоступна, сайт этого не замечает, он просто продолжает обслуживать данные из SQLite и повторяет обогащение на следующий день. Это разделение и есть вся суть: интересная автоматизация никогда не находится между посетителем и страницей.
Больше постов об инфраструктуре, стоящей за этим — BGP, транспорт, мониторинг — последуют.
Прозрачность: большинство постов здесь написаны с помощью ИИ, а неанглийские версии переведены локальной LLM и вычитаны. Заметили ошибку? Напишите мне.