[[https://github.com/chesslablab |ChesslaBlab]] - это набор программных инструментов с открытым кодом для организации полноценного шахматного сервера с поддержкой [[wpru>Stockfish|Stockfish]].
В материале рассмотрены тонкости настройки для сети IPv6 и Yggdrasil в частности.
Программный комплекс включает в себя множество компонентов, ниже будет рассмотрен необходимый для игры минимум.
===== chess-server =====
[[https://github.com/chesslablab/chess-server|chess-server]] написан на языке PHP, поэтому работа с ним не составит трудностей для веб-разработчиков.
Понадобится:
<code>
apt install git php composer stockfish
</code>
для запуска вебсокет-сервера, также лучше создать отдельного пользователя в системе:
* Запуск сервера поддерживает несколько веб-сокет библиотек, ratchet поддерживает протоколы wss и ws - в случае Yggdrasil, второй не требует наличия SSL сертификата.
Обновляем реестр systemd, добавляем службу в автозапуск и стартуем сервис:
<code>
systemctl daemon-reload
systemctl enable chesslablab
systemctl start chesslablab
</code>
В завершение, проверяем наличие работающей службы:
<code>
netstat -tulpn | grep LISTEN
</code>
если сервер есть в списке на интерфейсе IPv6, можем к нему подключаться любым совместимым клиентом и играть по сети или с компьютером.
===== react-chess =====
[[https://github.com/chesslablab/react-chess|react-chess]] - это клиентский веб интерфейс, написанный с использованием фреймворка [[wpru>React|React.js]]
//* [yyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy:yyyy] - адрес клиента react-chess, указывать его не обязательно при использовании нижеуказанных примеров nginx //\\
//* [xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx] - адрес веб-сокета chess-server //\\
//*8085 - порт веб-сокет сервера//
В оригинальной инструкции используются примеры виртуальных хостов /etc/hosts, следовать им не нужно, в случае подключения Yggdrasil-only.
Запускаем веб-клиент:
<code>
npm start
</code>
автоматически должно открыться окно браузера с веб интерфейсом для игры.
Поскольку не все пользователи Yggdrasil используют DNS, важно предоставить возможность прямого доступа по IP.
Для Chesslablab удобнее всего создать выделенный [[yggdrasil:subnet_setting|адрес подсети]] и настроить по аналогии с доменом.
<WRAP round info 60%>
При использовании команды ifconfig lo inet6 add нужно учитывать, что адрес сбрасывается после перезагрузки системы, этот вопрос решается отдельно.
</WRAP>
=== Поддиректория ===
Расположение клиента в подкатегории вида http://[0200::/7]/chesslablab/ удобно тем, что к сайту удобно обращаться из адресной строки браузера без DNS, поскольку в истории посещений к поддиректории подставляется IP ресурса.
Чтобы заставить клиент работать в такой конфигурации без модификации кода react-chess, можно использовать следующий вариант:
* [[http://[201:23b4:991a:634d:8359:4521:5576:15b7]/chesslablab/]] - работает в тестовом режиме, могут быть ошибки, просьба сообщать в [[http://[201:23b4:991a:634d:8359:4521:5576:15b7]/kevachat/room/Nj3UDaQ89rF5W5dGUbMSgb1C84cHW2562j#latest|канал KevaChat]]
* [[http://chesslablab.ygg]] - алиас
* [[https://github.com/d47081/react-chess/tree/ygg|используемый инстансом форк react-chess]] - настройки чата в dot/env, список ожидающих онлайн партий в меню и т.д.
==== Сервера ====
* [201:23b4:991a:634d:8359:4521:5576:15b7]:8085
===== Ссылки =====
Проект на GitHub: https://github.com/chesslablab \\