Onion SSR Boilerplate — это шаблон на базе SvelteKit, созданный для разработки сайтов с доменом .onion в сети Tor. Главная особенность — 100% серверная отрисовка (SSR) без клиентского JavaScript, что особенно важно для пользователей Tor, которые предпочитают отключать JS.
Основные возможности
* SSR-Only режим: рендеринг полностью на стороне сервера, без передачи логики в браузер.
* Интеграция с Supabase: подключение и работа с БД через REST API.
* Обработка HTML-форм: серверная валидация данных, удобная и безопасная.
* Docker-развёртывание: готовая конфигурация для запуска вместе с Tor hidden service.
* Защитные заголовки: строгая Content Security Policy и другие меры для повышения безопасности.
* Локальные ресурсы: без использования сторонних CDN.
* Инструменты разработчика: поддержка ESLint, Prettier, Vitest, Vite и SvelteKit.
Преимущества подхода
1. Максимальная конфиденциальность — отсутствие клиентского JS исключает слежку и сторонние скрипты.
2. Гибкость — Supabase облегчает работу с данными и не требует ручной настройки REST API.
3. Простота развертывания — благодаря Docker проект можно запускать на любой платформе.
4. Поддержка Tor-экосистемы — готов к созданию hidden services с .onion-адресами.
5. Прозрачность — весь код и зависимости находятся под контролем разработчика.
Docker и Tor
* В комплекте есть docker-compose.yml, где настроен сервис Tor. Он автоматически создаёт hidden service и выдаёт .onion-адрес.
* Можно запускать как единый контейнер, передав параметры окружения (SUPABASE_URL, ключи доступа и т.д.).
Структура проекта
* src/routes/ — маршруты и серверные обработчики
* src/lib/supabase.js — конфигурация Supabase
* supabase/migrations/ — миграции базы данных
* hooks.server.js — глобальные обработчики и заголовки безопасности
* Dockerfile и docker-compose.yml — контейнеры для развёртывания
Пример приложения
В проекте есть гостевая книга (Guestbook):
* Страница /guestbook позволяет отправлять сообщения через форму.
* Серверная логика валидирует данные и записывает их в базу.
* При успехе или ошибке пользователь получает ответ с сервера.
Ограничения
* Нет поддержки интерактивных SPA-функций (drag & drop, динамические интерфейсы).
* Нагрузка полностью ложится на сервер, поэтому для высокой посещаемости нужны мощные ресурсы.
* Требуется настройка Supabase и контроль за безопасностью.
⬇️Поддержать автора⬇️
✅SBER: 2202 2050 7215 4401