Информация была обновлена до версии v3.2 от 08.04.2023

This commit is contained in:
2023-04-08 22:16:43 +03:00
parent 730908d045
commit 5c3c7bc18f
2 changed files with 102 additions and 95 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.idea

196
README.md
View File

@@ -1,67 +1,41 @@
# Продвинутое создание сервера Minecraft на основе LinuxOS
`> Данная статья была изменена! Вы можете столкнуться с проблемами нахождения прошлых команд`
![image](https://user-images.githubusercontent.com/77334306/146064955-f7458d87-38c0-40dd-8634-e27dc2a150b5.png)
![image](https://user-images.githubusercontent.com/77334306/146064668-abc41204-a41e-40f8-a098-6a5a992ad5be.png)
![image](https://user-images.githubusercontent.com/77334306/146064892-06b3d01d-02fe-48cb-8618-08536de0ad3f.png)
![image](https://user-images.githubusercontent.com/77334306/146582420-c57493a7-decf-49a8-b248-e29add8f8afe.png)
![image](https://user-images.githubusercontent.com/77334306/146582380-00aee364-fe49-4a47-bd7c-fdbf1a10412a.png)
### Создайте свой личный Minecraft Проект с использованием продвинутой и удобной информации`
# Что будет еще в след. обновлениях?
![AstGuide.png](https://i.imgur.com/vQ8j1NO.png)
# О Мини-Проекте AdvancedServerCreation
### Плановые изменения по работе с Linux OS
- Работа с системой (База от DIDIRUS)
> Нацеленность будущего гайда исключительно для работы с вашим сервером Minecraft.
- Продвинутая настройка Linux Firewall (База от DIDIRUS)
> Настройки netfilter, nat с использованием утилиты iptables, возможно еще ufw. Исключительно для работы с вашим сервером Minecraft.
- Конфигурации для Minecraft ( **_Folia_** by PaperMC ) от **VuTuV и DIDIRUS**
- Продвинутые конфигурации AntiXray под каждый мир **_( PaperMC )_** от **VuTuV**
- Информация по настройке TCP Shield (рекомендуется) / Neo Protect (Возможно будет выложено в свободный доступ)
- Удобные скрипты на Shell для работы с вашими серверами и скринами (screen) (Возможно будет выложено в свободный доступ)
# Дополнительная информация о данном README.md
```
Вероятнее всего будет меньше информации о самой игре Minecraft, поскольку автору в данный момент не особо интересно это.
Однако, Linux OS будет всегда с нами :)
```
Версия документа v3.2 от 08.04.2023
# О документе
```
Версия документа v3.11 от 06.10.2022
Данная статья рассчитана на настройку под Ubuntu (рекомендуется) / Debian.
В случае если у вас Arch Linux или другие UNIX подобные системы - Ознакомьтесь с репозиторием необходимых пакетов.
Если необходимые пакеты отсутствуют, то попробуйте найти их в AUR/Snap/Flatpak, в случае с AUR изучайте билд скрипт для вашей же безопасности.
* Автор занят другими Проектами на Github, вы можете в данный момент получать дополнительную информацию *
* Данная статья создана для удобства в управлении вашим Проектом в Minecraft под управлением Linux *
* На системах Арч линукс нет команды apt (Пример: pamac/pacman). Учтите этот факт при настройке вашей UNIX подобной системы *
Некоторые рекомендации из пунктов могут работать некорректно на некоторых системах
За подробной поддержкой обращайтесь в мой дискорд - https://discord.gg/7XkGYJbtZg
Для полноценной настройки рекомендую использовать Adoptium Java
< ! > ПОЖАЛУЙСТА ЧИТАЙТЕ ВНИМАТЕЛЬНО И НЕ ПРЕДЪЯВЛЯЙТЕ ПРЕТЕНЗИЙ АВТОРУ СТАТЬИ < ! >
Некоторые функции могут не работать конкретно на вашей системе. В этом случае не нужно винить автора статьи.
За подробной поддержкой обращайтесь в мой дискорд Astralium Org. - https://discord.gg/7XkGYJbtZg
```
# Основные ссылки на контент
[OpenJDK](https://adoptium.net/) __| Java |__
[Получить Adoptium Temurin](https://adoptium.net/) __| Нажмите, чтобы скачать Java |__
[FabricMC](https://fabricmc.net/) __| Fabric |__
[Получить Fabric](https://fabricmc.net/) __| Нажмите, чтобы скачать Fabric |__
[PaperMC](https://papermc.io/) __| Server Software |__
[PurPur](https://purpurmc.org/) __| Server Software |__
[Petal](https://github.com/Bloom-host/Petal) __| Server Software |__
[Velocity Website](https://velocitypowered.com/) [Velocity From PaperMC](https://papermc.io/downloads#Velocity) __| Proxy Software |__
[Получить Paper/Folia/Velocity](https://papermc.io/) __| Нажмите, чтобы скачать PaperMC Software |__
# Настройка вашего Linux сервера
### Основное
- Базовые компоненты для вашего сервера
- Некоторые команды выполняются от ~ root пользователя, либо через sudo
- Основные рекомендуемые компоненты для вашей системы Linux.
В основном все команды выполняются от `root` пользователя или с помощью `sudo` *(Если `sudo` отсутствует на вашей системе, то установите его через `apt` / `pamac` / `pacman`)*
### Обновление пакетов машины
```
sudo apt update -y && sudo apt upgrade -y
Для Ubuntu/Debian sudo apt update -y && sudo apt upgrade -y
Для Arch Linux sudo pamac update --no-confirm && sudo pamac upgrade --no-confirm
```
### Специально для CentOS 8 (Не поддерживается автором статьи)
```
@@ -82,21 +56,31 @@ dnf install screen
### Полезные утилиты для вашего сервера
```
sudo apt install htop - Утилита для мониторинга всех запущенных процессов (Подобно top, но красивее)
sudo apt install screen - Важная утилита для создания сессий на вашей серверной машине
sudo apt install zip unzip - Утилита для архивации файлов в .zip
sudo apt install iptables - Полезная утилита для настройки IPv4 и IPv6 флагов (Firewall) (Можно управлять портами)
sudo apt install neofetch - Утилита для красивого отображения вашей ОС и некоторых параметров
sudo apt install fontconfig - Данный пакет шрифтов может потребоваться для некоторых плагинов*
htop - Утилита для мониторинга всех запущенных процессов (Подобно top, но красивее)
screen - Важная утилита для создания сессий на вашей серверной машине
zip unzip - Утилита для архивации/деархивации файлов в .zip (рекомендую tar)
iptables - Полезная утилита для настройки IPv4 и IPv6 флагов (Firewall) (рекомендую)
ufw - Управление Firewall'ом IPTables, только проще (рекомендую)
firewalld - Управление Firewall'ом IPTables, только проще (рекомендую)
iptraf-ng - Мониторинг сети (рекомендую)
nload - Мониторинг сети (рекомендую)
vnstat - Мониторинг сети (рекомендую)
smartmontools - Позволяет протестировать оборудование системы
dnsutils - Управление DNS (Может потребоваться для некоторых утилит)
neofetch - Утилита для красивого отображения вашей ОС и некоторых параметров
fontconfig - Данный пакет шрифтов может потребоваться для некоторых утилит*
# Удобная установка всех полезных пакетов в одну строку + FIREWALLD (Работает с IPTables)
sudo apt install htop screen zip unzip iptables nload neofetch dnsutils iptraf-ng vnstat fontconfig smartmontools firewalld -y
sudo apt install htop screen ufw vnstat zip unzip iptables nload neofetch dnsutils iptraf-ng vnstat fontconfig smartmontools firewalld -y
# Удобная установка всех полезных пакетов в одну строку + UFW (Работает с IPTables)
sudo apt install htop screen zip unzip iptables nload neofetch dnsutils iptraf-ng vnstat fontconfig smartmontools ufw -y
sudo apt install htop screen ufw vnstat zip unzip iptables nload neofetch dnsutils iptraf-ng vnstat fontconfig smartmontools ufw -y
# Удобная установка всех полезных пакетов в одну строку только с IPTables
sudo apt install htop screen ufw vnstat zip unzip iptables nload neofetch dnsutils iptraf-ng vnstat fontconfig smartmontools -y
```
### Может решить вашу проблему с портами на Oracle Cloud - откройте порт UDP/TCP 25565
### Oracle Cloud установка под Minecraft
```
# Использование с UFW утилитой
sudo ufw enable # <- По умолчанию он выключен, поэтому его следует включить.
@@ -125,15 +109,15 @@ sudo firewall-cmd --reload # <- Обычно он всегда требует п
- В Linux изначально придумана команда для упаковки архивов и распаковки архивов
- Использовать команду tar можно с использованием следующих параметров:
```
# -c | --create — создать архив
# -a | --auto-compress — дополнительно сжать архив с компрессором который автоматически определить по расширению архива.
# -r | --append — добавить файлы в конец существующего архива
# -x | --extract, --get — извлечь файлы из архива
# -f | --file — указать имя архива
# -t | --list — отобразить список файлов и папок в архиве
# -v | --verbose — выводить список обработанных файлов
# -u | --update — Обновить архив новыми файлами
# -d | --diff, --delete — Проверить начилие архивов, удалить файл из архива
-c | --create — создать архив
-a | --auto-compress — дополнительно сжать архив с компрессором который автоматически определить по расширению архива.
-r | --append — добавить файлы в конец существующего архива
-x | --extract, --get — извлечь файлы из архива
-f | --file — указать имя архива
-t | --list — отобразить список файлов и папок в архиве
-v | --verbose — выводить список обработанных файлов
-u | --update — Обновить архив новыми файлами
-d | --diff, --delete — Проверить начилие архивов, удалить файл из архива
```
- Пример перемещения файлов по системе Linux
@@ -141,8 +125,10 @@ sudo firewall-cmd --reload # <- Обычно он всегда требует п
# < ! > НЕ ОБЯЗАТЕЛЬНЫЕ КОМАНДЫ < ! >
mv /home/others/Test /others2
# Также вы можете использовать флаг* -v чтобы увидеть подроную информацию о процессе
# ~ — тильда, дает понять системе, что это корневой каталог root (~)
# Пример: Вы юзер test, то при вводе cd, вы попадете в каталог /home/test/
# Т.е ~/others2 и т.д
mv -v ~/home/others/Test ~/others2
@@ -164,10 +150,10 @@ mv -v ~/home/others/Test ~/others2
# Вы также можете использовать - curl
# Если в вашей системе данная утилита отсутствует, то вы можете установить её самостоятельно
# sudo apt install curl
sudo apt install curl
# Пример использования:
# curl https://api.papermc.io/v2/projects/paper/versions/1.19.2/builds/125/downloads/paper-1.19.2-125.jar -o paper.jar
curl https://api.papermc.io/v2/projects/paper/versions/1.19.4/builds/499/downloads/paper-1.19.4-499.jar -o paper.jar
# Теперь давайте его распакуем — после распаковки появится папка с нашей Java
# Выполните команду:
@@ -177,22 +163,19 @@ tar -xvf archive.tar.gz
# Например архив с Java называется:
Скачиваем к примеру Adoptium JDK Java 18 под amd64 платформу (Ubuntu, Debian, Arch)
# Данная команда скачает и установит вам Java JDK 18.0.2.1_1 (Предыдущая была 18.0.2.9 (Старее)) от Adoptium, вам нужно лишь только ввести её в терминал
cd /opt && sudo wget https://github.com/adoptium/temurin18-binaries/releases/download/jdk-18.0.2.1%2B1/OpenJDK18U-jdk_x64_linux_hotspot_18.0.2.1_1.tar.gz && sudo tar -xf OpenJDK18U-jdk_x64_linux_hotspot_18.0.2.1_1.tar.gz && sudo ln -svf /opt/jdk-18.0.2.1+1/bin/java /usr/bin/java && java -version
# Данная команда скачает и установит вам Java JDK 19+36 новейшая релизная Java от Adoptium, вам нужно лишь только ввести её в терминал
cd /opt && sudo wget https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19%2B36/OpenJDK19U-jdk_x64_linux_hotspot_19_36.tar.gz && sudo tar -xf OpenJDK19U-jdk_x64_linux_hotspot_19_36.tar.gz && sudo ln -svf /opt/jdk-19+36/bin/java /usr/bin/java && java -version
# Быстрая установка Adoptium Temurin Java Development Kit 17
cd /opt && sudo wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.6%2B10/OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gz && tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gz && ln -svf /opt/jdk-17.0.6+10/bin/java /usr/bin/java && java -version
# < ! > Название архива может быть иное < ! >
# Информацию об установке Java ниже можете не применять при вводе команды выше.
# Для распаковки архива потребувется ввести всего одну команду (Уже применена в примерной установке выше):
tar -xvf OpenJDK18U-jdk_x64_linux_hotspot_18.0.2_9.tar.gz
tar -xvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.6_10.tar.gz
# На момент создания статьи последняя Java, которую лично я проверял у себя на Проектах
# Выполните данные команды для скачивания архива:
sudo wget ССЫЛКА
sudo wget TARGET_URL
# Из примера выше
## curl https://api.papermc.io/v2/projects/paper/versions/1.19.2/builds/125/downloads/paper-1.19.2-125.jar -o paper.jar
@@ -218,16 +201,19 @@ java -version
# Создаем ярлык (линк) для нашего исполняемого файла
# Выполните команду:
# Заместо ... пишем название папки с Java — /opt/.../bin/java
ln -svf /opt/.../bin/java /usr/bin/java
# Заместо ... пишем название папки с Java — /opt/jdk-18.0.2+9/bin/java
ln -svf /opt/jdk-18.0.2+9/bin/java /usr/bin/java
# Если вы все сделали правильно, то вы успешно установили Java на вашу машину
# Проверить активную Java
java -version
# Если вам вывело информацию о версии (Обычно это 2-3 строки), то все успешно.
# Иначе, проверяйте под какую архитектуру вы скачали JDK архив.
```
### Удаление Java с нашего сервера
- Многие скажут, что есть команда sudo apt remove *java* и т.д, но это самый простой способ — можно также и через команды
- Мы не будем использова бесполнезные команды по типу: `sudo apt remove *java*`
```
# Для начала перейдем в корень сервера ~
# Далее переходим по пути ~/usr/bin
@@ -243,15 +229,13 @@ cd /usr/bin && sudo rm java
java -version
# При успехе, у вас должно вывести ошибку на счёт команды java
# При успехе, у вас должно вывести ошибку.
```
### Настройка безопасного входа на сервер - Linux
- В качестве альтернативы простым паролям, мы будем использовать Rsa_Keys с форматом шифрования SHA
- Генерация и установка ключей на сервер
```
# Открываем приложение основной терминал системы (Terminal, Powershell, Konsole (Manjaro) . . .)
# Открываем приложение основной терминал системы (Kosnole, Yakuake или любой другой.)
ssh-keygen # По умолчанию генерирует 2048 Битный ключ
@@ -259,15 +243,17 @@ ssh-keygen -b 4096 # Генерация ключа с мощностью 4096 Б
ssh-keygen -b 8192 # Генерация ключа с мощностью 8192 Бит (Лучше чем 4096)
# Далее внимательно читаем логи, вы уже почти создали пару ключей на вашем ПК ~/users/ВашЮзер/.ssh
# Чтобы передать ключ на наш сервер, воспользуемся данной командой (Вам потребуется войти с использованием "старого" пароля)
# Однако, мы всегда можем делать это вручную, но можно и через команду ниже:
cat ~/.ssh/id_rsa.pub | ssh USER@IP "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
# < ! > Подсказка для всех < ! >
# Если вы не хотите использовать такой способ авторизации, то установите очень сильный, надежный, ультра мега крутоооой пароль :)
# Самое главное не палите своего юзера, ведь только тогда вас не будут брутить,
# Т.к попросту не будут знать пользователя для старта брутфорса. Однако перейдем к нашим RSA ключикам.
# Т.к попросту не будут знать пользователя для старта брутфорса.
# В таком случае рекомендую использовать Firewall.
# Давайте все же перейдем к нашим RSA ключикам.
# Вы можете вручную просто вписать информацию из публичного RSA ключа в '~/.ssh/authorized_keys'
# На своем устройстве получите информацию из файлы id_rsa.pub, например cat id_rsa.pub
# Впишите данную информацию из файла id_rsa.pub в файл authorized_keys вашего юзера Linux '~/.ssh/authorized_keys'
@@ -291,15 +277,25 @@ sudo systemctl restart ssh
# Перед этим убедитесь, что у вас установлены пакеты:
apt install sudo
apt install nano
apt install nano или apt install vim
# sudo — Нужно использовать если у вас основной user != root
# nano — Удобный редактор текста через SSH
# nano — Удобный редактор текста в терминате
# vim — Редактор немного посложнее, но если освоитесь - будет очень удобно его использовать
# Как сохранить файл через nano
# CTRL + X , Y (yes), ENTER
# Как сохранить файл через vim
# После открытия файла
# vim file.txt
# Для ввода информации нажмите I (i), у вас появтся надпись снизу слева --INSERT-- или --ВСТАВКА--
# После чего заносите любую информацию в файл и нажимаете:
# CTRL C, далее пишите :wq
# :wq запишет и закроет файл.
# :q! просто закроет файл.
# Подробнее в документации к vim или nano.
# Готово, теперь вы умеете сохранять файлы, но все таки перейдем к отключению парольной авторизации
# Вводим команду:
@@ -332,9 +328,11 @@ sudo ssh USER@IP -i ключ
sudo systemctl restart ssh
# Готово, теперь зайти на вашу серверную машину через пароли не получится, используем только ключи авторизации (rsa)
# Для удобства входа через пароли можете использовать пакет данных sshpass
```
### Различные команды и бенчи, которые возможно вам понадобятся
### Различные команды и бенчмарки, которые возможно вам понадобятся
- В основном подойдет для мониторинга и наблюдения за жизнедеятельностью вашей серверной машины
```
# Информация по системе
@@ -403,6 +401,7 @@ iptables -A INPUT -p tcp --dport 22 -j DROP
# Установка
apt-get install iptables-persistent
# Можно обойтись без этого и просто настроить восстановление правил IPTables через crontab :)
# Правила iptables необходимо создать, затем выполнить следующую команду
@@ -482,7 +481,7 @@ zip -r sb.zip /home/SkyBlock
# Либо используйте встроенный tar
```
### MySQL - Для Linux
### SQL DataBase
```
# Установка MySQL
sudo apt install mysql-server
@@ -546,8 +545,12 @@ cp /var/lib/mysql/DATABASE_CUSTOM_DAMP_NAME.sql /home/testuser/
sudo nano /etc/sudoers.d/sudowpass
# В файл sudowpass нужно вписать следующее:
YourUserHere ALL=(ALL) NOPASSWD:ALL
# Или сделаем проще с автоопределением вашего юзера (Делать с правами рута) - $USER ALL=(ALL) NOPASSWD:ALL
touch /etc/sudoers.d/sudowpass && echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/sudowpass && cat /etc/sudoers.d/sudowpass
```
### Передача файлов по SSH через `scp`
```
@@ -583,7 +586,7 @@ sudo dpkg-reconfigure locales
# Раздел главных настроек нашего серверного ядра
### Защита вашего сервера
- Не испульзуйте плагины с левых сайтов! Хотя я и использую плагины из других источников, однако я имею определенные знания для поиска дыр в них, поэтому использую в итоге плагины с чистым кодом. Вам определенно не рекомендую как новичкам (Возможно здесь имеются тоже люди, которые разбираются в этом, но всё таки статья ориентирована на начинающую категорию пользователей.
- Не используйте плагины с левых сайтов! Хотя я и использую плагины из других источников, однако я имею определенные знания для поиска дыр в них, поэтому использую в итоге плагины с чистым кодом. Вам определенно не рекомендую как новичкам (Возможно здесь имеются тоже люди, которые разбираются в этом, но всё таки статья ориентирована на начинающую категорию пользователей.
```
Если вы хотите сохранить безопасность вашего сервера и ваших игроков,
то лучше всего скачайте оригинальные плагины,
@@ -611,23 +614,26 @@ sudo dpkg-reconfigure locales
> Платный плагин / Самопис от себя или студий - Данное ПО не является аргументом для вашей производительности,
лучше придерживаться уже известных плагинов, а по вашему желанию вы можете их дополнить, т.к большинство из них OpenSource
> Рекомендация: Используйте современное ПО, например PaperMC/Folia, никогда не ставьте бемполезные плагины на стак мобов и прочее.
```
# О создании игрового сервера в Minecraft
### Рекомендуемое ПО для запуска сервера
- Если вы планируете разрабатывать модовый сервер, то определенно рекомендую __[Fabric](https://fabricmc.net/)__
> Моды можно найти [здесь](https://modrinth.com/mods) или [здесь](https://www.curseforge.com/minecraft/mc-mods)
- Если вы планируете разрабатывать обычный сервер, то определенно рекомендую __[PaperMC](https://papermc.io/) | [PurPur](https://purpurmc.org/)__
> Рекомендуемое ПО Для разработки ___Proxy___ сервера __[Velocity](https://velocitypowered.com/) | [Velocity с сайта PaperMC](https://papermc.io/)__
- Если вы планируете разрабатывать обычный сервер, то определенно рекомендую __[PaperMC](https://papermc.io/)__
> Рекомендуемое ПО Для разработки ___Proxy___ сервера __[Velocity с сайта PaperMC](https://papermc.io/)__
### VDS/DEDICATED или PANEL HOSTING?
- __Автор__ данного поста не поддерживает панельные хосты из-за их ограничений для клиента. Если вы хотите создать качественный Проект, то пожалуйста придерживайтесь использовать выделенных или виртуальных серверо с полным доступом к __SSH__ протоколу
- __Автор__ данного поста не поддерживает панельные хосты из-за их серьезных ограничений. Если вы хотите создать качественный Проект, то пожалуйста присмотритесь к использованию выделенных или виртуальных серверов с полным доступом.
# Об авторе
### Какое ПО используется для разработок игровых проектов (Сервер-сайд)
- Я пользуюсь этими ПО: __[Fabric](https://fabricmc.net/) | [PaperMC](https://papermc.io/) | [PurPur](https://purpurmc.org/) | [Velocity](https://velocitypowered.com/)__
- Я пользуюсь этим ПО: __[Fabric](https://fabricmc.net/) | [PaperMC (+Velocity)](https://papermc.io/)__
### Какое ПО используется для разработок игровых клиентов (Клиент-сайд)
- Я пользуюсь этим ПО: __[Fabric](https://fabricmc.net/)__
### Какое ПО используется для подключения к серверу по SSH, SFTP
- Я пользуюсь этими ПО на Windows: [Termius (SSH Полностью бесплано, SFTP ~~Пробная версия~~ (Теперь бесплатно в FREE Plan :D), ~~потом платно~~](https://termius.com/) | [WinSCP (SFTP)](https://winscp.net/eng/download.php)
- Я пользовался этими ПО на Windows: __[Termius (SSH Free, SFTP ~~Пробная версия~~ (Уже Always Free), ~~потом платно~~](https://termius.com/) | [WinSCP (SFTP)](https://winscp.net/eng/download.php)__
- (Актуально) Я использую на данный момент: __[Dolphin KDE](https://apps.kde.org/ru/dolphin/) | [Yakuake KDE](https://apps.kde.org/ru/yakuake/) | [Konsole KDE](https://apps.kde.org/ru/konsole/)__