Гид по технологиям

Установка и настройка Spigot-сервера на Ubuntu 20.04

• 9 min read • DevOps • Обновлено 24 Nov 2025
Spigot на Ubuntu 20.04 — установка и настройка
Spigot на Ubuntu 20.04 — установка и настройка

Предисловия

Spigot — это модифицированное серверное ПО для Minecraft на базе CraftBukkit. Оно добавляет оптимизации производительности, дополнительные параметры конфигурации и функции, при этом оставаясь совместимым с большинством плагинов.

Определения в одну строку:

  • Spigot: серверная сборка Minecraft с оптимизациями и API для плагинов.
  • BuildTools.jar: утилита от разработчиков Spigot для сборки серверного JAR-файла из исходников.

В этом руководстве шаги протестированы для Ubuntu 20.04. Многие команды применимы и к другим версиям Debian/Ubuntu, но некоторые пакеты и команды могут отличаться.

Что потребуется

  • Сервер с Ubuntu 20.04, минимум 4 ГБ ОЗУ и 2 CPU (рекомендуется больше для больших миров и плагинов).
  • Неразрешённый root-пользователь с sudo-привилегиями.
  • Обновлённая система и базовые утилиты.

Проверьте и обновите систему:

$ sudo apt update && sudo apt upgrade

Установите необходимые пакеты:

$ sudo apt install wget apt-transport-https gnupg nano screen

Важно: используйте отдельного пользователя для запуска игрового сервера — это снижает риск компрометации системы.

Содержание (быстрая навигация)

  • Шаги 1–4: подготовка системы, установка Java/Git, создание пользователя, сборка Spigot
  • Шаг 5: запуск и первичная настройка
  • Шаг 6: настройка systemd-сервиса
  • Шаги 7–9: подключение игроков, свойства сервера, плагины
  • Шаг 10: обновление Spigot
  • Дополнительно: резервное копирование, отладка, безопасность, оптимизация, чек-листы, критерии приёмки

Шаг 1 — Настройка брандмауэра (ufw)

Ubuntu по умолчанию предоставляет ufw (Uncomplicated Firewall). Сначала проверьте состояние:

$ sudo ufw status

Ожидаемый начальный вывод:

Status: inactive

Разрешите SSH, чтобы не потерять доступ при включении брандмауэра:

$ sudo ufw allow OpenSSH

Разрешите порт для Minecraft (по умолчанию 25565):

$ sudo ufw allow 25565

Включите брандмауэр:

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Проверьте статус ещё раз:

$ sudo ufw status

Пример вывода:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
25565                      ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
25565 (v6)                 ALLOW       Anywhere (v6)

Важно: если вы меняете порт, не забудьте обновить правила ufw и роутер/нат.

Шаг 2 — Установка Java и Git

Spigot требует Java и Git. Для Ubuntu 20.04 используйте OpenJDK 17, доступный в репозиториях.

Установите Java (JRE без GUI):

$ sudo apt install openjdk-17-jre-headless

Проверьте версию Java:

$ java --version
openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.1+12-Ubuntu-120.04, mixed mode, sharing)

Установите Git:

$ sudo apt install git

Советы: если у вас специфические требования к версиям Minecraft, проверьте совместимость версии Java с нужной версией Spigot.

Шаг 3 — Создание пользователя Minecraft

Создайте отдельного пользователя для запуска сервера:

$ sudo adduser minecraft

Переключитесь на него:

$ sudo su - minecraft

Это уменьшит привилегии процесса сервера и ограничит доступ к системным файлам.

Шаг 4 — Скачивание и сборка Spigot (BuildTools)

Мы соберём Spigot с помощью BuildTools.jar.

Перейдите в домашнюю директорию пользователя minecraft:

minecraft:$ cd ~

Создайте папку для сборки:

minecraft:$ mkdir buildtools && cd buildtools

Скачайте BuildTools.jar (последняя стабильная сборка):

minecraft:$ wget -O BuildTools.jar  https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Соберите Spigot (опция –rev позволяет указать версию; default — latest):

minecraft:$ java -jar BuildTools.jar --rev latest

Сборка может занять продолжительное время в зависимости от CPU и сети. После завершения посмотрите список файлов:

minecraft:$ ls 
apache-maven-3.6.0  BuildData  BuildTools.jar  BuildTools.log.txt  Bukkit  CraftBukkit  Spigot  spigot-1.18.1.jar  work

