Как перенести сервер с прошлого хостинга на proxify.cloud

Подготовка на стороне старого хостинга

1. Остановка сервера и создание архива

Зайдите на старый сервер по SSH. Остановите игровой процесс корректно, чтобы сохранить мир и конфиги.

# Если используется systemd
sudo systemctl stop minecraft

# Если запущен в screen/tmux — заходите в сессию и пишете stop
screen -r minecraft
# В консоли сервера:
stop

Создайте архив всей папки сервера. Исключите лишнее (логи, кэш, бэкапы), чтобы ускорить передачу.

cd /home/minecraft
tar --exclude='logs' --exclude='cache' --exclude='backups' --exclude='*.log' -czvf server_backup.tar.gz .

Проверьте размер архива: ls -lh server_backup.tar.gz.

2. Перенос архива на новый сервер (proxify.cloud)

В панели proxify.cloud откройте ваш выделенный сервер → вкладка Console (или подключитесь по SSH с вашего ПК). Узнайте IP нового сервера в разделе Network.

Вариант А: rsync через SSH (рекомендуется, поддерживает докачку). На старом сервере выполните:

rsync -avz --progress server_backup.tar.gz root@<NEW_IP>:/root/

Вариант Б: scp (если rsync нет).

scp server_backup.tar.gz root@<NEW_IP>:/root/

Вариант В: Если старый хостинг дает только SFTP/панель — скачайте архив к себе, затем загрузите на новый через SFTP (FileZilla/WinSCP) в папку /root/ или /home/minecraft/.


Настройка чистого Ubuntu на proxify.cloud

3. Подключение и обновление системы

В панели proxify.cloud перейдите в Console вашего сервера. Логин: root, пароль — из письма с доступом или установленный вами при заказе.

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

Важно: Версию Java выбирайте под версию ядра сервера (Paper/Spigot 1.20.4+ → Java 21, 1.18-1.20.1 → Java 17, старые → Java 8/11). На proxify.cloud вы выбираете ISO при заказе, но пакеты ставите сами.

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

Не запускайте сервер от root.

adduser --disabled-password --gecos "" minecraft
usermod -aG sudo minecraft  # опционально, для удобства обновлений

mkdir -p /home/minecraft/server
chown -R minecraft:minecraft /home/minecraft

5. Настройка firewall (UFW)

Откройте только нужные порты. Стандартный порт Minecraft — 25565 (TCP). Если используете VoiceChat — 24454 (UDP). RCON — 25575 (TCP, только для локали/VPN).

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 25565/tcp comment 'Minecraft'
ufw allow 24454/udp comment 'VoiceChat'
ufw enable

В панели proxify.cloud проверьте, что на уровне дата-центра (внешний фаервол) эти порты не заблокированы. Обычно они открыты по умолчанию для выделенных серверов.


Развертывание сервера на новом месте

6. Распаковка архива

Переключитесь на пользователя minecraft и распакуйте файлы.

su - minecraft
cd /home/minecraft/server
tar -xzvf /root/server_backup.tar.gz
# Если архив лежит в /home/minecraft/server_backup.tar.gz — укажите правильный путь
ls -la  # проверьте наличие server.jar, eula.txt, папок world, plugins, mods

7. Проверка и исправление eula.txt

Файл должен содержать eula=true.

echo "eula=true" > eula.txt

8. Подбор запускального скрипта (start.sh)

Создайте файл запуска с оптимальными флагами JVM для выделенного сервера. Определите объем RAM: на proxify.cloud смотрите тариф (например, 32 ГБ). Оставьте 2-4 ГБ под систему.

cat > start.sh << 'EOF'
#!/bin/bash
# Настройки памяти: -Xms (начальная) = -Xmx (максимальная) для избежания пауз GC
# Пример для 28ГБ из 32ГБ:
JAVA_ARGS="-Xms28G -Xmx28G"
# Современные флаги G1GC/ZGC (Java 17/21):
JAVA_ARGS="$JAVA_ARGS -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200"
JAVA_ARGS="$JAVA_ARGS -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC"
JAVA_ARGS="$JAVA_ARGS -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40"
JAVA_ARGS="$JAVA_ARGS -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5"
JAVA_ARGS="$JAVA_ARGS -Dterminal.jline=false -Dterminal.ansi=true"

