Как подключить лицензионных и пиратских игроков

Подготовка сервера на proxify.cloud

1. Создание виртуальной машины в панели proxify.cloud

  1. Войдите в панель управления proxify.cloud
  2. Нажмите Create VM → выберите Ubuntu 22.04 LTS или Ubuntu 24.04 LTS
  3. Укажите ресурсы (минимум для игрового сервера):
    • CPU: 4 ядра (vCPU)
    • RAM: 8 GB (для 20+ игроков — 16 GB)
    • Disk: 50 GB SSD (NVMe предпочтительнее)
    • Network: 1 Gbps, 1 публичный IPv4
  4. В поле SSH Keys добавьте свой публичный ключ (~/.ssh/id_ed25519.pub)
  5. Нажмите Deploy — установка займёт 2–3 минуты

2. Первичная настройка Ubuntu

Подключитесь по SSH:

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

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

apt update && apt upgrade -y
apt install -y openjdk-21-jre-headless screen wget curl ufw fail2ban git htop

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

adduser --disabled-password --gecos "" minecraft
usermod -aG sudo minecraft

Настройте фаервол (оставьте SSH и порт Minecraft):

ufw allow OpenSSH
ufw allow 25565/tcp
ufw allow 25575/tcp  # RCON, если понадобится
ufw --force enable

Настройте fail2ban для защиты SSH:

cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
EOF
systemctl restart fail2ban

Переключитесь на пользователя minecraft:

su - minecraft

Установка прокси-сервера Velocity (рекомендуемый вариант)

Velocity — современный прокси с нативной поддержкой online-mode и offline-mode игроков одновременно.

3. Скачивание и настройка Velocity

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

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

cat > start.sh << 'EOF'
#!/bin/bash
java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M \
  -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled \
  -jar velocity.jar --nogui
EOF
chmod +x start.sh

Первый запуск для генерации конфигов:

./start.sh
# Подождите 10 секунд, затем Ctrl+C

4. Конфигурация velocity.toml для гибридного режима

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

nano velocity.toml

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

config-version = "3.3.0"

bind = "0.0.0.0:25565"
motd = "&aМой сервер &7| &fЛицензия + Пиратка"
show-max-players = 100
player-info-forwarding-mode = "MODERN"
forwarding-secret = "сгенерируйте_случайную_строку_32_символа"
announce-forge = true

[servers]
# Ваш бэкенд-сервер (Paper/Spigot/Fabric)
lobby = "127.0.0.1:25566"

[forced-hosts]
# Принудительный редирект по доменам (опционально)
# "mc.example.com" = ["lobby"]

[advanced]
compression-threshold = 256
compression-level = -1
login-ratelimit = 3000
connection-timeout = "30s"
read-timeout = "30s"
proxy-protocol = false

[query]
enabled = false
port = 25565
map = "Velocity"
players = "100"

[metrics]
enabled = true
plugin-id = 12345

[online-mode]
# ГЛАВНАЯ НАСТРОЙКА: true = проверка лицензии, false = пиратка
# Для гибридного режима ставим false, а проверку делаем на бэкенде
online-mode = false

[prevent-client-proxy-connections]
enabled = true

Важно: forwarding-secret должен совпадать с настройкой на бэкенд-сервере (см. ниже). Сгенерируйте его:

openssl rand -hex 16

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

5. Скачивание и настройка Paper

mkdir -p ~/paper && cd ~/paper
wget -O paper.jar https://api.papermc.io/v2/projects/paper/versions/1.21.1/builds/109/downloads/paper-1.21.1-109.jar

Скрипт запуска (подберите память под свой тариф proxify.cloud):

cat > start.sh << 'EOF'
#!/bin/bash
java -Xms4G -Xmx4G -XX:+UseG1GC -XX:G1HeapRegionSize=4M \
  -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled \
  -jar paper.jar --nogui
EOF
chmod +x start.sh

Первый запуск для генерации файлов:

./start.sh
# Ждите "Done!", затем Ctrl+C

6. Настройка server.properties для гибридного режима

nano server.properties

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

# СЕТЬ
server-ip=127.0.0.1
server-port=25566
enable-query=false
query.port=25566

# РЕЖИМ АУТЕНТИФИКАЦИИ
online-mode=true
enforce-secure-profile=true
network-compression-threshold=256

# ПРОКСИ (Velocity)
use-proxy-protocol=false
proxy-protocol=false

# ПРОИЗВОДИТЕЛЬНОСТЬ
view-distance=10
simulation-distance=6
max-tick-time=60000
max-players=100
spawn-protection=16

# РЕСУРСЫ
resource-pack=
resource-pack-sha1=
require-resource-pack=false

7. Настройка paper-global.yml для Velocity

nano config/paper-global.yml

Добавьте/измените секцию velocity:

velocity:
  enabled: true
  online-mode: true
  secret: "ВАШ_FORWARDING_SECRET_ИЗ_VELOCITY"
  player-info-forwarding-mode: "MODERN"

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

8. Настройка spigot.yml (опционально)

nano spigot.yml
settings:
  bungeecord: true  # Для совместимости с плагинами
  sample-count: 12
  player-shuffle: 0
  timeout-time: 60
  restart-on-crash: true
  restart-script: ./start.sh

Плагины для поддержки обоих типов игроков

9. Установка ViaVersion (поддержка разных версий клиентов)

cd ~/paper/plugins
wget -O ViaVersion.jar https://ci.viaversion.com/job/ViaVersion/lastSuccessfulBuild/artifact/ViaVersion-Proxy/target/ViaVersion-5.3.0-SNAPSHOT.jar
wget -O ViaBackwards.jar https://ci.viaversion.com/job/ViaBackwards/lastSuccessfulBuild/artifact/ViaBackwards-Proxy/target/ViaBackwards-5.3.0-SNAPSHOT.jar
wget -O ViaRewind.jar https://ci.viaversion.com/job/ViaRewind/lastSuccessfulBuild/artifact/ViaRewind-Proxy/target/ViaRewind-5.3.0-SNAPSHOT.jar

10. Плагин для авторизации пиратских игроков (AuthMeReloaded)

wget -O AuthMeReloaded.jar https://github.com/AuthMe/AuthMeReloaded/releases/download/5.6.0/AuthMe-5.6.0.jar

После первого запуска настройте plugins/AuthMe/config.yml:

settings:
  mode: "both"  # Поддержка и лицензий, и оффлайн
  forceLogin: true
  forceRegister: true
  minPasswordLength: 4
  maxPasswordLength: 16
  restrictCharacters: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
  session:
    enabled: true
    timeout: 10080  # 7 дней в минутах
  skin:
    provider: "Mojang"  # Или "Crafatar" для пиратских скинов

11. Плагин для скинов пиратских игроков (SkinRestorer)

wget -O SkinRestorer.jar https://ci.codemc.io/job/SkinRestorer/job/SkinRestorer/lastSuccessfulBuild/artifact/SkinRestorer-Bukkit/target/SkinRestorer-17.1.jar

Настройка plugins/SkinRestorer/config.yml:

general:
  skin-provider: "MOJANG"  # Для лицензий
  fallback-provider: "CRAFATAR"  # Для пиратки
  use-cached-skins: true
  cache-time: 3600

Автозапуск через systemd

12. Создание сервисов (выполняйте от root)

exit  # Выход из пользователя minecraft

Velocity service:

cat > /etc/systemd/system/velocity.service << 'EOF'
[Unit]
Description=Velocity Proxy Server
After=network.target

[Service]
Type=simple
User=minecraft
WorkingDirectory=/home/minecraft/velocity
ExecStart=/home/minecraft/velocity/start.sh
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
MemoryLimit=2G
CPUQuota=200%

[Install]
WantedBy=multi-user.target
EOF

Paper service:

cat > /etc/systemd/system/paper.service << 'EOF'
[Unit]
Description=Paper Minecraft Server
After=network.target velocity.service
Requires=velocity.service

[Service]
Type=simple
User=minecraft
WorkingDirectory=/home/minecraft/paper
ExecStart=/home/minecraft/paper/start.sh
Restart=on-failure
RestartSec=10
LimitNOFILE=65536
MemoryLimit=6G
CPUQuota=400%

[Install]
WantedBy=multi-user.target
EOF

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

systemctl daemon-reload
systemctl enable velocity paper
systemctl start velocity paper

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

systemctl status velocity paper
journalctl -u velocity -f  # Логи прокси
journalctl -u paper -f