Как объединить несколько серверов Minecraft
1. Архитектура и подготовка
Для объединения серверов используется прокси-сервер (Velocity или BungeeCord), который принимает подключения игроков и перенаправляет их на внутренние игровые сервера (backend). Игроки видят один адрес, а внутри — несколько миров: лобби, выживание, креатив, мини-игры.
Требования к выделенному серверу на proxify.cloud:
- Ubuntu 22.04/24.04 LTS
- Минимум 8 ГБ RAM (рекомендуется 16+ ГБ для 3+ серверов)
- 2+ vCPU
- Открытые порты: 25565 (прокси), 25566-25570 (backend), 22 (SSH)
В панели proxify.cloud (Proxmox VE) убедитесь, что у контейнера/VM включен Nested Virtualization (не обязательно, но полезно для Docker) и достаточно дискового пространства (минимум 30 ГБ).
Подключитесь по SSH:
ssh root@<IP_ВАШЕГО_СЕРВЕРА_PROXIFY>
Обновите систему:
apt update && apt upgrade -y
Установите базовые утилиты:
apt install -y screen htop nano ufw curl wget git openjdk-21-jre-headless
Важно: Minecraft 1.18+ требует Java 17+, 1.20.5+ — Java 21. Используем OpenJDK 21.
2. Структура директорий
Создайте единую структуру для всех серверов:
mkdir -p /opt/minecraft/{proxy,lobby,survival,creative}
mkdir -p /opt/minecraft/backups
chown -R 1000:1000 /opt/minecraft
Рекомендуется запускать серверы от отдельного пользователя (без sudo):
useradd -r -m -d /home/mc -s /bin/bash mc
chown -R mc:mc /opt/minecraft
Дальнейшие команды выполняйте от пользователя mc:
su - mc
cd /opt/minecraft
3. Установка backend-серверов (Paper)
Paper — оптимизированный форк Spigot. Скачайте последнюю стабильную версию для каждого сервера.
3.1 Лобби (lobby)
cd /opt/minecraft/lobby
wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.20.6/builds/155/downloads/paper-1.20.6-155.jar"
Создайте start.sh:
cat > start.sh << 'EOF'
#!/bin/bash
java -Xms2G -Xmx2G -XX:+UseG1GC -XX:+ParallelRefactoringEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-Dterminal.jline=false -Dterminal.ansi=true -jar paper.jar --nogui
EOF
chmod +x start.sh
Запустите один раз для генерации конфигов:
./start.sh
Дождитесь сообщения Done! и введите stop в консоли.
3.2 Выживание (survival)
cd /opt/minecraft/survival
wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.20.6/builds/155/downloads/paper-1.20.6-155.jar"
cp ../lobby/start.sh .
chmod +x start.sh
./start.sh
# введите stop после запуска
3.3 Креатив (creative)
cd /opt/minecraft/creative
wget -O paper.jar "https://api.papermc.io/v2/projects/paper/versions/1.20.6/builds/155/downloads/paper-1.20.6-155.jar"
cp ../lobby/start.sh .
chmod +x start.sh
./start.sh
# введите stop после запуска
4. Настройка backend-серверов для работы за прокси
Каждый backend должен знать, что за ним стоит прокси. Отредактируйте server.properties в каждой папке.
4.1 Общие настройки (выполните для lobby, survival, creative)
for dir in lobby survival creative; do
cat > /opt/minecraft/$dir/server.properties << 'EOF'
# Minecraft server properties
enable-jmx-monitoring=false
rcon.port=25575
level-seed=
gamemode=survival
enable-command-block=false
enable-query=false
generator-settings={}
enforce-secure-profile=true
level-name=world
motd=Backend Server
query.port=25565
pvp=true
generate-structures=true
difficulty=easy
network-compression-threshold=256
max-tick-time=60000
require-resource-pack=false
use-native-transport=true
max-players=100
online-mode=false
enable-status=true
allow-flight=false
initial-disabled-packs=
broadcast-rcon-to-ops=true
view-distance=10
server-ip=0.0.0.0
resource-pack-prompt=
resource-pack=
resource-pack-sha1=
resource-pack-enforce=false
simulation-distance=10
rcon.password=changeme
player-idle-timeout=0
debug=false
force-gamemode=false
rate-limit=0
hardcore=false
white-list=false
broadcast-console-to-ops=true
spawn-npcs=true
spawn-animals=true
function-permission-level=2
level-type=minecraft\:normal
spawn-monsters=true
enforce-whitelist=false
spawn-protection=16
resource-pack-id=
max-world-size=29999984
server-port=25565
EOF
done
4.2 Уникальные порты и настройки для каждого сервера
Лобби (порт 25566, gamemode=adventure, force-gamemode=true):
sed -i 's/server-port=25565/server-port=25566/' /opt/minecraft/lobby/server.properties
sed -i 's/gamemode=survival/gamemode=adventure/' /opt/minecraft/lobby/server.properties
sed -i 's/force-gamemode=false/force-gamemode=true/' /opt/minecraft/lobby/server.properties
sed -i 's/motd=Backend Server/motd=Lobby Server/' /opt/minecraft/lobby/server.properties
Выживание (порт 25567):
sed -i 's/server-port=25565/server-port=25567/' /opt/minecraft/survival/server.properties
sed -i 's/motd=Backend Server/motd=Survival Server/' /opt/minecraft/survival/server.properties
Креатив (порт 25568, gamemode=creative):
sed -i 's/server-port=25565/server-port=25568/' /opt/minecraft/creative/server.properties
sed -i 's/gamemode=survival/gamemode=creative/' /opt/minecraft/creative/server.properties
sed -i 's/force-gamemode=false/force-gamemode=true/' /opt/minecraft/creative/server.properties
sed -i 's/motd=Backend Server/motd=Creative Server/' /opt/minecraft/creative/server.properties
4.3 Настройка spigot.yml (view-distance, entity-activation-range)
Для каждого backend:
for dir in lobby survival creative; do
cat > /opt/minecraft/$dir/spigot.yml << 'EOF'
config-version: 13
settings:
save-user-cache-on-stop-only: true
entity-activation-range:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 4
villagers: 16
flying-monsters: 48
nerf-spawner-mobs: true
mob-spawn-range: 4
item-despawn-rate: 6000
arrow-despawn-rate: 1200
allow-permanent-chunk-loaders: false
max-auto-save-chunks-per-tick: 24
optimize-explosions: true
prevent-tnt-from-setting-off-other-tnt: true
disable-chest-cat-detection: true
container-update-tick-rate: 1
hopper-transfer: 8
hopper-check: 1
hopper-amount: 1
random-light-updates: false
structure-saving-tick-rate: 800
disable-end-credits: true
disable-save-validation: true
filter-creative-items: true
net-tick-rate: 20
max-entity-collisions: 8
grass-spread-tick-rate: 1
despawn-ranges:
soft: 28
hard: 96
enable-player-collisions: true
arm-stands-do-collisions: false
per-player-mob-spawns: true
alt-item-despawn-rate:
enabled: false
max-tnt-per-tick: 100
experience-merge-max-value: -1
item-merge: 2.5
entity-tracking-range:
players: 48
animals: 48
monsters: 48
misc: 32
other: 48
debug: false
save-empty-scoreboard-teams: false
player-inventory-save-tick-rate: 600
messages:
whitelist: "Server is whitelisted."
unknown-command: "Unknown command. Type \"/help\" for help."
server-full: "The server is full."
outdated-client: "Outdated client! Please use {0}"
outdated-server: "Outdated server! I'm still on {0}"
restart: "Server is restarting."
stats:
disable-saving: false
forced-stats: {}
advancements:
disable-saving: false
disabled: []
world-settings:
default:
verbose: false
enable-zombie-pigmen-portal-spawns: true
wither-spawn-sound-radius: 0
hunger:
walk-exhaustion: 0.2
sprint-exhaustion: 0.8
combat-exhaustion: 0.3
regen-exhaustion: 3.0
swim-multiplier: 0.01
jump-exhaustion: 0.05
entity-per-chunk-save-limit:
experience_orb: 16
item: 32
area_effect_cloud: 8
max-growth-height:
cactus: 3
reeds: 3
bamboo: 16
kelp: 25
twisting_vines: 25
weeping_vines: 25
twisting_vines_plant: 25
weeping_vines_plant: 25
max
Комментарии (0)