keepittechie / mcsli

Minecraft Server Linux Installer
MIT License
10 stars 2 forks source link
installer installer-script minecraft minecraft-server ubuntu ubuntu-server

Minecraft Server Linux Installer

GitHub stars GitHub forks GitHub watchers GitHub repo size GitHub language count GitHub top language GitHub last commit

Table of Contents

  1. Installing the Script
  2. Uninstalling
  3. Docker Container
  4. Updating
  5. Connecting
  6. YouTube Video

Introduction/Overview

This script automates the installation and setup of a Minecraft server on Ubuntu Server 22.04. It simplifies the process of getting a Minecraft server operational by handling tasks such as installing necessary packages, opening ports, downloading the server JAR file, accepting the Minecraft EULA, setting file ownership and permissions, and creating a systemd service for server management.

Features

Distributions Tested

Docker image will work with any distro and windows

Installing the Script

  1. Download the script:

Download the script to your server.

git clone https://github.com/keepittechie/mcsli.git
  1. Run the Installation Script:

Execute the install.sh script. The script must be run with root privileges.

cd mcsli
sudo bash ./install.sh

Note: If the script doesn't run, this could be that the script is not executable.

chmod +x install.sh

Run again:

sudo bash ./install.sh

(Of course, you should review it first)

3. Script Prompts and Answers: **Prompt 1: Web UI Installation** - **Prompt**: `Would you like to install the webui? (y/N):` - **Options**: - `y` or `Y`: Yes, install the web UI - `N` or `n` (or just press Enter): No, do not install the web UI - **Example Answer**: `y` **Prompt 2: Minecraft Version** - **Prompt**: `What version of Minecraft would you like to use? (e.g., 1.20.4):` - **Example Answer**: `1.20.4` **Prompt 3: Server Software Type** - **Prompt**: `Choose your server software (1 for paper, 2 for purpur, 3 for vanilla, etc.):` - **Options**: - `1`: Paper - `2`: Purpur - `3`: Vanilla - `4`: Fabric - `5`: Manual (bring your own server .jar) - **Example Answer**: `1` **Prompt 4: Firewall Installation** - **Prompt**: `Choose a firewall to install (1 for UFW, 2 for firewalld):` - **Options**: - `1`: UFW - `2`: firewalld - **Example Answer**: `1`
  1. Review and Customize server.properties:

After the script has completed, you can find the server.properties file in the Minecraft server directory (/opt/minecraft). Customize this file as needed based on your server preferences. Refer to the Official Minecraft Wiki for a detailed list of server properties.

  1. Start the Minecraft Server:

Manually start the Minecraft server using the following command:

sudo systemctl start minecraft.service
  1. Access the mcsli_webui:

To access the webui go to link:

http://localhost:5000

or

http://ip-address:5000

Uninstalling

  1. Run the Uninstallation Script:

Execute the install.sh script with the uninstall option. The script must be run with root privileges.

cd mcsli
sudo bash ./install.sh
2. Script Prompts and Answers: **Prompt 1: Uninstall Minecraft Server or WebUI** - **Prompt**: `Would you like to uninstall the Minecraft server or the webui?` - **Options**: - `1`: Minecraft server - `2`: WebUI - **Example Answer**: `1`

Using the docker container

Note: the docker container does not include the web ui. If you know a solution to this, please feel free to contribute

  1. Make sure you have docker and docker compose installed

  2. Make a docker-compose.yml file with these contents. Change the values as desired:

    services:
    mcsli-docker:
    container_name: mcsli-docker
    image: ghcr.io/realsz27/mcsli:latest
    volumes:
      - ./config:/data/minecraft
    environment:
      - SERVER_SOFTWARE=purpur
      - SERVER_VERSION=1.21
      - MAX_RAM=1G
      - MIN_RAM=1G
    ports:
      - 25565:25565
  3. Run docker compose up -d

  4. If and when you need to run a command on the server, you can run:

    docker exec -it mcsli-docker /rcon-cli --port 25575 --password mcsli-docker

    If you changed the rcon password (recommended) or container name, you will have to subsitute either (or both) of the mscli-docker's for those values

Available config options:

variabe options
SERVER_SOFTWARE purpur (default), paper, vanilla, fabric (automatically uses the latest fabric loader avalible for your version), manual (SERVER_JAR needed)
SERVER_VERSION Any valid minecraft version (default, 1.20.4); must be the full version, like 1.20.4
MIN/MAX_RAM Any valid java ram amount like 5G (5 gigabytes) or 1024M (1024 megabytes); (default 1G on both)
SERVER_JAR *Optional; only needed if you chose manual as your server software The filename of your supplied jar. This jar should be placed in the config directory it makes when you run it.

Building

As long as you have Dockerfile and install-docker.sh in the same directory you are running the build on, it should work like any other docker image.

Updating

If you run the script again, it will detect that the directory is already there and run the update process. It will then ask you for your minecraft version and server type and handle the rest for you.

Connecting

You can connect to the minecraft server by putting the server's ip address into the game. But without port forwarding, a proxy, or a vpn, this will not work outside your own network. To fix this you could:

  1. Use a VPN: There are many selfhosted options to go with, WireGuard, OpenVPN, Netbird. But the one that is the easiest, in my opinion, is Tailscale. Specifically, the Github community plan. This allows you to invite your friends to your "tailnet" and play on your server with your Tailscale IP.
  2. Use a Proxy: This is by far the easiest way to do it, and the easiest proxy service to use is probably playit.gg. Simply download the client on your server, create a tunnel for Java Minecraft, and it will provide you with a domain you can connect to.
  3. Port forward: this can vary from router to router, look up online how to do it on yours. The only port you need to forward is 25565 unless you have your own config (ie. If you're using geyser). This is the most insecure option, as anyone on the internet can see the open port, and potentially exploit it. The chances of this are very low, but when there are better options out there, I would stay away from this one.

Important Notes

Youtube Video: Link

Youtube

Contributing

Your contributions to improve the script or keep the Minecraft server version up-to-date are welcome. Please submit pull requests or issues to the repository.