mrgnl mine: info

Техническая часть сервера. Как устроен, что крутится, как управлять. Для подключения к серверу: mrgnl mine connect


Docker + Fabric

Fabric — лёгкий моддинг-лоадер. Запускаю через itzg/minecraft-server — лучший Docker образ для MC.

services:
  mc:
    image: itzg/minecraft-server:java25
    container_name: minecraft
    restart: unless-stopped
    ports:
      - "25565:25565"
      - "24454:24454/udp"  # голосовой чат
    environment:
      EULA: "TRUE"
      TYPE: "FABRIC"
      VERSION: "26.2"
      FABRIC_LOADER_VERSION: "0.19.3"
      MEMORY: "1536M"
      DIFFICULTY: "normal"
      MAX_PLAYERS: 10
      VIEW_DISTANCE: 10
      SIMULATION_DISTANCE: 10
      ONLINE_MODE: "false"
      ENFORCE_WHITELIST: "true"
    volumes:
      - ./data:/data
    tty: true
    stdin_open: true
    deploy:
      resources:
        limits:
          cpus: "1.5"
          memory: 2304M
        reservations:
          memory: 1G

Лимиты ресурсов

ПараметрЗначениеПочему
MEMORY1536MHeap JVM, хватает на 10 игроков
cpus1.5Не больше полутора ядер
VIEW_DISTANCE10Дефолт, норм рендер
SIMULATION_DISTANCE10Дефолт, полная симуляция

Matrix важнее

На сервере крутится ещё Matrix Synapse. MC ограничен чтобы не положить Matrix.


Управление через RCON

docker exec minecraft rcon-cli <команда>
 
docker exec minecraft rcon-cli whitelist add <ник>
docker exec minecraft rcon-cli whitelist list
 
docker exec minecraft rcon-cli op <ник>
docker exec minecraft rcon-cli deop <ник>
 
docker exec minecraft rcon-cli stop
docker restart minecraft

RCON через SSH

ssh mrgnl@<server-ip> "docker exec minecraft rcon-cli <команда>"

Whitelist и офлайн-режим

ONLINE_MODE: "false" — пиратки welcome. Но кто угодно может зайти под любым ником. Решение:

  • Whitelist — только добавленные игроки
  • LoginSystem/register и /login

Серверные моды (16)


Автоматические рестарты

Сервер перезапускается два раза в сутки — в 12:00 и 00:00. Это держит TPS стабильным и сбрасывает накопившиеся тики.

Перед рестартом в чат идут предупреждения:

КогдаЦветТекст
За 30 минутжёлтыйРестарт через 30 минут. Сохраняйте вещи!
За 20 минутжёлтыйРестарт через 20 минут.
За 5 минуткрасныйРестарт через 5 минут! Залётывайте на базу.
За 1 минутукрасныйРестарт через 1 минуту! Сохраняемся!

Сам рестарт — docker restart minecraft, простой ~30 секунд. Управляет этим systemd-сервис mc-restart.service — скрипт на bash с RCON-предупреждениями и sleep.

systemctl status mc-restart
 
journalctl -u mc-restart -f

Мониторинг активности

Отдельный systemd-сервис mc-monitor.service следит за логами сервера в реальном времени и шлёт уведомления в Matrix-комнату «Minecraft Monitor».

Что отправляется:

СобытиеИконкаПример
Игрок зашёл🟢🟢 [10:15:50] mrgnl зашёл на сервер
Игрок вышел🔴🔴 [10:22:24] mrgnl вышел с сервера
Смерть💀💀 [12:34:56] mrgnl was slain by Zombie
Сервер запущен✅ [12:00:32] Сервер запущен и готов!
Сервер останавливается⏹️⏹️ [12:00:00] Сервер останавливается…
systemctl status mc-monitor
 
journalctl -u mc-monitor -f

Бэкапы

docker exec minecraft rcon-cli save-all
 
tar czf backup-$(date +%Y%m%d).tar.gz data/world
 
docker cp backup.tar.gz minecraft:/data/
docker exec minecraft tar xzf /data/backup.tar.gz -C /data/
docker restart minecraft

Добавление модов

scp mod.jar mrgnl@<server-ip>:/home/mrgnl/minecraft/data/mods/
 
ssh mrgnl@<server-ip> "docker restart minecraft"
 
ssh mrgnl@<server-ip> "docker logs minecraft 2>&1 | grep -iE 'Done|error' | tail -5"

Логи

docker logs minecraft --tail 20
 
docker logs minecraft -f
 
docker logs minecraft 2>&1 | grep -i error | tail -10
 
docker stats minecraft --no-stream

Ссылки