minecraft-systemd-services/README.md

136 lines
4.5 KiB
Markdown

# What Is Minecraft Server Systemd Services?
Systemd unit files for use with the Minecraft Server and associated services
(backup and stats).
# Features
- Supports use with Minecraft server software [PaperMC](https://papermc.io/),
[SpigotMC](https://www.spigotmc.org/) and
[Vanilla](https://www.minecraft.net/download/server/).
- Backup the Minecraft server directory.
- To an archive.
- Sync to a desired destination.
- Sync Minecraft stats data to [MinecraftStats](https://github.com/pdinklag/MinecraftStats).
# System Requirements
- GNU Linux operating System
- [Git](https://git-scm.com/)
- [Wardenctl](https://gitlab.com/adouglas/wardenctl) (optional if one replaces wardenctl commands)
- [Systemd](https://freedesktop.org/wiki/Software/systemd/)
# Installation
**Assumptions**
- Have an understanding of general server practices.
- Have experienced working knowledge within a CLI (command-line interface).
- Installed all required dependencies as stated in
[System Requirements](#system-requirements) section.
- Dependencies are accessible via
[environment PATH](https://wiki.archlinux.org/index.php/Environment_variables).
- Installation is done via Linux CLI.
- Steps prefixed with a "$" (dollar sign) represents the CLI prompt. The text
after the "$" is to be entered at the CLI.
- Steps prefixed with a "#" (number sign) represents the CLI prompt with
elevated user permissions (e.g. root). The text after the "#" is to be entered
at the CLI.
- A single backslash character beside another character is used to escape the
proceeding character. In this case backslash character is not to to be entered
at the CLI.
- These instructions are an example of installation and configuration.
## Manual
1. Change to your home directory.
```console
$ cd ~
```
1. Download the project.
```console
$ git clone https://gitlab.com/adouglas/minecraft-systemd-services.git
```
1. Change to the project directory.
```console
$ cd minecraft-systemd-services
```
1. Copy Systemd unit files.
```console
# cp minecraft-* /etc/systemd/system/
```
```
minecraft-backup.service
minecraft-backup.timer
minecraft-paper.service
minecraft-spigot.service
minecraft-stats.service
minecraft-stats.timer
minecraft-vanilla.service
```
1. Edit each applicable unit file(s).
- Ensure paths are correct (ReadWriteDirectories, [WorkingDirectory](https://www.freedesktop.org/software/systemd/man/systemd.exec.html),
[ExecStart](https://www.freedesktop.org/software/systemd/man/systemd.service.html),
[ExecStop](https://www.freedesktop.org/software/systemd/man/systemd.service.html)).
- Ensure timers property "[OnCalendar](https://www.freedesktop.org/software/systemd/man/)" is set as
desired.
```console
$ nano minecraft-backup.service
```
1. Set file permissions.
```console
# chmod 644 /etc/systemd/system/minecraft-*
```
1. Set file ownership and group.
```console
# chown root:root /etc/systemd/system/minecraft-*
```
1. Add user base upon "User" unit property value.
```
# useradd -r -s /bin/bash minecraft
```
```
-r create a system account.
-s user's login shell.
```
1. Add group based upon "Group" unit property value.
- **Note:** This step is only required if group name differs from username.
```
# groupadd minecraft
# usermod -a minecraft minecraft
```
```
-a add the user to supplementary group.
```
1. Enable services.
```console
# systemctl enable minecraft-paper.service
# systemctl enable minecraft-backup.timer
# systemctl enable minecraft-stats.timer
```
# Usage
For an even simpler usage at the CLI run "wardenctl help" without double quotes.
## Useful Command Examples
Action | Command Example | Notes
---------------------|-----------------------|--------
Reload all unit files| systemctl daemon-reload | Required after modifying unit file(s).
Restart unit | systemctl restart minecraft-paper.service |
Start unit | systemctl start minecraft-paper.service |
Stop unit | systemctl stop minecraft-paper.service |
View unit status | systemctl status minecraft-paper.service |
View unit messages | journalctl -u minecraft-paper.service |
View unit messages | journalctl -fu minecraft-paper.service | View most recent entries and follow new entries as they occur. Press CTRL-C to quit.
# License
Minecraft Server Systemd Services is licensed under the GNU General Public
License v3.0. Review the license by viewing the LICENSE file.
# Copyright Notice
Copyright (c) 2019-2020 Adam Douglas Some Rights Reserved