Self-hosted движок магазина: свой VPS, свои данные, без процента с оборота
Self-hosted движок магазина — это движок интернет-магазина, который вы ставите на арендованный вами VPS и полностью контролируете: база данных, медиафайлы, заказы и персональные данные покупателей физически лежат на вашем сервере. Никакой аренды витрины, никакой комиссии платформы с оборота и никакого чужого кабинета, из которого вас могут отключить.
NitroCart — именно такой движок. Ниже разберём, чем self-hosted магазин отличается от SaaS и от классических PHP-сборок, что входит в движок, кому он реально нужен и в каком порядке его запускают.
Что такое self-hosted движок магазина
Разница между вариантами запуска сводится к тому, кто владеет инфраструктурой и кто забирает часть выручки.
SaaS-платформа (Shopify, Tilda и аналоги). Вы арендуете витрину. Данные лежат у вендора, часть кода платформы не убрать, а тариф часто дополняется комиссией с продаж. Аккаунт — точка отказа: блокировка кабинета означает остановку магазина.
Классическая CMS (WordPress + WooCommerce, OpenCart). Сервер ваш, но магазин вы собираете из ядра, темы и десятка плагинов. Каждый плагин — свои CSS и JS, свои конфликты и своя точка риска при обновлении.
Self-hosted движок. Магазин приходит собранным: витрина, корзина, чекаут, админка, аналитика трафика и обновления — в одном контуре, на вашем сервере. Вы платите за лицензию движка, а не процент с каждого заказа.
NitroCart относится к третьему типу и лицензируется по числу одновременных IP, а не по обороту: Start — 1, Pro — 5, Enterprise — 15 активных копий движка на ваших VDS. Подробный расчёт этой модели — в материале Одна лицензия — до 15 VPS: экономика копий против SaaS.
Что входит в движок
Смысл self-hosted подхода теряется, если под каждую функцию всё равно нужно докупать модуль. Поэтому типовой контур владельца магазина закрыт в ядре:
- Четыре формата магазина — Catalog, Landing one, Landing multi и Tickets. Формат переключается в админке одним кликом, без переустановки и без миграции данных. Разбор форматов — в статье Четыре формата: Catalog, Landing one, Landing multi, Tickets.
- Корзина и чекаут с настраиваемыми полями, промокодами и доставкой.
- Платежи по URL и API — банковский эквайринг или международный провайдер под ваш регион, без привязки к одному вендору. См. Self-hosted checkout: платежи по URL и API.
- Атрибуция трафика из коробки — распознавание рекламных сетей, поиска, соцсетей и AI-реферера без сторонней аналитики. См. Атрибуция трафика в магазине.
- Фильтр качества трафика — какие источники допускаются до оформления заказа. См. Фильтр качества трафика до checkout.
- Telegram-уведомления о заказах и брошенных корзинах — см. Telegram-уведомления: заказ, корзина, брошенная корзина.
- SEO без агентства — sitemap, JSON-LD, коды верификации поисковиков, блог. См. Встроенное SEO: sitemap, JSON-LD, блог.
- Уникализация вёрстки — своя карта CSS/JS-классов, свои имена cookie и хэши файлов у каждой инсталляции. См. Уникальность вёрстки магазина.
- Свой код в каждом формате — HTML, CSS, JS и пиксели без ограничений темы. См. Свой HTML, CSS, JS и пиксели в каждом формате.
Кому нужен магазин на своём сервере
Self-hosted оправдан не всем. Он даёт преимущество там, где важны скорость смены витрины, отсутствие комиссии и контроль над данными.
Медиабаеры и аффилиаты. Оффер живёт неделями, а не годами. Нужно поднять витрину под конкретный оффер и GEO, снять данные с живого трафика и уйти дальше. Подробнее — Движок магазина для медиабаеров.
Дропшипперы и реселлеры. Товар чужой, витрина ваша. Комиссия платформы здесь напрямую съедает и без того тонкую маржу. См. Дропшип на своём VPS и Реселлер: чужой каталог, свой магазин.
Владельцы нескольких небольших брендов. Один движок и одна лицензия обслуживают несколько витрин — см. Несколько брендов — один движок и одна лицензия.
Организаторы мероприятий. Формат Tickets закрывает выбор мест по секторам и рядам и печатный билет с QR — см. Self-hosted билетная система на своём сервере.
Есть и обратная сторона: сервер ваш — значит, ваши и обновления ОС, и бэкапы, и домен. Честный разбор ограничений — в материале Когда NitroCart не подходит.
Порядок запуска
- Арендуете VPS. Подойдёт Ubuntu 22.04 или 24.04. Ориентир по стоимости — около $10 в месяц у обычного хостера.
- Покупаете лицензию в Telegram Mini App и получаете ключ.
- Запускаете автоустановку — из Mini App. Установка занимает около 5 минут; собирать PHP и плагины руками не нужно. См. Деплой магазина от 15 минут.
- Выбираете формат, тему, валюту и платёжный URL в админке.
- Направляете домен — A-запись на Cloudflare указывает на IP вашего VDS. Лицензия и данные при этом не трогаются. См. Смена домена через Cloudflare без переустановки.
- При необходимости закрываете админку по IP — см. IP-lock админки интернет-магазина.
От оплаты до открытой витрины на рабочем домене типично уходит около 15 минут. Следующий магазин на том же сервере поднимается быстрее — движок уже развёрнут.
Обновления и безопасность
У self-hosted решения обычно два слабых места: обновления и поверхность атаки. В NitroCart оба сведены к узкому контуру.
Обновления приходят Docker-образом и патчами на уже работающий магазин — без полной переустановки и без публичного магазина расширений, откуда прилетает чужой код. Сравнение с плагинной моделью — в статье Docker и патчи: закрытый контур обновлений.
Поверхность атаки уже по определению: нет десятка сторонних плагинов, каждый со своим циклом уязвимостей. При установке доступ к серверу и админке можно ограничить вашим IP.
Отдельный вопрос — что будет, если сервер проверки лицензии временно недоступен. Магазин продолжит принимать заказы: действует льготный период, витрина не падает из-за сетевой проблемы на стороне лицензирования.
Сколько это стоит
Прямые расходы владельца self-hosted магазина складываются из трёх позиций: лицензия движка, VPS и домен.
- Лицензия: Start от $99/мес (1 магазин), Pro от $199/мес (до 5), Enterprise от $399/мес (до 15); за год — на 25% дешевле.
- VPS: ориентир ~$10 в месяц за копию.
- Домен: ориентир ~$10 в год.
Ключевое отличие от SaaS — отсутствие процента с оборота: рост продаж не увеличивает счёт за платформу. При пятнадцати одновременных магазинах на Enterprise с оплатой за год стоимость лицензии составляет около $20 на магазин в месяц. Развёрнутый расчёт с учётом времени на техчасть — в статьях Сколько экономит ротация офферов на своём VPS и Shopify vs NitroCart для платного трафика.
FAQ
Нужно ли собирать PHP и плагины?
Нет. Установка автоматическая: движок разворачивается в Docker-контуре на вашем VPS из Telegram Mini App. Дальше магазин настраивается в админке, без правки кода.
Где физически лежат данные магазина?
На вашем VPS: база данных, медиафайлы, заказы и персональные данные покупателей. Вендору не нужен доступ к вашей базе, чтобы движок работал.
Сколько магазинов можно держать на одной лицензии?
1 на Start, до 5 на Pro и до 15 на Enterprise — считаются одновременно активные IP. Один IP — одна работающая копия движка на одном вашем VDS.
Берётся ли процент с продаж?
Нет. Оплачивается только лицензия движка. Оборот, средний чек и число заказов на стоимость лицензии не влияют.
Можно ли сменить домен без переустановки?
Да. Домен или поддомен перенаправляется через Cloudflare на тот же IP — магазин, лицензия и данные остаются нетронутыми.
Что будет с магазином, когда лицензия закончится?
Сервер, база, домен и весь контент остаются у вас — они на вашем VDS. Для продолжения работы движка лицензию нужно продлить.
Нужен ли разработчик, чтобы запустить магазин?
Для запуска — нет. Установка автоматическая, контент, тексты интерфейса и оформление правятся в админке. Разработчик нужен только под доработки сверх встроенного функционала.
Дальше: Дропшип на своём VPS: без налога приложений Shopify, IP-lock админки интернет-магазина, Docker и патчи: закрытый контур обновлений.
Сколько это стоит
NitroCart — лицензия, а не подписка с процентом с продаж. Три тарифа, оплата за месяц, квартал (до −10%) или год (−25%):
- Start — от $99/мес ($890/год, ≈$74/мес), 1 магазин.
- Pro — от $199/мес ($1 790/год, ≈$149/мес), до 5 магазинов одновременно.
- Enterprise — от $399/мес ($3 590/год, ≈$299/мес), до 15 магазинов одновременно.