Как подключить сервер к Velocity

Подготовка окружения на proxify.cloud

1. Заказ и настройка выделенного сервера

В панели proxify.cloud закажите выделенный сервер (Dedicated Server) с Ubuntu 22.04/24.04 LTS. После установки ОС подключитесь по SSH:

ssh root@<IP_ВАШЕГО_СЕРВЕРА>

Обновите систему и установите базовые утилиты:

apt update && apt upgrade -y
apt install -y openjdk-21-jre-headless screen wget curl unzip ufw

2. Настройка файрвола (UFW)

Откройте порты для Velocity (прокси) и внутренних серверов:

ufw allow 25565/tcp   # Velocity (внешний порт)
ufw allow 25566/tcp   # Backend-1 (Paper/Spigot)
ufw allow 25567/tcp   # Backend-2 (Paper/Spigot)
ufw allow 22/tcp      # SSH
ufw enable

Проверьте статус:

ufw status numbered

Установка и настройка Velocity (прокси)

3. Создание пользователя и директорий

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

adduser --disabled-password --gecos "" velocity
su - velocity

Создайте структуру папок:

mkdir -p ~/velocity ~/servers/backend1 ~/servers/backend2

4. Скачивание Velocity

Перейдите в папку прокси и скачайте последнюю стабильную версию:

cd ~/velocity
wget https://versions.velocitypowered.com/download/3.3.0/velocity-3.3.0.jar -O velocity.jar

Проверьте актуальную версию на versions.velocitypowered.com.

5. Первый запуск — генерация конфига

Запустите один раз для создания velocity.toml:

java -Xms512M -Xmx512M -jar velocity.jar

Остановите процесс (Ctrl+C) после появления сообщения «Configuration file created».

6. Редактирование velocity.toml

Откройте конфиг:

nano ~/velocity/velocity.toml

Пример рабочей конфигурации:

config-version = "3.3.0"

[servers]
# Внутренние серверы (backend)
lobby = "127.0.0.1:25566"
survival = "127.0.0.1:25567"

[bind]
# Внешний адрес, куда подключаются игроки
address = "0.0.0.0:25565"

[global]
# Принудительная авторизация через Mojang (true для публичных серверов)
online-mode = true
# Секрет для пересылки UUID/IP (должен совпадать на бэкендах)
player-info-forwarding-mode = "MODERN"
forwarding-secret = "ваш_уникальный_секрет_минимум_16_символов"
# Максимальное количество игроков на прокси
max-players = 500

[advanced]
# Пул потоков для обработки соединений
compression-threshold = 256
login-ratelimit = 3000

Важно: forwarding-secret сгенерируйте командой:

openssl rand -base64 32

Сохраните его — понадобится на каждом бэкенде.

7. Настройка systemd для автозапуска Velocity

Выйдите из пользователя velocity (exit) и создайте сервис:

nano /etc/systemd/system/velocity.service

Содержимое:

[Unit]
Description=Velocity Proxy Server
After=network.target

[Service]
Type=simple
User=velocity
WorkingDirectory=/home/velocity/velocity
ExecStart=/usr/bin/java -Xms1G -Xmx1G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -jar velocity.jar
Restart=on-failure
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Включите и запустите:

systemctl daemon-reload
systemctl enable velocity
systemctl start velocity
systemctl status velocity

Проверьте логи:

journalctl -u velocity -f

Установка и настройка бэкенд-серверов (Paper)

8. Установка Paper для backend1 (lobby)

su - velocity
cd ~/servers/backend1
wget https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/109/downloads/paper-1.21.1-109.jar -O paper.jar

Замените версию и билд на актуальные с

.

Примите EULA и запустите один раз:

echo "eula=true" > eula.txt
java -Xms1G -Xmx1G -jar paper.jar --nogui

Остановите (stop) после генерации файлов.

9. Настройка server.properties для backend1

nano ~/servers/backend1/server.properties

Ключевые параметры:

server-port=25566
server-ip=127.0.0.1
online-mode=false
enable-query=false
enable-rcon=false
max-players=200
view-distance=10
simulation-distance=10
network-compression-threshold=256

Важно: online-mode=false — авторизацию выполняет Velocity. Порт должен совпадать с velocity.toml.

