.
This commit is contained in:
parent
dede9ce18d
commit
15f60f0465
7 changed files with 111 additions and 270 deletions
|
|
@ -1,145 +0,0 @@
|
||||||
# This is the global configuration file for Paper.
|
|
||||||
# As you can see, there's a lot to configure. Some options may impact gameplay, so use
|
|
||||||
# with caution, and make sure you know what each option does before configuring.
|
|
||||||
#
|
|
||||||
# If you need help with the configuration or have any questions related to Paper,
|
|
||||||
# join us in our Discord or check the docs page.
|
|
||||||
#
|
|
||||||
# The world configuration options have been moved inside
|
|
||||||
# their respective world folder. The files are named paper-world.yml
|
|
||||||
#
|
|
||||||
# File Reference: https://docs.papermc.io/paper/reference/global-configuration/
|
|
||||||
# Docs: https://docs.papermc.io/
|
|
||||||
# Discord: https://discord.gg/papermc
|
|
||||||
# Website: https://papermc.io/
|
|
||||||
|
|
||||||
_version: 31
|
|
||||||
anticheat:
|
|
||||||
obfuscation:
|
|
||||||
items:
|
|
||||||
all-models:
|
|
||||||
also-obfuscate: []
|
|
||||||
dont-obfuscate:
|
|
||||||
- minecraft:lodestone_tracker
|
|
||||||
sanitize-count: true
|
|
||||||
enable-item-obfuscation: false
|
|
||||||
model-overrides:
|
|
||||||
minecraft:elytra:
|
|
||||||
also-obfuscate: []
|
|
||||||
dont-obfuscate:
|
|
||||||
- minecraft:damage
|
|
||||||
sanitize-count: true
|
|
||||||
block-updates:
|
|
||||||
disable-chorus-plant-updates: false
|
|
||||||
disable-mushroom-block-updates: false
|
|
||||||
disable-noteblock-updates: false
|
|
||||||
disable-tripwire-updates: false
|
|
||||||
chunk-loading-advanced:
|
|
||||||
auto-config-send-distance: true
|
|
||||||
player-max-concurrent-chunk-generates: 0
|
|
||||||
player-max-concurrent-chunk-loads: 0
|
|
||||||
chunk-loading-basic:
|
|
||||||
player-max-chunk-generate-rate: -1.0
|
|
||||||
player-max-chunk-load-rate: 100.0
|
|
||||||
player-max-chunk-send-rate: 75.0
|
|
||||||
chunk-system:
|
|
||||||
io-threads: -1
|
|
||||||
worker-threads: -1
|
|
||||||
collisions:
|
|
||||||
enable-player-collisions: true
|
|
||||||
send-full-pos-for-hard-colliding-entities: true
|
|
||||||
commands:
|
|
||||||
ride-command-allow-player-as-vehicle: false
|
|
||||||
suggest-player-names-when-null-tab-completions: true
|
|
||||||
time-command-affects-all-worlds: false
|
|
||||||
console:
|
|
||||||
enable-brigadier-completions: true
|
|
||||||
enable-brigadier-highlighting: true
|
|
||||||
has-all-permissions: false
|
|
||||||
item-validation:
|
|
||||||
book:
|
|
||||||
author: 8192
|
|
||||||
page: 16384
|
|
||||||
title: 8192
|
|
||||||
book-size:
|
|
||||||
page-max: 2560
|
|
||||||
total-multiplier: 0.98
|
|
||||||
display-name: 8192
|
|
||||||
lore-line: 8192
|
|
||||||
resolve-selectors-in-books: false
|
|
||||||
logging:
|
|
||||||
deobfuscate-stacktraces: true
|
|
||||||
messages:
|
|
||||||
kick:
|
|
||||||
authentication-servers-down: <lang:multiplayer.disconnect.authservers_down>
|
|
||||||
connection-throttle: Connection throttled! Please wait before reconnecting.
|
|
||||||
flying-player: <lang:multiplayer.disconnect.flying>
|
|
||||||
flying-vehicle: <lang:multiplayer.disconnect.flying>
|
|
||||||
no-permission: <red>I'm sorry, but you do not have permission to perform this command.
|
|
||||||
Please contact the server administrators if you believe that this is in error.
|
|
||||||
use-display-name-in-quit-message: false
|
|
||||||
misc:
|
|
||||||
chat-threads:
|
|
||||||
chat-executor-core-size: -1
|
|
||||||
chat-executor-max-size: -1
|
|
||||||
client-interaction-leniency-distance: default
|
|
||||||
compression-level: default
|
|
||||||
enable-nether: true
|
|
||||||
fix-far-end-terrain-generation: true
|
|
||||||
load-permissions-yml-before-plugins: true
|
|
||||||
max-joins-per-tick: 5
|
|
||||||
prevent-negative-villager-demand: false
|
|
||||||
region-file-cache-size: 256
|
|
||||||
send-full-pos-for-item-entities: false
|
|
||||||
strict-advancement-dimension-check: false
|
|
||||||
use-alternative-luck-formula: false
|
|
||||||
use-dimension-type-for-custom-spawners: false
|
|
||||||
xp-orb-groups-per-area: default
|
|
||||||
packet-limiter:
|
|
||||||
all-packets:
|
|
||||||
action: KICK
|
|
||||||
interval: 7.0
|
|
||||||
max-packet-rate: 500.0
|
|
||||||
kick-message: <red><lang:disconnect.exceeded_packet_rate>
|
|
||||||
overrides:
|
|
||||||
minecraft:place_recipe:
|
|
||||||
action: DROP
|
|
||||||
interval: 4.0
|
|
||||||
max-packet-rate: 5.0
|
|
||||||
player-auto-save:
|
|
||||||
max-per-tick: -1
|
|
||||||
rate: -1
|
|
||||||
proxies:
|
|
||||||
velocity:
|
|
||||||
enabled: true
|
|
||||||
online-mode: true
|
|
||||||
secret: '1234'
|
|
||||||
scoreboards:
|
|
||||||
save-empty-scoreboard-teams: true
|
|
||||||
track-plugin-scoreboards: false
|
|
||||||
spam-limiter:
|
|
||||||
incoming-packet-threshold: 300
|
|
||||||
recipe-spam-increment: 1
|
|
||||||
recipe-spam-limit: 20
|
|
||||||
tab-spam-increment: 1
|
|
||||||
tab-spam-limit: 500
|
|
||||||
spark:
|
|
||||||
enable-immediately: false
|
|
||||||
enabled: true
|
|
||||||
unsupported-settings:
|
|
||||||
allow-headless-pistons: false
|
|
||||||
allow-permanent-block-break-exploits: false
|
|
||||||
allow-piston-duplication: false
|
|
||||||
allow-unsafe-end-portal-teleportation: false
|
|
||||||
compression-format: ZLIB
|
|
||||||
oversized-item-component-sanitizer:
|
|
||||||
dont-sanitize: []
|
|
||||||
perform-username-validation: true
|
|
||||||
skip-tripwire-hook-placement-validation: false
|
|
||||||
skip-vanilla-damage-tick-when-shield-blocked: false
|
|
||||||
update-equipment-on-player-actions: true
|
|
||||||
update-checker:
|
|
||||||
enabled: true
|
|
||||||
watchdog:
|
|
||||||
early-warning-delay: 10000
|
|
||||||
early-warning-every: 5000
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
#Minecraft server properties
|
|
||||||
#Thu Jul 09 11:56:34 GMT 2026
|
|
||||||
accepts-transfers=false
|
|
||||||
allow-flight=false
|
|
||||||
broadcast-console-to-ops=true
|
|
||||||
broadcast-rcon-to-ops=true
|
|
||||||
bug-report-link=
|
|
||||||
debug=false
|
|
||||||
difficulty=easy
|
|
||||||
enable-code-of-conduct=false
|
|
||||||
enable-jmx-monitoring=false
|
|
||||||
enable-query=false
|
|
||||||
enable-rcon=false
|
|
||||||
enable-status=true
|
|
||||||
enforce-secure-profile=false
|
|
||||||
enforce-whitelist=false
|
|
||||||
entity-broadcast-range-percentage=100
|
|
||||||
force-gamemode=false
|
|
||||||
function-permission-level=2
|
|
||||||
gamemode=survival
|
|
||||||
generate-structures=true
|
|
||||||
generator-settings={}
|
|
||||||
hardcore=false
|
|
||||||
hide-online-players=false
|
|
||||||
initial-disabled-packs=
|
|
||||||
initial-enabled-packs=vanilla
|
|
||||||
level-name=world
|
|
||||||
level-seed=
|
|
||||||
level-type=minecraft\:normal
|
|
||||||
log-ips=true
|
|
||||||
management-server-allowed-origins=
|
|
||||||
management-server-enabled=false
|
|
||||||
management-server-host=localhost
|
|
||||||
management-server-port=0
|
|
||||||
management-server-secret=PzbLDwG7Wr9xGAgxHiVHLLqy6SG7bxY1niCc8vmR
|
|
||||||
management-server-tls-enabled=true
|
|
||||||
management-server-tls-keystore=
|
|
||||||
management-server-tls-keystore-password=
|
|
||||||
max-chained-neighbor-updates=1000000
|
|
||||||
max-players=20
|
|
||||||
max-tick-time=60000
|
|
||||||
max-world-size=29999984
|
|
||||||
motd=A Minecraft Server
|
|
||||||
network-compression-threshold=256
|
|
||||||
online-mode=false
|
|
||||||
op-permission-level=4
|
|
||||||
pause-when-empty-seconds=60
|
|
||||||
player-idle-timeout=0
|
|
||||||
prevent-proxy-connections=false
|
|
||||||
query.port=25565
|
|
||||||
rate-limit=0
|
|
||||||
rcon.password=
|
|
||||||
rcon.port=25575
|
|
||||||
region-file-compression=deflate
|
|
||||||
require-resource-pack=false
|
|
||||||
resource-pack=
|
|
||||||
resource-pack-id=
|
|
||||||
resource-pack-prompt=
|
|
||||||
resource-pack-sha1=
|
|
||||||
server-ip=
|
|
||||||
server-port=25565
|
|
||||||
simulation-distance=10
|
|
||||||
spawn-protection=16
|
|
||||||
status-heartbeat-interval=0
|
|
||||||
sync-chunk-writes=true
|
|
||||||
text-filtering-config=
|
|
||||||
text-filtering-version=0
|
|
||||||
use-native-transport=true
|
|
||||||
view-distance=10
|
|
||||||
white-list=false
|
|
||||||
|
|
@ -22,20 +22,40 @@ us connect to the resolved IPs. With a single node, that's fine but if we want t
|
||||||
access a service on another node, we need wireguard(or something similar).
|
access a service on another node, we need wireguard(or something similar).
|
||||||
Actually if we run all nodes in the same network and it'd be fine without.
|
Actually if we run all nodes in the same network and it'd be fine without.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Most Basic Implementation
|
## Most Basic Implementation
|
||||||
|
|
||||||
- single node
|
- single node
|
||||||
- runs `nomad agent -dev` and `consul agent -dev`
|
- runs `dnsmasq -d`, `nomad agent -dev`, and `consul agent -dev` as root
|
||||||
- /etc/nomad.d/consul.hcl:
|
- /etc/nomad.d/consul.hcl:
|
||||||
consul {
|
consul {
|
||||||
address = "127.0.0.1:8500"
|
address = "127.0.0.1:8500"
|
||||||
}
|
}
|
||||||
|
- /etc/dnsmasq.conf:
|
||||||
|
server=/consul/127.0.0.1#8600
|
||||||
- all jobs define a consul service
|
- all jobs define a consul service
|
||||||
|
- TODO: make dns/connect work
|
||||||
|
|
||||||
|
|
||||||
## useful commands
|
## useful stuff
|
||||||
|
|
||||||
- `nomad job run <job>.hcl`
|
- `nomad job run <job>.hcl`
|
||||||
- `consul catalog services` <- list registered services
|
- `consul catalog services` <- list registered services
|
||||||
|
- http://localhost:4646/ui/jobs <- web UI accessible after `nomad agent -dev`
|
||||||
|
- https://developer.hashicorp.com/nomad/docs/configuration
|
||||||
|
- https://developer.hashicorp.com/nomad/docs/job-declare/service-discovery
|
||||||
|
|
||||||
|
## Storage/SPOT
|
||||||
|
|
||||||
|
the papermc container already copies all files in /mnt/*
|
||||||
|
to /data, so it's easy to add overwrites.
|
||||||
|
in ./lobby.nomad.hcl I just use a prestart container that downloads the plugin
|
||||||
|
to a temporary volume that is then used as /mnt.
|
||||||
|
A lot of boilerplate and it's also not easy to add other files.
|
||||||
|
Ideally, we'd just copy a whole directory over sftp. it would look
|
||||||
|
like this:
|
||||||
|
/.gitignore <- data
|
||||||
|
/Makefile <- downloads plugins specified to /data/plugins
|
||||||
|
/static <- static files that are copied by make to /data
|
||||||
|
But ig that wouldn't play nice with CI/CD...
|
||||||
|
|
||||||
|
Also currently we need to duplicate a lot of this boilerplate btw.
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,56 @@ job "lobby" {
|
||||||
count = 1
|
count = 1
|
||||||
|
|
||||||
network {
|
network {
|
||||||
mode = "host"
|
mode = "bridge"
|
||||||
port "minecraft" {
|
port "minecraft" {
|
||||||
to = 25565
|
to = 25565
|
||||||
}
|
}
|
||||||
|
dns {
|
||||||
|
servers = ["172.17.0.1"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "lobby"
|
||||||
|
port = "minecraft"
|
||||||
|
address_mode = "alloc"
|
||||||
|
check {
|
||||||
|
type = "tcp"
|
||||||
|
interval = "5s"
|
||||||
|
timeout = "1s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ephemeral_disk {
|
||||||
|
size = 5000 # 5 gb
|
||||||
|
}
|
||||||
|
|
||||||
|
task "download-plugins" {
|
||||||
|
driver = "docker"
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
hook = "prestart"
|
||||||
|
sidecar = false
|
||||||
|
}
|
||||||
|
|
||||||
|
config {
|
||||||
|
image = "busybox"
|
||||||
|
command = "sh"
|
||||||
|
volumes = ["../alloc/data:/mnt"]
|
||||||
|
args = [
|
||||||
|
"-xec",
|
||||||
|
<<-EOF
|
||||||
|
mkdir -p /mnt/plugins
|
||||||
|
cd /mnt/plugins
|
||||||
|
wget \
|
||||||
|
https://git.lab0x13.site/api/packages/scrow/generic/core-bukkit/UNVERSIONED/CoreBukkit.jar \
|
||||||
|
https://download.luckperms.net/1652/bukkit/loader/LuckPerms-Bukkit-5.5.65.jar \
|
||||||
|
https://hangarcdn.papermc.io/plugins/ViaVersion/ViaVersion/versions/5.11.0/PAPER/ViaVersion-5.11.0.jar \
|
||||||
|
https://hangarcdn.papermc.io/plugins/ViaVersion/ViaBackwards/versions/5.11.0/PAPER/ViaBackwards-5.11.0.jar
|
||||||
|
ls -l
|
||||||
|
EOF
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task "run" {
|
task "run" {
|
||||||
|
|
@ -18,7 +64,7 @@ job "lobby" {
|
||||||
image = "git.lab0x13.site/scrow/papermc:0.1"
|
image = "git.lab0x13.site/scrow/papermc:0.1"
|
||||||
force_pull = false
|
force_pull = false
|
||||||
ports = ["minecraft"]
|
ports = ["minecraft"]
|
||||||
#args = ["java", "-jar", "server.jar", "--port=${NOMAD_PORT_minecraft}"]
|
volumes = ["../alloc/data:/mnt"]
|
||||||
}
|
}
|
||||||
|
|
||||||
env {
|
env {
|
||||||
|
|
@ -30,18 +76,6 @@ job "lobby" {
|
||||||
cpu = 1000
|
cpu = 1000
|
||||||
memory = 2048
|
memory = 2048
|
||||||
}
|
}
|
||||||
|
|
||||||
service {
|
|
||||||
name = "lobby"
|
|
||||||
port = "minecraft"
|
|
||||||
provider = "consul"
|
|
||||||
|
|
||||||
check {
|
|
||||||
type = "tcp"
|
|
||||||
interval = "5s"
|
|
||||||
timeout = "1s"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,24 @@ job "nats" {
|
||||||
type = "service"
|
type = "service"
|
||||||
|
|
||||||
group "nats" {
|
group "nats" {
|
||||||
|
|
||||||
network {
|
network {
|
||||||
mode = "host"
|
mode = "bridge"
|
||||||
port "nats" {
|
port "nats" {
|
||||||
to = 4222
|
to = 4222
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "nats"
|
||||||
|
port = "nats"
|
||||||
|
address_mode = "alloc"
|
||||||
|
check {
|
||||||
|
type = "tcp"
|
||||||
|
interval = "1s"
|
||||||
|
timeout = "1s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
task "nats" {
|
task "nats" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
|
|
@ -22,18 +32,6 @@ job "nats" {
|
||||||
cpu = 500
|
cpu = 500
|
||||||
memory = 1000
|
memory = 1000
|
||||||
}
|
}
|
||||||
|
|
||||||
service {
|
|
||||||
name = "nats"
|
|
||||||
port = "nats"
|
|
||||||
provider = "consul"
|
|
||||||
|
|
||||||
check {
|
|
||||||
type = "tcp"
|
|
||||||
interval = "5s"
|
|
||||||
timeout = "1s"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,27 @@
|
||||||
|
# TODO add host volume
|
||||||
job "postgres" {
|
job "postgres" {
|
||||||
datacenters = ["dc1"]
|
datacenters = ["dc1"]
|
||||||
type = "service"
|
type = "service"
|
||||||
|
|
||||||
group "db" {
|
group "db" {
|
||||||
network {
|
network {
|
||||||
mode = "host"
|
mode = "bridge"
|
||||||
port "postgres" {
|
port "postgres" {
|
||||||
to = 5432
|
to = 5432
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
service {
|
||||||
|
name = "postgres"
|
||||||
|
port = "postgres"
|
||||||
|
address_mode = "alloc"
|
||||||
|
check {
|
||||||
|
type = "tcp"
|
||||||
|
interval = "5s"
|
||||||
|
timeout = "1s"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
task "postgres" {
|
task "postgres" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
|
|
||||||
|
|
@ -28,18 +40,6 @@ job "postgres" {
|
||||||
cpu = 500
|
cpu = 500
|
||||||
memory = 512
|
memory = 512
|
||||||
}
|
}
|
||||||
|
|
||||||
service {
|
|
||||||
name = "postgres"
|
|
||||||
port = "postgres"
|
|
||||||
provider = "consul"
|
|
||||||
|
|
||||||
check {
|
|
||||||
type = "tcp"
|
|
||||||
interval = "10s"
|
|
||||||
timeout = "1s"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,25 @@
|
||||||
job "velocity" {
|
job "velocity" {
|
||||||
type = "service"
|
type = "service"
|
||||||
|
|
||||||
group "proxy" {
|
group "velocity" {
|
||||||
network {
|
network {
|
||||||
port "minecraft" {
|
mode = "bridge"
|
||||||
|
port "ingress" {
|
||||||
static = 25565
|
static = 25565
|
||||||
}
|
}
|
||||||
|
dns {
|
||||||
|
server = ["127.0.0.1"]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task "velocity" {
|
task "velocity" {
|
||||||
driver = "docker"
|
driver = "docker"
|
||||||
config {
|
config {
|
||||||
image = "scrow/velocity:local"
|
image = "scrow/velocity:local"
|
||||||
}
|
}
|
||||||
resources {
|
resources {
|
||||||
cpu = 2000
|
cpu = 1000
|
||||||
memory = 1000
|
memory = 500
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue