Git Product home page Git Product logo

mc-gatekeeper's Introduction

Stargazers Issues MIT License LinkedIn


Logo

Minecraft GateKeeper

An all-in-one reliable whitelist application system for your Minecraft server
· Request Feature

Table of Contents

Introducation

Gatekeeper aims to make whitelist application and management for Minecraft server easier than ever before.

What's provided out of the box:

  • An easy-to-use self-serve web interface for players to apply for the whitelist
  • Email dispatching mechanism for Ops to process incoming requests
  • Real-time confirmation and notification emails to users for application status update
  • One-click processing workflow for Ops to deny/approve user applications
  • Automatic grant whitelist for approved users on the server via RCON
  • Management and monitoring dashboard for the server owner
  • Rich configuration and customization options (see below)
  • Multi-language support with builtin Chinese translation

On top of these, it is implemented with security(encryotion; private endpoints token-based authentication) and fault-torlance(retry operations; message queue connection recovery mechaism) in mind.

Workflows With Screenshots:

For Players:

  • Players apply for whitelist by filling in required information and complete Minecraft account verification process on the website Image of Yaktocat

  • Once an application is submitted, the player will receive a confirmation email with a link to view his/her current application status Image of Yaktocat Image of Yaktocat

  • Once the application is approved, the player's Minecraft username will be granted whitelist on the Minecraft server and the player will receive a notification email Image of Yaktocat

  • If the application is denied, the player will be notified via email as well. The player will be able to re-submit another application

  • Key features:

    • Form submission is protected by Google Recaptcha
    • Process in place to verify the player's Minecraft username to prevent identity misuse
    • Disallow repeat/duplicate application from the same user
    • Asynchronous message processing model which improves responsiveness
    • Encoded and encrypted status check the link to prevent access from unintended users

For Ops:

  • Assigned Ops of each application will be notified via email and will be provided with an action link. On the action page, Ops could view the application details and deny/approve the corresponding application by a single click Image of Yaktocat

  • Optionally, Ops could add a note for that application when making decisions for future references Image of Yaktocat

  • Key features:

    • No login required for Ops to simplify the workflow
    • Encryption and encoding in place to prevent misuse: the action page is only visible for Ops who are assigned with a particular application. Once an application is resolved, it will no longer be available.

For Server Owner:

  • Server owner could view/monitor/manage all applications through the management dashboard which are only accessible with configured root credentials Image of Yaktocat

  • Key features:

    • Centralized dashboard to manage all applications, view aggregate stats.
    • Able to export application entries to external CSV files
    • The dashboard login page is also protected by Recaptcha to enhance security

Deployment & Configurations

For simple deployment, you could follow the steps below using docker compose. I've also provided Helm chart to deploy on Kubernetes cluster for more reliable production use case(advanced). For a brief walkthrough for Kubernetes deployment please check out the wiki page:

https://github.com/tywin1104/mc-gatekeeper/wiki/Walk-through-deployment-in-Kubernetes-cluster-with-Helm

Deployment using docker-compse

  • Clone the repo onto your workstation / Linux virtual machine(EC2, droplet...)

  • Make sure docker and docker-compose is installed on your workstation

  • Create config.yaml inside the server directory. Fill in the values according to your setup. (see config_sample.yaml for reference)

    mongodbConn: mongodb://mongo:27017 rabbitMQConn: amqp://guest:guest@rabbitmq

    Keep these two configuration value as above.

  • Inside docker-compose.yaml, change RECAPTCHA_SITEKEY to your recaptcha sitekey(v2 invisible)

  • If you are running in a machine with domain name DNS configured, you need to change FRONTEND_DEPLOYED_URL in docker-compose.yaml to be your domain address instead of localhost.

  • run docker-compose up -d

  • Once the process is finished, go to http://localhost or your configured domain address to view the application

Note: The web app part (frontend) is intended to be publicly accessible across the Internet and the backend server API should be consumed only by the client application for security reasons. A running MongoDB and RabbitMQ instance are required components for the system.

Local Dev Setup

More to come...

Open API Spec for the backend server

Custimizations

Here are some possible trivial custimizations that could be done that fits your need. Different from changing the configuration values, these will incur minor code change and require rebuilding the image to your own container registry in order to deploy

  • Add/ Change translations for multilanguages

    See app/locale directory for translation files

  • Add fields to the whitelist request form

  • Style custimization for the frontend app page.

  • Change Email templates

    See server/mailer/templates

  • .....

Feature Requests

Please open a issue to request a feature or make a contact directly

License

Distributed under the MIT License. See LICENSE for more information

Contact

Tianyi Zhang - [email protected]

Built With

mc-gatekeeper's People

Contributors

tywin1104 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.