Editing Setting up a server

From AAGRINDER wiki
Jump to navigationJump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
 
Currently, there are only instructions for setting up a server on Linux. Feel free to add instructions for other platforms.
 
 
For additional details, see [[administration tips]].
 
 
== Setting up an AAGRINDER server on Linux ==
 
  
 
You'll need these things installed:
 
You'll need these things installed:
  
 
* git
 
* git
* g++
+
* g++ (or another c++ compiler)
 
* [https://nodejs.org/en/ Node.js]
 
* [https://nodejs.org/en/ Node.js]
 
* [https://www.npmjs.com/get-npm npm]
 
* [https://www.npmjs.com/get-npm npm]
 +
* [https://www.mysql.com/ MySQL] (not mandatory)
  
Acquire the AAGRINDER server software:
+
If you're going to use MySQL,
 +
[https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-14-04 set up]
 +
your database.
 +
It is needed for storing account data.
 +
Helpful commands:
 +
<pre>
 +
$ mysql -u root -p
 +
> create database aagrinder;
 +
> create user 'maze'@'localhost' identified by 'some_password';
 +
> grant all privileges on aagrinder.* to 'maze'@'localhost';
 +
> flush privileges;
 +
> quit
 +
</pre>
 +
 
 +
 
 +
Then run the following commands:
 
<pre>
 
<pre>
 
$ git clone https://gitlab.com/MRAAGH/aagrinder.git
 
$ git clone https://gitlab.com/MRAAGH/aagrinder.git
 
$ cd aagrinder
 
$ cd aagrinder
 
$ npm install
 
$ npm install
</pre>
 
 
You also need the [[AAGRINDER terrain generator]] (compiled from source):
 
<pre>
 
 
$ git clone https://gitlab.com/MRAAGH/aagrinder-terrain.git
 
$ git clone https://gitlab.com/MRAAGH/aagrinder-terrain.git
 
$ cd aagrinder-terrain
 
$ cd aagrinder-terrain
 
$ make
 
$ make
</pre>
 
 
The directory ''aagrinder-terrain'' should be inside the directory ''aagrinder''.
 
 
Move back to the directory ''aagrinder'', then start the server:
 
<pre>
 
 
$ cd ..
 
$ cd ..
 
$ npm start
 
$ npm start
 
</pre>
 
</pre>
  
 +
A server.properties file will be created.
 +
In that file, you set the database name, host, user and password.
 +
Then restart the server.
  
A [[server properties|config.json]] file will be created.
+
Now, anyone who can access your computer via internet can easily connect to your aagrinder server.
You can change the server configuration, although the defaults should already be functional.
 
 
 
Now, anyone who can [[wikipedia:port forwarding|access your computer]] via internet can easily connect to your aagrinder server.
 
 
 
== Secure connection over HTTPS ==
 
  
The AAGRINDER server by itself exposes a HTTP website. For better security, HTTPS is preferred. To achieve this, an additional software component needs to be involved as a [[wikipedia:Reverse proxy|reverse proxy]]. In this guide, we use [[wikipedia:Nginx|Nginx]].
+
== Running server without MySQL ==
  
A Nginx configuration for proxying AAGRINDER might look like this:
+
WARNING: if you run a server without a database, players will not be able to protect their accounts with passwords.
<pre>
+
If you are going to play alone or only on the local network, this could be totally fine. [[Running in insecure mode|More about insecure mode]]
server {
 
    server_name aagrinder.xyz;
 
  
    location / {
+
Open your server.properties file.
        proxy_pass http://localhost:8926;
+
Change "insecure_mode":false to "insecure_mode":true.
    }
+
Then restart the server.
 
 
    location ~* /.io {
 
        proxy_pass http://localhost:8926;
 
        proxy_set_header X-Forwarded-For $remote_addr;
 
        proxy_set_header X-Real-IP $remote_addr;
 
        proxy_set_header X-NginX-Proxy false;
 
        proxy_set_header Host $host;
 
        proxy_redirect off;
 
        proxy_http_version 1.1;
 
        proxy_set_header Upgrade $http_upgrade;
 
        proxy_set_header Connection "upgrade";
 
    }
 
 
 
    listen [::]:443 ssl;
 
    listen 443 ssl;
 
    ssl_certificate /etc/letsencrypt/live/aagrinder.xyz/fullchain.pem;
 
    ssl_certificate_key /etc/letsencrypt/live/aagrinder.xyz/privkey.pem;
 
    include /etc/letsencrypt/options-ssl-nginx.conf;
 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
 
}
 
 
 
server {
 
    return 302 https://$host$request_uri;
 
 
 
    server_name aagrinder.xyz;
 
 
 
    listen 80;
 
    listen [::]:80;
 
}
 
</pre>
 
 
 
Here, AAGRINDER is running on port 8926 and is accessible from the outside on port 443 (https) through Nginx. The HTTPS certificate, located at ''/etc/letsencrypt/live/aagrinder.xyz'' was acquired from [[wikipedia:Let's Encrypt|Let's Encrypt]] using ''certbot''. For reference, the specific command used to acquire this certificate was:
 
<pre>
 
# certbot certonly --nginx -d aagrinder.xyz
 
</pre>
 

Please note that all contributions to AAGRINDER wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see AAGRINDER wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)