diff --git a/.env.example b/.env.example index 6636fb9..2f43485 100644 --- a/.env.example +++ b/.env.example @@ -2,10 +2,6 @@ HOST=0.0.0.0 NODE_ID=aUniqueString DATABASE_URL=ecto://chessh:password@database/chessh -POSTGRES_USER=chessh -POSTGRES_PASSWORD=password -POSTGRES_DATABASE=chessh - WEB_PORT=8080 REACT_APP_DISCORD_INVITE=https://discord.gg/ajsdlkfjaskldjf diff --git a/README.md b/README.md index 3b06450..9b72b6a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,65 @@ # CheSSH -Check out the USUFSLC presentation for this application to understand best what the hell this is: +CheSSH is a distributed multiplayer implementation of the game of Chess over SSH, +written in Elixir, with Discord integrations to deliver alerts when players are +looking for opponents, or in games when it is one's turn. -[https://linux.usu.edu/stream/12](https://linux.usu.edu/stream/12) +https://user-images.githubusercontent.com/25559600/221317658-a80046ca-6009-456d-b43c-67d95baa4bf6.mp4 + +## Usage + +### Dependencies ++ `npm` ++ `elixir` ++ `postgresql` ++ `redis` (which you can ignore if you only use the ETS backend for Hammer in + `config/dev.exs` [set by default]) + +### Installation + +Do something among the lines of: + +``` +git clone https://github.com/Simponic/chessh +cd chessh + +cp .env.example .env +chmod 0700 .env + +# In one shell (after filling in your .env), start CheSSH +export $(cat .env | xargs) +mix ecto.create +mix ecto.migrate +iex -S mix + +# In another shell, start the frontend +export $(cat .env | xargs) +cd front +npm install +npm start +``` + +## Architecture +The process of building the pi cluster is wholly contained in the awful +`buildscripts`, which will individually `ssh` into separate pi's and build the +services locally there as well as update the load balancer pi's configurations for nginx +and HAproxy. + +More architecture talk of CheSSH can be found in my (albeit kinda cringe) FSLC +presentation on Elixir: +[https://github.com/Simponic/chessh/blob/main/presentation/chessh.org](https://github.com/Simponic/chessh/blob/main/presentation/chessh.org) + + +## Environment Variables (mostly optional) ++ `REACT_APP_DISCORD_INVITE` is the invite link to the discord server with the + CheSSH bot ++ `REACT_APP_DISCORD_OAUTH` is the link (after replacing the GET URL params) that will + be used to initiate discord OAUTH from the frontend ++ `CLIENT_REDIRECT_AFTER_OAUTH` & `SERVER_REDIRECT_URI` are self-explanatory ++ `REACT_APP_SSH_SERVER` and `REACT_APP_SSH_PORT` are used to build the .ssh config + given to users on the home page of CheSSH after authentication ++ `NEW_GAME_PINGABLE_ROLE_ID` is the role id of the role to ping when one is + looking for an opponent ++ `REMIND_MOVE_CHANNEL_ID` is the channel id to create private threads with players + for move reminders and other communications ++ `NEW_GAME_CHANNEL_ID` is similar to the above diff --git a/buildscripts/build/build_server.sh b/buildscripts/build/build_server.sh index 57a3a1c..5a1a5b7 100755 --- a/buildscripts/build/build_server.sh +++ b/buildscripts/build/build_server.sh @@ -37,5 +37,4 @@ cd $HOME sudo mv chessh.service /etc/systemd/system/chessh.service sudo systemctl daemon-reload sudo systemctl enable chessh -sudo systemctl stop chessh -sudo systemctl start chessh +sudo systemctl restart chessh diff --git a/presentation/chessh.org b/presentation/chessh.org index ff13cfd..f425f3c 100644 --- a/presentation/chessh.org +++ b/presentation/chessh.org @@ -5,6 +5,8 @@ * Reminder: linux.usu.edu This meeting should be being streamed live at [[https://linux.usu.edu/streams]]. +(UPDATE: It is now archived at [[https://linux.usu.edu/stream/12]]) + * Introduction #+BEGIN_SRC elixir defmodule Hello do