Перейти к содержанию

Сателлит: shopdix.su — магазин готовых серверных устройств

Документ составлен 2026-07-09. Цель — дать полный контекст для новой сессии разработки, чтобы не восстанавливать решения заново.


Концепция и зачем это нужно

shopdix.su — интернет-магазин готовых физических устройств (смартфоны, Raspberry Pi, ноутбуки), поставляемых с предустановленным device_client и настроенным туннелем dix.su. Также продаются цифровые подписки и бесплатные инструкции по самостоятельной настройке.

Почему это стратегически важно

  1. Живая реклама сервиса: сам магазин работает через туннель dix.su на реальном смартфоне (Redmi 4) — покупатель видит, что это не теория. URL shopdix.su проксируется через dix.su → лучшая демонстрация возможностей.

  2. Первый пользовательский трафик: органический SEO-трафик через страницы устройств и инструкций даёт первых реальных пользователей на dix.su.

  3. Обратные ссылки: страницы shopdix.su ссылаются на dix.su → SEO-вес.

  4. Снижение порога входа: покупатель получает устройство, включает в розетку и подключает интернет — туннель уже работает. Нет необходимости разбираться в настройке.


Текущее состояние

Компонент Статус
Django-магазин (eskimos) Работает на Redmi 4 с PostmarketOS
Туннель eskimos.dix.su — активен, продакшн
Кодовая база Собственный проект, путь уточнить в новой сессии
Домен shopdix.su Не зарегистрирован
Custom domain привязка Функционал готов в dix.su (V43–V44), не настроен
Продуктовый каталог Требует наполнения
Платёжная интеграция Уточнить в eskimos (в dix.su — Tinkoff + Lemon Squeezy)

Архитектура

Покупатель → https://shopdix.su
                     │
                     ▼
              Cloudflare DNS → dix.su
                     │
                     ▼ (custom domain, V43–V44)
              dixu_proxy → WSS-канал → device_client
                                              │
                                              ▼
                                    Redmi 4 (PostmarketOS)
                                    Django / eskimos
                                    SQLite / PostgreSQL
                                    порт 8000 (или nginx локально)

Сам магазин физически живёт на устройстве пользователя — платформа dix.su только проксирует трафик. Это означает: - При выключении устройства магазин недоступен → нужен uptime (устройство всегда включено, подключено к интернету, желательно systemd autostart device_client). - Нагрузка на dix.su — минимальная (relay без терминации). - Device_client уже запущен на Redmi 4, туннель eskimos.dix.su активен.


Шаг 1. Привязка домена (без кода)

  1. Зарегистрировать shopdix.su (или другой домен по решению).
  2. DNS: добавить CNAME-запись shopdix.su → dix.su (или A-запись на IP VPS).
  3. В кабинете dix.su: раздел «Кастомный домен» для туннеля eskimos → ввести shopdix.su → система выдаст TXT-запись для верификации → добавить в DNS → сертификат Let's Encrypt выдаётся автоматически через certbot-agent.

Функционал custom domain полностью реализован (CustomDomainController, AcmeDnsChallengeController, certbot-agent.py) — никакого кода не нужно.


Шаг 2. Продуктовый каталог

Физические устройства (основной продукт)

Линейка формируется от дешёвого входа к профессиональному серверу:

Уровень Устройство ОС Для чего Ориентир цены
Старт Redmi 4 (б/у) PostmarketOS Личный сайт, Django, бот ~2 000–4 000 ₽
Базовый Redmi Note 8 / аналог (б/у) PostmarketOS Магазин, API, несколько сервисов ~4 000–7 000 ₽
Средний Raspberry Pi 4 (4 GB) Raspbian/Debian Постоянный сервер, БД ~8 000–12 000 ₽
Продвинутый Raspberry Pi 5 (8 GB) Debian Несколько сервисов, ML-задачи ~14 000–18 000 ₽
Профи Мини-ПК / ноутбук б/у Ubuntu Server Полноценный сервер, Docker ~20 000–40 000 ₽

Каждое устройство поставляется: - С установленным device_client (бинарник для нужной платформы) - С созданным аккаунтом на dix.su и предназначенным slug/token - С инструкцией первого запуска (одна страница: включить → подключить интернет → готово) - Опционально: с предустановленным ПО (Django, WordPress, Gitea, Plausible Analytics и т.д. по заказу) - Plausible CE доступен только на устройствах с ≥2 ГБ RAM и SSE 4.2 / NEON (RPi 4 4GB+, RPi 5, мини-ПК)