В вашем выводе название spigot-JAR-файла может отличаться (например, spigot-1.18.1.jar). Запомните его имя.

Создайте папку сервера и переместите spigot.jar туда:

minecraft:$ cd ~ && mkdir server && cd server
minecraft:$ mv ~/buildtools/spigot-1.18.1.jar ~/server/spigot.jar

Примечание: при обновлении версии повторите процесс сборки и замените spigot.jar, предварительно остановив сервер и сделав резервную копию.

Шаг 5 — Запуск Spigot (первый запуск и EULA)

Создаём скрипт старта с параметрами JVM для оптимизации.

Откройте файл запуска:

minecraft:$ sudo nano spigotstart.sh

Вставьте этот скрипт (сохраняйте как есть; при необходимости откорректируйте -Xms/-Xmx под объём памяти сервера):

#!/bin/sh

java -Xms3G -Xmx3G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar spigot.jar nogui

Пояснение: флаги G1GC и параметры предназначены для снижения пауз сборки мусора и оптимизации распределения кучи при больших нагрузках. Измените -Xms/-Xmx в соответствии с доступной памятью: оставьте минимум 1 ГБ системе.

Сделайте файл исполняемым:

minecraft:$ chmod +x spigotstart.sh

Запустите сервер в первый раз:

minecraft:$ ./spigotstart.sh

При первом запуске сервер создаст файлы конфигурации и завершится с сообщением о необходимости принять EULA:

[14:14:21] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Откройте файл eula.txt и измените eula=false на eula=true:

minecraft:$ nano eula.txt
# ...
eula=true

Сохраните и выйдите, затем продолжите настройку запуска как службы.

Шаг 6 — Настройка Spigot как systemd-сервиса

Чтобы сервер автоматически запускался при старте системы и работал в фоне, создайте systemd-сервис.

Выйдите из-под пользователя minecraft:

minecraft:$ exit

Создайте файл сервиса:

$ sudo nano /etc/systemd/system/spigot.service

Вставьте содержимое:

[Unit]
Description=SpigotMC
After=network.target

[Service]
Type=forking
User=minecraft
Group=minecraft
ExecStart=/usr/bin/screen -d -m -S minecraft /home/minecraft/server/spigotstart.sh
ExecStop=/usr/bin/screen -S minecraft -p 0 -X stuff "stop$(printf \\\\r)"
WorkingDirectory=/home/minecraft/server

[Install]
WantedBy=multi-user.target

Примечание: в ExecStop используем последовательность для отправки команды “stop” в сессию screen. Если вы предпочитаете tmux или systemd-nspawn, скорректируйте ExecStart/ExecStop.

Примените изменения systemd и запустите сервис:

$ sudo systemctl daemon-reload
$ sudo systemctl enable spigot
$ sudo systemctl start spigot
$ sudo systemctl status spigot

Пример вывода статуса показывает, что сервис запущен и что Java-процесс работает под пользователем minecraft.

Важно: для отладки сервисов используйте journalctl -u spigot –since “1 hour ago”.

Шаг 7 — Подключение к серверу Minecraft (клиент)

Запустите Minecraft и выполните следующие действия:

  • Нажмите Multiplayer.
  • Нажмите Add Server.
  • Введите имя и публичный IP адрес или домен сервера, порт по умолчанию 25565.
  • Нажмите Done, затем выберите сервер и Join Server.

Изображения ниже показывают последовательность действий в клиенте.

Изображение: логотип Minecraft, экран запуска игры

Предупреждение мультиплеера Minecraft, опция «Не показывать снова»

Добавление сервера в Minecraft — экран Add Server

Список серверов Minecraft — ваш сервер в списке

Игровой процесс при подключении к серверу

ALT-тексты изображений переведены и описывают назначение каждого рисунка.

Шаг 8 — Настройка server.properties

Файл /home/minecraft/server/server.properties содержит базовые параметры сервера. После изменения параметров перезапустите сервис.

$ sudo systemctl restart spigot

Некоторые важные параметры:

  • enable-command-block: включает командные блоки (true/false).
enable-command-block=false
  • gamemode: режим игры (survival, creative, adventure, spectator или 0–3).
gamemode=survival
  • difficulty: сложность (peaceful, easy, normal, hard или 0–3).
