FiveM сервер git: что коммитить, .gitignore и git pull развёртывания

Поместите ваш FiveM сервер под git безопасным путём: что коммитить, .gitignore для кеша и txData, держите ключи вне с secrets.cfg, приватные repos и git pull развёртывания.

Сервер который живёт только на одном диске не имеет истории: плохое редактирование в пятницу ночью не может быть отменено, и движение машин означает копирование папок вручную. Помещение это под git исправляет оба. Это руководство показывает что коммитить, .gitignore чтобы использовать, как держать секреты вне, и как развертывать с git pull.

Что входит в репозиторий

Коммитьте вещи которые вы пишите или конфигурируете:

  • Ваши ресурсы (папка resources/, включая конфиг и SQL файлы).
  • A server.cfg без секретов.
  • Маленькие файлы помощников, такие как README с порядком запуска.

Не коммитьте сгенерированные или приватные файлы:

  • cache/, которые FiveM пересоздаёт. Смотрите очистить кеш FiveM.
  • Папка данных txAdmin (txData), с её настройками, админ аккаунтами и логами.
  • Секреты: ключ лицензии, пароль базы данных и API ключи.
  • Логи, crash дампы и node_modules.

Начальный .gitignore

В корне репозитория (папка данных сервера которая содержит resources/ и server.cfg):

text
cache/
txData/
*.log
*.dmp
node_modules/
secrets.cfg
.env

Если вы версионируете целую папку txAdmin с намерением, удалите txData/ из списка, но держите её приватной и вне любого разделённого репозитория. Большие бинарные активы (потоковые машины, MLOs) делают репозиторий большим; рассмотрите должны ли они быть в git вообще, или держаны в отдельном хранилище.

Держите ключи вне server.cfg

Это часть которая идёт неправильно чаще всего. Эти строки это секреты:

cfg
sv_licenseKey cfxk_xxxxxxxxxxxx
set mysql_connection_string "mysql://user:password@localhost/fivem"
set steam_webApiKey "xxxxxxxx"
rcon_password "xxxxxxxx"

Переместите их в отдельный файл, secrets.cfg, который находится в .gitignore:

cfg
# secrets.cfg  (never committed)
sv_licenseKey cfxk_xxxxxxxxxxxx
set mysql_connection_string "mysql://user:password@localhost/fivem"
set steam_webApiKey "xxxxxxxx"

И загрузьте его в вершину коммитёного server.cfg:

cfg
exec secrets.cfg

endpoint_add_tcp "0.0.0.0:30120"
endpoint_add_udp "0.0.0.0:30120"
sv_hostname "My Server"

ensure oxmysql
ensure ox_lib

Коммитьте secrets.cfg.example с пустыми значениями так что следующий человек знает что заполнить. Смотрите server.cfg объяснено для самих настроек.

Внимание: если ключ был когда-либо коммичен, удаление это в позднейшем коммите недостаточно. Это всё ещё в истории. Генерируйте новый ключ или пароль и обращайтесь со старым как с утечкой.

Создайте репозиторий

bash
cd /path/to/server-data
git init
git add .
git status

Читайте список git status перед тем как вы коммитите и проверьте что ничто из "не коммитить" список поэтапное. Затем:

bash
git commit -m "Initial server"
git branch -M main
git remote add origin [email protected]:youruser/your-server.git
git push -u origin main

Используйте приватный репозиторий. Платные ресурсы лицензированы вам, и помещение их в публичный репозиторий это перераспределение, даже если код зашифрован. Смотрите escrow отсутствие entitlement для того как зашифрованные активы привязаны к вашему аккаунту.

Развёртывание с git pull

На машине которая запускает сервер, клонируйте один раз и пулл потом:

bash
git clone [email protected]:youruser/your-server.git server-data
cd server-data
# create secrets.cfg on this machine (not from git)

Чтобы обновить после пуша из вашего разработка ПК:

bash
cd server-data
git pull

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

text
refresh
restart my_resource

Если server.cfg или порядок запуска изменился, расписание полной перезагрузки (смотрите расписание перезагрузки). Не git pull в середине пиковых часов без плана, так как много ресурсов перезапускаются одновременно могут выстрелить сервер.

Для аутентификации на приватном репозитории, используйте SSH развёртывание ключ с доступом чтения только, или токен личного доступа. Никогда не вводите ваш собственный пароль в скрипты.

Простая привычка ветви

Держите main как что живо. Сделайте изменения на ветви, тест на локальном или промежуточном сервере, затем слияние:

bash
git checkout -b new-police-job
# edit, test
git commit -am "Add police job"
git checkout main
git merge new-police-job
git push

Когда что-то ломается после пуша, git log показывает что изменилось и git revert <commit> отменяет это без потери истории. Git не это резервная копия базы данных, хотя: держите реальные резервные копии также, как в резервное копирование вашего FiveM сервера.

Контрольный список

Симптом Решение
Ключ лицензии в репозитории Переместите в secrets.cfg, игнорируйте это, и ротируйте ключ
cache/ или txData коммичены Добавьте в .gitignore, затем git rm -r --cached cache txData
Сервер запускается без ключа после клонирования Создайте secrets.cfg на сервере; он не в git
Новый ресурс не найден после git pull Запустите refresh, затем ensure или restart его
Репозиторий очень большой Держите большие потоковые активы вне git или в их собственном хранилище
Нужно отменить изменение git revert <commit> и пулл на сервере

Короткие ответы

Должен ли я поместить весь FiveM сервер в git?

Коммитьте ваши ресурсы и чистый server.cfg. Оставьте вне cache/, txAdmin папку txData, логи и что-либо секретное. Точка это репозиторий которые вы можете клонировать на свежую машину и запустить.

Как я держу мой ключ лицензии вне git?

Переместите sv_licenseKey, строки базы данных и API ключи в secrets.cfg который находится в .gitignore, и загрузьте его из server.cfg с exec secrets.cfg.

Безопасно ли использовать публичный репозиторий?

Не для живого сервера. Даже без секретов, репозиторий держит платные скрипты которые вы не разрешены перераспределять. Используйте приватный репозиторий.

Скрипты без этой проблемы

Shop CreatorМагазин меньше чем за минуту — владельцы, сотрудники, сейфы и ограбления в комплекте.Смотреть скрипт →Item Creator V2Создавайте используемые предметы с анимациями, пропами, эффектами и не только — без кода.Смотреть скрипт →Quest CreatorВизуальный редактор квестов и диалогов с NPC — узел за узлом прямо в игре.Смотреть скрипт →

Читайте также