Backend:
* Debian 11 bullseye
* Nginx for reverse proxy & static assets
* Game & forum daemon(s) written in [your favorite language]
* MySQL
Frontend:
* XHTML for rigor
* JS using WebSocket
You can also theoretically throw out JS. A meta refresh in the frontend could be used to update the player's view of the game. This method would probably consume unnecessary bandwidth, prohibit most sound effects and animations, and just not work for faster-paced games. However, you'd be able to advertise "potato" as a supported platform.