# Поднимаем станцию своими руками на примере Ubuntu 20.04 Эта памятка создана для тех, кто в будущем захочет поднять свой "анемаз". Тому, кто занимается этим давно может пригодиться только список нужных библиотек и трики, всё остальное уже и так разжевано на форумах бьёнда. За основу будет взят мой старый опыт по настройке всего этого под **Ubuntu Linux 20.04**. Беру я её из-за простоты в настройке и меньшей вероятностью в возможном пердолинге с конфигами. ### Хостинг Выбираете сами, но могу посоветовать [SpaceCore](https://billing.spacecore.pro/?from=30692) (регайтесь по этой рефке, если вдруг понадобится моя помощь). Одноядерного сервера с i7-8700 от них должно хватить на ровно один сервер, так что пробуйте. Также внимательно смотрите на скорость процессора, она должна быть описана, чем она больше - тем бодрее двигается ваша станция. Многие хостинги любят резать процессор в половину и более (большая часть говнохостеров режет процессор по приколу, не говоря уже про триальные версии), либо подсовывают магнитные ленты вместо SSD дисков со скоростью записи/чтения в 1 байт/25 лет. ### Первоначальная настройка Думаю, процесс с созданием машины и подключением к ней вы найдёте в интернете. Для удобства работы с сервером могу посоветовать **Xshell** и его лучшего друга **Xftp**. Если вы сейчас работаете под линуксом и не понимаете как это сделать, то могу вам посоветовать застрелиться нахуй. И так, подключаемся к нашей новенькой горяченькой и чистенькой машине. Первым делом создадим учётку юзера, установим пароль и выдадим ему права на выполнение команд от лица рут-пользователя, под рутом работать никому не советую, а если вы и делаете это, то вы квалифицированный специалист и просто знаток, либо олигофрен и у вашей матери рак жопы: ```bash= adduser zlofenix passwd zlofenix usermod -aG sudo zlofenix su zlofenix ``` Уже лучше. Выполним сразу же обновление системы и установим необходимые пакеты для дальнейшей работы: ```bash= sudo apt update && sudo apt dist-upgrade && sudo apt autoremove sudo dpkg --add-architecture i386 sudo apt update && sudo apt install git libssl-dev:i386 grep mysql-client lib32z1 pkg-config libssl-dev screen language-pack-ru unzip make ``` Включены все необходимые пакеты для работы бьёнда. Меняем локаль на нужную. Конкретно нам нужна руснявая **ru_RU.UTF-8**: ```bash= sudo nano /etc/default/locale ``` Выходим из редактора сочетанием клавиш **CTRL+S** (сохранить) и **CTRL+X** (закрыть). Все хоткеи у nano расписаны снизу, если вдруг забудете. Теперь можно приступать к развёртке бьёнда. ### Развёртывание BYOND Нам нужно взять этот BYOND. Брать мы его будем отсюда: http://www.byond.com/download/ Конкретно на дату написания этой статьи мы будем использовать актуальную последнюю версию с номером 514.1568: ```bash= wget http://www.byond.com/download/build/514/514.1568_byond_linux.zip unzip 514.1568_byond_linux.zip rm 514.1568_byond_linux.zip cd byond/ ``` Теперь установим это: ```bash= sudo make install DreamDaemon ``` Если выводится справочная информация, то поздравляю - бьёнд развёрнут. Иначе отпишитесь в теме приложив вывод ошибки. ### Разворачиваем билд У каждого билда свой анальный способ доведения его в рабочее состояние, но мы же возьмём за пример оригинальный /tg/. Тут всё просто. Клонируем репу локально: ```bash= git clone --depth=1 https://github.com/tgstation/tgstation manyastation/ ``` Поправим конфиги... Как править конфиги? А я ебу, я че бог что-ли? Теперь мы скомпилируем и запустим наш шедевр: ```bash= DreamMaker tgstation.dme screen DreamDaemon tgstation.dmb 1488 -trusted ``` Первая команда компилирует, вторая уже запускает. Должно срать ошибками. Всё из-за недостающих либ для /tg/. Выложить скомпилированные под разные билды мне не позволяет моя совесть и лимит размера файлов на форуме. Так что будем делать это ручками. Возьмём в пример rust_g. Что он делает? Уменьшает нагрузку на бьёнд в плане логгирования. В README.md либы уже описано как её компилировать, дублировать тут не буду. Допустим, есть у нас эта библиотека, закинули мы её в папку с билдом и... нихуя, опять срёт. Проблема в том, что бьёнд не видит её и также у неё нет прав на запуск. Исправляем это так: ```bash= chmod +x rust_g export LD_LIBRARY_PATH=/home/zlofenix/manyastation/ ``` Теперь должно логгировать как надо. Как делать другие либы ищите там где их берёте. Один хуй всё написано долбоёбами криворукими и будет срать разными ошибками, которыми нужно бить в ебало разработчику этой хуйни. Решение проблем с корявыми логами, которые пишутся хуй знает куда. Берём вот https://github.com/Valtosin/ss13-hub/blob/master/scripts/psv.py этот скрипт и кидаем его в папку data/ нашей станции. Он конвертирует логи в нечитабельное говно, но уже разбивает их как надо. Для конвертирования нужно дать скрипту ID-раунда: ```bash= python3 psv.py 42 ``` Как сделать их чуть более читабельными? Да хуй знает. Попробуйте в .html перевести, может лучше станет. ### Базы Мы же установили mariadb... Да, поднять базу тоже стоит, если вы не собираетесь играться только одни сутки. Я этот процесс не буду расписывать, могу лишь добавить некоторые трики для корректной работы /tg/. Создавать базу нужно в кодировке latin1, **если у вас версия 512 и ниже**: ```sql= CREATE DATABASE manyastationthebest CHARACTER SET latin1 COLLATE latin1_swedish_ci; ``` Если версия 513/514 и выше **как в нашем случае**, то можно не измываться над кодировкой: CREATE DATABASE manyastationthebest; Mysql отвечает, что ты пидор при попытке подключиться? ```bash= sudo systemctl stop mariadb.service sudo mysqld_safe --skip-grant-tables --skip-networking & mysql -uroot ``` Так мы запустили её в безопасном режиме. Теперь установим пароль. ```sql= FLUSH PRIVILEGES; SET PASSWORD FOR root@'localhost' = PASSWORD('mypasswordis12345'); QUIT; ``` Перезапустим её. ```bash= sudo systemctl restart mariadb.service ``` И оно не будет работать. Так как нет доступного сокета. ```bash= sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock ``` Теперь должно.