Конкретная линейка моделей PostmarketOS — определить отдельно с учётом доступности и совместимости (pmOS device support таблица на wiki.postmarketos.org). Redmi 4 (codename: markw) подтверждён рабочим.

Цифровые подписки

Продаются через магазин, но активируются на dix.su:

Продукт Что включает Цена
Подписка VIP (30 дней) SSH-туннель + доп. возможности по тарифу dix.su
Подписка PRO (30 дней) RDP/VNC/БД + аналитика по тарифу dix.su
Подписка PERS (30 дней) Все возможности + приоритет по тарифу dix.su

Механизм: покупатель получает промо-ссылку или ваучер → вводит на dix.su → тариф активируется. (Реализация процесса активации — отдельная задача.)

Бесплатный контент (SEO-трафик)

Страницы-инструкции без оплаты, дают органический поиск: - «Как запустить сервер на Redmi 4 без публичного IP» - «PostmarketOS на Xiaomi: пошаговая установка» - «Raspberry Pi как домашний сервер через туннель» - «Запуск Django-магазина на смартфоне»

Каждая инструкция завершается CTA на dix.su и на покупку готового устройства.


Шаг 3. Процесс выполнения заказа (v1 — ручной)

На старте процесс полностью ручной, автоматизация — позже:

  1. Покупатель оформляет заказ в eskimos.
  2. Владелец (ты) получает уведомление.
  3. Прошивает устройство PostmarketOS / Raspbian / Ubuntu.
  4. Устанавливает device_client (бинарник с сайта dix.su или вручную).
  5. Создаёт аккаунт на dix.su, заводит туннель, записывает slug+token в конфиг.
  6. Настраивает systemd для автостарта device_client.
  7. Устанавливает заказанное ПО (Django, WordPress и т.д.) при заказе «под ключ».
  8. Отправляет устройство + карточку с данными аккаунта.

Автоматизация v2 (после первых продаж): - API dix.su для программного создания аккаунта и туннеля - Скрипт инициализации устройства (bash/ansible) — один запуск на свежей ОС - Автоматическое письмо покупателю со slug/token после отгрузки


Шаг 4. Eskimos — что проверить перед запуском

В новой сессии первым делом:

# Найти кодовую базу
find ~ -name "manage.py" 2>/dev/null

# Проверить зависимости
cat requirements.txt

# Текущие модели (что уже есть в каталоге)
python manage.py showmigrations
python manage.py shell -c "from django.apps import apps; [print(m) for m in apps.get_models()]"

# Статус БД
python manage.py dbshell  # посмотреть таблицы

# Запущенные сервисы на устройстве
systemctl list-units --type=service --state=running

Вопросы для уточнения в новой сессии: - Django версия и основные установленные пакеты - Используемая БД (SQLite vs PostgreSQL) - Есть ли уже продукты в каталоге или он пустой - Платёжный провайдер (если подключён) - Статические файлы: WhiteNoise, nginx локально или что-то ещё - Как сейчас принимаются заказы (форма, email, телеграм-бот?)


Шаг 5. SEO и маркетинг

Стратегия: shopdix.su → SEO-трафик → часть посетителей регистрируется на dix.su.

Приоритетные страницы для индексации: 1. Главная: «Готовые серверы на базе открытого ПО» 2. Каждое устройство: отдельная страница с характеристиками, фото, видео работы 3. Инструкции: long-tail SEO по запросам «сервер из старого телефона», «PostmarketOS сервер», «туннель без публичного IP» 4. О проекте: история — «этот магазин работает на смартфоне Redmi 4 без аренды сервера»

Ссылочный профиль: - shopdix.su → dix.su (естественные ссылки из контента) - dix.su → shopdix.su (раздел «Примеры использования» или витрина)

Соцсети (отдельная задача): - Видео-демонстрация: «Заказал телефон, включил — сайт в интернете» - Короткие видео про PostmarketOS + device_client


Связь с основной инфраструктурой dix.su

Точка интеграции Механизм Статус
Custom domain (shopdix.su → eskimos) CustomDomainController + certbot-agent Готово, нужна настройка
Создание аккаунта для покупателя Ручной процесс v1 → API v2 v1 ручной, v2 — будущее
Продажа подписок Ваучеры/промо-коды → dix.su Нужна реализация
Ссылки shop ↔ dix.su Редакционные ссылки Редакционно
Аналитика Раздел аналитики туннеля eskimos (PRO-тариф) Уже работает

Первые шаги в новой сессии (чеклист)

[ ] Найти кодовую базу eskimos на локальной машине или на устройстве
[ ] Убедиться что eskimos.dix.su работает прямо сейчас
[ ] Зарегистрировать shopdix.su
[ ] Настроить DNS: shopdix.su → dix.su (CNAME или A-запись)
[ ] Привязать custom domain в кабинете dix.su → туннель eskimos
[ ] Проверить автоматическое получение SSL для shopdix.su
[ ] Аудит eskimos: что есть, чего не хватает для запуска
[ ] Наполнить каталог первым устройством (Redmi 4 — уже проверен)
[ ] Добавить страницу «О проекте» с историей о магазине на смартфоне
[ ] Добавить ссылки на dix.su (регистрация, тарифы)
[ ] Добавить 2–3 инструкции (SEO-страницы)
[ ] Проверить форму заказа / уведомления

Замечания по странице товара (ревью 2026-07-11)

Проверена страница /shop/product/raspberry-pi-4 на shopdixsu.dix.su.

Критичные — блокируют продажи

1. Нет фотографий товаров Везде /static/images/none.png. До появления реальных фото страница не конвертирует. Минимум: официальное фото платы + фото "как это выглядит в реальности" (плата, кабели, коробка).

2. Не указана модель оплаты туннеля Цена 10 000 руб. включает туннель? На год? Навсегда? Ежемесячно? Нужно указать прямо рядом с ценой — без ответа покупатель не купит hardware+SaaS bundle.

3. Нет блока "Что в коробке" SD-карта? Блок питания? Корпус? Кабели? Для hardware-продукта это блокирующий вопрос.

Важные — снижают конверсию

4. Нет таблицы технических характеристик Нужно: CPU / RAM / хранилище (тип, объём) / ОС и версия / версия device_client / потребление Вт.

5. Нет раздела "Как это работает" на странице товара Покупатель должен понять ДО покупки весь путь: "Купил → получил → подключил питание → через 2 минуты сервер доступен по мой-slug.dix.su."

6. Смешанные категории в "Похожих товарах" Рядом с RPi4 показывается "Подсвечник Туристы у костра" (категория candlestick). Похожие товары должны фильтроваться по той же категории.

Структурные

7. Названия разделов каталога непрозрачны keymasters, candlestick, devices — непонятно с первого взгляда. Нужны человекочитаемые заголовки рядом с внутренними именами.

8. Страница /shop/delivery — место для снятия главного возражения "Что будет, если dix.su закроется?" — ответить честно: open-source клиент на GitHub, можно поднять свой сервер. Снимает главный страх и строит доверие.


Технические зависимости от dixsu-infra

  • Custom domain: CustomDomainController.java, certbot-agent.py — уже в проде
  • device_client бинарники: скачиваются со страницы /client-binaries на dix.su — уже работает
  • Туннель eskimos: device_client запущен на Redmi 4, eskimos.dix.su активен
  • Никакого кода в dixsu-infra для этого сателлита не нужно — только конфигурация

Заметки по устройствам (для маркетинга)

Почему смартфон — это правильно: - Встроенный аккумулятор = UPS (переживает кратковременные отключения питания) - Мобильный интернет как резервный канал (SIM-карта) - Низкое энергопотребление (3–5 Вт vs 15–30 Вт у Raspberry Pi) - Компактность — помещается в карман

Почему Raspberry Pi: - Стандартное железо, предсказуемое поведение - Огромное сообщество, много готовых образов - Лучше для стационарного использования - Подходит для Docker, несколько сервисов одновременно

Ключевой маркетинговый месседж:

«Твой сервер в интернете — без аренды, без публичного IP, без DevOps. Включил — работает. shopdix.su сам работает именно так.»


Roadmap: Rybbit Analytics на спутниковом устройстве

Запись добавлена 2026-09-27

Идея

Развернуть стек Rybbit (AGPL-3.0) на отдельном физическом устройстве (satellite device), которое само висит за туннелем dix.su. Rybbit будет собирать веб-аналитику с нескольких сайтов, подключённых к платформе. Это одновременно:

  • Живая реклама dix.su: Rybbit-инстанс физически живёт на устройстве, которое доступно через rybbit.dix.su (или аналог) — наглядная демонстрация, что на платформе можно крутить реальные production-стеки.
  • Аналитика для пользователей dix.su: в перспективе — предлагать подключение своего сайта к общему Rybbit-инстансу как дополнительный продукт (privacy-first, без cookie, GDPR-friendly).
  • SEO-контент: статья «Как поднять Rybbit на Raspberry Pi через dix.su туннель» → органический трафик + ссылки.

Технический стек Rybbit

Компонент Что делает
Rybbit Backend (Node.js / Hono) API, трекинг, обработка событий
Rybbit Frontend (Next.js) Дашборд аналитики
ClickHouse OLAP-хранилище событий (быстрые агрегации)
PostgreSQL Метаданные сайтов, пользователи Rybbit

Разворачивается через docker-compose с флагом --no-webserver (не тянет собственный nginx — используется уже существующий обратный прокси).

Минимальные требования к железу

Параметр Минимум Рекомендуется
CPU 4 ядра (ARMv8) x86_64 (ClickHouse лучше на x86)
RAM 4 GB 8 GB
Хранилище 32 GB (SSD/eMMC) 64+ GB
ОС Debian/Ubuntu 22.04+ Ubuntu 24.04 LTS

ClickHouse работает на ARM64 (официальный образ), но оптимален на x86_64. Подходящее устройство из линейки shopdix.su: мини-ПК / ноутбук б/у или Raspberry Pi 5 8GB (есть ARM64 образ ClickHouse).

Схема деплоя

Посетитель сайта-клиента dix.su
          │
          │  (Rybbit трекинг-пиксель встроен в сайт)
          ▼
  Rybbit Backend ← Analytics events
          │
          ▼
  ClickHouse (events) + PostgreSQL (metadata)
          │
          ▼ (dashboard)
  rybbit.dix.su  ← dixu_proxy WSS-туннель ← device_client
                                                    │
                                                    ▼
                                           satellite device
                                           (RPi5 / мини-ПК)
                                           docker-compose up

Шаги реализации

[ ] Выбрать физическое устройство для Rybbit-спутника
[ ] Установить Ubuntu 24.04 + Docker + docker-compose
[ ] Установить device_client, поднять туннель `rybbit.dix.su`
[ ] Клонировать rybbit: git clone https://github.com/rybbit-io/rybbit
[ ] Сконфигурировать .env:
      CLICKHOUSE_HOST, CLICKHOUSE_DB, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD
      POSTGRES_URL
      RYBBIT_DISABLE_WEBSERVER=true  (используем свой nginx)
      NEXTAUTH_URL=https://rybbit.dix.su
[ ] docker compose up -d
[ ] Настроить nginx (reverse proxy) для /api/* → rybbit backend, /* → frontend
[ ] Подключить первый тест-сайт (eskimos.dix.su / shopdix.su)
[ ] Убедиться, что события пишутся в ClickHouse
[ ] Написать статью: «Rybbit Analytics на RPi5 через dix.su»
[ ] Добавить в описание тарифа: возможность подключения к Rybbit-инстансу

docker-compose.yml (скелет с --no-webserver)

# rybbit/docker-compose.override.yml
services:
  rybbit-backend:
    environment:
      - RYBBIT_DISABLE_WEBSERVER=true
  rybbit-frontend:
    environment:
      - NEXTAUTH_URL=https://rybbit.dix.su

# nginx.conf (добавить в конфиг nginx на устройстве или локальный контейнер)
# location /api/ { proxy_pass http://rybbit-backend:3001/; }
# location /    { proxy_pass http://rybbit-frontend:3000/; }

Позиционирование

  • Для dix.su: «На платформе можно запускать production analytics stack — без облаков, без плат за объём данных.»
  • Для shopdix.su: новый SKU — «Сервер с Rybbit Analytics»; готовый девайс с предустановленным Rybbit, подключённым к dix.su.
  • Privacy-angle: Rybbit не использует cookie, не передаёт данные третьим сторонам — GDPR-friendly, хорошо заходит European-аудитории.