сделано всё благодаря статьям от гмд -
==================================
==================================
АРХИВ ФАЙЛОВ -
deploy.rar (23,0 КБ)
==================================
==================================
!!!ПРИМЕЧАНИЕ: ПОДОЙДЁТ ТОЛЬКО ДЛЯ ВЛАДЕЛЬЦЕВ VDS!!!
По сути - это склейка кода минификации с ускорением загрузки (ака аддоны в единой папке)
Чем хорош скрипт - то что он автоматический деплой в прод сервер делает, в случае изменений на дев сервере (благодаря хэшу)!
всё делал для работы и автоматизации скрипта на панели птеродактиль.
можно поменять пути для дев/прод серверов чтоб делалось не автоматически а вручную по команде. Но дальнейшая инструкция именно для VDS + Pterodactyl
Что получается в итоге: скорость загрузки сервера за считанные секунды (особенно заметно как в моём случае, если у вас “толстый” сервер типа SWRP) а так же минификация кода в 1 строку и небольшим изменениям чтоб сбросить вес луа файлов.
================================================================
Для начала создаём второй сервер в панели, на котором будет оригинал код аддонов + гейммода
Prod - это ваш основной сервер который всегда будет запущен
dev - для редактирования кода аддонов/гейммода, который автоматом будет деплоится на прод.
Далее открываем Filezilla или другой клиент, идём по пути /var/lib/pterodactyl/volumes
и смотрим где какой айди сервера, не перепутайте где у вас прод а где дев. Открывайте любой из этих волюмов и по папкам поймёте где у вас что.
Теперь нужно закачать луа Бинарник для вашей убунту и закинуть его в папку lua_bin около волюмов. Должно быть так: /var/lib/pterodactyl/lua_bin
Где взять луа - переходим сюда https://github.com/dyne/luabinaries/releases/download/6756718/lua55
Скачается lua55. Переименовываем его просто в lua и закидываем в папку lua_bin.
Должно получится так:
На prod сервере переходим в вебфтп (файлы) и прямо в корне создаём папку dev_server.
Теперь переходим в админ панель птеродактиля, раздел mounts и создаём 2 новых маунта
Первый - это будет наша магическая связь между девом и продом
Нажимает Create new.
В Name пишем gmod_deploy
В source пишем путь к dev серверу вплоть до garrysmod. Должно получится так:
/var/lib/pterodactyl/volumes/cf90cc34-a597-4983-a8ec-12345678/garrysmod
В Target пишем путь до dev_server продакшн сервера, то есть так: /home/container/dev_server
2 галочки ниже ставим на False
И нажимаем создать
Теперь похожую процедуру делаем для второго маунта:
Называем его lua
В Source - /var/lib/pterodactyl/lua_bin
В Target - /home/container/lua_bin (её создавать не надо, она появится сама)
2 галочки ниже ставим на False
После как создали маунты открываем первый gmod_deploy (тыкаем просто на его название), справа будут Eggs и Nodes. В Eggs указываем Garrys mod, в Nodes - ноду где ваш прод и дев. Повторяем тоже самое для маунта lua.
Должно выйти так:
ПРОВЕРЯЕМ ТО ЧТО МАУНТ ПРАВИЛЬНО СОЗДАЛСЯ , С ПРАВИЛЬНЫМИ ПУТЯМИ.
Переходим в админ панели в настройки вашего прод сервера и открываем раздел Mounts
Вы должны увидеть новые созданные шагом выше два маунта и нажать справа на плюсик (на оба)
ЕСЛИ МАУНТОВ НЕ ВИДНО
Может быть так что они не появились. не писяем.
Как решать:
открываем клиент через который вы конектитесь к консоли vds машины.
вводим команду: systemctl restart wings
Возвращаемся в браузер, обновляем вкладку и проверяем не появились ли на вкладке mounts прод сервера наши два маунта. Если да - отлично.
==============================
ЕСЛИ всё ещё не появились:
будем тогда редачить config.yml.
прописываем nano /etc/pterodactyl/config.yml
мотаем вниз до allowed_mounts: [ ]
Теперь нужно внести вместо скобок наши два маунта из Source:
allowed_mounts:
- /var/lib/pterodactyl/lua_bin
- /var/lib/pterodactyl/volumes/cf90cc34-a597-4983-a8ec-123456788/garrysmod
Как должно выглядеть в коде:
Сохраняем, и снова перезапускаем Wings: systemctl restart wings
После этого 100% появятся маунты.
Тыкаем на каждый маунт справой стороны на зелёный плюсик. Должен изменится статус на Mounted:
Теперь переходим на prod сервер. Создаём в корне папку deploy, в неё выгружаем 3 файла из архива.
Первый файл при старте будет запускаться именно start_server.sh
Открываем его и в DEV_MODE_DIR заменяем папку гейммода, если у вас другая. например так: DEV_MODE_DIR=“/home/container/dev_server/gamemodes/darkrp”
Сохраняем, выходим.
Открываем deploy.sh
Повторяем процедуру по гейммоду на строке GAMEMODE_NAME=“starwarsrp”
В файле есть исключения, так как минификатор может похерить немного код например для talk-modes аддона или подключение к бд - GM_EXCLUDE_REL=“gamemode/config/sv_mysql.lua”
Исключение аддонов на строке 163
ВАЖНО: тут именно названия папок. Это значит что внесённые в эту таблицу название папки аддона - не будет минифицироваться и складываться в общую папку аддонов (superaddon). Для примера я там уже ввёл некоторые аддоны.
Исключение касается так же xeon-drm и файла gluapackso.vdf, если у вас аддоны от билли или его глуа пак.
Процесс сжатия в 1 папку работает только для папки аддонов. Гейммод пропускает эту часть и на него работает только минификация.
В скрипте так же предусмотрено случай, если у вас в двух разных аддонах есть одинаковые названия файлов - один из них будет переименован с префиксом _conflictminify.
В скрипте так же предусмотрен бэкап перед каждым новым деплоем. То есть отредачили dev - сделали рестарт - скрипт снова пережимает все файлы на прод и минифицирует их, и так же создаёт бэкап прошлого деплоя. Для аддонов - это прямо в папке garrysmod, для гейммода - в папке gamemodes
Всё будет логироваться, это будет описано дальше.
Все исключения и изменения ввели? Идём дальше
Открываем снова админ панель прод сервера и раздел startup. Вставляем В САМОЕ НАЧАЛО запуск нашего sh файла: bash /home/container/deploy/start_server.sh
Должно выйти так:
Теперь убираем все аддоны с прод сервера (если они там были)
Вываливаем гейммод и аддоны как обычно на дев сервер.
Всё готово, можно запускать и проверять!
Стартуем наш prod сервер и смотрим в консоль:

