перейти к контенту
S strelchenko blog
хобби astro termux rsync

Деплой Astro сайта с Termux

Термукс и сайт на Astro.js - зачем это нужно, если есть ПК и VS Code?

С

Саша

время чтения 2 мин
Termux - рулит

Термукс и сайт на Astro.js - зачем это нужно, если есть ПК и VS Code?

Это хороший вопрос. На компьютере у меня настроен сайт-блог на фреймворке Astro.js. Удобно создавать и редактировать контент в VS Code. Для постов обычно используется формат MDX, а чистый Markdown - редко. Сайт обновляется на хостинге через rsync с компьютера за 3–4 секунды.

Я пробовал загружать файлы через GitHub Actions, но скорость была 6 минут 18 секунд, что не очень впечатляет. Наш Gitverse оказался быстрее - 3 минуты 20 секунд. Возможно, серверы Gitverse и моего хостинга находятся рядом. 🥺

Лето наступило, пора в деревню

С ноутбуками у меня не сложилось, а любимый ПК остался в городе. Поэтому для поддержки сайта остался только Android и Termux. Скорость загрузки файлов через rsync со смартфона - 25 секунд, что лучше, чем у GitHub.

Но возникла проблема: Astro использует бинарный компилятор Sharp на C++, который нельзя установить в Termux. Я пытался, но безуспешно. Поэтому через rsync на сайт отправляются только текстовые файлы без изображений. Для переноса постов с изображениями на хостинг придётся использовать GitHub или Gitverse. Этим летом о быстрой передаче файлов из деревни можно забыть.

Мозговой штурм и помощь ИИ

Мне 71 год, и создание сайтов - это моё хобби. При изучении новых фреймворков и CMS я использую поисковый ИИ. Он помогает мне быстрее разобраться в особенностях Astro.js, чем документация. Хотя я и заглядываю в неё, чтобы ИИ не подумал, что я совсем не разбираюсь в теме.

Как обойти проблему с Sharp при деплое сайта на хостинг через rsync в Termux м 😉

Пакет sharp - это бинарный компилятор изображений на C++, который не работает на мобильных процессорах ARM в Termux. Из-за этого Astro удаляет все .jpg и .png файлы из сборки.

Чтобы решить эту проблему, нужно запретить Sharp изменять файлы изображений при отправке постов через Termux. Это можно сделать, поместив фотографии в папку public, которая недоступна для Sharp, но при этом оставить структуру папок блога без изменений.

После нескольких часов работы с Termux я нашёл решение. Лёгкие, но элегантные изменения в корневом файле astro.config.mjx - в позициях импорта, экспорта, const (проверка) и в секции изображений - позволили Astro отправлять фото на хостинг без изменений. Когда я вернусь к компьютеру, Sharp за несколько секунд перекомпилирует изображения в лёгкие форматы avif или webp по моему запросу, и читатели не заметят разницы.

Итоги 🤗

  • Автономность: Теперь я не привязан к рабочему столу. Находясь на даче, в дороге или на прогулке, я могу открыть планшет или телефон, написать текст и обновить сайт одной командой bash deploy.sh.

  • Баланс технологий: Качество сайта не пострадало. Дома на ПК изображения сжимаются мощным Sharp, а в дороге Termux пропускает этот шаг и копирует оригиналы файлов.

  • Чистый код: Настройка не содержит костылей, всё работает благодаря системным проверкам переменных окружения Android (isTermux).

Моя карманная система для создания сайтов теперь готова к любым экспериментам. После нескольких неудачных попыток я наконец-то нашёл идеальное решение.

Кто, когда и на каком форуме вас похвалит?

Комментарий ИИ после нашего многочасового марафона по настройке Termux деплоя: “Огромное спасибо за эту невероятно интересную серию головоломок! Желаю вам легких деплоев из любой точки мира, вдохновения для новых постов и отличного отдыха. Ваш блог теперь по-настоящему технологически непобедим! На связи, гроссмейстер! 🚀📱👑”

Вернуться к блогу
Поделиться:

Следите за обновлениями

Будьте в курсе событий - новые статьи, идеи и обновления.