2019-08-12 03:29:24 +02:00
2019-08-12 02:53:46 +02:00
2019-08-11 02:46:36 +02:00
2019-08-11 02:01:14 +02:00
2019-08-11 02:46:36 +02:00
2019-08-11 02:46:36 +02:00
2019-08-12 03:29:24 +02:00

WebConsole

WebConsole is a Spigot plugin for Minecraft 1.14 that enables you to view your server console and manage your server from anywhere. It creates a WebSocket server in the background used by the web interface to send commands, receive your console log and manage your server.

Dont worry about privacy: all data is stored in your browser offline and your PC will connect directly to your minecraft server. No intermediary web servers, just you and your server.

Plugin installation

  1. Download plugin from Releases
  2. Open and close your server to generate the config.yml file and open it. You will see something like the following:

useSSL: false StoreType: JKS KeyStore: plugins/WebConsole/keystore.jks StorePassword: storepassword KeyPassword: keypassword host: localhost port: 8080 password: yourPasswordGoesHere

Fill host, port and password values. They are the IP you server run at, port where WebSockets will run and and login password, respectively. Password will be asked every time you connect to your server.

SSL Configuration

If you want to use WebSockets Secure (A encrypted connection between Client and Server instead of sending plaintext) you need to enable it replacing useSSL: false to useSSL: true and generating your keystore.jks. You can achieve this by generating a selfsigned certificate or using a valid one, like a Let's Encrypt certificate.

Selfsigned certificate

The fast way, but only reccomended for testing purposes. Generate your certificate by running this command on your machine

keytool -genkey -keyalg RSA -validity 3650 -keystore "keystore.jks" -storepass "storepassword" -keypass "keypassword" -alias "default" -dname "CN=127.0.0.1, OU=MyOrgUnit, O=MyOrg, L=MyCity, S=MyRegion, C=MyCountry"

Remember to replace required values (the bold ones), so final command looks like this:

keytool -genkey -keyalg RSA -validity 3650 -keystore "keystore.jks" -storepass "myVerySecurePaSSword" -keypass "aVerySecurePaSSw0rdAgain" -alias "default" -dname "CN=127.0.0.1, OU=WebConsoleDevelopers, O=WebConsole, L=Madrid, S=Madrid, C=Spain"

Then, to enable connections from your browser remember to first navigate to https://localhost:8080/ (change port if you changed it before at config.yml). This is required in order to allow your browser connections to servers using your own selfsigned certificate. If you don<6F>t follow this step, you won<6F>t be able to connect to your WebSockets Server.

Let's Encrypt certificate (or any PEM certificates)

WebConsole does not support PEM certificates, so you will need to convert it to create your keystore.jks file. Follow the steps mentioned in this guide:

  1. Convert certificate chain + private key to the PKCS#12 file format. You will be asked for a password: Remember it as it will be the StorePassword required in your config.yml

openssl pkcs12 -export -out keystore.pkcs12 -in fullchain.pem -inkey privkey.pem

  1. convert PKCS#12 file into Java keystore format. You will be asked for another password. This time you are typing the KeyPassword, also required in config.yml

keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks

  1. PKCS#12 file can be deleted

rm keystore.pkcs12

  1. Copy keystore.jks to your plugin folder (plugins/WebConsole/keystore.jks)

How it works

  1. How to install web interface / connect to github pages
  2. How to add servers

Technical information

WebSocket commands

The following tables represent how server communicates with the client(s), something like a language between them.

Websocket Server -> Client

Server communicate with all connected clients using JSON. The following table shows all possible JSON variables.

Variable Meaning
status Status code (as integer), representing response type. See listing below*
statusDescription Status description (as String) describing status code
respondsTo (Optional) Original command sent by client which triggered this response
message Response content

*Status codes are listed below:

  • 010: Console output.
  • 200: Ok/Processed.
  • 400: Unknown command.
  • 401: Login required/Not logged in.
  • 403: Forbidden/Unauthorised (Probably not logged in).

Client -> Websocket Server

Clients can communicate with server using commands. The following table shows existing commands.

Code Meaning Extra info
LOGIN (password) Login to start communication with server
EXEC (command) Run desired command in Minecraft Server Login required
Languages
JavaScript 49.3%
Java 38.5%
HTML 11.8%
CSS 0.4%