DreamCMS
Вся информация о веб-движке для Minecraft проектов
- О проекте
- Скриншоты админ-панели
- Установка
- Процесс покупки
- OAuth интеграция с соц. сетями
- Подключение платежных систем
- Подключение топов
- Структура проекта
- Как собрать Frontend и стили сайта
О проекте
Доброго времени суток, прежде чем начать, есть несколько важных моментов.
DreamCMS - веб-движок или же решение "под ключ" для Minecraft-based проектов.
Для каких проектов он подойдет:
- Проекты с модовыми серверами на ядрах основанных на Bukkit/Sponge [версии 1.7.10 - 1.16.5]
- Проекты с лаунчером
- Проекты с собственной регистрацией
Про дизайн: движок поставляется со стандартным шаблонным дизайном (frontend-ом) основанным на VueJS. Важно понимать, что это не самый простой шаблонизатор. Если вы хотите абсолютно уникальный дизайн, вам необходим VueJS разработчик. Либо вы запросто можете изменять любые цвета с помощью переменных в SCSS файлах.
Про обновления: данный движок имеет большое количество функционала, новый функционал не планируется и проект не является приоритетным. Выходят только критические обновления: если что-то не работает или работает не так. При этом вы можете запросить какой-то функционал, обсуждается отдельно.
Список модулей и функционала:
- Новости и визуальный редактор
- Система статических страниц
- Интеграция с топами: TopCraft, MCRate, MCTop, MinecraftRating (+1 любой ваш топ бесплатно при необходимости)
- Реферальная система (настраиваемые награды за пополнение баланса и голосование в топах приглашенных игроков)
- Мониторинг серверов (+рекорды онлайна)
- Форум (полноценный минималистичный форум, категории, темы, сообщения, профиль игрока, подписи, онлайн-чат, список администрации, кол-во тем и сообщений, система лайков и репутации, модераторский функционал)
- Бан-лист (платный разбан, отображения блокировки на сайте, список заблокированных и причин)
- Система подачи заявок на вступление в команду проекта
- Магазин блоков (группировка по модам и серверам, поиск, покупка блоков и предметов, зачарование, система скидок)
- Личный кабинет (обновление скина игрока с 3D предпросмотром, смена префикса с фильтрацией, настройки форума, безопасность аккаунта: двухфакторная авторизация, подключение соц.сетей, смена пароля, логи авторизаций, список блокировок, пополнение баланса)
- Система донат групп (описание, скидки, автоматическая выдача на сервера, продление, компенсация групп на случай вайпа)
- Киты (покупка китов на сайте и просмотр содержимого, интеграция с плагином Essentials)
- Пополнение баланса, поддерживаемые платежные системы: Unitpay, Обменка, Enot.IO, Digiseller, Interkassa, Skinpay
Администраторский функционал:
- Статистика (графики: регистрации, смен пароля, пополнения баланса, доход по каждому серверу, топ покупаемых предметов, покупки донат групп, покупки предметов)
- Статистика по реферальной системе (кол-во пополнений рефералов определенного игрока и регистраций, походит для YouTube'ов и стримеров)
- Поиск и редактирование игроков, кастомные префиксы на сайте, гибкая система прав: права для каждого модуля выдаются отдельно.
- Менеджер игроков (подробная информация, выдача/списание баланса и репутации, полное очищение прав на сайте/серверах, выдача блокировок игры и форума, выдача/снятие донат-групп и предметов в корзине)
- Список действий игроков (удобный поиск, логи: пополнения баланса, блокировки, покупки на сайте, смена пароля, включение/отключение двухфакторной авторизации, восстановление пароля, смена префикса, обмен валют)
- Выдача прав (для пользователей или групп пользователей) только к определенным серверам, разделам форума, модулей админ-панели
- Создание временных скидок для магазина блоков, донат-групп
- RCON консоль для серверов
- Настройка сайта в админ-панели (только для супер-админа)
Где используется:
- https://streamcraft.net/ (ранее)
- https://frostland.pro/
- https://oneland.su/
- https://tiktokworld.ru/
- https://antarescraft.ru/
- и другие...
Скриншоты админ-панели
Все скриншоты открываются в полном размере
Главная панель статистики
Статистика дохода
Реферальная система
Менеджер игрока
Логи игроков
Создание новости
Создание статической страницы
Форумные категории
ACL (система прав)
Магазин блоков
Категории магазина блоков
Создание предмета в магазине
Создание кита
Добавление сервера
Настройки (не все)
Создание донат-группы (таблица привилегий заполняется только для ЛК в игре, продается отдельно)
Установка
Для успешной установки рекомендуется использовать свеже-установленную "чистую" систему Debian или Ubuntu. Для установки на другие системы, обратитесь к автору.
Необходимые компоненты:
- Nginx - вебсервер
- PHP v7.4+ и PHP-FPM
- NodeJS v12.x и NPM
- Composer v2+ - менеджер пакетов PHP
- MariaDB (v13+) - MySQL сервер базы данных
- Redis - кеш-сервер
- ZIP / UNZIP (установка: apt install -y zip unzip)
Необходимые расширения PHP:
- BCMath
- Ctype
- Fileinfo
- JSON
- Mbstring
- PDO
- Tokenizer
- XML
- GD
- CURL
Прежде всего, обновите пакеты в свеже-установленной системе:
- apt update
- apt upgrade
Установите необходимые компоненты для установки:
- apt -y install lsb-release apt-transport-https ca-certificates sudo software-properties-common dirmngr curl
Установка PHP, PHP-FPM и необходимых пакетов:
- wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
- echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
- apt update
- apt -y install php7.4
- apt -y install php7.4-{bcmath,ctype,fileinfo,json,mbstring,mysql,pdo,zip,tokenizer,gd,curl,dom}
Далее, устанавливаем NGINX и LetsEncrypt:
- apt -y install nginx certbot python3-certbot-nginx
Устанавливаем MariaDB и Redis:
- apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
- add-apt-repository 'deb [arch=amd64] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/debian buster main'
- apt update
- apt -y install mariadb-server
- mysql_secure_installation
- apt -y install redis-server
Последняя команда защищает ваш сервер, удаляя ненужных пользователей и позволяет сменить ROOT пароль от mysql-сервера.
Далее открываем консоль MySQL командой "mysql" и дальнейшая работа произойдет в ней:
- CREATE DATABASE `НАЗВАНИЕ_БД`;
- CREATE USER 'ИМЯ_ПОЛЬЗОВАТЕЛЯ'@'localhost' IDENTIFIED BY 'ПАРОЛЬ';
- GRANT ALL PRIVILEGES ON `НАЗВАНИЕ_БД`.* TO 'ИМЯ_ПОЛЬЗОВАТЕЛЯ'@'localhost';
- FLUSH PRIVILEGES;
- exit;
Выделенные цветом значения необходимо подставить под ваши.
В репозитории проекта вы увидите файл 'site_clear.sql', который необходимо импортировать в базу данных. Для этого пропишите команду в папке, где находится файл: 'mysql НАЗВАНИЕ_БД < site_clear.sql'
Не забудьте данные, их необходимо заполнить в .env файле.
Установка NodeJS и NPM:
- curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
- apt -y install nodejs
Установка Redis:
- apt install redis-server
Когда весь зависимый софт установлен, можно перейти к самому движку, здесь все довольно просто. При покупке вы получаете доступ к git-репозиторию, где хранится движок.
Получение движка:
- ssh-keygen -t rsa (далее просто нажимаем Enter)
- Передайте файл /root/.ssh/id_rsa.pub автору, для выдачи доступа
- apt -y install git
- mkdir -p /home/sites && cd /home/sites
- git clone git@github.com:Beshelmek/dreamcms_global.git НАЗВАНИЕ_ПАПКИ
НАЗВАНИЕ_ПАПКИ - опциональный параметр, например Ваш домен (пример: dreamcms.org)
Далее перейдите в папку, переименуйте файл .env.example в .env и заполните необходимые поля. После этого в папке проекта запустите команду 'php install.php'. Начнется процесс который может продлиться некоторое время, произойдет установка NPM пакетов, компиляция frontend'a.
Осталось настроить NGinx, перейдите по этой ссылке.
Измените:
- Домен - домен вашего сайта
- Путь - путь до вашего сайта
После этого в генераторе выполните простые инструкции в разделе Настройка ниже.
Ура! Ваш сайт должен работать. Если вы получаете ошибку в любом этапе, напишите автору.
Осталась пара мелочей, добавьте строчку в CRON (запускается через 'crontab -e'):
* * * * * php /home/sites/НАЗВАНИЕ_ПАПКИ/artisan schedule:run >> /dev/null 2>&1
Настройте Supervisord заменив '/home/forge/app.com' на путь до вашей папки сайта.
Процесс покупки
Свяжитесь с автором с помощью телеграмм: @Beshelmek
Если у Вас есть какие-то вопросы, все возможно обсудить в Discord.
Доступ к движку предоставляется после оплаты:
- При покупке с установкой под ключ (+19$), возможна предоплата 50%, остальные 50% после установки мной
- При самостоятельной установке только 100% предоплата
- Возможна работа по договору (+13% к цене)
Доступные реквизиты оплаты:
- QIWI кошелек
- Тинькофф / Сбербанк / Альфа-банк
- Система быстрый платежей
- Перевод на карту в любой валюте (комиссию оплачивает покупатель)
- Банковский перевод на расчетный счет (передача после поступления средств)
- Криптовалюты
При установке автором под ключ, вы передаете автору данные от сервера и установка будет произведена до ближайших выходных дней (включая их).
После оплаты, сообщите:
- IP адрес сервера, где будет установлен движок
- Домен сайта
- Название проекта
OAuth интеграция с соц. сетями
Заполните в .env файле ID и секретные ключи полученные здесь:
Если провайдер OAuth запрашивает разрешенные ссылки для перенеправления, укажите следующие:
- https://вашдомен/oauth/link/{ID}
- https://вашдомен/oauth/login/{ID}
- https://вашдомен/oauth/recovery/{ID}
Вместо {ID} заполните ID драйвера (указан выше в скобках). Например:
https://dreamcraft.org/oauth/login/vkontakte
Подключение платежных систем
В данное время поддерживаются:
- Unitpay
- SkinPay
- Enot.IO
- Digiseller
- Interkassa
- Freekassa
- Qiwi P2P
Если вам нужна другая платежная система, одна подключается бесплатно.
Адреса для WebHook'ов (ссылки по которым платежная система сообщает о платеже):
Unitpay | https://вашдомен/payments/unitpay |
SkinPay | https://вашдомен/payments/skinpay |
Enot.IO | https://вашдомен/payments/enot |
Digiseller | https://вашдомен/payments/digiseller |
Interkassa |
https://вашдомен/payments/interkassa |
Freekassa |
https://вашдомен/payments/freekassa |
Не забудьте настроить секретные ключи в настройках сайта.
Отключить лишние платежные системы в дизайне можно в файле resources/js/modals/BalanceModal.vue
Подключение топов
Настройте секретные ключи топов в настройках сайта.
Адреса WebHook'ов (ссылки извещения о голосе):
TopCraft | https://вашдомен/top/webhook/topcraft |
MCTop | https://вашдомен/top/webhook/mctop |
MCRate | https://вашдомен/top/webhook/mcrate |
MinecraftRating | https://вашдомен/top/webhook/minecraftrating |
Структура проекта
- app - основной код сайта
- Models - код моделей (все что хранится в БД)
- Http/Controllers - обработка запросов и основная логика
- PaymentController - все что связано с платежными системами
- API - обработка запросов от FrontEnd'a
- Admin - все что связанно с админ-панелью
- Forum - соответственно форум
- BalanceController - API для списания денег серверами с игроков
- CasesController - кейсы для ЛК
- CoreController - загрузка данных об игроке
- FeedbackController - обработка заявок от игроков
- FriendsController - система друзей
- IntegrationController - интеграции с соц. сетями
- NewsController - новости
- PageController - статические страницы
- ProfileController - покупка китов, просмотр профиля, покупка разбана, бан-лист, префиксы, покупка донат-групп, обмен валюты
- SettingsController - настройки игрока, смена пароля, подключение 2FA, подтверждение почты
- ShopController - магазин блоков
- TopController - топы голосующих и вебхуки
- config - конфиги различных модулей, не рекомендуется менять в файлах
- routes - роутинг запросов к контроллерам
- vuexy - админ-панель
- resources - Frontend сайта
- css - стили сайта с переменными
- js - VueJS компоненты и верстка сайта
- views - layout сайта и сообщения об ошибках
Как собрать Frontend и стили сайта
После изменений в стилях сайта, верстке или папке resources, необходимо скомпилировать frontend сайта, для применения изменений.
В процессе разработки, вы можете запустить команду 'npm run watch-poll'. Пока она запущена - все изменения в файлах будут отслеживаться и сразу компилироваться.
Если же вы закончили разработку стилей и верстки, на готовом сайте запустите 'npm run prod' - эта команда так же компилирует frontend, но применяет оптимизации для готового сайта и обновляет их кеш.
Аналогичные команды используются в папке 'vuexy' для администраторской панели.