10. Настройка velocity-forwarding (Paper/Spigot)

В Paper 1.18+ используется встроенная поддержка Modern Forwarding. Создайте/отредактируйте paper-global.yml:

nano ~/servers/backend1/config/paper-global.yml

Добавьте:

velocity:
  enabled: true
  online-mode: true
  secret: "ваш_уникальный_секрет_минимум_16_символов"

Секрет должен в точности совпадать с forwarding-secret в velocity.toml.

11. Повторите для backend2 (survival)

cd ~/servers/backend2
wget https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/109/downloads/paper-1.21.1-109.jar -O paper.jar
echo "eula=true" > eula.txt
java -Xms2G -Xmx2G -jar paper.jar --nogui
# остановите после генерации

server.properties:

server-port=25567
server-ip=127.0.0.1
online-mode=false
max-players=200

config/paper-global.yml — тот же секрет.

12. Systemd сервисы для бэкендов

Выйдите из пользователя velocity (exit). Создайте сервис для lobby:

nano /etc/systemd/system/mc-backend1.service
[Unit]
Description=Minecraft Backend 1 (Lobby)
After=network.target velocity.service
Requires=velocity.service

[Service]
Type=simple
User=velocity
WorkingDirectory=/home/velocity/servers/backend1
ExecStart=/usr/bin/java -Xms2G -Xmx2G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -jar paper.jar --nogui
Restart=on-failure
RestartSec=10
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Аналогично для backend2 (mc-backend2.service), измените WorkingDirectory и Description.

Запустите:

systemctl daemon-reload
systemctl enable mc-backend1 mc-backend2
systemctl start mc-backend1 mc-backend2
systemctl status mc-backend1 mc-backend2

Проверка подключения и базовая диагностика

13. Проверка портов

ss -tlnp | grep -E '25565|25566|25567'

Ожидаемый вывод:

LISTEN 0 100 0.0.0.0:25565 0.0.0.0:* users:(("java",pid=...,fd=...))
LISTEN 0 100 127.0.0.1:25566 0.0.0.0:* users:(("java",pid=...,fd=...))
LISTEN 0 100 127.0.0.1:25567 0.0.0.0:* users:(("java",pid=...,fd=...))

14. Тест подключения через Velocity

В клиенте Minecraft добавьте сервер:

  • Адрес: <IP_ВАШЕГО_СЕРВЕРА>:25565
  • Версия: 1.21.1 (или ваша)

При успешном входе вы попадёте на lobby (первый сервер в списке servers в velocity.toml).

15. Команды переключения между серверами

В чате Velocity доступны команды:

/server lobby
/server survival
/servers

Если команды не работают — проверьте, что плагин velocity-api не конфликтует (в Paper он встроен).


Настройка домена и SRV-записи (опционально)

16. A-запись и SRV в DNS

В панели регистратора домена создайте:

  • A-запись: play<IP_ВАШЕГО_СЕРВЕРА>
  • SRV-запись: _minecraft._tcp.playpriority=0 weight=5 port=25565 target=play.вашдомен.ru

Тогда игроки подключаются просто по play.вашдомен.ru без порта.


Бэкапы и мониторинг

17. Простой скрипт бэкапа миров

nano /home/velocity/backup.sh
#!/bin/bash
DATE=$(date +%F_%H-%M)
BACKUP_DIR="/home/velocity/backups"
mkdir -p "$BACKUP_DIR"

for SERVER in backend1 backend2; do
    tar -czf "$BACKUP_DIR/${SERVER}_${DATE}.tar.gz" -C /home/velocity/servers/$SERVER world world_nether world_the_end 2>/dev/null
done

# Хранить последние 7 дней
find "$BACKUP_DIR" -type f -mtime +7 -delete

Сделайте исполняемым и добавьте в cron:

chmod +x /home/velocity/backup.sh
crontab -u velocity -e

Добавьте строку (каждый день в 04:00):

0 4 * * * /home/velocity/backup.sh

18. Мониторинг через systemd и journalctl

Просмотр логов Velocity:

journalctl -u velocity -f --since "1 hour ago"

Просмотр логов бэкенда:

journalctl -u mc-backend1 -f

Возможные проблемы и решения

| Проблема | При