![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/akiicat/MultiPaper-Container?label=Version) [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/akiicat/MultiPaper-Container/publish-docker-image.yaml?label=Publish%20Docker%20Image)](https://github.com/akiicat/MultiPaper-Container/actions/workflows/publish-docker-image.yaml) [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/akiicat/MultiPaper-Container/auto-check-latest-version.yaml?label=Auto%20Check%20Latest%20Version)](https://github.com/akiicat/MultiPaper-Container/actions/workflows/auto-check-latest-version.yaml) [![MultiPaper Server Docker Image Version](https://img.shields.io/docker/v/akiicat/multipaper?label=MultiPaper%20Server%20Image)](https://hub.docker.com/r/akiicat/multipaper) [![MultiPaper Master Docker Image Version](https://img.shields.io/docker/v/akiicat/multipaper-master?label=MultiPaper%20Master%20Image)](https://hub.docker.com/r/akiicat/multipaper-master) # MultiPaper Container MultiPaper Container will automatically publish the latest MulitPaper containers to Docker Hub. - [MultiPaper Server Image](https://hub.docker.com/r/akiicat/multipaper) - [MultiPaper Master Image](https://hub.docker.com/r/akiicat/multipaper-master) ## What is MultiPaper MultiPaper is a scalable minecraft server. [Here](https://github.com/PureGero/MultiPaper) is the repository. You can also download the MultiPaper Jar from [MultiPaper.io](https://multipaper.io/download.html) ## How to Use ### Running MultiPaper Master ```shell docker run -d -p 35353:35353 akiicat/multipaper-master ``` ### Running MultiPaper Server If you want to the customize server name, you can add `-DbungeecordName=server1` to `JAVA_TOOL_OPTIONS`. For more MultiPaper `JAVA_TOOL_OPTIONS` configuration, please refer to [MULTIPAPER_YAML.md](https://github.com/PureGero/MultiPaper/blob/main/MULTIPAPER_YAML.md) and [MultiPaper command-line-options](https://github.com/PureGero/MultiPaper#command-line-options). ```shell docker run -d \ -p 25565:25565 \ -e EULA=true \ -e JAVA_TOOL_OPTIONS="-Xmx1G -DmultipaperMasterAddress=:35353" \ akiicat/multipaper [server_options] ``` Please changing `` in the previous command to your master ip address. For example, ```shell docker run -d \ -p 25565:25565 \ -e EULA=true \ -e JAVA_TOOL_OPTIONS="-Xmx1G -DmultipaperMasterAddress=192.168.0.193:35353" \ akiicat/multipaper --max-players 30 ``` For MultiPaper server configurations, you can add them to the end of the command line.
Server Configurations You can execute the following command to get the latest options. ```shell docker run --rm akiicat/multipaper --help ``` For example, ```shell $ docker run --rm akiicat/multipaper --help Downloading mojang_1.18.2.jar Applying patches Starting org.bukkit.craftbukkit.Main Option Description ------ ----------- -?, --help Show the help -C, --commands-settings commands.yml) -P, --plugins Plugin directory to use (default: plugins) -S, --spigot-settings File for spigot settings (default: spigot.yml) -W, --universe, --world-container, -- World container (default: .) world-dir --add-extra-plugin-jar, --add-plugin Specify paths to extra plugin jars to be loaded in addition to those in the plugins folder. This argument can be specified multiple times, once for each extra plugin jar path. --add-extra-plugin-jars, --add-plugin- Specify paths of a directory dir, --add-plugin-directory loaded in addition to those in the plugins folder. This argument can be specified multiple times, once for each extra plugin directory path. -b, --bukkit-settings File for bukkit settings (default: bukkit.yml) -c, --config Properties file to use (default: server.properties) -d, --date-format console (for log entries) --demo Demo mode --eraseCache Whether to force cache erase during world upgrade --forceUpgrade Whether to force a world upgrade -h, --host, --server-ip --log-append Whether to append to the log file (default: true) --log-count Specified how many log files to cycle through (default: 1) --log-limit Limits the maximum size of the log file (0 = unlimited) (default: 0) --log-pattern Specfies the log filename pattern (default: server.log) --log-strip-color Strips color codes from log file --multipaper, --multipaper-settings File for multipaper settings (default: multipaper.yml) --noconsole Disables the console --nogui Disables the graphical console --nojline Disables jline and emulates the vanilla console -o, --online-mode -p, --port, --server-port --paper, --paper-settings paper.yml) -s, --max-players, --size --server-name Name of the server (default: Unknown Server) -v, --version Show the CraftBukkit Version -w, --level-name, --world ```
## Advanced Usage Here are some useful Docker `run` command [options](https://docs.docker.com/engine/reference/run). Because both the server and the master are the same, we use the Multipaper Master as an example.
Docker options ``` -d : Detached mode: Run container in the background, print new container id -t : Allocate a pseudo-tty -i : Keep STDIN open even if not attached --rm : Automatically clean up the container and remove the file system when the container exits -p : Publish or expose port : -v : Persisting your data : -u : Change user id (UID) ```
Run in foreground and clean up the container when it exits. ```shell docker run -ti --rm -p 35353:35353 akiicat/multipaper-master ``` Use the existing world or save your world in the local directory. Your path must be an absolute path. ```shell mkdir -p $(pwd)/master docker run -d -p 35353:35353 -v $(pwd)/master:/app akiicat/multipaper-master ``` The default user is **multipaper** with uid 1000. You can also run as root, but this is not recommended. ```shell docker run -d -p 35353:35353 -u 0 akiicat/multipaper-master ``` Limit maximum memory ```shell docker run -d \ -p 35353:35353 \ -e JAVA_TOOL_OPTIONS="-Xmx1G" \ akiicat/multipaper-master ``` Other Java configurations can also be added to `JAVA_TOOL_OPTIONS`. You can obtain the latest version of the MultiPaper Container by requesting the following command. ```shell SERVER_VERSION=$(curl https://raw.githubusercontent.com/akiicat/MultiPaper-Container/main/server/tags) MASTER_VERSION=$(curl https://raw.githubusercontent.com/akiicat/MultiPaper-Container/main/master/tags) echo $SERVER_VERSION echo $MASTER_VERSION ``` ## Build from source ```shell git clone https://github.com/akiicat/MultiPaper-Container.git # change version # git checkout git checkout v1.18.2-60 # build docker build -t multipaper server docker build -t multipaper-master master # list images docker images | grep multipaper ``` ## Debugging List all logs ```shell docker logs docker logs -f # Follow log output ``` Run a shell in a new container ```shell docker run -ti --rm--entrypoint /bin/sh akiicat/multipaper ``` Run a shell to an existing container ```shell docker exec -ti /bin/sh ``` Container detail infomation ```shell docker inspect ``` ## License - MultiPaper is licensed under [GPLv3](https://github.com/PureGero/MultiPaper/blob/main/LICENSE.txt) - MultiPaper-Master is licensed under [MIT](https://github.com/PureGero/MultiPaper/blob/main/MultiPaper-Master/LICENSE.txt)