Сначала запустите Fabric без необязательных модов и проверьте частное подключение, затем добавляйте серверную сборку. Так проще найти несовместимую зависимость, чем после переноса всего клиентского профиля в каталог сервера.
Пример рассчитан на новый хост Ubuntu 24.04, Minecraft Java Edition 1.21.1, Java 21, доступ sudo и архитектуру x86-64. Это намеренно выбранная версия для существующей сборки 1.21.1, а не последний выпуск Minecraft. Для 26.1 и новее нужна Java 25 и совместимые моды: Mojang изменил требование в выпуске 26.1. Команды с Java 21 для этой ветки нельзя переносить без изменений.
Согласуйте версии игры, Loader и Java#
Запишите версию Minecraft, Fabric Loader и launcher/installer, выбранные на официальной странице загрузки сервера. Ориентируйтесь на требования сборки, а не на самые свежие даты отдельных компонентов.
Версионная документация Fabric подтверждает Java 21 для этой ветки Minecraft. Установите среду из примера и создайте отдельную учётную запись на новом хосте:
sudo apt update
sudo apt install openjdk-21-jre-headless curl
sudo useradd --system --create-home --home-dir /srv/minecraft-fabric --shell /usr/sbin/nologin minecraft-fabric
sudo install -d -o minecraft-fabric -g minecraft-fabric /srv/minecraft-fabric/server
/usr/lib/jvm/java-21-openjdk-amd64/bin/java -version
Явный путь Java относится к пакету Ubuntu для x86-64. На другой архитектуре проверьте фактическое расположение. Ниже для heap выделяется 2 ГиБ, но машине также нужна память для нативных выделений Java и ОС. Сложной сборке этой начальной величины может не хватить.
Скачайте выбранный официальный launcher#
На странице Fabric выберите Minecraft 1.21.1, совместимый Loader и версию launcher. Скопируйте сформированный адрес загрузки executable server. Вместо заглушки ниже укажите именно этот HTTPS-адрес. Клиентский installer и случайное зеркало здесь не подходят.
FABRIC_URL='PASTE_SELECTED_OFFICIAL_HTTPS_URL'
sudo -u minecraft-fabric curl --fail --location --proto '=https' --proto-redir '=https' "$FABRIC_URL" --output /srv/minecraft-fabric/server/fabric-server.jar
sudo -u minecraft-fabric sh -c 'cd /srv/minecraft-fabric/server && /usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xms1G -Xmx2G -jar fabric-server.jar nogui'
При первом запуске executable launcher получает выбранные компоненты, поэтому требуется исходящий доступ в интернет. Сохраните загруженный файл вместе с записью версий. Первый запуск создаст файлы и остановится на EULA. Прочитайте соглашение по ссылке в eula.txt; меняйте eula=false на eula=true только при согласии с ним.
На остановленном сервере откройте server.properties через sudoedit. Установите значения, не создавая повторяющихся ключей:
server-port=25565
level-name=fabric-smoke
server-ip=
online-mode=true
white-list=true
enforce-whitelist=true
enable-rcon=false
enable-query=false
fabric-smoke — временный проверочный мир, а не итоговый мир сборки с изменением генерации. Аутентификацию оставьте включённой. Пустой server-ip использует доступные интерфейсы хоста, поэтому ограничьте доступ firewall до запуска. RCON и query остаются выключенными: этой установке они не нужны.
Проверьте вход до установки модов#
Повторите ту же команду Java из каталога сервера, оставив процесс в терминале. Дождитесь завершения запуска. В серверной консоли выполните команду ниже, заменив пример своим именем Java-аккаунта, и подключитесь клиентом подходящей версии:
whitelist add YourJavaName
На этапе подготовки используйте частный адрес сервера. Убедившись, что загрузился нужный мир, введите в консоли stop и дождитесь завершения процесса. Не запускайте службу, пока этот экземпляр ещё работает.
Теперь положите совместимые серверные моды в /srv/minecraft-fabric/server/mods и передайте файлы пользователю minecraft-fabric. Установите Fabric API, если его требуют выбранные моды: это отдельный мод, а не сам Fabric Loader. Для каждого файла проверьте версию игры, загрузчик, зависимости и сторону установки. Моды рендеринга, меню и другие client-only компоненты обычно остаются на клиентах. Изменяющие игровой контент моды могут требовать совпадающей установки с обеих сторон; у server-only модов условия другие.
Работа профиля в одиночной игре не доказывает совместимость с dedicated server. Такое различие видно в обсуждении поддержки Fabric. Промежуточные проверки модов выполняйте только в пробном fabric-smoke или отдельной тестовой копии. Добавляйте небольшие группы модов и после каждого изменения читайте logs/latest.log, не отключая проверку зависимостей вслепую.
После проверки полного набора модов, перед созданием настоящего мира, измените level-name на новое, ещё не использованное имя, например friends. Итоговый мир создастся с полным набором модов; для сборки с изменённой генерацией не используйте уже созданные ванильные чанки. Сохраните fabric-smoke отдельно, не удаляя другие сохранения.
Передайте запуск systemd#
Создайте /etc/systemd/system/minecraft-fabric.service через sudoedit:
[Unit]
Description=Minecraft Fabric server
Wants=network-online.target
After=network-online.target
[Service]
User=minecraft-fabric
Group=minecraft-fabric
WorkingDirectory=/srv/minecraft-fabric/server
Environment=HOME=/srv/minecraft-fabric
ExecStart=/usr/lib/jvm/java-21-openjdk-amd64/bin/java -Xms1G -Xmx2G -jar fabric-server.jar nogui
KillSignal=SIGINT
TimeoutStopSec=180
Restart=on-failure
RestartSec=10
UMask=0027
[Install]
WantedBy=multi-user.target
Рабочий каталог определяет, откуда читаются настройки и куда записывается мир. SIGINT позволяет выполнить штатное завершение. Проверяйте журнал сохранения, особенно с тяжёлыми модами: истёкший тайм-аут с принудительным завершением не означает успешное сохранение.
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft-fabric
sudo journalctl -u minecraft-fabric -n 100 --no-pager
sudo ss -ltnp 'sport = :25565'
Откройте нужный доступ и проверьте сохранение#
Игровое соединение Java Edition здесь использует TCP 25565. Если действующий firewall — UFW, сначала разрешите только тестировщика. Замените адрес из документационного диапазона его настоящим публичным IP:
sudo ufw allow from 198.51.100.24 to any port 25565 proto tcp
Аналогичное правило добавьте в firewall провайдера. Не включайте UFW удалённо без сохранения SSH-доступа. Домашнему роутеру дополнительно нужен проброс TCP на этот хост и доступный публичный адрес; при CGNAT потребуется другая схема подключения. Открытие RCON эту проблему не решает.
Зайдите подходящей сборкой клиента, сделайте узнаваемое изменение, отключитесь и выполните sudo systemctl restart minecraft-fabric. Подключитесь снова и убедитесь, что изменение осталось. При ошибке запуска ищите первую содержательную причину: неподходящую Java, отсутствующую зависимость, несовместимый мод или клиентский класс. Активная служба сама по себе не доказывает работоспособность мира.
Перед обновлением корректно остановите процесс и скопируйте весь серверный каталог вместе с unit-файлом и записью версий. Держите копию вне этого диска и отдельно проверьте восстановление. После изменения версии модифицированного мира откат без исходного состояния может оказаться невозможен.




