📝 Note: L'installation d'un serveur Spigot/Paper sur Linux est très simple.
A première vus ça semble compliqué quand on voit la taille de la page. J'ai seulement essayé de détailler les étapes au maximum.
Il suffit d'un minimum de connaissance Linux et savoir faire des copier-coller.

Spigot : Permet d'installer des mods mais aussi d'optimiser les performances du serveur
Paper: Un fork de Spigot avec plus d'options, augmente les performances et corrige certains gameplay.
Dynmap : Permet de voir la carte du serveur depuis un navigateur. Exemple: https://mc.sheikah.org
CoreProtect : Permet de faire des retours arrière sur une zone ou voir qui a placé un bloc, cassé, pris un truc dans un coffre, etc…

Dans mes étapes je vais utiliser # ou $ avant chaque commande.
# pour les commandes à utiliser en root (ou sudo)
$ pour les commandes à exécuter en tant qu'utilisateur.

J'ai choisi 'mc' en nom d'utilisateur et 'password1234' en mot de passe.

Je divise l'installation en 4 étapes + 2 Facultatifs:
1. Installation des dépendances
2. Installation de Spigot ou Paper
3. Configuration du serveur
4. Optimisation

5. Installation de dynmap sur une base MySQL et NGINX en serveur WEB (Facultatif)
6. Installation de CoreProtect avec une base MySQL (Facultatif)

1. Installation des dépendances et de Spigot/Paper

4 dépendances à installer :
open-vm-tools > (Facultatif si vous n’utilisez pas une machine virtuelle)
default-jre > nécessaire pour lancer le serveur qui est sur java
git > nécessaire pour compiler Spigot
screen > pour exécuter le serveur en tache de fond.

# apt install open-vm-tools default-jre git screen

2a. Instalation de Spigot (Si vous voulez utiliser paper passez a l'etape 2b)

$ mkdir ~/BuildTools
$ mkdir ~/server
$ cd ~/BuildTools
$ wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
$ java -jar BuildTools.jar --rev 1.16.2

📝 Note: J'installe la version 1.16.2. Mais vous pouvez installer une autre version.
Voir: https://www.spigotmc.org/wiki/buildtools/#versions

$ cp spigot-1.15.jar ~/server/spigot.jar
$ cd ~/server/
$ echo "eula=true" > eula.txt
$ nano start.sh

Copiez et Collez le contenu en vert et sauvegardez (Ctrl+X)

#!/bin/sh
cd /home/mc/server && screen -d -m -S "mc" java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs -jar spigot.jar nogui

📝 Note: Changez les valeurs -Xms8G -Xmx8G en fonction de la mémoire que vous souhaitez allouer au serveur Minecraft.
Si le serveur a 8GB de mémoire il faut laisser suffisamment de mémoire pour l'OS. Mon serveur a 13GB de mémoire.
Je donne 8GB pour Minecraft, 2.5GB pour la base MySQL de Dynmap/CoreProtect et le reste pour l'OS et NGINX.

2b. Installation de Paper

Téléchargez la dernière version de paper ici: https://papermc.io/downloads

$ mkdir ~/server

Placez la dans ~/server/ puis allez dans le répertoire:

$ cd ~/server

Créez le script de démarrage du serveur:

$ nano start.sh

Copiez et Collez le contenu en vert et sauvegardez (Ctrl+X)

#!/bin/sh
cd /home/mc/server && screen -d -m -S "mc" java -Xms8G -Xmx8G -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 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper*.jar nogui

📝 Note: Changez les valeurs -Xms8G -Xmx8G en fonction de la mémoire que vous souhaitez allouer au serveur Minecraft.
Si le serveur a 8GB de mémoire il faut laisser suffisamment de mémoire pour l'OS. Mon serveur a 13GB de mémoire.
Je donne 8GB pour Minecraft, 2.5GB pour la base MySQL de Dynmap/CoreProtect et le reste pour l'OS et NGINX.

Le rendre exécutable:

$ chmod +x start.sh

Acceptez l'eula:

echo "eula=true" > eula.txt

Démarrez le serveur:

$ ./start.sh

Se connecter à la console:

$ screen -r mc

Une fois le serveur démarré tapez stop et Entré pour l'arrêter.

3. Configuration du serveur

Editez le fichier server.properties en fonction de vos préférences.

$ nano ~/server/server.properties

Modifiez ces lignes

enable-query=true
level-name=BroCorp
motd=MC.SHEIKAH.ORG
white-list=true
snooper-enabled=false
difficulty=hard
network-compression-threshold=512

4. Optimisation de Spigot/Paper

Editez le fichier bukkit.yml et changer ces 2 valeurs:

$ nano ~/server/bukkit.yml
query-plugins: false
ambient: 4

query-plugins -> désactive la possibilité de lister les plugins par un api externe
ambient -> nombre de chauves-souris

Editez le fichier spigot.yml avec ces valeurs:

nano ~/server/spigot.yml
world-settings:
  default:
	mob-spawn-range: 4
	arrow-despawn-rate: 600
...
	merge-radius:
		exp: 6.0
		item: 4.0
...
	entity-activation-range:
		animals: 16
		monsters: 24
		raiders: 48
		misc: 8
		tick-inactive-villagers: false
		wake-up-inactive:
		villagers-every: 300
...
	max-tick-time:
		tile: 1000
		entity: 1000

Pourquoi ces valeurs?
https://aikar.co/2015/10/08/spigot-tick-limiter-dont-use-max-tick-time/
https://www.spigotmc.org/wiki/reducing-lag/

Editez le fichier paper.yml avec ces valeurs:

nano ~/server/paper.yml
settings:
...
  unsupported-settings:
    allow-headless-pistons: true
    allow-permanent-block-break-exploits: true
    allow-piston-duplication: true

world-settings:
  default:
    per-player-mob-spawns: true
    max-entity-collisions: 2
    armor-stands-tick: false
...
  game-mechanics:
    disable-chest-cat-detection: true
...
  hopper:
      cooldown-when-full: false

5. Dynmap (NGINX - MySQL - PHP) (Optionnel)

# apt-get update && apt-get upgrade
# apt install mysql-server
# mysql_secure_installation # add-apt-repository universe # apt install nginx php-fpm php-mysql
# nano /etc/nginx/sites-available/mc
➕ mc
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name mc.sheikah.org;

root /home/mc/server/plugins/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$ {
include snippets/fastcgi-php.conf;

# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
# ln -s /etc/nginx/sites-available/mc /etc/nginx/sites-enabled/
# unlink /etc/nginx/sites-enabled/default
# nginx -t
# systemctl reload nginx
# mysql -u root -p
mysql> CREATE DATABASE dynmap;
mysql> CREATE USER 'mc'@'localhost' IDENTIFIED BY 'password1234';
mysql> GRANT CREATE, DELETE, INSERT, SELECT, UPDATE, ALTER ON dynmap.* TO 'mc'@'localhost';
mysql> FLUSH PRIVILEGES;
# nano /etc/mysql/mysql.cnf
➕ mysql.cnf
[mysqld]
default_storage_engine = InnoDB
skip_name_resolve
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_instances = 2
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
$ nano ~/server/plugins/dynmap/configuration.txt
➕ configuration.txt
# All paths in this configuration file are relative to Dynmap's data-folder: minecraft_server/plugins/dynmap/

# All map templates are defined in the templates directory
# To use the HDMap very-low-res (2 ppb) map templates as world defaults, set value to vlowres
# The definitions of these templates are in normal-vlowres.txt, nether-vlowres.txt, and the_end-vlowres.txt
# To use the HDMap low-res (4 ppb) map templates as world defaults, set value to lowres
# The definitions of these templates are in normal-lowres.txt, nether-lowres.txt, and the_end-lowres.txt
# To use the HDMap hi-res (16 ppb) map templates (these can take a VERY long time for initial fullrender), set value to hires
# The definitions of these templates are in normal-hires.txt, nether-hires.txt, and the_end-hires.txt
# To use the HDMap low-res (4 ppb) map templates, with support for boosting resolution selectively to hi-res (16 ppb), set value to low_boost_hi
# The definitions of these templates are in normal-low_boost_hi.txt, nether-low_boost_hi.txt, and the_end-low_boost_hi.txt
# To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to vhi-res (32 ppb), set value to hi_boost_vhi
# The definitions of these templates are in normal-hi_boost_vhi.txt, nether-hi_boost_vhi.txt, and the_end-hi_boost_vhi.txt
# To use the HDMap hi-res (16 ppb) map templates, with support for boosting resolution selectively to xhi-res (64 ppb), set value to hi_boost_xhi
# The definitions of these templates are in normal-hi_boost_xhi.txt, nether-hi_boost_xhi.txt, and the_end-hi_boost_xhi.txt
deftemplatesuffix: hires

# Map storage scheme: only uncomment one 'type' value
# filetree: classic and default scheme: tree of files, with all map data under the directory indicated by 'tilespath' setting
# sqlite: single SQLite database file (this can get VERY BIG), located at 'dbfile' setting (default is file dynmap.db in data directory)
# mysql: MySQL database, at hostname:port in database, accessed via userid with password
storage:
# Filetree storage (standard tree of image files for maps)
#type: filetree
# SQLite db for map storage (uses dbfile as storage location)
#type: sqlite
#dbfile: dynmap.db
# MySQL DB for map storage (at 'hostname':'port' with flags "flags" in database 'database' using user 'userid' password 'password' and table prefix 'prefix')
type: mysql
hostname: localhost
port: 3306
database: dynmap
userid: mc
password: password1234
prefix: ""
flags: "?useSSL=false&?allowReconnect=true"

components:
- class: org.dynmap.ClientConfigurationComponent

#- class: org.dynmap.InternalClientUpdateComponent
#sendhealth: true
#sendposition: true
#allowwebchat: true
#webchat-interval: 5
#hidewebchatip: false
#trustclientname: false
#includehiddenplayers: false
# (optional) if true, color codes in player display names are used
#use-name-colors: false
# (optional) if true, player login IDs will be used for web chat when their IPs match
#use-player-login-ip: true
# (optional) if use-player-login-ip is true, setting this to true will cause chat messages not matching a known player IP to be ignored
#require-player-login-ip: false
# (optional) block player login IDs that are banned from chatting
#block-banned-player-chat: true
# Require login for web-to-server chat (requires login-enabled: true)
#webchat-requires-login: false
# If set to true, users must have dynmap.webchat permission in order to chat
#webchat-permissions: false
# Limit length of single chat messages
#chatlengthlimit: 256
# # Optional - make players hidden when they are inside/underground/in shadows (#=light level: 0=full shadow,15=sky)
# hideifshadow: 4
# # Optional - make player hidden when they are under cover (#=sky light level,0=underground,15=open to sky)
# hideifundercover: 14
# # (Optional) if true, players that are crouching/sneaking will be hidden
#hideifsneaking: false
# If true, player positions/status is protected (login with ID with dynmap.playermarkers.seeall permission required for info other than self)
#protected-player-info: false
# If true, hide players with invisibility potion effects active
#hide-if-invisiblity-potion: true
# If true, player names are not shown on map, chat, list
#hidenames: false
- class: org.dynmap.JsonFileClientUpdateComponent
writeinterval: 1
sendhealth: true
sendposition: true
allowwebchat: true
webchat-interval: 5
hidewebchatip: true
includehiddenplayers: false
use-name-colors: false
use-player-login-ip: true
require-player-login-ip: true
block-banned-player-chat: true
#hideifshadow: 0
#hideifundercover: 0
#hideifsneaking: false
# # Require login for web-to-server chat (requires login-enabled: true)
webchat-requires-login: false
# # If set to true, users must have dynmap.webchat permission in order to chat
webchat-permissions: false
# # Limit length of single chat messages
chatlengthlimit: 256
hide-if-invisiblity-potion: false
hidenames: false

- class: org.dynmap.SimpleWebChatComponent
allowchat: true
# If true, web UI users can supply name for chat using 'playername' URL parameter. 'trustclientname' must also be set true.
allowurlname: false

# Note: this component is needed for the dmarker commands, and for the Marker API to be available to other plugins
- class: org.dynmap.MarkersComponent
type: markers
showlabel: false
enablesigns: false
# Default marker set for sign markers
default-sign-set: markers
# (optional) add spawn point markers to standard marker layer
showspawn: true
spawnicon: world
spawnlabel: "Spawn"
# (optional) layer for showing offline player's positions (for 'maxofflinetime' minutes after logoff)
showofflineplayers: true
offlinelabel: "Déconnecté"
offlineicon: offlineuser
offlinehidebydefault: true
offlineminzoom: 0
maxofflinetime: 0
# (optional) layer for showing player's spawn beds
showspawnbeds: false
spawnbedlabel: "Spawn Beds"
spawnbedicon: bed
spawnbedhidebydefault: true
spawnbedminzoom: 0
spawnbedformat: "%name%'s bed"
# (optional) show world border (vanilla 1.8+)
showworldborder: true

- class: org.dynmap.ClientComponent
type: chat
allowurlname: false
- class: org.dynmap.ClientComponent
type: chatballoon
focuschatballoons: false
- class: org.dynmap.ClientComponent
type: chatbox
showplayerfaces: true
messagettl: 5
# Optional: set number of lines in scrollable message history: if set, messagettl is not used to age out messages
scrollback: 100
# Optional: set maximum number of lines visible for chatbox
#visiblelines: 10
# Optional: send push button
sendbutton: false
- class: org.dynmap.ClientComponent
type: playermarkers
showplayerfaces: true
showplayerhealth: true
# If true, show player body too (only valid if showplayerfaces=true
showplayerbody: false
# Option to make player faces small - don't use with showplayerhealth
smallplayerfaces: false
# Optional - make player faces layer hidden by default
hidebydefault: false
# Optional - ordering priority in layer menu (low goes before high - default is 0)
layerprio: 0
# Optional - label for player marker layer (default is 'Players')
label: "Joueurs"

#- class: org.dynmap.ClientComponent
# type: digitalclock
- class: org.dynmap.ClientComponent
type: link

- class: org.dynmap.ClientComponent
type: timeofdayclock
showdigitalclock: true
showweather: true
# Mouse pointer world coordinate display
- class: org.dynmap.ClientComponent
type: coord
label: "Coordonnées"
hidey: false
show-mcr: true

# Note: more than one logo component can be defined
#- class: org.dynmap.ClientComponent
# type: logo
# text: "Dynmap"
# #logourl: "images/block_surface.png"
# linkurl: "http://forums.bukkit.org/threads/dynmap.489/"
# # Valid positions: top-left, top-right, bottom-left, bottom-right
# position: bottom-right

#- class: org.dynmap.ClientComponent
# type: inactive
# timeout: 1800 # in seconds (1800 seconds = 30 minutes)
# redirecturl: inactive.html
# #showmessage: 'You were inactive for too long.'

#- class: org.dynmap.TestComponent
# stuff: "This is some configuration-value"

# Treat hiddenplayers.txt as a whitelist for players to be shown on the map? (Default false)
display-whitelist: false

# How often a tile gets rendered (in seconds).
renderinterval: 1

# How many tiles on update queue before accelerate render interval
renderacceleratethreshold: 60

# How often to render tiles when backlog is above renderacceleratethreshold
renderaccelerateinterval: 0.2

# How many update tiles to work on at once (if not defined, default is 1/2 the number of cores)
tiles-rendered-at-once: 2

# If true, use normal priority threads for rendering (versus low priority) - this can keep rendering
# from starving on busy Windows boxes (Linux JVMs pretty much ignore thread priority), but may result
# in more competition for CPU resources with other processes
usenormalthreadpriority: false

# Save and restore pending tile renders - prevents their loss on server shutdown or /reload
saverestorepending: true

# Save period for pending jobs (in seconds): periodic saving for crash recovery of jobs
save-pending-period: 900

# Zoom-out tile update period - how often to scan for and process tile updates into zoom-out tiles (in seconds)
zoomoutperiod: 30

# Control whether zoom out tiles are validated on startup (can be needed if zoomout processing is interrupted, but can be expensive on large maps)
initial-zoomout-validate: true

# Default delay on processing of updated tiles, in seconds. This can reduce potentially expensive re-rendering
# of frequently updated tiles (such as due to machines, pistons, quarries or other automation). Values can
# also be set on individual worlds and individual maps.
tileupdatedelay: 30

# Tile hashing is used to minimize tile file updates when no changes have occurred - set to false to disable
enabletilehash: true

# Optional - hide ores: render as normal stone (so that they aren't revealed by maps)
#hideores: true

# Optional - enabled BetterGrass style rendering of grass and snow block sides
#better-grass: true

# Optional - enable smooth lighting by default on all maps supporting it (can be set per map as lighting option)
smooth-lighting: true

# Optional - use world provider lighting table (good for custom worlds with custom lighting curves, like nether)
# false=classic Dynmap lighting curve
use-brightness-table: true

# Optional - render specific block IDs using the texures and models of another block ID: can be used to hide/disguise specific
# blocks (e.g. make ores look like stone, hide chests) or to provide simple support for rendering unsupported custom blocks
block-id-alias:
# "14": 1
# "15": 1
# "16": 1

# Default image format for HDMaps (png, jpg, jpg-q75, jpg-q80, jpg-q85, jpg-q90, jpg-q95, jpg-q100)
# Has no effect on maps with explicit format settings
image-format: jpg-q75

# use-generated-textures: if true, use generated textures (same as client); false is static water/lava textures
# correct-water-lighting: if true, use corrected water lighting (same as client); false is legacy water (darker)
# transparent-leaves: if true, leaves are transparent (lighting-wise): false is needed for some Spout versions that break lighting on leaf blocks
use-generated-textures: true
correct-water-lighting: true
transparent-leaves: true

# ctm-support: if true, Connected Texture Mod (CTM) in texture packs is enabled (default)
ctm-support: true
# custom-colors-support: if true, Custom Colors in texture packs is enabled (default)
custom-colors-support: true

# Control loading of player faces (if set to false, skins are never fetched)
#fetchskins: false

# Control updating of player faces, once loaded (if faces are being managed by other apps or manually)
#refreshskins: false

# Customize URL used for fetching player skins (%player% is macro for name)
skin-url: "http://skins.minecraft.net/MinecraftSkins/%player%.png"

render-triggers:
#- playermove
#- playerjoin
- blockplaced
- blockbreak
- leavesdecay
- blockburn
- chunkgenerated
- blockformed
- blockfaded
- blockspread
#- pistonmoved
- explosion
#- blockfromto
#- blockphysics
- structuregrow
- blockgrow
#- blockredstone

# Title for the web page - if not specified, defaults to the server's name (unless it is the default of 'Unknown Server')
#webpage-title: "MC.SHEIKAH.ORG"

# The path where the tile-files are placed.
tilespath: web/tiles

# The path where the web-files are located.
webpath: web

# The path were the /dynmapexp command exports OBJ ZIP files
exportpath: export

# The network-interface the webserver will bind to (0.0.0.0 for all interfaces, 127.0.0.1 for only local access).
# If not set, uses same setting as server in server.properties (or 0.0.0.0 if not specified)
#webserver-bindaddress: 0.0.0.0

# The TCP-port the webserver will listen on.
webserver-port: 8123

# Maximum concurrent session on internal web server - limits resources used in Bukkit server
max-sessions: 30

# Disables Webserver portion of Dynmap (Advanced users only)
disable-webserver: true

# Enable/disable having the web server allow symbolic links (true=compatible with existing code, false=more secure (default))
allow-symlinks: true

# Enable login support
login-enabled: false
# Require login to access website (requires login-enabled: true)
login-required: false

# Period between tile renders for fullrender, in seconds (non-zero to pace fullrenders, lessen CPU load)
timesliceinterval: 0.0

# Maximum chunk loads per server tick (1/20th of a second) - reducing this below 90 will impact render performance, but also will reduce server thread load
maxchunkspertick: 50

# Progress report interval for fullrender/radiusrender, in tiles. Must be 100 or greater
progressloginterval: 100

# Parallel fullrender: if defined, number of concurrent threads used for fullrender or radiusrender
# Note: setting this will result in much more intensive CPU use, some additional memory use. Caution should be used when
# setting this to equal or exceed the number of physical cores on the system.
#parallelrendercnt: 4

# Interval the browser should poll for updates.
updaterate: 2000

# If nonzero, server will pause fullrender/radiusrender processing when 'fullrenderplayerlimit' or more users are logged in
fullrenderplayerlimit: 1
# If nonzero, server will pause update render processing when 'updateplayerlimit' or more users are logged in
updateplayerlimit: 5
# Target limit on server thread use - msec per tick
per-tick-time-limit: 50
# If TPS of server is below this setting, update renders processing is paused
update-min-tps: 18.0
# If TPS of server is below this setting, full/radius renders processing is paused
fullrender-min-tps: 18.0
# If TPS of server is below this setting, zoom out processing is paused
zoomout-min-tps: 18.0

showplayerfacesinmenu: true

# Control whether players that are hidden or not on current map are grayed out (true=yes)
grayplayerswhenhidden: true

# Use player permissions to order player list: first to last, players are ordered by first permission listed that they have
# That is, anyone with first listed permission goes before anyone with second, etc, with users with none of the nodes going last
player-sort-permission-nodes:
- bukkit.command.op

# Set sidebaropened: 'true' to pin menu sidebar opened permanently, 'pinned' to default the sidebar to pinned, but allow it to unpin
#sidebaropened: true

# Customized HTTP response headers - add 'id: value' pairs to all HTTP response headers (internal web server only)
#http-response-headers:
# Access-Control-Allow-Origin: "my-domain.com"
# X-Custom-Header-Of-Mine: "MyHeaderValue"

# Trusted proxies for web server - which proxy addresses are trusted to supply valid X-Forwarded-For fields
trusted-proxies:
- "127.0.0.1"
- "0:0:0:0:0:0:0:1"

# Join/quit message format for web chat: set to "" to disable notice on web UI
joinmessage: "%playername% joined"
quitmessage: "%playername% quit"

spammessage: "You may only chat once every %interval% seconds."
# format for messages from web: %playername% substitutes sender ID (typically IP), %message% includes text
webmsgformat: "&color;2[WEB] %playername%: &color;f%message%"

# Control whether layer control is presented on the UI (default is true)
showlayercontrol: true

# Enable checking for banned IPs via banned-ips.txt (internal web server only)
check-banned-ips: true

# Default selection when map page is loaded
defaultzoom: 0
defaultworld: BroCorp
defaultmap: flat
# (optional) Zoom level and map to switch to when following a player, if possible
#followzoom: 3
#followmap: surface

# If true, make persistent record of IP addresses used by player logins, to support web IP to player matching
persist-ids-by-ip: true

# If true, map text to cyrillic
cyrillic-support: false

# If true, coordinates will be rounded
round-coordinates: true

# Messages to customize
msg:
maptypes: "Cartes"
players: "Joueurs"
chatrequireslogin: "Chat Requires Login"
chatnotallowed: "You are not permitted to send chat messages"
hiddennamejoin: "Player joined"
hiddennamequit: "Player quit"

# URL for client configuration (only need to be tailored for proxies or other non-standard configurations)
url:
# configuration URL
configuration: "standalone/MySQL_configuration.php"
# update URL
update: "standalone/MySQL_update.php?world={world}&ts={timestamp}"
# sendmessage URL
sendmessage: "standalone/MySQL_sendmessage.php"
# login URL
login: "standalone/MySQL_login.php"
# register URL
register: "standalone/MySQL_register.php"
# tiles base URL
tiles: "standalone/MySQL_tiles.php?tile="
# markers base URL
markers: "standalone/MySQL_markers.php?marker="

# Customization commands - allows scripts to be run before/after certain events
custom-commands:
image-updates:
# Command run just before any image file is written or updated: run with single parameter with fully qualified file name
preupdatecommand: ""
# Command run just after any image file is written or updated: run with single parameter with fully qualified file name
postupdatecommand: ""

# Snapshot cache size, in chunks
snapshotcachesize: 500
# Snapshot cache uses soft references (true), else weak references (false)
soft-ref-cache: true

# Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log
verbose: false

# Enables debugging.
#debuggers:
# - class: org.dynmap.debug.LogDebugger
# Debug: dump blocks missing render data
dump-missing-blocks: false

# Have dynmap migrate old chunks to the new format for the current MC version (specifically, for migrating pre-1.13 chunks to 1.13 or 1.14). This is needed
# in order to render chunks on an upgraded server (due to various bugs/limitations in CB/spigot 1.13+). This setting is NOT suggested to be enabled full time,
# but only long enough to do a fullrender of a migrated world - it should be turned back off once worlds are migrated). It is EXPERIMENTAL, so be sure to backup
# your worlds before running with this setting enabled (set to true)
#
#migrate-chunks: true
$ nano ~/server/plugins/dynmap/worlds.txt
➕ world.txt
%YAML 1.1
---
worlds:
-   name: BroCorp
    title: Overworld
    enabled: true
    extrazoomout: 2
    maps:
    -   class: org.dynmap.hdmap.HDMap
        name: flat
        title: Flat
        prefix: flat
        perspective: iso_S_90_lowres
        shader: zigzag
        lighting: shadows
        image-format: default
        mapzoomin: 1
        mapzoomout: 3
        boostzoom: 0
        append_to_world: ''
        protected: false
    -   class: org.dynmap.hdmap.HDMap
        name: surface
        title: Surface
        prefix: t
        perspective: iso_SE_30_hires
        shader: zigzag
        lighting: shadows
        image-format: default
        mapzoomin: 1
        mapzoomout: 5
        boostzoom: 0
        append_to_world: ''
        protected: false
    -   class: org.dynmap.hdmap.HDMap
        name: cave
        title: Cave
        prefix: ct
        perspective: iso_SE_60_lowres
        shader: cave
        lighting: default
        image-format: default
        mapzoomin: 3
        mapzoomout: 3
        boostzoom: 0
        append_to_world: ''
        protected: false
    protected: false
    showborder: true
    sendposition: true
    sendhealth: true
    visibilitylimits: [
        ]
    hiddenlimits: [
        ]
    hidestyle: stone
-   name: BroCorp_nether
    title: Nether
    enabled: true
    extrazoomout: 2
    maps:
    -   class: org.dynmap.hdmap.HDMap
        name: flat
        title: Flat
        prefix: flat
        perspective: iso_S_90_lowres
        shader: stdtexture
        lighting: default
        image-format: default
        mapzoomin: 1
        mapzoomout: 3
        boostzoom: 0
        background: '#300806'
        append_to_world: ''
        protected: false
    -   class: org.dynmap.hdmap.HDMap
        name: nether
        title: Surface
        prefix: nt
        perspective: iso_SE_30_hires
        shader: stdtexture
        lighting: default
        image-format: default
        mapzoomin: 1
        mapzoomout: 5
        boostzoom: 0
        background: '#300806'
        append_to_world: ''
        protected: false
    protected: false
    showborder: true
    sendposition: true
    sendhealth: true
    visibilitylimits: [
        ]
    hiddenlimits: [
        ]
    hidestyle: stone
-   name: BroCorp_the_end
    title: End
    enabled: true
    protected: false
    showborder: true
    sendposition: true
    sendhealth: true
    extrazoomout: 2
    visibilitylimits: [
        ]
    hiddenlimits: [
        ]
    hidestyle: stone
    maps:
    -   class: org.dynmap.hdmap.HDMap
        name: flat
        title: Flat
        prefix: flat
        perspective: iso_S_90_lowres
        shader: stdtexture
        lighting: default
        image-format: default
        mapzoomin: 1
        mapzoomout: 3
        boostzoom: 0
        append_to_world: ''
        protected: false
    -   class: org.dynmap.hdmap.HDMap
        name: the_end
        title: Surface
        prefix: st
        perspective: iso_SE_30_hires
        shader: stdtexture
        lighting: default
        image-format: default
        mapzoomin: 1
        mapzoomout: 5
        boostzoom: 0
        append_to_world: ''
        protected: false
$ nano ~/server/plugins/dynmap/custom-shaders.txt
➕ custom-shaders.txt
# The user is free to add new and custom shaders here, including replacements for standard ones
# Dynmap's install will not overwrite it
shaders:
  - class: org.dynmap.hdmap.TexturePackHDShader
    name: zigzag
    texturepack: zigzag
    biomeshaded: true
    better-grass: true
    grid-scale: 0

6. CoreProtect (MySQL) (Optionnel)

# mysql -u root -p
mysql> CREATE DATABASE coreprotect;
mysql> GRANT CREATE, DELETE, INSERT, SELECT, UPDATE ON coreprotect.* TO 'mc'@'localhost';
mysql> FLUSH PRIVILEGES;
$ nano ~/server/plugins/CoreProtect/config.yml
➕ config.yml
#CoreProtect Config

# If enabled, extra data is displayed when doing rollbacks and restores.
# If disabled, you can manually trigger it in-game by adding "#verbose"
# to the end of your rollback statement.
verbose: true

# MySQL is optional and not required.
# If you prefer to use MySQL, enable the following and fill out the fields.
use-mysql: true
table-prefix: co_
mysql-host: localhost
mysql-port: 3306
mysql-database: coreprotect
mysql-username: mc
mysql-password: password1234

# If enabled, CoreProtect will check for updates when your server starts up.
# If an update is available, you'll be notified via your server console.
check-updates: false

# If enabled, other plugins will be able to utilize the CoreProtect API.
api-enabled: true

# If no radius is specified in a rollback or restore, this value will be
# used as the radius. Set to "0" to disable automatically adding a radius.
default-radius: 10

# The maximum radius that can be used in a command. Set to "0" to disable.
# To run a rollback or restore without a radius, you can use "r:#global".
max-radius: 100

# If enabled, items taken from containers (etc) will be included in rollbacks.
rollback-items: true

# If enabled, entities, such as killed animals, will be included in rollbacks.
rollback-entities: true

# If enabled, generic data, like zombies burning in daylight, won't be logged.
skip-generic-data: true

# Logs blocks placed by players.
block-place: true

# Logs blocks broken by players.
block-break: true

# Logs blocks that break off of other blocks; for example, a sign or torch
# falling off of a dirt block that a player breaks. This is required for
# beds/doors to properly rollback.
natural-break: true

# Properly track block movement, such as sand or gravel falling.
block-movement: true

# Properly track blocks moved by pistons.
pistons: true

# Logs blocks that burn up in a fire.
block-burn: true

# Logs when a block naturally ignites, such as from fire spreading.
block-ignite: true

# Logs explosions, such as TNT and Creepers.
explosions: true

# Track when an entity changes a block, such as an Enderman destroying blocks.
entity-change: true

# Logs killed entities, such as killed cows and enderman.
entity-kills: true

# Logs text on signs. If disabled, signs will be blank when rolled back.
sign-text: true

# Logs lava and water sources placed/removed by players who are using buckets.
buckets: true

# Logs natural tree leaf decay.
leaf-decay: true

# Logs tree growth. Trees are linked to the player who planted the sappling.
tree-growth: true

# Logs mushroom growth.
mushroom-growth: true

# Logs natural vine growth.
vine-growth: true

# Logs when portals such as Nether portals generate naturally.
portals: true

# Logs water flow. If water destroys other blocks, such as torches,
# this allows it to be properly rolled back.
water-flow: true

# Logs lava flow. If lava destroys other blocks, such as torches,
# this allows it to be properly rolled back.
lava-flow: true

# Allows liquid to be properly tracked and linked to players.
# For example, if a player places water which flows and destroys torches,
# it can all be properly restored by rolling back that single player.
liquid-tracking: true

# Track item transactions, such as when a player takes items from a
# chest, furnace, or dispenser. Necessary for any item based rollbacks.
item-transactions: true

# Track player interactions, such as when a player opens a door, presses
# a button, or opens a chest. Player interactions can't be rolled back.
player-interactions: true

# Logs messages that players send in the chat.
player-messages: true

# Logs all commands used by players.
player-commands: true

# Logs the logins and logouts of players.
player-sessions: true

# Logs when a player changes their Minecraft username.
username-changes: true

# Logs changes made via the plugin "WorldEdit" if it's in use on your server.
worldedit: true

Sources:
https://tecadmin.net/install-mysql-on-debian-10-buster/
https://hostup.org/blog/how-to-install-nginx-and-php-7-3-on-debian-10/
https://gitmemory.com/issue/webbukkit/dynmap/2609/553892743
https://stackoverflow.com/questions/19285355/nginx-403-error-directory-index-of-folder-is-forbidden
https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/
https://forums.spongepowered.org/t/optimized-startup-flags-for-consistent-garbage-collection/13239
https://www.spigotmc.org/threads/spigot-restart-script-help.158611/
https://aikar.co/2015/10/08/spigot-tick-limiter-dont-use-max-tick-time/
https://www.spigotmc.org/wiki/reducing-lag/

Comments est propulsé par CComment

Nous utilisons des cookies sur notre site web. Certains d’entre eux sont essentiels au fonctionnement du site et d’autres nous aident à améliorer ce site et l’expérience utilisateur (cookies traceurs). Vous pouvez décider vous-même si vous autorisez ou non ces cookies. Merci de noter que, si vous les rejetez, vous risquez de ne pas pouvoir utiliser l’ensemble des fonctionnalités du site.