New Minecraft Role
This commit is contained in:
20
roles/minecraft/README.md
Normal file
20
roles/minecraft/README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# minecraft role
|
||||
|
||||
Роль для разворачивания сервера майнкрафта.
|
||||
|
||||
Перед прокаткой роли необходимо поставить некоторые модули к ansible:
|
||||
```
|
||||
ansible-galaxy collection install community.general
|
||||
```
|
||||
|
||||
На хосте должен быть настроен sshd (PermitRootLogin yes) и установлен Python3.
|
||||
|
||||
Первый запуск роли происходит с помощью команды:
|
||||
```
|
||||
ansible-playbook -l server roles/minecraft/minecraft.yml -u root --ask-pass
|
||||
```
|
||||
|
||||
После настройки системы роль может запускаться следующим образом:
|
||||
```
|
||||
ansible-playbook -l server roles/minecraft/minecraft.yml -K
|
||||
```
|
||||
136
roles/minecraft/defaults/main.yml
Normal file
136
roles/minecraft/defaults/main.yml
Normal file
@@ -0,0 +1,136 @@
|
||||
---
|
||||
### COMMON ###
|
||||
|
||||
alpine_version: latest-stable
|
||||
|
||||
|
||||
### PACKAGES ###
|
||||
|
||||
system_pkgs:
|
||||
- chrony
|
||||
- tzdata
|
||||
- htop
|
||||
- screen
|
||||
- git
|
||||
- wget
|
||||
- mc
|
||||
- ncdu
|
||||
- vim
|
||||
- nano
|
||||
- rsync
|
||||
- unzip
|
||||
- tar
|
||||
|
||||
mine_pkgs:
|
||||
- openjdk17-jdk
|
||||
- ncurses
|
||||
- rcon
|
||||
|
||||
ext_pkgs:
|
||||
- mariadb
|
||||
- mariadb-client
|
||||
- mariadb-backup
|
||||
- py3-pymysql
|
||||
- nginx
|
||||
- php82-fpm
|
||||
- php-pdo_mysql
|
||||
- php82-mysqli
|
||||
- php82-session
|
||||
|
||||
|
||||
### Nginx ###
|
||||
|
||||
nginx_user: nginx
|
||||
worker_processes: auto
|
||||
worker_connections: 1024
|
||||
root_dir: /srv/www
|
||||
log_dir: /var/log/nginx
|
||||
|
||||
|
||||
### php-fpm ###
|
||||
|
||||
phpfpm_ver: "php82-fpm"
|
||||
phpfpm_init: "php-fpm82"
|
||||
phpfpm_path: "/etc/php82/"
|
||||
|
||||
|
||||
### MariaDB ###
|
||||
|
||||
sql_user: minecraft_sql
|
||||
sql_pass: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
blabla
|
||||
|
||||
minecraft_db:
|
||||
- dynmap
|
||||
- logsec
|
||||
- permissionsex
|
||||
- luckperms
|
||||
|
||||
### SSH ###
|
||||
|
||||
# SEE in inventory lxc.yml
|
||||
|
||||
### SERVER ###
|
||||
|
||||
server_user: user
|
||||
|
||||
MINHEAP: 2G
|
||||
MAXHEAP: 10G
|
||||
|
||||
### SERVER CONFIG ###
|
||||
|
||||
rcon_port: 25566
|
||||
# survival, creative, adventure, spectator
|
||||
gamemode: survival
|
||||
enforce_secure_profile: false
|
||||
level_name: world
|
||||
server_status: Hello
|
||||
view_distance: 10
|
||||
game_port: 25565
|
||||
# true or false
|
||||
pvp: true
|
||||
# Обновление блоков (актуально для редстоун машин)
|
||||
# default - 1000000
|
||||
neighbor_updates: 1000
|
||||
# peaceful, easy, normal and hard
|
||||
difficulty: hard
|
||||
# Размер пакета до его сжатия, больше значение - большая производительность
|
||||
# CPU (но при этом пользователи со слабым интернетом страдают).
|
||||
# -1 отключает компрессию
|
||||
network_compression_threshold: 128
|
||||
max_players: 100
|
||||
# true or false
|
||||
enable_rcon: false
|
||||
#Позволяет изменять права операторов.
|
||||
# 1 — Операторы могут ломать / ставить блоки внутри радиуса защиты
|
||||
# территории спауна.
|
||||
# 2 — Операторы могут использовать команды /clear, /difficulty, /effect,
|
||||
# /gamemode, /gamerule, /give, /tp, и могут изменять командные блоки.
|
||||
# 3 — Операторы могут использовать команды /ban, /deop, /kick, и /op.
|
||||
# 4 — Операторы могут использовать команду /stop.
|
||||
op_permission_level: 3
|
||||
# Позволяет изменять дистанцию рендера энтити для клиентов в процентах.
|
||||
# Более высокие значения могут привести к снижению производительности сервера,
|
||||
# поскольку чем выше значение, тем выше дальность прорисовки энтити и больше
|
||||
# ресурсов нужно для их обработки.
|
||||
# Это настройка выражается в процентах (100% — по умолчанию). Например,
|
||||
# установка этого значения на 50 уменьшит дальность рендера энтити вдвое.
|
||||
# Представляет собой серверный аналог изменения прорисовки у клиента.
|
||||
entity_broadcast_range: 150
|
||||
simulation_distance: 10
|
||||
rcon_password: 12345qaz
|
||||
spawn_protection: 3
|
||||
|
||||
|
||||
### OPS ###
|
||||
|
||||
ops:
|
||||
Player:
|
||||
uuid: "blabla"
|
||||
level: 3
|
||||
bypassesPlayerLimit: false
|
||||
Admin:
|
||||
uuid: "blabla"
|
||||
level: 3
|
||||
bypassesPlayerLimit: false
|
||||
17
roles/minecraft/files/mariadb/mariadb-server.cnf
Normal file
17
roles/minecraft/files/mariadb/mariadb-server.cnf
Normal file
@@ -0,0 +1,17 @@
|
||||
[server]
|
||||
bind-address=127.0.0.1
|
||||
|
||||
|
||||
[mysqld]
|
||||
#skip-networking
|
||||
|
||||
|
||||
[galera]
|
||||
|
||||
|
||||
[embedded]
|
||||
|
||||
|
||||
[mariadb]
|
||||
|
||||
[mariadb-10.5]
|
||||
Binary file not shown.
BIN
roles/minecraft/files/plugins/AntiPopup-7.3.jar
Normal file
BIN
roles/minecraft/files/plugins/AntiPopup-7.3.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/Dynmap-3.7-beta-4-spigot.jar
Normal file
BIN
roles/minecraft/files/plugins/Dynmap-3.7-beta-4-spigot.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/EssentialsX-2.20.1.jar
Normal file
BIN
roles/minecraft/files/plugins/EssentialsX-2.20.1.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/EssentialsXChat-2.20.1.jar
Normal file
BIN
roles/minecraft/files/plugins/EssentialsXChat-2.20.1.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
roles/minecraft/files/plugins/Geyser-Spigot.jar
Normal file
BIN
roles/minecraft/files/plugins/Geyser-Spigot.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/LoginSecurity-Spigot-3.3.0.jar
Normal file
BIN
roles/minecraft/files/plugins/LoginSecurity-Spigot-3.3.0.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/LuckPerms-Bukkit-5.4.102.jar
Normal file
BIN
roles/minecraft/files/plugins/LuckPerms-Bukkit-5.4.102.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/ProtocolLib.jar
Normal file
BIN
roles/minecraft/files/plugins/ProtocolLib.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/SkinsRestorer.jar
Normal file
BIN
roles/minecraft/files/plugins/SkinsRestorer.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/Vault.jar
Normal file
BIN
roles/minecraft/files/plugins/Vault.jar
Normal file
Binary file not shown.
BIN
roles/minecraft/files/plugins/floodgate-spigot.jar
Normal file
BIN
roles/minecraft/files/plugins/floodgate-spigot.jar
Normal file
Binary file not shown.
Binary file not shown.
BIN
roles/minecraft/files/plugins/spark-1.10.58-bukkit.jar
Normal file
BIN
roles/minecraft/files/plugins/spark-1.10.58-bukkit.jar
Normal file
Binary file not shown.
4
roles/minecraft/files/repositories
Normal file
4
roles/minecraft/files/repositories
Normal file
@@ -0,0 +1,4 @@
|
||||
# Managed by Ansible
|
||||
|
||||
http://mirror.yandex.ru/mirrors/alpine/latest-stable/main
|
||||
http://mirror.yandex.ru/mirrors/alpine/latest-stable/community
|
||||
BIN
roles/minecraft/files/server-icon.png
Normal file
BIN
roles/minecraft/files/server-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
roles/minecraft/files/server-icon_1.png
Normal file
BIN
roles/minecraft/files/server-icon_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
BIN
roles/minecraft/files/server-icon_2.png
Normal file
BIN
roles/minecraft/files/server-icon_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
roles/minecraft/files/server-icon_3.png
Normal file
BIN
roles/minecraft/files/server-icon_3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
1
roles/minecraft/files/server/eula.txt
Normal file
1
roles/minecraft/files/server/eula.txt
Normal file
@@ -0,0 +1 @@
|
||||
eula=true
|
||||
BIN
roles/minecraft/files/server/paper-1.20.4-378.jar
Normal file
BIN
roles/minecraft/files/server/paper-1.20.4-378.jar
Normal file
Binary file not shown.
35
roles/minecraft/handlers/main.yml
Normal file
35
roles/minecraft/handlers/main.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
- name: Restart ssh server
|
||||
ansible.builtin.service:
|
||||
name: sshd
|
||||
state: restarted
|
||||
|
||||
- name: Restart chronyd
|
||||
ansible.builtin.service:
|
||||
name: chronyd
|
||||
state: restarted
|
||||
|
||||
- name: Restart minecraft Server
|
||||
ansible.builtin.service:
|
||||
name: minecraftd
|
||||
state: restarted
|
||||
|
||||
- name: Reload minecraft Server
|
||||
ansible.builtin.service:
|
||||
name: minecraftd
|
||||
state: reloaded
|
||||
|
||||
- name: Restart MariaDB
|
||||
ansible.builtin.service:
|
||||
name: mariadb
|
||||
state: restarted
|
||||
|
||||
- name: Restart php-fpm
|
||||
ansible.builtin.service:
|
||||
name: "{{ phpfpm_init }}"
|
||||
state: restarted
|
||||
|
||||
- name: Restart nginx
|
||||
ansible.builtin.service:
|
||||
name: nginx
|
||||
state: restarted
|
||||
8
roles/minecraft/minecraft.yml
Normal file
8
roles/minecraft/minecraft.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
- name: Minecraft Role
|
||||
become: yes
|
||||
hosts: all
|
||||
gather_facts: yes
|
||||
|
||||
roles:
|
||||
- ../minecraft
|
||||
24
roles/minecraft/tasks/backups.yml
Normal file
24
roles/minecraft/tasks/backups.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
- name: Create a backup directory
|
||||
ansible.builtin.file:
|
||||
path: "/home/{{ server_user }}/backups"
|
||||
state: directory
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Generate backup script
|
||||
ansible.builtin.template:
|
||||
src: backup_server.j2
|
||||
dest: "/home/{{ server_user }}/backup_server.sh"
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Creates a cron file for backup
|
||||
ansible.builtin.cron:
|
||||
name: Backup Minecraft server
|
||||
minute: "0"
|
||||
hour: "1"
|
||||
user: "{{ server_user }}"
|
||||
job: "/home/{{ server_user }}/backup_server.sh"
|
||||
54
roles/minecraft/tasks/basic.yml
Normal file
54
roles/minecraft/tasks/basic.yml
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
- name: Rename host
|
||||
ansible.builtin.hostname:
|
||||
name: "{{ inventory_hostname }}"
|
||||
|
||||
- name: Change hosts
|
||||
ansible.builtin.template:
|
||||
src: hosts.j2
|
||||
dest: /etc/hosts
|
||||
backup: true
|
||||
|
||||
- name: Change MOTD file
|
||||
ansible.builtin.template:
|
||||
src: motd.j2
|
||||
dest: /etc/motd
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
backup: true
|
||||
|
||||
- name: Set timezone to Europe/Moscow
|
||||
community.general.timezone:
|
||||
name: Europe/Moscow
|
||||
|
||||
- name: Modify chronyd init.d args
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/conf.d/chronyd
|
||||
regexp: 'ARGS=""'
|
||||
line: 'ARGS="-x"'
|
||||
|
||||
- name: Add Chrony to boot
|
||||
ansible.builtin.service:
|
||||
name: chronyd
|
||||
runlevel: default
|
||||
enabled: True
|
||||
use: openrc
|
||||
when: not ansible_check_mode
|
||||
notify: Restart chronyd
|
||||
|
||||
- name: Create sshd.conf
|
||||
ansible.builtin.template:
|
||||
src: sshd_config.j2
|
||||
dest: /etc/ssh/sshd_config
|
||||
validate: /usr/sbin/sshd -t -f %s
|
||||
backup: true
|
||||
notify: Restart ssh server
|
||||
|
||||
- name: Add sshd to boot
|
||||
ansible.builtin.service:
|
||||
name: sshd
|
||||
runlevel: default
|
||||
enabled: True
|
||||
use: openrc
|
||||
when: not ansible_check_mode
|
||||
108
roles/minecraft/tasks/main.yml
Normal file
108
roles/minecraft/tasks/main.yml
Normal file
@@ -0,0 +1,108 @@
|
||||
---
|
||||
- name: Update and install packets
|
||||
ansible.builtin.include_tasks:
|
||||
file: packets.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_update
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Make basic configure
|
||||
ansible.builtin.include_tasks:
|
||||
file: basic.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_basic
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Create users
|
||||
ansible.builtin.include_tasks:
|
||||
file: users.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_users
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Deploy Initd server daemon
|
||||
ansible.builtin.include_tasks:
|
||||
file: service.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_service
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Deploy Server
|
||||
ansible.builtin.include_tasks:
|
||||
file: server.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_server
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Make backuping
|
||||
ansible.builtin.include_tasks:
|
||||
file: backups.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_backups
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Install plugins
|
||||
ansible.builtin.include_tasks:
|
||||
file: plugins.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_plugins
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Config OPs
|
||||
ansible.builtin.include_tasks:
|
||||
file: ops.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_ops
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Configure MariaDB server
|
||||
ansible.builtin.include_tasks:
|
||||
file: mariadb.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_mariadb
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Configure php-fpm
|
||||
ansible.builtin.include_tasks:
|
||||
file: php.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_php
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Configure nginx
|
||||
ansible.builtin.include_tasks:
|
||||
file: nginx.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_nginx
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Tuning server and plugins
|
||||
ansible.builtin.include_tasks:
|
||||
file: tuning.yml
|
||||
apply:
|
||||
tags:
|
||||
- run_tuning
|
||||
tags:
|
||||
- always
|
||||
101
roles/minecraft/tasks/mariadb.yml
Normal file
101
roles/minecraft/tasks/mariadb.yml
Normal file
@@ -0,0 +1,101 @@
|
||||
---
|
||||
- name: Update repositories
|
||||
community.general.apk:
|
||||
update_cache: true
|
||||
|
||||
- name: Install ext packages
|
||||
community.general.apk:
|
||||
name: "{{ ext_pkgs }}"
|
||||
state: present
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Check that the mysql dir exists
|
||||
ansible.builtin.stat :
|
||||
path: /var/lib/mysql
|
||||
register: stat_result
|
||||
|
||||
- name: Init Mariadb
|
||||
ansible.builtin.service:
|
||||
name: mariadb
|
||||
state: stopped
|
||||
args: setup
|
||||
when: not stat_result.stat.exists
|
||||
|
||||
- name: Deploy mariadb config
|
||||
copy:
|
||||
src: "files/mariadb/mariadb-server.cnf"
|
||||
dest: "/etc/my.cnf.d/mariadb-server.cnf"
|
||||
mode: '0644'
|
||||
notify: Restart MariaDB
|
||||
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
||||
|
||||
- name: mysql_secure_installation
|
||||
when: not stat_result.stat.exists
|
||||
block:
|
||||
- name: Removes all anonymous user accounts
|
||||
community.mysql.mysql_user:
|
||||
login_user: root
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
name: ''
|
||||
host_all: true
|
||||
state: absent
|
||||
|
||||
- name: Delete Hostname based MySQL user
|
||||
community.mysql.mysql_user:
|
||||
login_user: root
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
name: root
|
||||
host: "{{ansible_nodename}}"
|
||||
state: absent
|
||||
|
||||
- name: Remove MySQL test database
|
||||
community.mysql.mysql_db:
|
||||
login_user: root
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
name: test
|
||||
state: absent
|
||||
|
||||
- name: Reload privilege tables
|
||||
ansible.builtin.command: 'mysql -ne "{{ item }}"'
|
||||
with_items:
|
||||
- FLUSH PRIVILEGES
|
||||
changed_when: False
|
||||
|
||||
- name: Add MariaDB to boot
|
||||
ansible.builtin.service:
|
||||
name: mariadb
|
||||
runlevel: default
|
||||
enabled: True
|
||||
use: openrc
|
||||
when: not ansible_check_mode
|
||||
|
||||
# Minecraft Role Tasks
|
||||
- name: Config Mysql Users And DB for Minecraft
|
||||
tags: mine_db
|
||||
block:
|
||||
- name: Create a Dynmap Database
|
||||
community.mysql.mysql_db:
|
||||
login_user: root
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
name: "{{ minecraft_db }}"
|
||||
state: present
|
||||
|
||||
- name: Create user and priv db
|
||||
community.mysql.mysql_user:
|
||||
login_user: root
|
||||
login_unix_socket: /run/mysqld/mysqld.sock
|
||||
name: "{{ sql_user }}"
|
||||
password: "{{ sql_pass }}"
|
||||
priv:
|
||||
"{{ item }}.*:ALL"
|
||||
state: present
|
||||
append_privs: True
|
||||
with_items: "{{ minecraft_db }}"
|
||||
|
||||
- name: Reload privilege tables
|
||||
ansible.builtin.command: 'mysql -ne "{{ item }}"'
|
||||
with_items:
|
||||
- FLUSH PRIVILEGES
|
||||
changed_when: False
|
||||
24
roles/minecraft/tasks/nginx.yml
Normal file
24
roles/minecraft/tasks/nginx.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
- name: Update repositories
|
||||
community.general.apk:
|
||||
update_cache: true
|
||||
|
||||
- name: Install ext packages
|
||||
community.general.apk:
|
||||
name: "{{ ext_pkgs }}"
|
||||
state: present
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Add nginx to boot
|
||||
ansible.builtin.service:
|
||||
name: nginx
|
||||
runlevel: default
|
||||
enabled: True
|
||||
use: openrc
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Deploy nginx.conf
|
||||
template:
|
||||
src: templates/nginx.j2
|
||||
dest: /etc/nginx/nginx.conf
|
||||
notify: Restart nginx
|
||||
25
roles/minecraft/tasks/ops.yml
Normal file
25
roles/minecraft/tasks/ops.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
- name: Initiate Op List
|
||||
ansible.builtin.set_fact:
|
||||
op_list: []
|
||||
|
||||
- name: Add new JSON Objects to List
|
||||
ansible.builtin.set_fact:
|
||||
op_list: "{{ op_list +
|
||||
[{ 'uuid': ops[item].uuid,
|
||||
'name': item,
|
||||
'level': ops[item].level,
|
||||
'bypassesPlayerLimit': ops[item].bypassesPlayerLimit}] }}"
|
||||
with_items: "{{ ops }}"
|
||||
|
||||
- name: Debug
|
||||
ansible.builtin.debug:
|
||||
var: op_list
|
||||
|
||||
- name: Write output json file
|
||||
ansible.builtin.copy:
|
||||
dest: "/home/{{ server_user }}/minecraft/ops.json"
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0644'
|
||||
content: "{{ op_list | to_nice_json(sort_keys=False, indent=2) }}"
|
||||
29
roles/minecraft/tasks/packets.yml
Normal file
29
roles/minecraft/tasks/packets.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
- name: Config repos
|
||||
ansible.builtin.copy:
|
||||
src: repositories
|
||||
dest: /etc/apk/
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
backup: true
|
||||
|
||||
- name: Update repositories
|
||||
community.general.apk:
|
||||
update_cache: true
|
||||
|
||||
- name: Update all installed packages to the latest versions
|
||||
community.general.apk:
|
||||
upgrade: yes
|
||||
|
||||
- name: Install system packages
|
||||
community.general.apk:
|
||||
name: "{{ system_pkgs }}"
|
||||
state: present
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Install minecraft packages
|
||||
community.general.apk:
|
||||
name: "{{ mine_pkgs }}"
|
||||
state: present
|
||||
when: not ansible_check_mode
|
||||
28
roles/minecraft/tasks/php.yml
Normal file
28
roles/minecraft/tasks/php.yml
Normal file
@@ -0,0 +1,28 @@
|
||||
---
|
||||
- name: Update repositories
|
||||
community.general.apk:
|
||||
update_cache: true
|
||||
|
||||
- name: Install ext packages
|
||||
community.general.apk:
|
||||
name: "{{ ext_pkgs }}"
|
||||
state: present
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Add php-fpm to boot
|
||||
ansible.builtin.service:
|
||||
name: "{{ phpfpm_init }}"
|
||||
runlevel: default
|
||||
enabled: True
|
||||
use: openrc
|
||||
when: not ansible_check_mode
|
||||
|
||||
- name: Configure php-fpm
|
||||
lineinfile:
|
||||
dest: "{{ phpfpm_path}}/php-fpm.d/www.conf"
|
||||
regexp: "^{{ item.property | regex_escape() }} = "
|
||||
line: "{{ item.property }} = {{ item.value }}"
|
||||
with_items:
|
||||
- { property: 'user', value: 'nginx' }
|
||||
- { property: 'group', value: 'nginx' }
|
||||
notify: Restart php-fpm
|
||||
9
roles/minecraft/tasks/plugins.yml
Normal file
9
roles/minecraft/tasks/plugins.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
- name: Deploy plugins
|
||||
copy:
|
||||
src: "files/plugins/"
|
||||
dest: "/home/{{ server_user }}/minecraft/plugins/"
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0644'
|
||||
notify: Restart minecraft Server
|
||||
38
roles/minecraft/tasks/server.yml
Normal file
38
roles/minecraft/tasks/server.yml
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
- name: Create a server directory
|
||||
ansible.builtin.file:
|
||||
path: "/home/{{ server_user }}/minecraft"
|
||||
state: directory
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Deploy server files
|
||||
copy:
|
||||
src: "files/server/"
|
||||
dest: "/home/{{ server_user }}/minecraft/"
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0644'
|
||||
notify: Restart minecraft Server
|
||||
tags: update_server
|
||||
|
||||
- name: Deploy server icon
|
||||
ansible.builtin.copy:
|
||||
src: server-icon.png
|
||||
dest: "/home/{{ server_user }}/minecraft/"
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
mode: '0644'
|
||||
backup: true
|
||||
notify: Restart minecraft Server
|
||||
tags: icon_deploy
|
||||
|
||||
- name: Generate server config
|
||||
ansible.builtin.template:
|
||||
src: server.properties.j2
|
||||
dest: "/home/{{ server_user }}/minecraft/server.properties"
|
||||
owner: "{{ server_user }}"
|
||||
group: "{{ server_user }}"
|
||||
notify: Restart minecraft Server
|
||||
tags: config_deploy
|
||||
26
roles/minecraft/tasks/service.yml
Normal file
26
roles/minecraft/tasks/service.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
- name: Deploy openrc service params
|
||||
ansible.builtin.template:
|
||||
src: minecraft-rc.j2
|
||||
dest: /etc/conf.d/minecraftd
|
||||
mode: '0644'
|
||||
|
||||
- name: Deploy base openrc service
|
||||
ansible.builtin.template:
|
||||
src: minecraft.j2
|
||||
dest: /etc/init.d/minecraft
|
||||
mode: '0755'
|
||||
|
||||
- name: Create a symbolic link to openrc service
|
||||
ansible.builtin.file:
|
||||
src: /etc/init.d/minecraft
|
||||
dest: /etc/init.d/minecraftd
|
||||
state: link
|
||||
mode: '0755'
|
||||
|
||||
- name: Add minecraft server to boot
|
||||
ansible.builtin.service:
|
||||
name: minecraftd
|
||||
runlevel: default
|
||||
enabled: True
|
||||
use: openrc
|
||||
2
roles/minecraft/tasks/tuning.yml
Normal file
2
roles/minecraft/tasks/tuning.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
---
|
||||
# Disable plugin list
|
||||
22
roles/minecraft/tasks/users.yml
Normal file
22
roles/minecraft/tasks/users.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
- name: Ensure group "{{ userdb[item].user_group }}" exists
|
||||
ansible.builtin.group:
|
||||
name: "{{ userdb[item].user_group }}"
|
||||
state: present
|
||||
with_items: "{{ userdb }}"
|
||||
|
||||
- name: Add user "{{ item }}"
|
||||
ansible.builtin.user:
|
||||
name: "{{ item }}"
|
||||
# shell: /bin/bash
|
||||
group: "{{ userdb[item].user_group }}"
|
||||
password: "{{ userdb[item].user_pass }}"
|
||||
comment: "My Default user"
|
||||
with_items: "{{ userdb }}"
|
||||
|
||||
- name: Deploy authorized key for users
|
||||
ansible.posix.authorized_key:
|
||||
user: "{{ item }}"
|
||||
key: "{{ userdb[item].key }}"
|
||||
with_items: "{{ userdb }}"
|
||||
when: not ansible_check_mode
|
||||
11
roles/minecraft/templates/1minecraft-rc.j2
Normal file
11
roles/minecraft/templates/1minecraft-rc.j2
Normal file
@@ -0,0 +1,11 @@
|
||||
# /etc/conf.d/minecraft
|
||||
#
|
||||
# Minecraft - OpenRC scripts
|
||||
# Copyright (C) 2017-2019 João Brázio [joao@brazio.org]
|
||||
#
|
||||
|
||||
MINHEAP={{ MINHEAP }}
|
||||
MAXHEAP={{ MAXHEAP }}
|
||||
|
||||
# https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/
|
||||
#CUSTOMARGS="-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1"
|
||||
125
roles/minecraft/templates/1minecraft.j2
Normal file
125
roles/minecraft/templates/1minecraft.j2
Normal file
@@ -0,0 +1,125 @@
|
||||
#!/sbin/openrc-run
|
||||
# /etc/init.d/minecraft
|
||||
#
|
||||
# Minecraft - OpenRC scripts
|
||||
# Copyright (C) 2017-2019 João Brázio [joao@brazio.org]
|
||||
#
|
||||
# Expects the game folder to be located at /srv/minecraft/<instance>
|
||||
# Don't use directly the /etc/init.d/minecraft script, create a symlink for you instance.
|
||||
#
|
||||
# This is an example for Paper:
|
||||
# - mkdir -p /srv/minecraft/paper
|
||||
# - Download paper jar and place it there
|
||||
# - ln -s /etc/init.d/minecraft /etc/init.d/minecraft.paper
|
||||
# - cp /etc/conf.d/minecraft /etc/conf.d/minecraft.paper
|
||||
#
|
||||
# Dependencies:
|
||||
# - Java VM at /usr/bin/java
|
||||
# - mcrcon [https://github.com/Tiiffi/mcrcon]
|
||||
#
|
||||
|
||||
USER={{ server_user }}
|
||||
GROUP={{ server_user }}
|
||||
|
||||
INSTANCE=${RC_SVCNAME##*.}
|
||||
BASE="/home/{{ server_user }}/minecraft"
|
||||
PIDFILE="/var/run/${RC_SVCNAME}.pid"
|
||||
RCON="/usr/bin/rcon"
|
||||
BIN="$(ls ${BASE} -v 2>/dev/null | grep -i "craftbukkit.*jar\\|spigot.*jar\\|paper*.*jar\\|minecraft_server.*jar" | head -n 1)"
|
||||
|
||||
config_get () {
|
||||
echo $(grep ${1} "${BASE}/server.properties" | cut -d '=' -f 2)
|
||||
}
|
||||
|
||||
depend () {
|
||||
need net
|
||||
}
|
||||
|
||||
start_pre () {
|
||||
if [ -z "${BIN}" ]; then
|
||||
eerror "${RC_SVCNAME} cannot find a proper server jar."
|
||||
eerror "Check your game installation at ${BASE}."
|
||||
return 1
|
||||
fi
|
||||
|
||||
[ -f "${PIDFILE}" ] && rm ${PIDFILE}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
start () {
|
||||
ebegin "Starting Minecraft server ${INSTANCE}"
|
||||
start-stop-daemon --start --chdir ${BASE} --pidfile ${PIDFILE} --make-pidfile \
|
||||
--exec /usr/bin/java --user ${USER} --group ${GROUP} \
|
||||
--background -- -server -Xms${MINHEAP:-128M} -Xmx${MAXHEAP:-1024M} \
|
||||
${CUSTOMARGS} -jar ${BIN} nogui
|
||||
eend $?
|
||||
}
|
||||
|
||||
stop_pre () {
|
||||
if [ ! -f "${BASE}/server.properties" ]; then
|
||||
eerror "${RC_SVCNAME} cannot find a proper server config file."
|
||||
eerror "Check your game installation at ${BASE}."
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
stop () {
|
||||
ebegin "Stopping Minecraft server ${INSTANCE}"
|
||||
|
||||
if [ "$(config_get enable-rcon)" = "true" ]; then
|
||||
# Fetch rcon configuration
|
||||
RCON_SRV=$(config_get server.ip)
|
||||
RCON_PORT=$(config_get rcon.port)
|
||||
RCON_PASS=$(config_get rcon.password)
|
||||
|
||||
# Try to soft kill the server
|
||||
${RCON} -H ${RCON_SRV:-127.0.0.1} -p ${RCON_PORT} -m -P ${RCON_PASS} save-all 1>/dev/null 2>&1
|
||||
${RCON} -H ${RCON_SRV:-127.0.0.1} -p ${RCON_PORT} -m -P ${RCON_PASS} stop 1>/dev/null 2>&1
|
||||
|
||||
i=0
|
||||
PID=$(cat ${PIDFILE})
|
||||
|
||||
while [ "${i}" -le 30 ]; do
|
||||
kill -0 ${PID} 2>/dev/null && sleep 1 || break
|
||||
i=$(( i + 1 ))
|
||||
done
|
||||
fi
|
||||
|
||||
# Hard stop the server
|
||||
start-stop-daemon --stop --chdir ${BASE} --pidfile ${PIDFILE} --user ${USER} --group ${GROUP} --retry 5 2>/dev/null
|
||||
eend 0
|
||||
}
|
||||
|
||||
status () {
|
||||
if [ "$(config_get enable-rcon)" = "true" ]; then
|
||||
# Fetch rcon configuration
|
||||
RCON_SRV=$(config_get server.ip)
|
||||
RCON_PORT=$(config_get rcon.port)
|
||||
RCON_PASS=$(config_get rcon.password)
|
||||
|
||||
${RCON} -H ${RCON_SRV:-127.0.0.1} -p ${RCON_PORT} -m -P ${RCON_PASS} version
|
||||
${RCON} -H ${RCON_SRV:-127.0.0.1} -p ${RCON_PORT} -m -P ${RCON_PASS} tps
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
backup() {
|
||||
saveoff
|
||||
|
||||
NOW=`date "+%Y-%m-%d_%Hh%M"`
|
||||
BACKUP_FILE="${BACKUP_BASE}/backup_${NOW}.tar"
|
||||
einfo "Backing up minecraft world..."
|
||||
as_user "tar -C \"${BASE}\" -cf \"$BACKUP_FILE\" ${WORLDS}"
|
||||
|
||||
einfo "Backing up ${BIN}"
|
||||
as_user "tar -C \"${BASE}\" -rf \"$BACKUP_FILE\" ${BIN} server.properties"
|
||||
|
||||
saveon
|
||||
|
||||
einfo "Compressing backup..."
|
||||
as_user "gzip -f \"$BACKUP_FILE\""
|
||||
einfo "Done."
|
||||
}
|
||||
8
roles/minecraft/templates/backup_server.j2
Normal file
8
roles/minecraft/templates/backup_server.j2
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Working dir
|
||||
cd /home/{{ server_user }}/backups
|
||||
# Delete old backups
|
||||
find . -name "backup_*.tar.gz" -type f -mtime +1 -delete
|
||||
# Start backup
|
||||
rc-service minecraftd backup
|
||||
1
roles/minecraft/templates/hosts.j2
Normal file
1
roles/minecraft/templates/hosts.j2
Normal file
@@ -0,0 +1 @@
|
||||
127.0.0.1 {{ inventory_hostname }}.my.domain {{ inventory_hostname }} localhost.localdomain localhost
|
||||
23
roles/minecraft/templates/minecraft-rc.j2
Normal file
23
roles/minecraft/templates/minecraft-rc.j2
Normal file
@@ -0,0 +1,23 @@
|
||||
# /etc/conf.d/minecraft
|
||||
#
|
||||
# Minecraft - OpenRC scripts
|
||||
# Copyright (C) 2024 Santic Zombie [email@santic-zombie.ru]
|
||||
#
|
||||
#
|
||||
|
||||
MINHEAP={{ MINHEAP }}
|
||||
MAXHEAP={{ MAXHEAP }}
|
||||
|
||||
USER={{ server_user }}
|
||||
GROUP={{ server_user }}
|
||||
|
||||
BASE="/home/{{ server_user }}/minecraft"
|
||||
BACKUP_BASE="/home/{{ server_user }}/backups"
|
||||
|
||||
SCREENNAME="Minecraft"
|
||||
|
||||
WORLDS="{{ level_name }} {{ level_name }}_nether {{ level_name }}_the_end"
|
||||
|
||||
|
||||
# https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/
|
||||
#CUSTOMARGS="-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1"
|
||||
158
roles/minecraft/templates/minecraft.j2
Normal file
158
roles/minecraft/templates/minecraft.j2
Normal file
@@ -0,0 +1,158 @@
|
||||
#!/sbin/openrc-run
|
||||
# /etc/init.d/minecraft
|
||||
#
|
||||
# Minecraft - OpenRC scripts
|
||||
# Copyright (C) 2024 Santic Zombie [email@santic-zombie.ru]
|
||||
#
|
||||
#
|
||||
|
||||
extra_commands="reload backup listen"
|
||||
|
||||
INSTANCE=${RC_SVCNAME##*.}
|
||||
PIDFILE="/var/run/${RC_SVCNAME}.pid"
|
||||
BIN="$(ls ${BASE} -v 2>/dev/null | grep -i "craftbukkit.*jar\\|spigot.*jar\\|paper*.*jar\\|minecraft_server.*jar" | head -n 1)"
|
||||
INVOCATION="/usr/bin/java -server -Xms${MINHEAP:-128M} -Xmx${MAXHEAP:-1024M} \
|
||||
${CUSTOMARGS} -jar ${BIN} nogui"
|
||||
|
||||
depend() {
|
||||
need net localmount
|
||||
after bootmisc
|
||||
use logger
|
||||
}
|
||||
|
||||
ME=`whoami`
|
||||
as_user() {
|
||||
if [ "${ME}" = "${USER}" ] ; then
|
||||
ash -c "$1"
|
||||
else
|
||||
su - "${USER}" -c "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
start_pre () {
|
||||
if [ -z "${BIN}" ]; then
|
||||
eerror "${RC_SVCNAME} cannot find a proper server jar."
|
||||
eerror "Check your game installation at ${BASE}."
|
||||
return 1
|
||||
fi
|
||||
|
||||
[ -f "${PIDFILE}" ] && rm ${PIDFILE}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
start () {
|
||||
ebegin "Starting Minecraft server daemon"
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
einfo "Minecraft server is already running!"
|
||||
else
|
||||
ebegin "Starting in progress"
|
||||
cd "${BASE}"
|
||||
as_user "cd ${BASE} && screen -dmS ${SCREENNAME} ${INVOCATION}"
|
||||
sleep 10
|
||||
pgrep -f "${BIN}" | tail -1 > "${PIDFILE}"
|
||||
if pgrep -u "${USER}" -f "${BIN}" | tail -1 > /dev/null ; then
|
||||
einfo "${INSTANCE} is now running."
|
||||
else
|
||||
eerror "Error! Could not start ${INSTANCE}! :("
|
||||
return 2
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
stop() {
|
||||
ebegin "Stopping Minecraft server daemon"
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
ebegin "Stopping in progress"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER SHUTTING DOWN IN 30 SECONDS. Saving map...\"\015'"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-all\"\015'"
|
||||
sleep 10
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"stop\"\015'"
|
||||
sleep 10
|
||||
else
|
||||
einfo "${INSTANCE} was not running."
|
||||
fi
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
eerror "Error! ${INSTANCE} could not be stopped."
|
||||
else
|
||||
einfo "${INSTANCE} is stopped."
|
||||
fi
|
||||
|
||||
# Hard stop the server
|
||||
start-stop-daemon --stop --chdir ${BASE} --pidfile ${PIDFILE} --user ${USER} --group ${GROUP} --retry 5 2>/dev/null
|
||||
eend 0
|
||||
}
|
||||
|
||||
restart() {
|
||||
ebegin "Reload Minecraft server daemon"
|
||||
stop
|
||||
start
|
||||
eend $?
|
||||
}
|
||||
|
||||
reload() {
|
||||
ebegin "Reload Minecraft server"
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
ebegin "Reloading in progress"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER RELOADING IN 40 SECONDS. Saving map...\"\015'"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-all\"\015'"
|
||||
sleep 10
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"reload\"\015'"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"reload confirm\"\015'"
|
||||
sleep 10
|
||||
else
|
||||
einfo "${INSTANCE} was not running."
|
||||
fi
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
einfo "Server reloaded."
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER SUCCESSFULLY RELOADED!\"\015'"
|
||||
else
|
||||
eerror "Error! ${INSTANCE} could not reloaded! :("
|
||||
fi
|
||||
}
|
||||
|
||||
saveoff() {
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
einfo "Server is running... suspending saves"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER BACKUP STARTING. Server going readonly...\"\015'"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-off\"\015'"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-all\"\015'"
|
||||
sync
|
||||
sleep 10
|
||||
else
|
||||
einfo "${INSTANCE} is not running."
|
||||
fi
|
||||
}
|
||||
|
||||
saveon() {
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
einfo "Server is running... re-enabling saves"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"save-on\"\015'"
|
||||
as_user "screen -p 0 -S ${SCREENNAME} -X eval 'stuff \"say SERVER BACKUP ENDED. Server going read-write...\"\015'"
|
||||
else
|
||||
echo "${INSTANCE} is not running. Not resuming saves."
|
||||
fi
|
||||
}
|
||||
|
||||
backup() {
|
||||
saveoff
|
||||
|
||||
NOW=`date "+%Y-%m-%d_%Hh%M"`
|
||||
BACKUP_FILE="${BACKUP_BASE}/backup_${NOW}.tar"
|
||||
einfo "Backing up minecraft server..."
|
||||
as_user "tar -C \"${BASE}\" -cf \"$BACKUP_FILE\" ."
|
||||
|
||||
saveon
|
||||
|
||||
einfo "Compressing backup..."
|
||||
as_user "gzip -f \"$BACKUP_FILE\""
|
||||
einfo "Done."
|
||||
}
|
||||
|
||||
listen() {
|
||||
if pgrep -u "${USER}" -f "${BIN}" > /dev/null ; then
|
||||
as_user "tail -f ${BASE}/logs/latest.log"
|
||||
else
|
||||
echo "${INSTANCE} is not running. Cannot listen to server."
|
||||
fi
|
||||
}
|
||||
14
roles/minecraft/templates/motd.j2
Normal file
14
roles/minecraft/templates/motd.j2
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
Welcome to {{ inventory_hostname }} Server! ^_^
|
||||
|
||||
:\ /; _
|
||||
; \___/ ; ; ;
|
||||
,:-"' `"-:. / ;
|
||||
_ /,---. ,---.\ _ _; /
|
||||
_:>(( | ) ( | ))<:_ ,-""_,"
|
||||
\````` `````/""""",-""
|
||||
'-.._ v _..-' )
|
||||
/ ___ ____,.. \
|
||||
/ / | | | ( \. \
|
||||
nya / / | | | | \ \
|
||||
`" `" `" `"
|
||||
58
roles/minecraft/templates/nginx.j2
Normal file
58
roles/minecraft/templates/nginx.j2
Normal file
@@ -0,0 +1,58 @@
|
||||
user {{ nginx_user }};
|
||||
worker_processes {{ worker_processes }};
|
||||
|
||||
error_log {{ log_dir }}/error.log;
|
||||
error_log {{ log_dir }}/error.log notice;
|
||||
error_log {{ log_dir }}/error.log info;
|
||||
|
||||
events {
|
||||
worker_connections {{ worker_connections }};
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
|
||||
access_log {{ log_dir }}/access.log main;
|
||||
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
#keepalive_timeout 65;
|
||||
gzip on;
|
||||
|
||||
server {
|
||||
listen 80 default_server;
|
||||
#server_name _;
|
||||
|
||||
root /srv/dynmap/web;
|
||||
|
||||
index index.php index.html index.htm;
|
||||
|
||||
location / {
|
||||
# First attempt to serve request as file, then
|
||||
# as directory, then fall back to displaying a 404.
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
# pass PHP scripts to FastCGI server
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass 127.0.0.1:9000;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi.conf;
|
||||
}
|
||||
|
||||
# deny access to .htaccess files, if Apache's document root
|
||||
# concurs with nginx's one
|
||||
#
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
}
|
||||
|
||||
#include sites-enabled/*;
|
||||
}
|
||||
59
roles/minecraft/templates/server.properties.j2
Normal file
59
roles/minecraft/templates/server.properties.j2
Normal file
@@ -0,0 +1,59 @@
|
||||
enable-jmx-monitoring=false
|
||||
rcon.port={{ rcon_port }}
|
||||
level-seed=
|
||||
gamemode={{ gamemode }}
|
||||
enable-command-block=false
|
||||
enable-query=false
|
||||
generator-settings={}
|
||||
enforce-secure-profile={{ enforce_secure_profile }}
|
||||
level-name={{ level_name }}
|
||||
motd={{ server_status }}
|
||||
query.port={{ game_port }}
|
||||
pvp={{ pvp }}
|
||||
generate-structures=true
|
||||
max-chained-neighbor-updates={{ neighbor_updates }}
|
||||
difficulty={{ difficulty }}
|
||||
network-compression-threshold={{ network_compression_threshold }}
|
||||
max-tick-time=60000
|
||||
require-resource-pack=false
|
||||
use-native-transport=true
|
||||
max-players={{ max_players }}
|
||||
online-mode=false
|
||||
enable-status=true
|
||||
allow-flight=false
|
||||
initial-disabled-packs=
|
||||
broadcast-rcon-to-ops=true
|
||||
view-distance={{ view_distance }}
|
||||
server-ip=
|
||||
resource-pack-prompt=
|
||||
allow-nether=true
|
||||
server-port={{ game_port }}
|
||||
enable-rcon={{ enable_rcon }}
|
||||
sync-chunk-writes=true
|
||||
resource-pack-id=
|
||||
op-permission-level={{ op_permission_level }}
|
||||
prevent-proxy-connections=false
|
||||
hide-online-players=false
|
||||
resource-pack=
|
||||
entity-broadcast-range-percentage={{ entity_broadcast_range }}
|
||||
simulation-distance={{ simulation_distance }}
|
||||
rcon.password={{ rcon_password }}
|
||||
player-idle-timeout=0
|
||||
debug=false
|
||||
force-gamemode=false
|
||||
rate-limit=0
|
||||
hardcore=false
|
||||
white-list=false
|
||||
broadcast-console-to-ops=true
|
||||
spawn-npcs=true
|
||||
spawn-animals=true
|
||||
log-ips=true
|
||||
function-permission-level=2
|
||||
initial-enabled-packs=vanilla
|
||||
level-type=minecraft\:normal
|
||||
text-filtering-config=
|
||||
spawn-monsters=true
|
||||
enforce-whitelist=false
|
||||
spawn-protection={{ spawn_protection }}
|
||||
resource-pack-sha1=
|
||||
max-world-size=29999984
|
||||
6
roles/minecraft/templates/sshd_config.j2
Normal file
6
roles/minecraft/templates/sshd_config.j2
Normal file
@@ -0,0 +1,6 @@
|
||||
Port {{ ssh_port }}
|
||||
PubkeyAuthentication yes
|
||||
PasswordAuthentication no
|
||||
PermitEmptyPasswords no
|
||||
ChallengeResponseAuthentication no
|
||||
Subsystem sftp /usr/lib/ssh/sftp-server
|
||||
Reference in New Issue
Block a user