Skip to content

A simple web panel for Minecraft servers using Geyser+Floodgate to handle whitelist requests for both Java and Bedrock players.

License

Notifications You must be signed in to change notification settings

Naamloos/MangoTango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

😸 MangoTango

A simple web panel for Minecraft servers using Geyser+Floodgate to handle whitelist requests for both Java and Bedrock players.

This application was initially written in about half a day.

This application is called after my Minecraft server that is as well called MangoTango. That server is named after one of my cats though 🙂

Support Discord #mangotango

🛠️ Setup

MangoTango requires some setup to get working properly. As of right now, I only officially support docker-compose setups. The application should work outside of docker as well.

  1. Clone this repository with git clone https://github.com/Naamloos/MangoTango.
  2. cd MangoTango
  3. Edit docker-compose.yml. All values you'll most likely want to modify have a comment reading CHANGEME
  4. Open the Frontend directory (cd Frontend) and modify all values in .env
  5. Go back up one directory (cd ../)
  6. Run docker compose docker compose up --detach
  7. Your web services should now be up and running. We still need to do a bit more though.
  8. Give internet access to the API. docker network connect bridge mangotango-mangotango-api
  9. Done! You should be up and running. You can for example use NGINX to reverse proxy to mangotango-api for the api and mangotango-web for the web panel.

MangoTango does not provide any prebuilt images, due to react injecting environment variables in the build step. Providing prebuilt images would remove the customizability of the front end.

❗ Bedrock XUID resolver fallback

The API provided by GeyserMC for resolving XUIDs does not always provide an answer for every xuid. To ensure MangoTango keeps working, an alternative API is provided to resolve XUIDs. If your bedrock players can't send requests, try setting the following environment variable in your docker-compose.json.

- OPENXBL_KEY=your_key_here

This key can be obtained at the following website: OpenXBL

❓ Example NGINX configuration

Do take note that it is generally not a good idea to host your services behind port 80! Make sure to either serve your site over HTTPS or have cloudflare as a proxy.

server
{
    listen 80;
    server_name whitelist.example.org;
    location /
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://mangotango-web:3000;
    }
}

server
{
    listen 80;
    server_name whitelist-api.example.org;
    location /
    {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://mangotango-api;
    }

	underscores_in_headers on;
}

❓ Example NGINX configuration using subpaths

Do make sure to correctly set the PUBLIC_URL env variable for the front end, and the BASE_URI environment variable for the back end and again, it is probably a good idea to serve your pages over HTTPS 🙂

server
{
    listen 80;
    server_name whitelist.example.org;
    location /whitelist/api/
    {
        rewrite ^/whitelist/api/(.*)$ /$1 break;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://mangotango-api;
    }

    location /whitelist/
    {
        rewrite ^/whitelist/(.*)$ /$1 break;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_pass http://mangotango-web:3000;
    }
}

⚠️ NGINX note!

MangoTango uses a header named rcon_password to authenticate! NGINX does not allow underscores in headers by default, so you will have to add underscores_in_headers on; to your NGINX server declaration. Example can be seen in the example NGINX config above.

📸 Screenshots (as of the 20th of October, 2022)

Unauthenticated view

afbeelding

Client-side form validation

image

After Authentication, requests appear under the form

afbeelding

In-game notifications

image

About

A simple web panel for Minecraft servers using Geyser+Floodgate to handle whitelist requests for both Java and Bedrock players.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •