Документация · v1.0

Agregator Script

Полная техническая документация: требования, установка, архитектура, конфигурация и деплой на VPS.

PHP 8.4
минимальная версия
Laravel 12
фреймворк
MySQL 8
база данных
Redis 7
кэш и очереди
Docker
среда запуска

Что нужно для запуска

Скрипт поставляется с полностью настроенным Docker-окружением — дополнительно устанавливать PHP или MySQL на хосте не нужно.

🐳

Docker-окружение (рекомендуется)

Весь стек поднимается одной командой. Требуется только Docker и Make.

ИнструментВерсияНазначение
Docker≥ 24Контейнеры
Docker Composev2 (plugin)Оркестрация
MakeлюбаяСокращение команд
Git≥ 2.30Клонирование
🖥

Bare-metal / VPS без Docker

Можно установить напрямую на сервер без контейнеров.

КомпонентВерсияРоль
PHP≥ 8.4Интерпретатор
Nginx / Caddy / ApacheлюбаяВеб-сервер
MySQL8.0+БД
Redis7+Кэш, очереди
Composer2+PHP-зависимости
Node.js + npm≥ 18Сборка CSS/JS

Обязательные PHP-расширения

bcmath gd intl pcntl pdo_mysql redis zip opcache imagick

Что под капотом

Современные, стабильные технологии с долгосрочной поддержкой.

⚙️

Backend

  • PHP 8.4 — Strict Types, JIT, именованные аргументы
  • Laravel 12 — последняя стабильная ветка
  • Laravel Fortify — аутентификация (пароль / OTP)
  • Laravel Socialite + VK provider — OAuth вход
  • Spatie Permission 6 — роли и права доступа
  • Owen-It Auditing 14 — журнал изменений моделей
  • Maatwebsite Excel — экспорт XLSX / CSV
  • YooKassa SDK — платёжный шлюз
  • Money PHP — безопасная работа с деньгами
🎨

Frontend — Административная панель

  • Bootstrap 5 (Codebase template) — UI-кит
  • DataTables — серверные таблицы с AJAX
  • Chart.js — интерактивные графики на дашборде
  • CKEditor 5 — WYSIWYG-редактор страниц
  • FontAwesome 6 — иконки
  • Тёмная и светлая тема из коробки
  • Vite — бандлинг и HMR при разработке
🚀

Инфраструктура

  • FrankenPHP — сервер приложений (PHP + Caddy встроены)
  • MySQL 8.0 — реляционная СУБД
  • Redis 7 — кэш, сессии, очереди
  • Docker Compose — изолированное окружение
  • MailHog — перехват писем в dev-режиме
  • Xdebug 3 — отладчик (через IDE-конфиг)
📦

Тестирование и качество кода

  • Pest 3 — тест-фреймворк (синтаксис, похожий на Jest)
  • Pest Laravel Plugin — интеграция с Artisan
  • Laravel Pint — автоформатирование кода (PSR-12)
  • Mockery — мок-объекты для тестов
🏗

Архитектурные паттерны

  • Domain-Driven Design — логика разбита по доменам
  • Repository Pattern с интерфейсами (DI через Service Container)
  • Enum-классы для всех статусов и типов
  • Typed Properties и Strict Types во всех PHP-файлах
  • Action / Service / Repository слои
🗄

Ключевые Composer-пакеты

  • yajra/laravel-datatables — серверные DataTables
  • yajra/laravel-datatables-buttons — кнопки экспорта
  • yajra/laravel-datatables-export — экспорт DataTables
  • socialiteproviders/vkontakte — ВКонтакте OAuth
  • moneyphp/money — точная арифметика валют

Быстрый старт за 5 минут

Docker-окружение включает PHP, MySQL, Redis и почтовый сервер — всё поднимается одной командой.

1

Скопируйте файлы и настройте окружение

Распакуйте архив или скопируйте файлы на сервер. Создайте .env из шаблона.

# Скопировать шаблон конфигурации cp .env.example .env # Откройте .env и заполните обязательные параметры: # APP_URL, DB_PASSWORD, MAIL_FROM_ADDRESS
2

Запустите полную установку одной командой

Команда make install собирает образы, стартует контейнеры, устанавливает зависимости, генерирует ключ, создаёт символическую ссылку хранилища и запускает миграции.

make install
ℹ️
Первый запуск займёт 3–5 минут: Docker скачает базовые образы и установит Composer-зависимости.
3

Засейте базу данных (опционально)

Загрузит начальные данные: роли, права, суперадминистратора и тестовые записи.

make seed
4

Откройте приложение в браузере

По умолчанию приложение доступно на порту 8800, MailHog — на 8801.

# Приложение http://localhost:8800 # Административная панель http://localhost:8800/admin # MailHog (просмотр писем) http://localhost:8801
После seeder суперадминистратор создаётся автоматически. Логин и пароль выводятся в терминале.
5

Сборка фронтенда (только при разработке)

В production фронтенд уже собран. Для разработки с hot-reload войдите в контейнер и запустите Vite.

# Войти в контейнер make shell # Установить npm-зависимости и запустить dev-сервер npm install npm run dev

Установка без Docker (VPS / bare-metal)

1

Установите системные зависимости

# Ubuntu / Debian apt install -y php8.4 php8.4-{bcmath,gd,intl,pcntl,mysql,redis,zip,imagick} \ composer nginx mysql-server redis-server nodejs npm
2

Установите PHP и npm зависимости

composer install --no-dev --optimize-autoloader npm install && npm run build
3

Настройте приложение

php artisan key:generate php artisan migrate --force php artisan db:seed --force php artisan storage:link php artisan config:cache php artisan route:cache php artisan view:cache
4

Настройте планировщик и очереди

Добавьте в crontab и настройте Supervisor для queue worker.

# crontab -e * * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1 # Supervisor — queue worker php artisan queue:work redis --tries=3 --timeout=90

Переменные окружения (.env)

Все настройки проекта сконфигурированы через .env — менять код не нужно.

Приложение
ПеременнаяПримерОписание
APP_NAMEAgregatorНазвание приложения (используется в письмах, заголовках)
APP_ENVproductionlocal для разработки, production для прода
APP_DEBUGfalseВключает отображение ошибок. Обязательно false на проде
APP_URLhttps://yourdomain.ruПолный URL сайта с протоколом. Используется в ссылках писем
APP_TIMEZONEEurope/MoscowЧасовой пояс приложения
APP_LOCALEruЯзык интерфейса (ru / en)
База данных
ПеременнаяПримерОписание
DB_CONNECTIONmysqlДрайвер БД
DB_HOSTmysqlХост MySQL (имя Docker-сервиса или IP)
DB_PORT3306Порт MySQL
DB_DATABASEaggregatorИмя базы данных
DB_USERNAMEaggregatorПользователь MySQL
DB_PASSWORDsecretПароль MySQL — обязательно сменить!
DB_ROOT_PASSWORDroot_passwordПароль root MySQL (только для Docker)
Redis, кэш и очереди
ПеременнаяПримерОписание
REDIS_HOSTredisХост Redis (имя Docker-сервиса)
REDIS_PORT6379Порт Redis
CACHE_STOREredisДрайвер кэша
SESSION_DRIVERredisХранилище сессий
QUEUE_CONNECTIONredisОбработка заданий в очереди
Почта
ПеременнаяПримерОписание
MAIL_MAILERsmtpДрайвер отправки (smtp, mailgun, log)
MAIL_HOSTmailhogSMTP-сервер (в dev — MailHog)
MAIL_PORT1025SMTP-порт
MAIL_FROM_ADDRESSno-reply@site.ruEmail отправителя
MAIL_FROM_NAMEAggregatorИмя отправителя в письмах
YooKassa (платежи)
ПеременнаяПримерОписание
YOOKASSA_SHOP_ID1234567ID магазина в YooKassa
YOOKASSA_SECRET_KEYlive_xxx…Секретный ключ из личного кабинета YooKassa
YOOKASSA_RETURN_URLhttps://site.ru/payment/successURL после успешной оплаты
OAuth / Социальные сети
ПеременнаяОписание
VKONTAKTE_CLIENT_IDApp ID из настроек приложения ВКонтакте
VKONTAKTE_CLIENT_SECRETЗащищённый ключ приложения ВКонтакте
VKONTAKTE_REDIRECT_URIhttps://yourdomain.ru/auth/vk/callback
GITHUB_CLIENT_IDApp ID GitHub OAuth App
GITHUB_CLIENT_SECRETСекрет GitHub OAuth App
GITHUB_REDIRECT_URIhttps://yourdomain.ru/auth/github/callback
Демо-режим
ПеременнаяПримерОписание
DEMO_MODEfalseВключить демо-режим (true / false)
DEMO_TTL_MINUTES60Время жизни демо-записей в минутах (по умолчанию 60)
Порты Docker-сервисов
ПеременнаяПо умолчаниюОписание
APP_HTTP_PORT8800HTTP-порт приложения на хосте
APP_HTTPS_PORT8443HTTPS-порт приложения
MAIL_FORWARD_PORT8801Порт MailHog UI
DB_FORWARD_PORT8802Проброс порта MySQL на хост
REDIS_FORWARD_PORT8803Проброс порта Redis на хост

Domain-Driven Design

Бизнес-логика разбита по доменам в папке domain/. Каждый домен содержит модели, репозитории, сервисы и DTO — независимо от других.

📦 ContentManagement
Models/Item.php
Models/Category.php
Models/Company.php
Models/CompanyReview.php
Models/Specialist.php
Models/SpecialistApplication.php
Models/Page.php
Models/Filter.php
Models/Application.php
Models/Promocode.php
Repository/
Services/
DTO/
Enums/
DataTables/
💰 Payments
Models/Transaction.php
Repository/
Services/
Services/YooKassaService.php
DTO/
Enums/TransactionStatus.php
Exceptions/
📋 Plans
Models/Plan.php
Repository/
Services/
DTO/
DataTables/
👥 UserManagement
Models/User.php
Repository/
Services/
DTO/
Enums/
Exports/
Listeners/
DataTables/
🔗 LinkGenerator
Models/LinkGenerator.php
Repository/
Services/
DTO/
DataTables/
ℹ️
app/ содержит только HTTP-слой: контроллеры, middleware, form requests, providers, actions. Бизнес-логика — исключительно в domain/.

Схема слоёв

🌐

HTTP Layer

Controllers · Middleware
Form Requests · Actions

app/Http/
🏢

Domain Layer

Services · Repositories
Models · DTO · Enums

domain/
🗄

Infrastructure

Migrations · Seeders
Queue · Cache · Storage

Infrastructure/ · database/

Все модули системы

13 готовых модулей управления — от каталога до платёжной системы. Ниже краткий технический разрез каждого.

# Модуль Основные сущности Ключевые возможности Права
1 Пользователи users, user_activities Регистрация, OTP/пароль, OAuth (VK, GitHub), профиль, баланс users.*
2 Роли и права roles, permissions, model_has_roles 5 ролей, 53+ прав, назначение из панели (Spatie Permission) roles.* permissions.*
3 Объявления (Items) items, item_options, item_comments Статусы, скидки, метки, кастомные поля, комментарии с рейтингом items.*
4 Категории categories, category_item Дерево категорий, привязка к объявлениям categories.*
5 Компании companies, company_reviews, company_review_media Адрес, часы работы, отзывы с медиа, рейтинг, модерация companies.*
6 Специалисты specialists, specialist_applications, specialist_comments Профиль, заявки с captcha и кастомными полями, комментарии specialists.*
7 Тарифы (Plans) plans Планы с ценой, валютой, привязкой к страницам plans.*
8 Транзакции transactions, balances YooKassa, статусы платежей, история, баланс пользователя transactions.*
9 Промокоды promocodes Скидка в % или сумме, счётчик использований, срок действия plans.*
10 Заявки (Applications) applications Формы заявок, кастомные поля, статусы, уведомления applications.*
11 Генератор ссылок link_generators Короткие ссылки, счётчик кликов, привязка к объявлению или URL link_generator.*
12 CMS-страницы pages CKEditor, SEO-мета, ограничение по тарифу, slug, статус pages.*
13 Динамические фильтры filters Источник — любая таблица, выбор столбца, сортировка filters.*
🔐

