Загрузка...

Учимся создавать свой сервер osu

Тема в разделе Гайды osu! создана пользователем keijia 14 июн 2021. 3764 просмотра

Загрузка...
  1. keijia
    keijia Автор темы 14 июн 2021 хочу чипсы 1029 12 сен 2018
    Создание своего osu! сервера на базе gulag
    Итак, привет всем. Сегодня мы будем разбирать такое дело как создание своего осу сервера. Для начала давайте ознакомимся с парой вещей, которые нам надо знать.
    1. Ядро сервера
    Есть разные "ядра" для серверов осу. Вот все ядра, которые мне удалось сходу вспомнить: ripple/pep.py, gulag, ruri, oyasumi, Sora, kuriso, Peace, Chikatto (этот кстати писал я, на момент написания статьи он не закончен).
    Ядра сервера отличаются по производительности, установке и в целом во многом. Самый распространённый вариант - ripple/pep.py т.к. он в принципе первый, но установить его сложно, а производительность оставляет желать лучшего.
    Посмотреть сравнения производительности между ripple/pep.py, ruri, gulag и Peace можно тут.

    Важно знать: ripple/pep.py, ruri, Sora и kuriso не имеют своего скор-сервера и аватар-сервера, потому использовать их надо в связке с ripple-stack (ripple/lets и ripple/avatar-server), а базу данных под эти сервера еще надо постараться найти.

    Разберём преимущества ядер:
    • ripple/pep.py - преимущество одно: по сути это отец всего, практически самая первая полноценная имплементация банчо. Минусов полно (например корявая поддержка турнирных клиентов), но надо отдать должное. Имеет специально написанный для него хороший фронтенд (сайт), который используют такие сервера как Akatsuki и ripple (ахах)
    • kuriso - написан на modern Python, быстр и асинхронен. Поддерживает весь ripple-stack (включая фронтенд А.К.А сайт) и прекрасно работает турнирный клиент. Сервер разработчика (котрика) - https://kurikku.pw
    • ruri - написан на c++. Всё. Ничего интересного больше нет, кроме поддержки всего рипл стака (и то, тут используется собственная схема привилегий)
    • gulag - написан на modern Python, быстр и асинхронен. Включает в себя скор сервер и аватар сервер. Установка простая, знания нужны минимальные. Довольно дружелюбное комьюнити разработчиков. Имеет какой-никакой фронтенд (сайт), поддерживаемый комьюнити. Пример сервера - https://osu.shizofrenia.pw (мой гага, не реклама)
    • oyasumi - написан на c# (.NET 5, ASP.NET Core), включает в себя скор сервер и аватар сервер. Установка простая, даже база данных создается сама. Нет как такового фронтенда, только сайт-визитка. Считает пп используя osu-lazer (новая эра)
    • Peace - написан на Rust. Асинхронен и быстр. Включает в себя скор сервер и аватар сервер. Установка не сложная. Фронтенда нет.
    • Chikatto - написан на c# мной. Плюсов больше нет, просто выпендриться захотелось(
    Итак, как можно было понять из заголовка, использовать мы будем ядро gulag, т.к. его вполне просто поднять, а по скорости он чуть ли не самый крутой из всех присутствующих.

    2. Установка
    Для начала вам нужен свой домен и дедик (выделенный сервер) на ubuntu 18.04 (использовать другие версии не рекомендует сам автор ядра)
    В настройках днс зоны домена надо направить поддомены c, a, assets, osu, b на ip нашего сервера
    Когда мы убедились, что всё вышеперечисленное у нас есть, давайте приступим к установке.

    2.1 Установка зависимостей:
    Пишем команды на сервере:
    Код

    $ sudo add-apt-repository ppa:deadsnakes/ppa
    $ sudo apt install git python3.9 python3.9-dev python3.9-distutils mysql-server nginx build-essential certbot
    $ wget https://bootstrap.pypa.io/get-pip.py
    $ python3.9 get-pip.py && rm get-pip.py

    2.2 Установка git и установка самого ядра:
    Опять же пишем команды:
    Код

    $ git clone https://github.com/cmyui/gulag.git && cd gulag
    $ git submodule init && git submodule update
    $ python3.9 -m pip install -r ext/requirements.txt
    $ cd oppai-ng && ./build && cd ..

    2.3 Создание базы данных:
    Пишем:
    перед тем как написать команду, замените данные на свои
    Код

    $ mysql -u /* замените этот текст именем пользователя */ -p
    /* вводим наш пароль */
    CREATE DATABASE osu;
    exit;
    $ mysql -u /* замените этот текст именем пользователя */ -p osu < ext/db.sql
    /* вводим наш пароль */

    2.4 Создаём сертификат для нашего домена:
    перед тем как написать команду, замените данные на свои

    Код

    $ sudo certbot certonly \
    --manual \
    --preferred-challenges=dns \
    --email ваш@емейл.ру \
    --server https://acme-v02.api.letsencrypt.org/directory \
    --agree-tos \
    -d *.вашдомен.ру

    2.5 Настройка nginx:
    пишем:
    Код

    $ sudo cp ext/nginx.conf /etc/nginx/sites-enabled/gulag.conf
    $ sudo nano /etc/nginx/sites-enabled/gulag.conf
    Меняем подчеркнутые данные на свои:[IMG]


    Пишем:
    Код
    $ sudo nginx -s reload

    2.6 Настраиваем конфиг:
    Пишем:
    Код

    $ cp ext/config.sample.py config.py
    $ nano config.py
    Получаем апи-ключ от осу тут: https://osu.ppy.sh/p/api
    Меняем выделенные данные на свои.
    При этом ставим:
    'db': 'osu'
    'host': 'localhost'
    [IMG]

    2.7 Запускаем сервер
    Код
    $ ./main.py
    Всё!

    Что-бы подключиться к осу, вам нужно создать ярлык с таким содержанием (домен заменить на свой):
    [IMG]

    Регистрация будет доступна из самой игры. Удачи!
     
    14 июн 2021 Изменено
  2. akeela
    akeela 14 июн 2021 4616 16 ноя 2019
    Теперь я видел все.
     
  3. Cufee
    Cufee 14 июн 2021 5593 30 июн 2018
    Сделаю вид что понял обсалютно все и поставлю класс
     
  4. Coakira
    Coakira 15 июн 2021 Octopus Fight 341 7 июн 2020
    хз копипаста или нет, но инфа полезная. Особенно для тех, у кого бан на банчо:troll_face:
     
  5. 32565427
    32565427 16 июн 2021 0 16 июн 2021
    жесть, всё очень сложно но прикольно
     
  6. 1894519845183
    через hyper-v можно ubuntu установить?
     
    1. keijia Автор темы
    2. 1894519845183
      keijia, а ок, я уже понял много чего, но думаю что другие не поймут и надо им специально в лицо видос делать:/
    3. OpCxde
      keijia, лол можно из под винды сделать?
  7. 32565427
    32565427 30 авг 2021 0 16 июн 2021
    блять меня deadsnake нахуй посылает
     
    1. keijia Автор темы
      32565427, что пишет, какой линукс, инфа??
    2. 32565427
      ладно я это уже решил, проблема в том что я запускаю серв а мне пишет "Please start your nginx server", запустил но не хуй.
      и ещё, что в рут писать?
  8. OpCxde
    OpCxde 13 окт 2021 12 20 авг 2019
    как это решить помогите[IMG]
     
    1. keijia Автор темы
      OpCxde, mysql запусти
  9. Maelw
    Maelw 2 ноя 2021 0 29 окт 2021
    [IMG] Что не так? Не могу понять.
     
    1. keijia Автор темы
      Maelw, хз, чет пошло не по плану
  10. комару
    комару 6 ноя 2021 панк из оффтопа 7660 12 янв 2020
    :finger_down::finger_down:
     
  11. Klucva_
    Klucva_ 7 дек 2021 0 8 май 2021
    File "main.py", line 126
    misc.context.acquire_http_session(glob.has_internet) as glob.http_session,
    ^
    SyntaxError: invalid syntax

    так и должно быть?
     
Top