- Summary
- Goals
- Features
- License
- Build
- Configure
- Run
- Play
- Server administration
- Security
- Reporting bugs
Echessd - is lightweight, minimalistic and free Internet Chess Server written with the Erlang programming language.
Goals of the project:
- no usage limitations;
- no email address collecting;
- no social networking;
- less network traffic:
- no images;
- no ads;
- no extra software dependencies;
- just playing chess with other people. Anytime, everywhere with any type of a browser - even like lynx or w3m.
- cross platform (all you need to run is Erlang installed);
- easy configuration. Functional even with empty configuration file;
- multi language support (as for now: English, Russian, Ukrainian);
- switchable styles;
- notifications with XMPP (Jabber);
- logging to a file;
- reconfiguration on-the-fly;
- database backing up and restore using text file;
- multithreaded request processing;
- user's password encryption.
Echessd uses a FreeBSD License. You can obtain the license online or in the file LICENSE on the top of Echessd source tree.
Erlang must be installed to build and run the Echessd. You always can obtain the latest Erlang version here or use the one provided by your software repository.
Echessd is developed and tested with Erlang R15B01 but probably will work with older Erlang versions.
$ make
To build developer HTML documentation type:
$ make html
You can use an echessd.conf file as example of configuration for the Echessd. It contains reasonable* (see Security section) defaults and configuration parameter explanations.
$ ./echessd /path/to/echessd.conf
The server will start as a foreground process.
- Send the browser to http://localhost:8888/;
- Register a new user;
- Choose an opponent in user list and hit the button 'Create new game';
- Wait while the opponent confirms the game (you will need to refresh the web page unless you're set 'Auto Refresh' to ON on the account settings page).
A compiled binary of the Echessd take some command line options. As mentioned above, to start the server, type:
$ ./echessd /path/to/echessd.conf
To tell the running server to reread configuration file and reopen a log file:
$ ./echessd --hup /path/to/echessd.conf
To check if the server is alive or not:
$ ./echessd --ping /path/to/echessd.conf
To tell the running server to terminate:
$ ./echessd --stop /path/to/echessd.conf
To make a copy of an Echessd database to a file:
$ ./echessd --dump /path/to/file.dump /path/to/echessd.conf
To load the dump from the file to the database of the running Echessd (all previous data from the database will be destroyed):
$ ./echessd --load /path/to/file.dump /path/to/echessd.conf
To initialize the database (all data will be destroyed):
$ ./echessd --init /path/to/echessd.conf
Important note: the server must be stopped while database initialisation.
- Do not run the Echessd with superuser privileges;
- Do not allow normal users to read your echessd.conf file because it contains 'cookie' string. With the string any local user can connect to the running Echessd instance and execute ANY code with privileges of Echessd Server process;
- As issue of the 2, you should change the 'cookie' string to something long and random which will be hard to guess.
Echessd is a young project and I'm sure there is a lot of bugs and inconsistencies. On the other hand, Echessd is not such big project to support mailing list or bug tracker. So, in the case of bug you can:
- submit an email to me with subject "echessd: ....";
- if you're GitHub user, create an issue on a project's page;
- fork, patch and create a pull request.
Aleksey Morarash aleksey.morarash@gmail.com, 2013