From 63d729aec4d222120df3946855c6b1d464eb055c Mon Sep 17 00:00:00 2001 From: Arity-T Date: Thu, 9 Oct 2025 04:07:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BC=D0=B5=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=20=D1=81=D0=B5=D1=80=D0=B2=D0=B5=D1=80=20?= =?UTF-8?q?=D0=BC=D0=B0=D0=B9=D0=BD=D0=BA=D1=80=D0=B0=D1=84=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/misc/minecraft-server.md | 121 ++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 docs/misc/minecraft-server.md diff --git a/docs/misc/minecraft-server.md b/docs/misc/minecraft-server.md new file mode 100644 index 0000000..a13a8be --- /dev/null +++ b/docs/misc/minecraft-server.md @@ -0,0 +1,121 @@ +# Minecraft Server + +[docker-minecraft-server](https://github.com/itzg/docker-minecraft-server) - самый простой и удобный способ запуска своего Minecraft сервера. + +## Шпаргалка + +У проекта есть неплохая [документация](https://docker-minecraft-server.readthedocs.io/en/latest/), но всё же есть некоторые нюансы, которые стоит записать. + +### Запуск сервера + +1. Устанавливаем [`docker`](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository). Не забываем про [post-install steps](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user). +2. Создаём папку для сервера. + ```sh + mkdir minecraft-server + cd minecraft-server + ``` +3. Создаём файл `docker-compose.yml`. + + === "Терминал" + + ```sh + nano docker-compose.yml + ``` + + === "docker-compose.yml" + + ```yaml + # https://docker-minecraft-server.readthedocs.io/en/latest/ + services: + mc: + image: itzg/minecraft-server + tty: true + stdin_open: true + ports: + # Порт 25565 является стандартным, все клиенты по умолчанию + # подключаются к нему, если порт не задан явно + - "25565:25565" + environment: + # Полный список переменных можно найти в документации + # https://docker-minecraft-server.readthedocs.io/en/latest/variables/ + + EULA: "TRUE" + + # Не забудьте указать нужную версию Minecraft + VERSION: 1.19.4 + + # Разрешаем подключаться без лицензии Minecraft + ONLINE_MODE: false + + # Указываем название игрового мира (он будет храниться в ./data/) + # Чтобы изменить мир, достаточно изменить значение этой переменной + # и перезапустить контейнер + LEVEL: MyWorld + + # Описание сервера + MOTD: | + Tish's Minecraft Server on %VERSION% + + # Иконка сервера + # Надо разместить файл icon.png в ./data/ + ICON: /data/icon.png + OVERRIDE_ICON: true + + volumes: + - ./data:/data + ``` + +4. Запускаем сервер. + + ```sh + docker compose up -d + ``` + +### Остановка сервера. + + ```sh + docker compose stop + ``` + +### Консоль сервера. + + ```sh + # ctrl + p ctrl + q - отключиться от консоли + # сочетание ctrl + c остановит сервер + docker compose attach mc + ``` + +## Домен для сервера + +Если порт стандартный (`25565`), то при подключении можно просто указать домен в A-записи которого указан IP-адрес сервера. Однако если порт нестандартный или хочется сделать несколько доменных имён для одного сервера, то можно использовать SRV-записи. + +Например, если я создам домен `minecraft.tishenko.dev` и запущу сервер на порте `12345`, то чтобы подключаться к серверу без указания порта, мне нужно будет добавить следующую SRV-запись для `minecraft.tishenko.dev`: + +```dns +_minecraft._tcp.minecraft.tishenko.dev. 3600 IN SRV 0 5 12345 minecraft.tishenko.dev. +``` + +Обычно ДНС провайдеры предоставляют UI для создания записей, в нём скорее всего будут следующие поля: + +- Поддомен: `minecraft` +- Сервис: `minecraft` (SpaceWeb, например, сам подставляет `_`) +- Протокол: `tcp` +- TTL: `3600` +- Приоритет: `0` +- Вес: `5` +- Порт: `12345` +- Целевой домен: `minecraft.tishenko.dev.` (точка в конце обязательна) + +Целевой домен не обязательно должен совпадать с поддоменом. Можно сделать подключение к серверу по домену `tishenko.dev` указан следующую SRV-запись для домена `tishenko.dev`: + +```dns +_minecraft._tcp.tishenko.dev. 3600 IN SRV 0 5 12345 minecraft.tishenko.dev. +``` + +Домен `minecraft.tishenko.dev` в своей A-записи должен указывать на IP-адрес сервера, но при этом совершенно неважно какая A-запись будет у `tishenko.dev`. + +DNS-записи распространяются не мгновенно, но обычно это занимает 15-30 минут. Отслеживать распространение записей можно с помощью сайта [DNS Checker](https://dnschecker.org/#SRV/_minecraft._tcp.tishenko.dev). + +!!! note "Клиенты Minecraft читают SRV-запись" + + С помощью SRV-записи можно подменять как порт, так и домен сервера. Стандартный клиент Minecraft Java Edition при подключении по домену автоматически ищет SRV-запись _minecraft._tcp.<домен> в DNS. Если такая запись есть, клиент использует указанные в ней порт и хост. С Bedrock Edition могут возникнуть сложности, там не все клиенты читают SRV-запись.