difficulty=easy
  • motd: короткое сообщение сервера (макс. 59 символов в старых версиях клиента).
motd=A Minecraft Server
  • pvp: включает PvP (true/false).
pvp=true
  • server-port: порт, на который слушает сервер (по умолчанию 25565).
server-port=25565

При изменении порта не забудьте обновить ufw/маршрутизатор.

Больше параметров и их значений см. в официальной вики Minecraft.

Шаг 9 — Установка плагинов

Плагины можно брать с ресурсов Spigot или Bukkit. Из-за ограничений скачивания с Spigot иногда требуется вручную загрузить JAR и загрузить на сервер через SCP/SFTP.

Если плагин доступен через прямую ссылку (Bukkit), можно скачать на сервер командой:

$ sudo wget -P /home/minecraft/server/plugins/ --content-disposition 

Пример (WorldEdit через dev.bukkit.org):

$ sudo wget -P /home/minecraft/server/plugins --content-disposition https://dev.bukkit.org/projects/worldedit/files/latest

После копирования плагина перезапустите сервис или перезагрузите плагины в консоли сервера командой /reload (reload может вызвать проблемы у некоторых плагинов — рекомендуем перезапуск сервера).

$ sudo systemctl restart spigot

Рекомендации по плагинам:

  • Проверяйте совместимость плагина с версией Spigot.
  • Читайте changelog и отзывы.
  • Перед установкой на рабочем сервере тестируйте на отдельной копии мира.

Шаг 10 — Обновление Spigot

Чтобы обновить сервер до новой версии Spigot:

  1. Сохраните резервные копии server.jar, папки world*, plugins/ и config.yml.
  2. Остановите сервис: sudo systemctl stop spigot
  3. Повторите шаг 4: скачайте свежий BuildTools.jar и выполните сборку для нужной версии (–rev <версия>).
  4. Замените spigot.jar и запустите сервер.

Важно: при переходе между мажорными версиями Minecraft (например, 1.17 → 1.18) плагины и миры могут требовать миграции. Тестируйте обновление на копии мира.

Резервное копирование и восстановление (SOP)

Минимальная ежедневная процедура резервного копирования:

  • Путь сервера: /home/minecraft/server
  • Резервируем папки: world, world_nether, world_the_end, plugins, server.properties, bukkit.yml, spigot.yml

Пример простого cron-скрипта для ежедневного бэкапа:

#!/bin/sh
TIMESTAMP=$(date +"%F_%H%M")
BACKUP_DIR=/var/backups/minecraft
mkdir -p $BACKUP_DIR
tar -czf $BACKUP_DIR/minecraft_$TIMESTAMP.tar.gz -C /home/minecraft/server world world_nether world_the_end plugins server.properties spigot.yml bukkit.yml
find $BACKUP_DIR -type f -mtime +7 -delete

Критерии восстановления:

  • Удалённый сервер можно поднять за <30 минут из последней резервной копии (зависит от пропускной способности).
  • Консоль сервера стартует и принимает соединения после восстановления файлов.

Совет: храните резервные копии на удалённом хранилище (S3, rsync на другой хост) для защиты от аппаратных отказов.

Оптимизация производительности и рекомендации

Память:

  • Выделяйте JVM не более доступной RAM минус ~1 ГБ для ОС. Правило-приближение: Xms/Xmx = 60–90% от доступной RAM.

GC и флаги:

  • Для современных версий Minecraft рекомендуется G1GC и параметры, приведённые в spigotstart.sh. Они уменьшают паузы GC при больших хипах.

Диск:

  • Используйте SSD для ускорения загрузки чанков и снижения задержек доступа к данным мира.

CPU:

  • Minecraft преимущественно однопоточный для игровой логики, но плагины и IO могут использовать потоки. Сильный одноядерный турбо-режим важен.

Мониторинг:

  • Используйте топ/htop, iotop, netstat, и инструменты мониторинга (Prometheus/Grafana) для долгосрочного наблюдения.

Тесты нагрузки:

  • Запустите тесты с несколькими игроками или бенчмарк-ботами, чтобы измерить TPS (ticks per second). Цель: удерживать 20 TPS для стабильного игрового процесса.

Когда оптимизация не помогает:

  • Если TPS падает при небольшой группе игроков — проверьте плагины и скрипты, возможны утечки памяти или бесконечные циклы.

