2 дня назад
История
README.md
Сервер Minecraft в Docker-контейнере
В данном репозитории собраны два docker-compose проекта для двух версий серверов Minecraft: Java Edition (docker) и Bedrock Edition (docker-bedrock)
Сборка и запуск контейнера
# 1) Скачиваем и распаковывем нужный серверный исходник Minecraft, см. ниже раздел "Источники иходников"
# 2) В соответствующем docker-compose.yaml правим путь к исходнику в подразделе volumes, можно указать абсолютный путь
# наример (для Bedrock Server):
# volumes:
# - /home/user/games/minecraft/bedrock:/opt/app
# Для bedrock версии так же правим путь к директории, где будут расположены миры:
# - /home/user/games/minecraft/worlds:/opt/worlds
# 3) Правим конфигурацию сервера путем редактирования файла server.properties в корне файлов сервера,
# обратить внимание на настройки:
# force-gamemode=true
# online-mode=false должно быть false для доступа без аккаунта Microsoft
# server-port=25575 указать свой, порпавить в .env или в docker-compose.yaml
# server-portv6=25576 указать свой, поправить в в .env или в docker-compose.yaml
# level-name=MyWorld должен совпадать с названием мира в рутовой директории сервера (для Java версии) или директории worlds (для Bedrock)
# content-log-file-enabled=true
# 4) Опционально правим конфигурацию собираемого контейнера в файле .env
# Например, чтобы активировать сборку VPN-сервера нужно выставить OVPN_SERVER_ON=true
# 5) Выполняем сборку и запуск
$ cd docker
# следующая команда только для Java версии
$ mkdir clients
$ env UID=$UID docker compose build --no-cache
$ docker compose up -d
# Далее только для JAVA версии:
#
# Cборка с динамическиими пользовательскими параметрами (например, при активации OpenVPN серевера),
# где 192.168.0.1 - внешний IP адрес для доступа к OpenVPN серверу;
# если нужно поменять так же и порт, то не забудьте поправить его в .env файле, которые читается compose проектом,
# так как --build-arg имеет эффект только на аргументы сборки контейнера, но не запуск compose проекта
$ env UID=$UID docker compose build --build-arg UID=$UID --build-arg OVPN_SERVER_ON=1 --build-arg OVPN_SERVER_HOST=192.168.0.1 --build-arg OVPN_SERVER_PORT=1194 --no-cache
$ docker compose up -d
# или же можно предварительно подправить .env файл и выполнить более простую команду:
$ env UID=$UID docker compose up --build
# после запуска контейнера в директории clients появятся набор ключей
# для запуска Openvpn Client на стороне клиента
# ВАЖНО! При пересборке контейнера для Java версии (параметр --build или команда build) нужно очистить директорию clients! Нужны права root (sudo)!
Запуск OpenVPN на клиентской Linux машине (для JAVA версии)
# Устанавливаем OpenVPN!
$ sudo apt-get install openvpn
# Копируем директорию clients (см. последний шаг установки выше) на свой компьютер (и/или передаем ее другу на флешке),
# ВАЖНО:
# 1) в пересылаемой директории clients нужно оставить общие файлы и только нужные сертификаты,
# т.е. либо под номером 1 (client1), либо под номером 2, либо под номером 3 (по умолчанию в сборке создается 3 клиента)
# 2) client.conf нужно отредактировать так, чтоб он ссылался на правильный номер ключей,
# по умолчанию там идут ссылки на client1
# переходим в эту диреткорию уже на целевой машине (своей или друга) и запускаем команду:
$ sudo openvpn --config client.conf
# для проверки состояния соединения можно выполнить в другой консоли команду:
$ ip a
# в выведенном списке должен присутствовать интерфейс tap0 c с адресом 10.1.0.2
Запуск OpenVPN на клиентской Windows машине (только для Java версии)
1) Скачиваем инсталлятор Community версии OpenVPN с сайта https://openvpn.net/community-downloads/.
На момент написания инструкции это версия 2.6.12. Правильно выбираем пакет установщика, согласно вашей платформе.
Т.е., если у вас Windows 64bit, то скачиваем по ссылке <Windows 64-bit MSI installer>
2) Запускаем скачанный установщик и видим в центре 2 кнопки **Install Now (большая)** и **Customize (ниже, поменьше)**.
Жмем на кнопку поменьше **Customize**, чтоб самому выбрать компоненты для установки.
3) В открышемся окошке мы увидим древовидный список компонент для установки, жмем на узел OpenVPN Service и выбираем в меню Don't Install.
На узле появится белый или красный крестик, говорящий о том, что компонента не будет установлена.
OpenVPN Service нам не нужен, он лишь будет потреблять лишние ресурсы компьютера.
4) Так же обращаем внимане на узел Launch on User Logon, тут выбираем по своему усмотрению, если вам нужно, чтоб клиент запускался автоматически
как только вы входите в систему, то оставляете все как есть. Если же вы хотите каждый раз запускать OpenVPN GUI вручную, через меню Пуск - Программы,
то жмем на узел и выбираем Don't Install.
5) Жмем Install Now и дожидаемся конца установки.
6) Далее, аналогично инструкции для Linux, копируем директорию clients (см. последний шаг установки раздела **Сборка и запуск контейнера**)
на свой компьютер (с флешке или по сети). Например, в директорию c:\Users\<User>\Documents\, где <User> - ваше имя пользователя.
7) Переименовываем директорию clients в client1 (или client2, client3) в зависимости от того какой номер сертификата будет использоваться.
Также нужно иметь ввиду то, что имя профиля OpenVPN GUI сформируется из названия этой директории, поэтому можно дать ей любое название
латиницей без пробелов, которое покажется вам уместным.
8) Переименовываем файл client1/client.conf в config.ovpn (формат windows), а также редактируем в нем параметры cert и key,
чтоб они ссылались на правильный номер ключа. Т.е. либо client1, либо client2 и т.д.
9) Запускаем через меню Пуск ранее установленный OpenVPN GUI, ищем кнопку импорта конфигурации и перейдя в директорию
c:\Users\<User>\Documents\client1 импортируем конфигурацию config.ovpn
10) После импорта на вашем компьютере появится директория c:\Users\<User>\OpenVPN\clients\client1 с одним файлом внутри - config.ovpn.
Копирем в эту дериекторию c:\Users\<User>\OpenVPN\clients\client1 все остальные файлы из директории c:\Users\<User>\Documents\client1,
кроме тех файлов, которые вам не нужны. Если номер вашего сертификата 1, то копируем общие файлы + client1.crt + client1.key, остальные файлы
- client2.crt, client2.key, client3.crt, client3.key и так далее - НЕ КОПИРУЕМ!
11) Собственно на этом настройка окончена, далее жмем правой кнопкой мыши на маленький экранчик с замочком в системном трее
(там где часы, обычно внизу справа) и выбираем меню **Подключиться**. Если до этого все было сделано правильно, то поднимется VPN соединение,
а вашему ПК назначится IP адрес **10.1.0.2** или **10.1.0.3** и т.д. По этому IP-адресу можно будет подключится к вашему запущенному Minecraft.
Если нужно отредактировать конфигурационный файл, то делаем так:
# останавливаем контейнер
$ docker compose stop
# редактируем конфигурацию, и запускаем снова
$ docker compose start
Источник исходников:
Java Edition Server:
- https://www.minecraft.net/ru-ru/download/server/
- https://getbukkit.org/download/vanilla
Java Edition Client:
- https://tlauncher.org/
Bedrock Server:
- https://www.minecraft.net/en-us/download/server/bedrock
Bedrock Client:
- https://mcpebox.ru/skachat-minecraft/
- https://4pda.to/forum/index.php?showtopic=260256&st=12360#entry133831628
Конвертация миров, например из Java в Bedrock формат
https://chunker.app/
Устанока XRay (устанавливается только на JAVA клиенте!)
Качаем нужную версию:
https://mods-craft.ru/xray/ (https://www.9minecraft.net/xray-mod/)
Запускаем установщик:
$ java -jar XRay-Mod-v67-1.14.4.jar
При запросе создаем новый профиль, чтоб не портить оригинальную версию.
Unit файл (для варианта продвинутой установки без Docker на Linux):
#https://www.spigotmc.org/threads/stop-spigot-server-gracefuly-best-practices.68798/
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=admin
Group=admin
WorkingDirectory=/home/user/minecraft/1.14.4-vanilla
Type=simple
ExecStartPre=/usr/bin/mkfifo ./daemon.in
#use sh for redirecting input
# open daemon.in by redirecting stream 3 (unused) to it and exec java using stream 3
# ( ; seems to have special meaning. Enclosing the whole sh script in '' doesn't matter either... )
#ExecStart=/bin/sh -c 'exec /usr/bin/java -server -Xmx1024M -Xms408M -jar ./spigot-1.11.2.jar 3<>./daemon.in -<&3'
ExecStart=/bin/sh -c 'exec java -Xmx1024M -Xms1024M -Dfile.encoding=utf-8 -jar server.jar nogui 3<>./daemon.in -<&3'
KillMode=none
#took me hours to figure out the double escape. \r works so I don't even want to try \n .
ExecStop=/bin/sh -c 'echo stop$(printf \\\\r) > ./daemon.in'
ExecStopPost=/bin/rm ./daemon.in
StandardOutput=journal
[Install]
WantedBy=multi-user.target
#sudo ln -sf /home/user/minecraft/minecraft.service /usr/lib/systemd/system/minecraft.service
Конвейеры
0 успешных
0 с ошибкой