# Определение jar-файла (Paper/Spigot/Purpur/Fabric/Forge)
SERVER_JAR=$(ls -1 *.jar | grep -E '(paper|spigot|purpur|fabric|forge|server)' | head -n1)
if [ -z "$SERVER_JAR" ]; then
    echo "JAR файл не найден!"
    exit 1
fi

echo "Запуск $SERVER_JAR с аргументами: $JAVA_ARGS"
java $JAVA_ARGS -jar "$SERVER_JAR" --nogui
EOF
chmod +x start.sh

9. Тестовый запуск в screen

Запустите сервер впервые, чтобы сгенерировать недостающие конфиги (paper.yml, bukkit.yml, server.properties) и проверить ошибки.

screen -S mc ./start.sh
# Ждите "Done (X.Xs)! For help, type "help""
# Остановите командой stop в консоли сервера
# Выход из screen: Ctrl+A, затем D

10. Настройка server.properties

Отредактируйте ключевые параметры под новый IP и требования.

nano server.properties

Обязательно проверьте/измените:

server-ip=0.0.0.0
server-port=25565
enable-rcon=false  # включите только если нужен, с паролем и whitelist
rcon.port=25575
rcon.password=strong_random_password
max-players=100
view-distance=10
simulation-distance=6
network-compression-threshold=256
online-mode=true  # false только для крэк-серверов

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

11. Создание unit-файла

Выход из пользователя minecraft (exit или Ctrl+D), действия от root.

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

[Service]
Type=forking
User=minecraft
Group=minecraft
WorkingDirectory=/home/minecraft/server
ExecStart=/usr/bin/screen -DmS mc /home/minecraft/server/start.sh
ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "say Сервер выключается через 10 секунд...\015"'
ExecStop=/bin/sleep 10
ExecStop=/usr/bin/screen -p 0 -S mc -X eval 'stuff "stop\015"'
TimeoutStopSec=60
Restart=on-failure
RestartSec=10
LimitNOFILE=100000
MemoryLimit=30G  # чуть больше -Xmx, для overhead JVM

[Install]
WantedBy=multi-user.target
EOF

12. Включение и проверка автозапуска

systemctl daemon-reload
systemctl enable minecraft
systemctl start minecraft
systemctl status minecraft  # проверьте active (running)

Посмотрите логи в реальном времени:

journalctl -u minecraft -f
# Или заходите в консоль: screen -r mc

Пост-миграционные проверки

13. Проверка подключения

  1. В панели proxify.cloud убедитесь, что у сервера есть публичный IPv4 (обычно 1 шт. входит в тариф).
  2. Подключитесь из клиента Minecraft по IP: ВАШ_IP:25565.
  3. Проверьте TPS командой tps (если есть плагин Spark/LuckPerms) или в консоли: lag / gc.

14. Настройка домена (опционально)

В панели регистратора домена создайте A-запись @ и play на IP сервера proxify.cloud. SRV-запись для удобства (порт 25565):

_minecraft._tcp.play  3600  IN  SRV  0  5  25565  play.yourdomain.com.

15. Бэкапы на новом хостинге

Настройте ежедневные бэкапы. Простейший вариант — скрипт в cron от пользователя minecraft.

su - minecraft
crontab -e

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

0 4 * * * /home/minecraft/backup.sh >> /home/minecraft/backup.log 2>&1

Скрипт /home/minecraft/backup.sh:

#!/bin/bash
DATE=$(date +%F_%H-%M)
DEST="/home/minecraft/backups"
mkdir -p "$DEST"
cd /home/minecraft/server
tar --exclude='logs' --exclude='cache' -czf "$DEST/server_$DATE.tar.gz" .
find "$DEST" -name "server_*.tar.gz" -mtime +7 -delete  # храним 7 дней

chmod +x /home/minecraft/backup.sh.


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

Проблема Причина Решение
java: not found / Unsupported class version Не та версия Java или не в PATH. Проверьте java -version. Установите нужную: apt install openjdk-17-jre-headless или 21. Используйте полный путь /usr/lib/jvm/java-21-openjdk/bin/java в start.sh.
Connection refused / Таймаут подключения Порт закрыт фаерволом или сервер не слушает 0.0.0.0. 1. ufw status — порт 25565 открыт? 2. ss -tlnp | grep 25565 — слушает ли Java? 3. server.properties → `server-ip=0.0.