Безопасность и жёсткая конфигурация

  • Запускайте сервер от непривилегированного пользователя (мы использовали minecraft).
  • Ограничьте права на файлы: только владелец должен иметь запись в папке сервера.
sudo chown -R minecraft:minecraft /home/minecraft/server
sudo chmod -R 750 /home/minecraft/server
  • Используйте ufw для ограничения портов. Откройте только нужные порты.
  • Рассмотрите установку fail2ban для защиты SSH.
  • Регулярно обновляйте систему и Java-пакеты.

Приватность/GDPR: если вы храните персональные данные игроков (логи, email), проверьте локальные требования хранения данных и доступ к ним.

Отладка — частые ошибки и решения

  1. “You need to agree to the EULA” — откройте eula.txt и установите eula=true.
  2. “Port already in use” — проверьте, какой процесс занимает порт 25565: sudo ss -tulpn | grep 25565. Остановите конфликтующий процесс.
  3. Сборка BuildTools падает из-за недостающих зависимостей — убедитесь в наличии git и корректного JDK, проверьте логи BuildTools.log.txt.
  4. Плагин вызывает краш — временно удалите подозрительный JAR из plugins/ и перезапустите сервер.
  5. Низкие TPS — снимите профайлы плагинов, отключайте тяжелые плагины и проверьте disk io/CPU.

Чек-листы по ролям

Администратор:

  • Создан отдельный пользователь minecraft
  • Брандмауэр настроен и SSH разрешён
  • Ежедневные бэкапы настроены
  • Сервис systemd включён и работает

Разработчик/плагин-менеджер:

  • Тестовая среда для плагинов
  • Совместимость плагинов проверена с версией Spigot
  • Используются контроль версий для конфигов

Игрок/оператор мира:

  • Правила сервера и резервирует внешние сохранения
  • Доступы к OP выданы через whitelist/permissions

Критерии приёмки

  • Сервер поднимается и отвечает на соединения клиентов в локальной сети.
  • TPS стабилен и близок к 20 при нормальной нагрузке.
  • Все установленные плагины загружаются без ошибок.
  • Резервное копирование проходит успешно и файлы восстанавливаются.

Миграция и совместимость версий

  • Перед обновлением сделайте полную резервную копию.
  • Для мажорных обновлений Minecraft проверьте плагины на совместимость и выполните тесты на копии мира.
  • При несовместимости используйте старую версию Spigot до тех пор, пока плагины не получат обновления.

Глоссарий (1 строка на термин)

  • Spigot: оптимизированный сервер Minecraft с поддержкой плагинов.
  • BuildTools: инструмент для сборки spigot.jar из исходников.
  • TPS: ticks per second, метрика производительности сервера.
  • EULA: лицензионное соглашение Minecraft, которое нужно принять для запуска сервера.

Часто встречающиеся вопросы (коротко)

Q: Как выделить больше памяти серверу? A: Отредактируйте -Xms и -Xmx в spigotstart.sh, но оставьте ≈1 ГБ для ОС.

Q: Можно ли запускать Spigot в контейнере Docker? A: Да, можно; используйте официальные/неофициальные образы и проследите за правами и портами.

Q: Где искать плагины? A: На SpigotMC Resources и dev.bukkit.org. Всегда проверяйте совместимость.

Короткое объявление (100–200 слов)

Запустите собственный Spigot-сервер на Ubuntu 20.04 за несколько шагов: настройте ufw, установите Java и Git, создайте пользователя minecraft, соберите spigot.jar через BuildTools, настройте systemd-сервис и подключитесь через клиент Minecraft. Руководство также включает рекомендации по резервному копированию, оптимизации JVM, управлению плагинами и отладке распространённых проблем. Следуйте чек-листам для администратора и разработчика, чтобы обеспечить стабильную и безопасную работу сервера. Планируйте обновления с резервными копиями и тестированием плагинов на отдельной среде.

Короткое резюме

  • Соберите Spigot через BuildTools и запустите его под непривилегированным пользователем.
  • Настройте systemd и ufw для автоматического запуска и безопасности.
  • Управляйте плагинами осторожно: тестируйте на копии мира.
  • Настройте регулярные бэкапы и мониторинг производительности.

Если остались вопросы — спросите в комментариях или опишите вашу конкретную конфигурацию (ОЗУ, плагины, версия Minecraft) для более точных рекомендаций.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро