• Просьба не публиковать сообщения с предложениями продажи модов или сборок!

    Мы против использования и перепродажи слитых модов и переделок на их основе. Остальное также сложно верифицировать, поэтому в целом пока что запрещаем эту тему на сайте.

JS Перенос сервера с пк на Debian 11

roufon

Trainee
Сообщения
19
Дорогие друзья. Проблема заключается вот в чем.
Собрал минимальную сборку на своем пк и она запускается без проблем. После того, как арендовал VPS сервер и установил Debian 11, пустой сервер запускается.
Но как только переношу свою сборку, лезут ошибки. Ниже полная информация
1) Основная проблема.
Код:
[INFO] Starting RAGE Multiplayer server...

[============================================================]
||
||      MaxPlayers              100
||      Sync rate               40ms
||      Name                    RAGE:MP Unofficial server
||      Gamemode                freeroam
||      Streaming distance      500
||      Announcement            disabled
||      Voice chat              disabled
||      Address                 127.0.0.1:22005
||      Connection limits       disabled
||      Encryption              enabled
||      NodeJS                  enabled
||      C#                      disabled
||
[============================================================]


[INFO] Loading NodeJS packages...
./ragemp-server: symbol lookup error: /root/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: undefined symbol: napi_module_register
root@vps-42953:~/ragemp-srv# ^C

Данная ошибка вылазит из за модуля авторизации, которая использует Mysql и bcrypt. Если удалить что то из 1 или 2, требует установить заново. Проверял на совместимость NodeJs - bcrypt - mysql. Все должно работать, но все равно вылазит в конечном итоге главная проблема.
2) Куда именно нужно загружать node_packeges. На сам сервер VPS или в корневую папку самого сервера Rage, где запускает сервер?
Очень долго пытаюсь найти ответ, но решения найти так и не могу.
 
1). Я помню кто то сталкивался уже с проблемой bcrypt при запуске в linux окружении. Но честно говоря уже не помню как решали, возможно выкидывали эту зависимость и заменяли на альтернативные.
2). Node_modules не нужно никуда загружать. Тебе нужно загрузить на сервер сами исходники проекта, а зависимости подтянуть через npm install
 
Так а на что можно поменять как вариант bcrypt? Потому что авторизация по любому должна быть. Разве что переписать код под другой модуль. Знать бы какой популярный и рабочий. Люди же как то создают свои рабочие сборки под linux.

Что насчет scrypt?

2) Я уже увидел, а то тоже была ошибка, а то в другую папку загружал ноды)
 
Так а на что можно поменять как вариант bcrypt? Потому что авторизация по любому должна быть. Разве что переписать код под другой модуль. Знать бы какой популярный и рабочий. Люди же как то создают свои рабочие сборки под linux.
Уверен многие и не запариваются по поводу хэширования паролей... ну или хостят на винде :)

Без понятия, пробуй.
Есть еще bcryptjs, он должен работать т. к. написан чисто на js и не юзает С++ api (как bcrypt).
 
В общем, убрал я все эти модули bcrypt, bcryptjs, scrypt, argon2. Не один из них не удалось нормально запустить. Проверял и совместимость и по разному запускать. Не работает, как только загружать один из этих модулей и mysql, сразу ошибка. Хотя ее не должно быть.

Решение: просто убрать все эти модули и прописать команду на проверку в коде. Мол игрок пишет пароль и передает на сервер. А на сервер подргружаем данные с базы данных. Если в самом коде логика и пароль совпадает, пропускать игрока дальше.

Единственное что, теперь видно пароль каждого игрока)
 
А что его запускать?
Качаешь, с помощью npm, в папке с сервером:
npm install bcryptjs
Подключаешь:
JavaScript:
const bcrypt = require("bcryptjs")
const salt = 10; // например
И работаешь с ним, у Лева есть гайд.
Захешировать строку при регистрации:
JavaScript:
const pass = bcrypt.hash(password, salt)
При логине сравнить строки:
JavaScript:
const pass = bcrypt.compare(login_password, bd_password)
JavaScript:
if(!pass) console.log(Пароль не верный)
 
Ну в открытом виде хранить пароли тоже не вариант
 
А что его запускать?
Качаешь, с помощью npm, в папке с сервером:
npm install bcryptjs
Подключаешь:
JavaScript:
const bcrypt = require("bcryptjs")
const salt = 10; // например
И работаешь с ним, у Лева есть гайд.
Захешировать строку при регистрации:
JavaScript:
const pass = bcrypt.hash(password, salt)
При логине сравнить строки:
JavaScript:
const pass = bcrypt.compare(login_password, bd_password)
JavaScript:
if(!pass) console.log(Пароль не верный)
Проблема данной темы не в том, что не работают модули кеширования в целом, а в том - что на виндовс локальныом сервере все работает, как часы. А когда сервер идёт на хостинг Linux, нужно устанавливать nodejs, npm, mysql и к примеру тот же bcryptjs. Но при запуске сервера на VPS сервере, сервер выдает ошибку, которая была указана в самом первом сообщении.

Поэтому и получается так, что на пк все работает, а на VPS идет ошибка из за совместимости, хотя я перепробовал все версии, и новые и чуть версии по старее.
 
Ну в открытом виде хранить пароли тоже не вариант
Ну когда проходишь регистрацию на новом сервере или вводишь куда то свой логин и пароль, не факт - что владелец сайта или проекта скрывает пароли. Поэтому тут уже дело за пользователем. Ч к примеру никогда не пишу свои основные пароли в таких местах) Всегда пишу какой то индивидуальный)

А так в базе данных вместо $179$#82&%939/ и так далее виден полный пароль. Но доступ к базе данных ведь только у создателя проекта, если ему никого не давать)

Но другого выхода я пока не нашел. Модули кеширования на Linux не работают как на готовых для гта5 хостингах, так и на новом с нуля сервере vps
 
А что его запускать?
Качаешь, с помощью npm, в папке с сервером:
npm install bcryptjs
Подключаешь:
JavaScript:
const bcrypt = require("bcryptjs")
const salt = 10; // например
И работаешь с ним, у Лева есть гайд.
Захешировать строку при регистрации:
JavaScript:
const pass = bcrypt.hash(password, salt)
При логине сравнить строки:
JavaScript:
const pass = bcrypt.compare(login_password, bd_password)
JavaScript:
if(!pass) console.log(Пароль не верный)
bcrypt_lib.node: undefined symbol: napi_module_register
 
Обнови ноду, возможно не совместимо с твоей версией текущей. У меня сейчас на дэбиане 11 стоит 18.13.0, работает.
 
Назад
Верх