Added role server/minecraft
parent
ae7361f4c6
commit
82db6cb8fd
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# domain: minecraft.example
|
||||||
|
system_user: "{{ domain | regex_replace('[^A-Za-z0-9-]+', '-') }}"
|
||||||
|
service_name: "{{ domain }}.service"
|
||||||
|
|
||||||
|
user_directory: "{{ global_webservers_directory }}/{{ domain }}"
|
||||||
|
installation_directory: "{{ user_directory }}/bin"
|
||||||
|
mcrcon_directory: "{{ user_directory }}/mcrcon"
|
||||||
|
data_directory: "{{ user_directory }}/data"
|
||||||
|
remote_control_script: "{{ user_directory }}/cmd"
|
||||||
|
|
||||||
|
# minecraft_version: "1.10" # for naming
|
||||||
|
# minecraft_source_link: "https://mojang.example/server.jar" # direct link to server jar
|
||||||
|
minecraft_port: "25565"
|
||||||
|
minecraft_rcon_port: "25575"
|
||||||
|
minecraft_rcon_password: "{{ lookup('password', 'credentials/' + inventory_hostname + '/' + domain + '/rcon length=80') }}"
|
||||||
|
minecraft_start_ram: "1G"
|
||||||
|
minecraft_max_ram: "1G"
|
||||||
|
minecraft_difficulty: "normal"
|
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: restart minecraft server
|
||||||
|
systemd:
|
||||||
|
state: restarted
|
||||||
|
name: "{{ service_name }}"
|
||||||
|
enabled: yes
|
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
allow_duplicates: yes
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- role: misc/handlers
|
||||||
|
- role: misc/system_user
|
||||||
|
# system_user
|
||||||
|
# user_directory
|
@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: Install required packages
|
||||||
|
apt:
|
||||||
|
state: present
|
||||||
|
name:
|
||||||
|
- openjdk-11-jre-headless
|
||||||
|
|
||||||
|
- name: Create required read only directories
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ item }}"
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
mode: "u=rx,g=rx,o="
|
||||||
|
loop:
|
||||||
|
- "{{ installation_directory }}"
|
||||||
|
|
||||||
|
- name: Create required data directories
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ item }}"
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
mode: "u=rwx,g=rx,o="
|
||||||
|
loop:
|
||||||
|
- "{{ data_directory }}"
|
||||||
|
- "{{ mcrcon_directory }}"
|
||||||
|
|
||||||
|
- name: Download minecraft server jar
|
||||||
|
get_url:
|
||||||
|
url: "{{ minecraft_source_link }}"
|
||||||
|
validate_certs: yes
|
||||||
|
dest: "{{ installation_directory }}/server.{{ minecraft_version }}.jar"
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
mode: "u=r,g=r,o="
|
||||||
|
|
||||||
|
- name: Symlink minecraft server jar
|
||||||
|
file:
|
||||||
|
src: "{{ installation_directory }}/server.{{ minecraft_version }}.jar"
|
||||||
|
dest: "{{ installation_directory }}/server.jar"
|
||||||
|
state: link
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
notify:
|
||||||
|
- restart minecraft server
|
||||||
|
|
||||||
|
- name: Clone mcrcon into source directory
|
||||||
|
become_user: "{{ system_user }}"
|
||||||
|
git:
|
||||||
|
repo: "https://github.com/Tiiffi/mcrcon.git"
|
||||||
|
dest: "{{ mcrcon_directory }}"
|
||||||
|
version: master
|
||||||
|
clone: yes
|
||||||
|
update: yes
|
||||||
|
|
||||||
|
- name: Compile mcrcon
|
||||||
|
become_user: "{{ system_user }}"
|
||||||
|
make:
|
||||||
|
chdir: "{{ mcrcon_directory }}"
|
||||||
|
target: mcrcon
|
||||||
|
|
||||||
|
- name: Accept EULA
|
||||||
|
copy:
|
||||||
|
dest: "{{ data_directory }}/eula.txt"
|
||||||
|
content: "eula=true"
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
mode: "u=r,g=r,o="
|
||||||
|
|
||||||
|
- name: Create remote control script
|
||||||
|
template:
|
||||||
|
src: control.sh
|
||||||
|
dest: "{{ remote_control_script }}"
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
mode: "u=rx,g=r,o="
|
||||||
|
|
||||||
|
- name: Configure minecraft server
|
||||||
|
template:
|
||||||
|
src: server.properties
|
||||||
|
dest: "{{ data_directory }}/server.properties"
|
||||||
|
owner: "{{ system_user }}"
|
||||||
|
group: "{{ system_user }}"
|
||||||
|
mode: "u=r,g=r,o="
|
||||||
|
notify:
|
||||||
|
- restart minecraft server
|
||||||
|
|
||||||
|
- name: Register service for minecraft server
|
||||||
|
template:
|
||||||
|
src: "minecraft.service"
|
||||||
|
dest: "{{ global_systemd_configuration_directory }}/{{ service_name }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "u=rw,g=r,o="
|
||||||
|
notify:
|
||||||
|
- reload systemd
|
||||||
|
- restart minecraft server
|
||||||
|
|
||||||
|
- name: Allow port for minecraft server
|
||||||
|
ufw:
|
||||||
|
rule: allow
|
||||||
|
port: "{{ minecraft_port }}"
|
||||||
|
proto: tcp
|
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
{{ mcrcon_directory | quote }}/mcrcon -H localhost -P {{ minecraft_rcon_port | quote }} -p {{ minecraft_rcon_password | quote }} "$@"
|
@ -0,0 +1,23 @@
|
|||||||
|
[Unit]
|
||||||
|
Description={{ domain }} Minecraft Server
|
||||||
|
Wants=network.target
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User={{ system_user }}
|
||||||
|
Group={{ system_user }}
|
||||||
|
Nice=5
|
||||||
|
KillMode=none
|
||||||
|
SuccessExitStatus=0 1
|
||||||
|
|
||||||
|
ProtectHome=true
|
||||||
|
ProtectSystem=full
|
||||||
|
PrivateDevices=true
|
||||||
|
NoNewPrivileges=true
|
||||||
|
PrivateTmp=true
|
||||||
|
InaccessibleDirectories=/root /sys /srv -/opt /media -/lost+found
|
||||||
|
ReadOnlyDirectories={{ installation_directory }}
|
||||||
|
ReadWriteDirectories={{ data_directory }}
|
||||||
|
WorkingDirectory={{ data_directory }}
|
||||||
|
ExecStart=/usr/lib/jvm/java-11-openjdk-amd64/bin/java -Xms{{ minecraft_start_ram | quote }} -Xmx{{ minecraft_max_ram | quote }} -jar {{ installation_directory | quote }}/server.jar nogui
|
||||||
|
ExecStop={{ remote_control_script }} stop
|
@ -0,0 +1,45 @@
|
|||||||
|
#Minecraft server properties
|
||||||
|
broadcast-rcon-to-ops=true
|
||||||
|
view-distance=12
|
||||||
|
max-build-height=256
|
||||||
|
server-ip=
|
||||||
|
level-seed=
|
||||||
|
rcon.port={{ minecraft_rcon_port }}
|
||||||
|
gamemode=survival
|
||||||
|
server-port={{ minecraft_port }}
|
||||||
|
allow-nether=true
|
||||||
|
enable-command-block=false
|
||||||
|
enable-rcon=true
|
||||||
|
enable-query=false
|
||||||
|
op-permission-level=4
|
||||||
|
prevent-proxy-connections=false
|
||||||
|
generator-settings=
|
||||||
|
resource-pack=
|
||||||
|
level-name=world
|
||||||
|
rcon.password={{ minecraft_rcon_password }}
|
||||||
|
player-idle-timeout=0
|
||||||
|
motd={{ domain }} Server
|
||||||
|
query.port=25565
|
||||||
|
force-gamemode=false
|
||||||
|
hardcore=false
|
||||||
|
white-list=true
|
||||||
|
broadcast-console-to-ops=true
|
||||||
|
pvp=true
|
||||||
|
spawn-npcs=true
|
||||||
|
generate-structures=true
|
||||||
|
spawn-animals=true
|
||||||
|
snooper-enabled=true
|
||||||
|
difficulty={{ minecraft_difficulty }}
|
||||||
|
function-permission-level=2
|
||||||
|
network-compression-threshold=256
|
||||||
|
level-type=default
|
||||||
|
spawn-monsters=true
|
||||||
|
max-tick-time=60000
|
||||||
|
enforce-whitelist=true
|
||||||
|
use-native-transport=true
|
||||||
|
max-players=4
|
||||||
|
resource-pack-sha1=
|
||||||
|
spawn-protection=0
|
||||||
|
online-mode=true
|
||||||
|
allow-flight=false
|
||||||
|
max-world-size=29999984
|
Loading…
Reference in New Issue