TeaHost
Rustrustcarbonплагиныпроизводительность5 мин. чтения

Установка Carbon на сервер Rust

Установка Carbon на Rust-сервер: чем он отличается от Oxide, распаковка сборки, запуск через carbon.sh, команды c.version и перенос плагинов

Кратко

Carbon — замена Oxide для Rust с более быстрой загрузкой плагинов и совместимостью с большинством Oxide-плагинов. Установка на Linux: остановить сервер, удалить Oxide и восстановить файлы через SteamCMD validate, распаковать Production-сборку Carbon в корень сервера и запускать его через carbon.sh. Конфиги плагинов переносятся в carbon/configs, проверка — c.version.

Установка Carbon на Rust имеет смысл в одном конкретном случае: когда сервер упирается в процессор, а Oxide тратит заметную часть времени на компиляцию и вызовы хуков. Carbon — это форк идеи Oxide, переписанный с упором на скорость: своя система хуков, асинхронная компиляция плагинов и, что важнее всего, отсутствие правки игровых сборок.

Ниже — как поставить, чем он отличается на практике и что произойдёт с вашими текущими плагинами.

Чем Carbon отличается от Oxide

Главное техническое отличие — способ внедрения. Oxide перезаписывает Assembly-CSharp.dll и другие библиотеки в RustDedicated_Data/Managed. Поэтому любой патч Rust затирает модификацию, и её приходится ставить заново.

Carbon использует Doorstop: библиотеку, которая подключается к процессу при запуске и загружает свой код в рантайме. Игровые файлы остаются нетронутыми. Практический эффект — после обновления Rust Carbon чаще всего продолжает работать без переустановки, хотя после крупных месячных патчей обновлять его всё равно приходится.

Что ещё заметно в работе:

  • Компиляция плагинов идёт параллельно, старт сервера с сотней плагинов ускоряется в разы. На большом x100 разница между 4 минутами и 50 секундами.
  • Меньше накладных расходов на хуки: Carbon подключает только те, которые реально используются загруженными плагинами.
  • Есть встроенный профайлер (c.profile), которого у Oxide нет.
  • Совместимость с oxide-плагинами очень высокая, но не стопроцентная. Плагины, лезущие в внутренности Oxide напрямую, могут не завестись.

Если вы только запускаете первый сервер, начните всё-таки с Oxide: по нему больше готовых инструкций и конфигов. Carbon — осознанный шаг для тех, у кого уже есть нагрузка.

Установка Carbon на Linux-сервере Rust

Остановите сервер и уберите Oxide, если он стоял. Два фреймворка одновременно жить не могут — они дерутся за одни и те же точки входа. Папку с плагинами перед удалением скопируйте, она пригодится:

bash
cd /home/container
cp -r oxide oxide_backup
rm -rf oxide

Потом обязательно восстановите оригинальные сборки через SteamCMD, иначе пропатченный Oxide-код останется в Managed:

bash
steamcmd +force_install_dir /home/container +login anonymous +app_update 258550 validate +quit

Теперь сам Carbon:

bash
cd /home/container
wget -O carbon.tar.gz "https://github.com/CarbonCommunity/Carbon/releases/download/production_build/Carbon.Linux.Release.tar.gz"
tar -xzf carbon.tar.gz
rm carbon.tar.gz
chmod +x carbon.sh

Ссылки на все сборки для Windows и Linux собраны на странице Getting Started в документации Carbon. В корне появятся carbon.sh, папка carbon/ и библиотеки Doorstop. Запускать сервер теперь нужно через carbon.sh, а не напрямую через RustDedicated:

bash
./carbon.sh -batchmode +server.identity "myserver" +server.port 28015

Скрипт выставляет переменные окружения DOORSTOP_ENABLED=1 и LD_PRELOAD, а дальше передаёт все аргументы игре. Если запустить бинарник напрямую, сервер поднимется чистым, без Carbon, и вы полчаса будете думать, почему плагины не грузятся.

