diff --git a/README.md b/README.md index 37eee4b..13e951f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,384 @@ -# AdvancedServerCreation -Create your Own Minecraft Network with basic/advanced features +# Продвинутое создание сервера +### Создайте свой личный Minecraft Проект с использованием провинутой и удобной информации` + +``` +Версия документа v1.5 + +* Это не последние изменения данного документа, вскоре здесь будет появляться новая информация * + +Некоторые рекомендации из пунктов могут работать некорректно на некоторых системах +За подробной поддержкой обращайтесь в мой дискорд - https://discord.gg/7XkGYJbtZg + +Для полноценной настройки рекомендую использовать Adoptium OpenJDK 17 LTS Java + +< ! > ПОЖАЛУЙСТА ЧИТАЙТЕ ВНИМАТЕЛЬНО И НЕ ПРЕДЪЯВЛЯЙТЕ ПРЕТЕНЗИЙ РАЗРАБОТЧИКУ < ! > +``` + +# Настройка выделенных и виртуальных серверов +### Базовые компоненты, архивация файлов, настройка безопасности + +- Базовые компоненты для вашего сервера +- Все команды выполняются от ~ root пользователя, либо через sudo + +### Обновление пакетов машины +``` +sudo apt update + +sudo apt upgrade +``` +### Специально для Linux (CentOS 8) +``` +yum + +yum update + +yum upgrade + +dnf + +sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm + +dnf install htop + +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) (Можно управлять портами) + +apt install neofetch - Утилита для красивого отображения вашей ОС и некоторых параметров +``` +- Обычно предустановлена на Ubuntu, но в нашем случае Debian ОС. Выполняет команды от имени root + +``` +apt install sudo +``` + +- Если потребуется подтвердить установку, то подтвердите отправив консоли Y (y) + + + +### Специально для Oracle Cloud - откройте порт UDP/TCP 25565 +``` +sudo apt install firewalld + +sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp + +sudo firewall-cmd --permanent --zone=public --add-port=25565/udp + +sudo firewall-cmd --reload + +# Важно! В конфиге server.properties нужно указывать IP: 0.0.0.0 +# Если у вас Bungeecord / Velocity, укажите в конфиге Bungeecord / Velocity IP: 0.0.0.0:25565 +``` +### Установка Java на вашу серверную машину +- Вы научитесь легко и просто устанавливать и удалять Java с вашего сервера +- Для начала зайдите в SFTP клиент и перейдите в раздел ~/opt (Можно любой, но этот в качестве основы) +- В Linux изначально придумана команда для упаковки архивов и распаковки архивов +- Использовать команду tar можно с использованием следующих параметров: +``` +# -c | --create — создать архив +# -a | --auto-compress — дополнительно сжать архив с компрессором который автоматически определить по расширению архива. +# -r | --append — добавить файлы в конец существующего архива +# -x | --extract, --get — извлечь файлы из архива +# -f | --file — указать имя архива +# -t | --list — отобразить список файлов и папок в архиве +# -v | --verbose — выводить список обработанных файлов +# -u | --update — Обновить архив новыми файлами +# -d | --diff, --delete — Проверить начилие архивов, удалить файл из архива +``` + +- Пример перемещения файлов по системе Linux (Не выполняйте эти команды просто так!) +``` +# < ! > НЕ ОБЯЗАТЕЛЬНЫЕ КОМАНДЫ < ! > + +mv /home/others/Test /others2 + +# Также вы можете использовать флаг* -v чтобы увидеть подроную информацию о процессе +# ~ — тильда, дает понять системе, что это корневой каталог root (~) +# Т.е ~/others2 и т.д + +mv -v ~/home/others/Test ~/others2 + + + +# Вы можете также использовать приставку sudo к команде mv + +# Теперь вы знакомы с командой для перемещения файлов, но рекомендуется еще раз закрепить материал +# Попробуйте данные команды на каком-то пустом сервере, либо можете установить WSL2 на вашу систему +# Рекомендуемый дистрибутив ОС — Ubuntu,Debian +``` + +### Начало процесса установки Java на ваш сервер +- Установка и распаковка архива при помощи "tar" — встроенный архиватор в Linux +``` +# Архив уже должен быть установлен / перемещен в выбранную вами директорию +# Чтобы установить архив, вы можете использовать в качестве передачи файлов SFTP приложение +# WinSCP, либо же скачать сразу из консоли - wget +# Команду писать без <> + +# Теперь давайте его распакуем — после распаковки появится папка с нашей Java +# Выполните команду: + +tar xf ИМЯ.tar.gz + +# Обычно все пакеты имеют расширение .tar.gz +# Но мы ведь как раз используем "tar" ;) + +# Например архив с Java называется: +OpenJDK16U-jdk_x64_linux_hotspot_16.0.1_9.tar.gz + +# < ! > Название может быть иное, пожалуйста узнайте это < ! > + +# Для распаковки архива потребувется ввести всего одну команду: + +tar xf OpenJDK16U-jdk_x64_linux_hotspot_16.0.1_9.tar.gz + +# На момент создания статьи последняя Java, которую лично я проверял у себя на Проектах +# Выполните данные команды для скачивания архива: + +cd ДИРЕКТОРИЯ + +sudo wget ССЫЛКА + +... Далее команды распаковки и все действия выше + +# ССЫЛКУ брать отсюда - https://adoptium.net/releases.html + +# Если все сделано верно, то вы успешно распаковали Java в директорию +``` + +### Создание "Линка" для нашего файла Java в папке с самой Java +- Вы можете подробно изучить про команду ln и ее параметры +``` +# Линки — тоже самое что ярлык, те кто когда либо имели систему Windows / MacOS +# Могут знать про создание ярлыка при помощи клика ПКМ по файлу +# Но у нас ведь нет интерфейса, поэтому будем использовать команду "ln" +# *Кстати можно делать линки также через WinSCP — Клиент SFTP, FTP . . . +# Создаем ярлык (линк) для нашего исполняемого файла +# Выполните команду: + +ln -svf /opt/.../bin/java /usr/bin/java + +# Заместо ... пишем название папки с Java — /opt/jdk-16.0.1+9/bin/java + +ln -svf /opt/jdk-16.0.1+9/bin/java /usr/bin/java + +# Если вы все сделали правильно, то вы успешно установили Java на вашу машину +``` + +### Удаление Java с нашего сервера +- Многие скажут, что есть команда sudo apt remove *java* и т.д, но это самый простой способ — можно также и через команды +``` +# Для начала перейдем в корень сервера ~ +# Далее переходим по пути ~/usr/bin +# Используем удобный вам способ для поиска файлов — мне было удобно через WinSCP Клиент +# Находим файл "Java" — он должен быть единственный в данной директории! +# Спокойно без боязни удаляем его — Готово вы удалили активную Java с вашего сервера, однако +# Она все еще существует как папку и архив по пути ~/opt +# Можно сделать это через команды + +cd usr + +cd bin + +sudo rm java + +# Проверить наличие активной Java, можно введя команду + +java -version + +# При успехе, у вас должно написаться, что Java не найдена +``` + +### Настройка безопасного входа на сервер - Linux +- В качестве альтернативы простым паролям, мы будем использовать rsa_keys шифрование SHA + +- Генерация и установка ключей на сервер +``` +# Для Windows: +# Открываем приложение PowerShell, либо другое из того, что у вас может быть + +ssh-keygen + +ssh-keygen -b 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" + +# ... USER@IP ... +# Подставьте ваши данные заместо шаблона +# USER — Логин, ваш пользователь на серверной машине +# IP — Ваш IP от серверной машины + + +# ВНИМАНИЕ! Мы начинаем отключать парольную аутентификацию на сервере, будьте аккуратны +# *Автор не несет ответвенности, если вы вдруг сломаете вход на вашу серверную машину, +# Обязательно создавайте бэкапы ваших игровых серверов* + + +# Перед этим убедитесь, что у вас установлены пакеты: + +apt install sudo + +apt install nano + +# sudo — Нужно использовать если у вас основной user != root +# nano — Удобный редактор текста через SSH + +# Как сохранить файл через nano + +# CTRL + X , Y (yes), ENTER + +# Готово, теперь вы умеете сохранять файлы, но все таки перейдем к отключению парольной авторизации +# Вводим команду: + +sudo nano /etc/ssh/sshd_config + +# Вам нужно найти или написать данную строчку: + +PasswordAuthentication no + +# После сохраняем файл (Мы используем nano в качестве редактора текстовых файлов) +# Далее нам необходимо перезагрузить SSH клиент +# < ! > Советуем проверить доступ к SSH < ! > +# Вернитесь в PowerShell и введите + +ssh USER@IP + +ssh USER@IP -i ./ключ + +# ... USER@IP +# Подставьте ваши данные заместо шаблона +# USER — Логин, ваш пользователь на серверной машине +# IP — Ваш IP от серверной машины + +# Далее если все хорошо, перезагружаем ssh + +sudo systemctl restart ssh + +# Готово, теперь зайти на вашу серверную машину через пароли не получится, используем только ключи авторизации (rsa) +``` + +### Различные команды и бенчи, которые возможно вам понадобятся +- В основном подойдет для мониторинга и наблюдения за жизнедеятельностью вашей серверной машины +``` +# Информация по системе + +# Через бенчмарк + +sudo wget -qO- bench.sh | bash + +# Через неофетч (Удобнее чем 1-ый вариант, однако данный вариант не сможет показать скорость) + +apt install neofetch + +neofetch +``` + +### IPTables - Закрытие порта SSH, SFTP (22) +- На самом деле не рекомендую делать такое с динамическим IP, иначе вы рискуете потерять доступ к вашей серверной машине +``` +# Базовые настройки IPTables | Запрет пинга на ваш дедик | Запрет входа с других айпи по SSH (только ваш) + +iptables -A INPUT -s IP/32 -p icmp -j DROP + +# Разрешить свой айпи для входа через SSH,SFTP - ПУНКТ ДЕЛАТЬ ПЕРВЫМ ИЗ ВСЕХ! + +iptables -A INPUT -p tcp --dport 22 -s YourIP -j ACCEPT + +# Дропнуть порт 22 (aka SSH, SFTP). < ! > ДЕЛАТЬ ПОСЛЕ РАЗРЕШЕНИЯ < ! > + +iptables -A INPUT -p tcp --dport 22 -j DROP + +# Установка + +apt-get install iptables-persistent + +# Правила iptables необходимо создать, затем выполнить следующую команду + +service iptables-persistent start + +# Поскольку утилита является демоном — прекратить ее работу нельзя, однако можно очистить список правил + +service iptables-persistent flush + +# Обновить правила, если persistent уже был установлен + +dpkg-reconfigure iptables-persistent +``` + +### IPTables - Закрытие портов на нескольких серверных машинах + +- Здесь вы подробно узнаете как легко и быстро закрыть порты +``` +# Представим что у нас есть два сервера VDS / VPS +# Первый сервер под маркой X - Это у нас будет Proxy сервер (Фильтр различных ботов, пакетов (TCP)) +# Второй сервер под маркой Y - Это у нас будет Survival сервер (Основное выживание) +# На сервере X пропишите следующие команды в данном порядке, как они даны (Свреху вниз) + +iptables -A INPUT -s -j ACCEPT +iptables -A INPUT -s 127.0.0.1 -j ACCEPT + +# На сервере Y пропишите следующие команды в данном порядке, как они даны (Сверху вниз) + +iptables -A INPUT -p tcp -s --dport -j ACCEPT +iptables -A INPUT -p tcp --dport -j DROP + +# После манипуляций на каждом VDS / VPS нужно ввести данную команду + +apt install iptables-persistent + +# Если у вас он уже был установлен, то просто обновите правила используя команду + +dpkg-reconfigure iptables-persistent + + +# Если хотите можете также ознакомиться со списком ваших правил iptables на каждой из виртуальных машин + +iptables --list + +# Узнать номера всех правил + +iptables -L --line-numbers + +# Удалять правила можно следующим способом + +iptables -D INPUT ЧИСЛО +``` + +### "WinRar" - Известный архиватор, но для Linux +``` +# Установка +apt install zip unzip + +# Там где нужно будет создать архив - у меня это папку /home +cd home + +# Архивирование папки/файла | Можно находиться в любом пути (Вы указываете конкретно путь до папки/файла , который нужно заархивировать) +zip -r NAME.zip /home/BungeeCord + +# Для примера в моем случае +# /home - дирректория папки с сервером +# /BungeeCord - сама папка с банджей, можно любую например: Survival, Anarchy, SkyBlock. + +zip -r surv.zip /home/Survival + +# Если имеется SkyBlock папка с сервером, то введите эту команду +# Указывать можно любой сервер, также вы можете например хранить сервер по пути /servers/BungeeCord +# Не обязательно использовать /home раздел для серверов! + +zip -r sb.zip /home/SkyBlock + +# Либо используйте встроенный tar +```