StrangeCraft CMS PlaVER

Установка и обновление

StrangeCraft CMS ставится одной командой: скрипт install.sh сам подготовит сервер, а всё остальное вы донастроите в браузере на странице /setup. Этот раздел — про то, как установить CMS, как её обновлять и что делать с лицензией.

Требования к серверу

Есть два сценария установки.

Свой VPS/выделенный сервер (рекомендуется):

  • Ubuntu 20.04 / 22.04 / 24.04;
  • доступ по SSH с правами root (sudo);
  • в этом режиме установщик сам ставит всё окружение: nginx, PHP‑FPM, Node, cron и (по желанию) локальный MySQL — вам ничего доустанавливать не нужно.

Шаред‑хостинг (без root):

  • PHP 8.2+ (в PATH доступен php8.3 или php8.4) с расширениями curl, mbstring, xml, gd, zip и pdo_mysql/pdo_sqlite;
  • база данных хостинга (MySQL) или SQLite;
  • системные пакеты установщик не трогает; если чего‑то не хватает — он перечислит всё одним сводным отчётом.

База данных: MySQL 8 (рекомендуется для боевого сайта) или SQLite (подойдёт для небольшого проекта и знакомства с системой).

Совет: на своём сервере ставьте сайт в /var/www/…. Каталоги /root и /home/* обычно недоступны веб‑серверу (пользователю www-data) — сайт будет отдавать 403. На слабых VPS с малым объёмом памяти добавьте к команде установки CMS_CREATE_SWAP=1 — скрипт создаст swap‑файл автоматически.

Быстрая установка одной командой

Если вы купили лицензию, вам выдали персональную команду с вашим ключом. Подключитесь к серверу по SSH и выполните её:

curl -fsSL "https://license.strangecraft.ru/download/install.sh?key=SC1…" | sudo bash

Ключ и адрес сервера обновлений уже «вшиты» в команду — все будущие обновления приходят автоматически по вашей лицензии.

CMS установится в текущий каталог. Чтобы поставить в конкретное место, сначала перейдите туда или задайте переменную CMS_DIR:

cd /var/www/mysite && curl -fsSL "https://license.strangecraft.ru/download/install.sh?key=SC1…" | sudo bash
# или
curl -fsSL "…" | sudo CMS_DIR=/var/www/mysite bash

На интерактивном терминале установщик задаст пару вопросов (ставить ли локальный MySQL, тулчейн сборки лаунчера, почтовый сервер) — можно просто отвечать по подсказкам. В конце он напечатает главное:

Страница установки:  http://ваш-ip/setup
Токен установки:     a1b2c3…

Откройте эту страницу в браузере и завершите установку по шагам: токен → база данных → администратор и название сайта. Подробно мастер описан в разделе «Первые шаги». До завершения мастера весь сайт закрыт, после — страница /setup отключается навсегда.

Установка без root (шаред‑хостинг) — та же команда, но без sudo. После установки в панели хостинга укажите: корень сайта → …/public (именно с /public на конце), PHP 8.2+ в режиме FastCGI/FPM, SSL.

Если на сервере стоит ISPmanager и установка идёт от root, установщик сам настроит сайт в панели: каталог документов, режим PHP и SSL‑сертификат Let's Encrypt. Если какой‑то шаг панель не приняла — в конце будут напечатаны инструкции для ручной донастройки.

Все переменные окружения

Переменные необязательны — установка работает и без них. Задаются перед командой, например: curl -fsSL "…" | sudo CMS_DOMAIN=play.example.com bash.

Переменная По умолчанию Что делает
CMS_DOMAIN IP сервера домен сайта (для nginx или вхоста панели)
CMS_DIR каталог запуска куда установить CMS
CMS_DB (не задано) предустановить БД до /setup: mysql — поставить локальный MySQL и создать базу (только root); sqlite — подготовить файл SQLite
CMS_DB_HOST / CMS_DB_PORT / CMS_DB_DATABASE / CMS_DB_USERNAME / CMS_DB_PASSWORD — / 3306 / strangecraft_cms / — / — реквизиты внешней БД: установщик проверит подключение и подставит их в форму /setup
CMS_DB_EXTERNAL 0 1 (вместе с CMS_DB=mysql) — открыть локальную БД для внешних подключений (порт 3306). Небезопасно — ограничьте доступ по IP
CMS_PANEL auto интеграция с панелью хостинга: auto | ispmanager | none
CMS_PANEL_USER (автоопределение) владелец вхоста при создании его в ISPmanager
CMS_MANAGED_WEB (автоматически) 1 — веб‑сервером управляет панель (nginx не трогать); 0 — принудительно настроить nginx самим
CMS_PREBUILT_ASSETS 0 1 — не собирать фронтенд, а скачать готовый архив из релиза (включается автоматически, когда npm недоступен)
CMS_LAUNCHER_BUILD 0 1 (только root) — заранее поставить тулчейн сборки лаунчера (зависимости и Wine для Windows‑сборок). Иначе кнопка «Собрать» в панели доустановит недостающее при первой сборке
CMS_MAIL 0 1 (только root) — поставить почтовый сервер (Postfix + Dovecot + OpenDKIM) под модуль «Почта»
CMS_DNS опционально, см. раздел «DNS» вики
CMS_MINIMAL 0 1 — профиль «чистая установка»: только CMS, без дополнительных компонентов и без вопросов
CMS_FULL 0 1 — профиль «полная версия»: локальный MySQL + тулчейн лаунчера + почтовый сервер, без вопросов. Отдельные флаги (например, CMS_MAIL=0) переопределяют профиль
CMS_CREATE_SWAP 0 1 — создать swap‑файл на слабых VPS (пригодится с CMS_DB=mysql)

Обновление

CMS раз в час сама сверяет свою версию с релизами. Когда выходит новая версия, в админ‑дашборде появляется баннер «Доступно обновление» с кнопкой «Обновить сейчас» — это самый простой способ.

Что важно знать:

  • обновление идёт в фоне: сайт ненадолго уходит в режим обслуживания, затем автоматически возвращается; ход обновления виден в журнале обновлений в админке;
  • обновления доступны только с действующей лицензией — если она истекла, сначала продлите её (страница /license);
  • ваши данные обновление не трогает: файл .env, база данных и весь каталог storage (загруженные скины, сборки лаунчера, картинки, темы) остаются на месте — заменяется только код CMS;
  • после обновления фоновый воркер очередей перезапускается автоматически.

Дополнительно:

  • автообновление: включите его в настройках админки — новые версии будут ставиться без вашего участия;
  • если обновление по какой‑то причине не устанавливается — обратитесь в поддержку.

Лицензия

Ключ и его продление

При установке ключ прописывается автоматически — отдельно вводить его не нужно. Продлить или заменить ключ можно в любой момент:

  • На работающем сайте — откройте страницу /license, вставьте новый ключ и подтвердите. Страница доступна даже когда сайт заблокирован из‑за лицензии, вход не требуется.
  • В админке — вкладка Лицензия (видна только суперадминистратору) показывает текущий статус и срок действия.

Ключ — длинная строка, начинающаяся с SC1.; копируйте его целиком. Если сайт пишет «Ключ не прошёл проверку подписи» — сверьте, что скопировали его без пропусков.

Что происходит при истечении

  • За 14 дней до конца срока статус меняется на «скоро истекает» — сайт и обновления работают как обычно, это напоминание вовремя продлить ключ.
  • После даты истечения сайт блокируется: посетители видят страницу с сообщением о лицензии, а вам остаётся доступна страница /license для ввода нового (продлённого) ключа — после активации сайт сразу возвращается к жизни.

Кроме того, CMS сверяется с лицензионным сервером каждые 15 минут. Если связи нет дольше ~2 дней, сайт блокируется со статусом «нет связи с сервером лицензий». Обычно это означает, что сервер лицензий недоступен из вашей сети — проверьте исходящие соединения.

Решения поставщика лицензии (смена тарифа, блокировка или снятие блокировки) доезжают быстрее: сервер лицензий стучится к копии сам, и она сверяется в ту же секунду. Пинок ничего не решает — он лишь повод сверитьcя, вердикт по-прежнему приезжает подписанным в ответе на запрос самой копии. Если копия в этот момент недоступна, решение применится очередной сверкой.

Тариф и количество копий

Лицензия выдаётся на тариф — он определяет, какие модули CMS вам доступны и на скольких серверах можно поднять копию сайта.

  • Модули вне тарифа помечены в Админка → Модули как «нет в тарифе» и не включаются. Расширили тариф — модули становятся доступны сами, ничего переустанавливать не нужно.
  • Если копий по лицензии больше разрешённого, лишние блокируются со статусом «превышен лимит копий». Перенесли сайт на другой сервер и старая копия занимает место — попросите поставщика «забыть» её.

Ограничение доступа к панели

Поставщик лицензии может временно закрыть доступ к админ-панели конкретной установки (например, при задолженности). В этом случае сайт, игровые сервисы и магазин продолжают работать, а при входе в админку показывается страница с причиной ограничения и просьбой связаться с поставщиком. После снятия ограничения панель открывается сама в течение нескольких минут — никаких действий с вашей стороны не требуется.

Перенос на другой сервер

Переезд сводится к трём вещам: .env + база данных + каталог storage.

На старом сервере:

  1. В админке откройте Настройки → Опасная зона и нажмите «Выгрузить настройки и секреты» — все пароли, ключи и токены сохранятся в файл ~/strangecraft-cms-secrets.txt и скачаются вам. Это ваша страховка на случай, если что‑то из .env потеряется.
  2. Скопируйте файл .env из каталога сайта.
  3. Сделайте резервную копию базы данных:
    • MySQL: mysqldump -u <пользователь> -p <имя_базы> > backup.sql;
    • SQLite: просто скопируйте файл database/database.sqlite.
  4. Скопируйте каталог storage/ целиком (скины, сборки лаунчера, загруженные картинки, логи).

На новом сервере:

  1. Установите CMS обычной командой установки (см. выше) — она подготовит окружение (nginx, PHP, cron, воркер очередей).

  2. Замените свежий .env вашим сохранённым, а каталог storage/ — вашей копией.

  3. Восстановите базу: MySQL — mysql -u <пользователь> -p <имя_базы> < backup.sql; SQLite — верните файл database/database.sqlite на место. Если адрес или пароль БД на новом сервере другие — поправьте их в .env.

  4. Верните права веб‑серверу и сбросьте кэш конфигурации (от root):

    chown -R www-data:www-data /путь/к/сайту
    cd /путь/к/сайту && sudo -u www-data php artisan config:clear
    
  5. Направьте домен (DNS A‑запись) на новый сервер.

Мастер /setup проходить заново не нужно — установка уже «завершена» внутри вашей базы данных.