На панельном хостинге строка запуска задаётся во вкладке Startup — там нужно заменить исполняемый файл на ./carbon.sh, оставив остальные параметры как были.

Проверка и первые команды

После старта в консоли:

код
c.version
c.plugins
c.find c.

c.version вернёт версию Carbon и ветку сборки. c.plugins покажет список загруженных плагинов с временем компиляции каждого — удобно сразу увидеть, кто тормозит старт.

Основной набор команд повторяет логику Oxide, только с префиксом c.:

код
c.reload PluginName
c.load PluginName
c.unload PluginName
c.grant group admin *
c.usergroup add 76561198000000000 admin
c.show groups

Команды с префиксом o. тоже работают — Carbon держит алиасы для совместимости со скриптами и панелями, привыкшими к Oxide.

Структура папок

код
carbon/
  plugins/     — .cs плагины
  configs/     — конфиги плагинов (обратите внимание: configs, а не config)
  data/        — данные
  lang/        — локализация
  logs/        — логи
  extensions/  — расширения
  harmony/     — harmony-моды

Разница в имени папки с конфигами — самая частая причина «плагин не видит мои настройки» при переезде с Oxide. Переносить нужно так:

bash
cp -r oxide_backup/plugins/*  carbon/plugins/
cp -r oxide_backup/config/*   carbon/configs/
cp -r oxide_backup/data/*     carbon/data/
cp -r oxide_backup/lang/*     carbon/lang/

Права и группы лежат в data/, поэтому вся выданная админка и привилегии переезжают вместе с файлами. Про сами файлы плагинов — в заметке про ручную установку.

Ветки сборок

Carbon выпускается в нескольких вариантах (по репозиторию Carbon на GitHub):

СборкаКак обновляетсяДля чего
ProductionОколо двух раз в месяц плюс срочные хотфиксыБоевой сервер — берите её
EdgeПри каждом коммите в основную веткуПроверка свежих исправлений, на проде делать нечего
ExperimentalВручную, нечастоЭкспериментальные функции, которые могут и не попасть в основную ветку

Отдельно есть варианты Minimal и Release: Minimal без встроенных модулей вроде админ-панели, Release — полный. Для большинства подходит Release.

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

Carbon приносит с собой несколько готовых модулей, которые в Oxide пришлось бы ставить плагинами:

код
c.gui              — админ-меню прямо в игре
c.profile start    — профайлер плагинов
c.find <строка>    — поиск по консольным командам и переменным

Профайлер особенно полезен: он показывает, сколько миллисекунд каждый плагин тратит на хуки. Если сервер лагает, а причина непонятна, запуск c.profile start, пара минут игры и c.profile stop дают список виновников по именам.

Модули включаются и выключаются в carbon/config.json — там же настраивается уровень логирования и поведение компилятора.

Что ломается чаще всего

Сервер запустился, но c.version не отвечает. Запуск идёт мимо carbon.sh. Проверьте строку старта.

Плагин компилируется с ошибкой The type or namespace name Oxide could not be found. Плагин слишком старый или использует внутренние API Oxide. Ищите обновлённую версию, у популярных плагинов авторы держат совместимость с обоими фреймворками.

После патча Rust сервер падает на старте. Обновите Carbon до свежей Production-сборки — она совместима с публичной веткой Rust; если исправления ещё нет в Production, временно попробуйте Edge.

Права слетели после переезда. Не скопирована папка data/ целиком, конкретно файл с группами и разрешениями.

Итог

Порядок такой: остановить сервер, снести Oxide и восстановить сборки через validate, распаковать Carbon, поменять команду запуска на ./carbon.sh, проверить c.version, перенести плагины и конфиги с учётом папки configs. Полчаса работы, дальше сервер живёт как раньше, только быстрее стартует.

Следующий шаг после установки фреймворка — привести в порядок server.cfg и рейты. А если нужна машина, которая вытянет x100 с полусотней плагинов, — подходящие конфигурации тут.