Аутентификация

  • Два режима: пароль (Fortify) или OTP (одноразовый код на email)
  • Переключение режима из настроек без правки кода
  • OAuth: ВКонтакте и GitHub через Laravel Socialite
  • Подтверждение email при регистрации
  • Восстановление пароля по ссылке
📊

Аналитика и аудит

  • Дашборд: KPI-блоки + 2 графика (Chart.js)
  • Страница статистики: любой период, 8 сущностей, экспорт
  • Журнал событий пользователей (вход, регистрация, выход, пароль)
  • Аудит изменений моделей (поля до/после) — owen-it Auditing
  • Live-уведомления в шапке панели

VPS / Dedicated Server

Рекомендации по ресурсам сервера в зависимости от нагрузки.

🌱

Старт / MVP

до 1 000 пользователей
🖥
CPU
2 vCPU
💾
RAM
2 GB
💿
Диск
20 GB SSD
🌐
Канал
100 Mbps
💰
Цена (RU)
~600–900 ₽/мес

Подходит для запуска и тестирования. VPS от Beget, Timeweb, Selectel.

📈

Рост

до 10 000 пользователей
🖥
CPU
4 vCPU
💾
RAM
4–8 GB
💿
Диск
50 GB NVMe SSD
🌐
Канал
200+ Mbps
💰
Цена (RU)
~1 500–2 500 ₽/мес

Комфортная работа с реальной аудиторией. Рекомендуется выделенный Redis.

🚀

Продакшн

50 000+ пользователей
🖥
CPU
8+ vCPU
💾
RAM
16+ GB
💿
Диск
100+ GB NVMe SSD
🌐
Канал
1 Gbps
💰
Цена
Dedicated / Cloud

Рекомендуется разнести MySQL и Redis на отдельные серверы. CDN для медиа.

Чеклист настройки сервера

🔒

Безопасность

  • Сменить все пароли из .env.example перед деплоем
  • Установить SSL-сертификат (Let's Encrypt — бесплатно)
  • Настроить файрвол: открыть только 80, 443 и SSH
  • Отключить root SSH, использовать ключи
  • APP_DEBUG=false и APP_ENV=production
  • Ограничить доступ к /admin по IP (опционально)

Производительность

  • Включить OPcache + JIT в php.ini
  • Запустить php artisan optimize после деплоя
  • Использовать Redis для кэша, очередей и сессий
  • Настроить ротацию логов (LOG_CHANNEL=daily)
  • Медиафайлы отдавать через Nginx / CDN, а не PHP
  • Настроить резервное копирование БД (cron + mysqldump)
⚠️
Для Docker на VPS: убедитесь, что у пользователя есть права на запуск Docker без sudo (usermod -aG docker $USER). На слабых серверах первый docker compose build может занять 10–15 минут из-за компиляции PHP-расширений.

Помогаем запустить и развить

Купили скрипт, но хотите сэкономить время? Мы возьмём технические задачи на себя — от установки до разработки новых функций под вашу нишу.

🚀

Установка на VPS

Развернём скрипт на вашем сервере под ключ: настройка окружения, домен, SSL, очереди и планировщик.

  • Установка Docker-окружения на VPS
  • Подключение домена и SSL-сертификата
  • Настройка почты, Redis и очередей
  • Первичный запуск и проверка работоспособности
  • Инструкция по дальнейшему обслуживанию
🎨

Настройка под вашу тематику

Адаптируем скрипт под конкретную нишу: VPN-сервисы, курсы, медицина, недвижимость и другие.

  • Наполнение категорий и фильтров под тематику
  • Настройка полей объявлений и специалистов
  • Брендинг: название, цвета, логотип, favicon
  • Наполнение CMS-страниц (о нас, условия, FAQ)
  • Настройка тарифов и платёжной системы
⚙️

Доработка функционала

Разработаем любой дополнительный функционал, которого нет в базовой версии скрипта.

  • Новые модули и сущности под вашу бизнес-логику
  • Интеграции со сторонними сервисами и API
  • Доработка интерфейса и личного кабинета
  • Расширенная аналитика и отчёты
  • Индивидуальная система уведомлений

Готовы обсудить задачу? Оставьте заявку — ответим в течение дня.

Заказать услугу →

Готовы запустить свой агрегатор?

Документация написана, стек выбран, архитектура продумана — осталось только задеплоить.