В моём случае я не делал правок на деве, потому процесс сжатия и минификации пропускается.
Результат:
Все аддоны в папке superaddons, кроме тех что внесли в исключения.
И все файлы внутри superaddons а так же гейммода - минифицированны!
По поводу логирования:
файл лога создаётся прямо в корне. Туда пишется только ошибки или то что было переименовано из-за одинакового названия файлов. Разобраться легко.
Благодаря этому теперь сервер, при 200 аддонов в коллекции стим и 50+ на хосте - запускается за 17 секунд, вместо ~55 без сжатия в 1 папку аддонов.
ВОЗМОЖНЫЕ ПРОБЛЕМЫ И ИХ РЕШЕНИЕ
Пока что я сталкивался только с 3мя проблемами:
-
Первая уже была описана про маунты, прямо в инструкции спойлер
Решение там же -
Если при запуске скрипт деплоя ложится с грешками на lua, типо Lua бинар не найден:
значит вы используете не тот Lua файл либо он повреждён либо ещё что-то (тот который в /var/lib/pterodactyl/lua_bin)
Перезалейте, используйте версию 5.4 и выше обязательно!
Решение - берите луа файл из статьи. -
Тоже касается бинара Lua, ошибка GLIBC_2.38’ not found
Всё так же про Lua файл, только у вас либо какая-то модифицированная версия этого луа файла, либо версия старая. Например 5.1 и 5.3 не подходят, а 5.5 подходит
Решение - берите луа файл из статьи. -
Жалоба Lua, но конкретно на права.
Тут всё просто, нужно выдать все права самому бинарнику луа.
Решение:
Открываем консоль нашей VDS
пишем cd /var/lib/pterodactyl/lua_bin
chown pterodactyl:pterodactyl lua
chmod +x lua
На всякий случай ещё systemctl restart wings











