Improved readme.
This commit is contained in:
parent
7664186559
commit
807b47137d
32
README.md
32
README.md
|
@ -11,9 +11,41 @@ the minecraft server hardware itself.
|
|||
The web server's responsibility is to show the latest server status information
|
||||
and provide a way for players to request to turn on a server.
|
||||
|
||||
The server is built using [handy-http](https://github.com/andrewlalis/handy-httpd).
|
||||
|
||||
In addition to serving the web app from the associated `app` directory, the
|
||||
following API endpoints are defined:
|
||||
* POST `/api/servers` - for the agent to send the latest server status info.
|
||||
* GET `/api/servers` - for clients to fetch the latest server status.
|
||||
* POST `/api/servers/:id/requests` - for clients to request a server startup.
|
||||
* GET `/api/server-requests` - for the agent to get a list of requested servers.
|
||||
|
||||
### Deployment
|
||||
|
||||
This application is deployed to run under a reverse proxy, like Nginx. Call the
|
||||
`deploy-web.sh` script to deploy it to Andrew's main server.
|
||||
|
||||
## Agent
|
||||
|
||||
The agent will periodically inspect the status of all servers, and send that
|
||||
data to the web server. The agent will also automatically shutdown servers
|
||||
that have been inactive for more than 15 minutes.
|
||||
|
||||
More precisely, the agent will activate periodically, and each time perform the
|
||||
following activites:
|
||||
* Send the latest server status information to the web server.
|
||||
* Use an *idle-tracker* file to determine the amount of time a server has been
|
||||
*idle* (on, with no players active).
|
||||
* If the server is idle, but doesn't yet have a tracker file, one is created.
|
||||
* If the server has at least one player, any existing tracker file is removed.
|
||||
* If the server is idle and there's a tracker file present, and the tracker
|
||||
file is at least 15 minutes old, then the server is shut down.
|
||||
* Get the list of requested servers to start from the web, and start each server.
|
||||
|
||||
### Deployment
|
||||
|
||||
This agent is simply deployed to the physical server where the minecraft
|
||||
servers are installed, and it is linked as a SystemD service (but not enabled),
|
||||
and then a SystemD timer is activated to trigger it to run every so often.
|
||||
|
||||
Run `deploy-agent.sh` to deploy the agent to the server.
|
||||
|
|
Loading…
Reference in New Issue