v0.8.3 Web & Cloud 10 мин 20 сентября 2026 — 24 сентября 2026, 17:00

Акт VI: Выход на орбиту — Веб-портал, PocketBase и Cloudflare Tunnel

Рождение сайта на Astro и Starlight, киберпанк-дашборд /admin с Chart.js, защита голосования от накруток и выход в интернет на shellit.top через Cloudflare Tunnel.

BUG-030 BUG-031 BUG-033 #astro #pocketbase #cloudflare-tunnel #admin-dashboard #starlight
Контекст акта: От локальных стендов к глобальному публичному присутствию. В этом акте рождается официальный портал Shellit на Astro и Starlight, разворачивается инженерный бэкенд на PocketBase с дашбордом администратора `/admin`, внедряется эшелонированная защита голосования от накруток и преодолевается конфликт занятых портов 80/443 через Cloudflare Tunnel на боевом домене shellit.top.

Записи 41–46. Рождение веб-портала: Astro, Starlight и витрина реального софта

⏱️ Время: 22 — 23 сентября 2026

Любой серьезный продукт нуждается в удобном доме в интернете. Мы отказались от тяжелых конструкторов сайтов и шаблонов на WordPress:

  • Архитектура Astro + Starlight: Молниеносная генерация статических страниц (сборка более 30 страниц за 8 секунд), 100/100 в Google Lighthouse.
  • Честное сравнение с Termius: Интерактивная таблица сравнения без маркетингового тумана — честно показываем, где у нас открытый исходный код и локальный сейф, а где другие берут подписку за базовые фичи.
  • Реальные скриншоты интерфейса: Отказались от синтетических 3D-рендеров. На сайте смонтированы 9 аутентичных снимков экрана Shellit (Obsidian Dark, диалог прав SFTP, сплиты 2x2, окно ключей Keychain).
  • Двуязычная документация: Полноценная база знаний на русском и английском с моментальным поиском на клиенте через Pagefind.

Записи 50–52. Командный центр администратора и защита голосования от накруток

⏱️ Время: 24 сентября 2026, 12:00 — 15:00 (~180 минут)

Для управления порталом и сбора обратной связи развернут легковесный бэкенд на PocketBase:

  • Приватный киберпанк-дашборд /admin с графиками Chart.js: приватная аналитика визитов, статистика скачиваний установщиков и входящие баг-репорты.
  • Инцидент с накруткой дорожной карты (BUG-033): Пользователи могли голосовать за фичи в роадмапе. Но открытый API позволял через прямой PATCH накручивать счетчики кликов скриптами!
  • Эшелонированная защита: Полностью закрыли прямой PATCH для неавторизованных пользователей на уровне правил коллекций PocketBase. Написали серверный хук pb_hooks/vote.pb.js: голос принимается только через защищенный POST с проверкой связки Voter Token + Salted IP Hash. Попытки повторного голосования или сброса токена через инкогнито мгновенно отсекаются с кодом 409 Conflict.

Запись 39. Выход в интернет: боевой домен shellit.top и Cloudflare Tunnel

⏱️ Время: 24 сентября 2026, 15:15 — 16:10 (~55 минут)

Финальный аккорд веб-эпопеи — выкат сайта на боевой сервер Senko и привязка официального домена shellit.top.

И тут нас встретили жесткие ограничения хоста:

  • Порты 80 и 443 оказались заняты системной службой HAProxy под управлением стороннего шлюза. Менять конфиги HAProxy вручную было нельзя — система перезаписывает их при обновлениях.
  • Порт 8090 уже слушал контейнер другого проекта.

Мы не стали ломать существующую инфраструктуру сервера и развернули Cloudflare Tunnel (cloudflared) в Docker:

  • Исходящий зашифрованный HTTP/2 туннель к Cloudflare Edge без открытия внешних портов на сервере.
  • Автоматический SSL-сертификат, защита от DDoS и скорость доставки контента через глобальную сеть CDN.
  • Принцип Same-Origin: единый домен shellit.top отдает статический сайт Astro, проксирует вызовы к /api/ в PocketBase и держит административный центр /admin/ без единой проблемы с CORS.
📖 Типографика статьи выровнена по алгоритму Кнута — Пласса с помощью mcp-typography-server на базе Justif.
Knuth-Plass • TeX Style