Установка и настройка 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.
Изображения ниже показывают последовательность действий в клиенте.





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:
- Сохраните резервные копии server.jar, папки world*, plugins/ и config.yml.
- Остановите сервис: sudo systemctl stop spigot
- Повторите шаг 4: скачайте свежий BuildTools.jar и выполните сборку для нужной версии (–rev <версия>).
- Замените 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), проверьте локальные требования хранения данных и доступ к ним.
Отладка — частые ошибки и решения
- “You need to agree to the EULA” — откройте eula.txt и установите eula=true.
- “Port already in use” — проверьте, какой процесс занимает порт 25565: sudo ss -tulpn | grep 25565. Остановите конфликтующий процесс.
- Сборка BuildTools падает из-за недостающих зависимостей — убедитесь в наличии git и корректного JDK, проверьте логи BuildTools.log.txt.
- Плагин вызывает краш — временно удалите подозрительный JAR из plugins/ и перезапустите сервер.
- Низкие 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) для более точных рекомендаций.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента