В данной статье мы разберём, как развернуть свой проект на хостинге. Примером послужит конструктор игр, над которым я работаю.

Содержание
Вступление
Будучи большим любителем Guild Wars 2, однажды я написал прототип с минимальной реализацией похожей системы боя. Мне хотелось, чтобы можно было самим создавать и настраивать бои. Недавно я добавил к прототипу редактор данных игры, веб-клиент и сервер для мультиплеера. После этого я арендовал сервер и загрузил туда игру, чтобы можно было поиграть с друзьями.

В процессе работы с сервером я обратил внимание, что этот опыт подошёл бы и для других проектов. Поэтому представляю вашему вниманию данную статью. После прочтения у вас будет готовая инструкция для запуска своего проекта на удалённом сервере.
Аренда сервера
В рамках данной статьи самого дешёвого будет достаточно. Я взял сервер у RUVDS здесь.

Нажимаем заказать, выбираем дата-центр. Для отладки высокого пинга я взял себе подальше, во Владивостоке. Но для игроков чем меньше пинг, тем лучше, поэтому выбирайте дата-центр поближе к себе или к потенциальным игрокам.
В Шаблоне сервера выбираем Установить чистую ОС и Ubuntu, дальше добавляем свой SSH-ключ, чтобы заходить без пароля.

После оплаты нужно немного подождать, пока сервер будет создан. Далее смотрим IP в разделе Мои серверы и заходим:
ssh user@ip
Если возникли вопросы по подключению или настройке сервера, ответы на них, а также другие полезные статьи можно посмотреть здесь
Устанавливаем Rust
Клиент, сервер и редактор написаны на Rust, поэтому нам понадобится компилятор. Инструкции по установке можно посмотреть на официальном сайте. Рекомендуется устанавливать через rustup. После установки компилятора нам понадобится добавить цель компиляции для браузерного клиента:
rustup target add wasm32-unknown-unknown
А для Windows и macOS ещё нужно установить цель для кросс-компиляции сервера:
rustup target add x86_64-unknown-linux-gnu
Кроме этого, нужно установить утилиту wasm-bindgen, она также понадобится для сборки браузерного клиента:
cargo install wasm-bindgen-cli --version 0.2.100
Сборка проекта
Теперь, когда у нас есть сервер, можно перейти непосредственно к проекту. Клонируем репозиторий и переходим в нужную ревизию:
git clone https://github.com/ibaryshnikov/game-design.git
git checkout ba24eb3
Нас интересуют папки server
и client-web
. Сначала соберём клиент:
cd client-web
./build.sh
Так мы скомпилируем клиент в WebAssembly. Другие файлы клиента, такие как index.html
, можно найти в папке dist
. После этого можно запускать сервер:
cd ../server
cargo run
Когда сервер скомпилируется и запустится, открываем браузер и переходим на http://localhost:8080/game
— должен открыться клиент игры. Открываем вторую вкладку, и уже можно потестировать мультиплеер. Управление: wasd — движение, shift — рывок, space — атака.

Загрузка игры на сервер
Когда у нас есть игра и сервер, осталось загрузить файлы игры и запустить её на удалённом сервере. Для начала заходим на сервер и создаём нужные папки:
ssh user@ip
mkdir /game
cd /game
mkdir client-web bin
Обратите внимание, что выше клиент и сервер компилировались в режиме для отладки. Поэтому нам нужно собрать клиент и сервер ещё раз, уже с включёнными оптимизациями. Компилируем клиент и загружаем его на удалённый сервер:
cd client-web
./release_build.sh
scp -r dist user@ip:/game
Компилируем и загружаем сервер, а также файл конфигурации:
cd ../server
cargo build --release
scp target/release/server user@ip:/game
scp config.toml user@ip:/game
Для Windows / macOS команда будет немного другой из-за кросс-компиляции:
cargo build --release --target x86_64-unknown-linux-gnu
scp target/x86_64-unknown-linux-gnu/release/server user@ip:/game
И нам ещё потребуются файлы самой игры с данными об атаках, противниках, уровнях и так далее. Для этого переходим в корень репозитория game-design
и выполняем:
scp -r data user@ip:/game
После этого возвращаемся на удалённый сервер и раскладываем файлы по папкам:
cd /game
mv dist client-web/
mv server config.toml bin/
Дальше изменяем порт сервера в файле конфигурации на 80. Чтобы проверить, что порт задан верно, делаем cat bin/config.toml
, должно вывести port = 80
. И, наконец, можно запустить игру:
cd bin
./server
Переходим в браузере на http://ip_сервера/game
. Если страница с игрой успешно открылась — поздравляю, теперь у вас свой проект! Можно взять ссылку и поделиться с друзьями. Остался один небольшой момент с сервером: при закрытии ssh соединения сервер игры тоже автоматически остановится. Чтобы он продолжал работать и после закрытия SSH-сессии, можно воспользоваться утилитой nohup:
nohup ./server > /dev/null 2>&1 &
И делаем ps ax | grep server
чтобы убедиться, что процесс успешно запущен. После этого можно закрывать консоль, и сервер продолжит работать.
Подробнее об игре
В первую очередь это хобби-проект, чтобы можно было создавать бои и играть с друзьями. Но я хочу, чтобы и другие любители игр подобного жанра могли экспериментировать с механиками боёв. Поэтому я открыл код под лицензией MIT. В данный момент реализован только самый минимум. И несмотря на то, что в редакторе можно создать несколько уровней, сервер запустит только самый первый. Но я планирую развивать проект по мере возможностей и наличия свободного времени. В планах добавить редактор карт для уровней, запуск всех выбранных уровней и возможность установки порталов для перехода между уровнями. Когда это будет реализовано, мы получим уже настоящую ММО. Также я работаю над мобильным клиентом на основе этого примера. Но главным направлением является редактор способностей и противников, чтобы можно было создавать самые сложные бои с самыми интересными механиками.
Заключение
Шаги, описанные в статье, подойдут для любого похожего сервера, написанного на Rust, например, с использованием axum или warp. Следуя этим инструкциям, можно создавать свои сервисы, будь то чат, блог или игра, и запускать их на своём сервере. Рано или поздно ваши эксперименты могут перерасти в серьёзный проект. Поэтому пробуйте, и желаю успехов на этом поприще!
© 2025 ООО «МТ ФИНАНС»