|
services: |
|
haproxy: |
|
image: haproxy:3.4 |
|
|
|
configs: |
|
- source: haproxy_config |
|
target: /usr/local/etc/haproxy/haproxy.cfg |
|
volumes: |
|
- ./minecraft.lua:/etc/haproxy/minecraft.lua |
|
- ./backends.map:/data/backends.map |
|
ports: |
|
- "25565:25565" |
|
|
|
minecraft_one: |
|
build: |
|
dockerfile: minecraft.Dockerfile |
|
|
|
configs: |
|
- source: minecraft_one_config |
|
target: /app/server.properties |
|
|
|
minecraft_two: |
|
build: |
|
dockerfile: minecraft.Dockerfile |
|
|
|
configs: |
|
- source: minecraft_two_config |
|
target: /app/server.properties |
|
|
|
minecraft_three: |
|
build: |
|
dockerfile: minecraft.Dockerfile |
|
|
|
configs: |
|
- source: minecraft_three_config |
|
target: /app/server.properties |
|
|
|
configs: |
|
haproxy_config: |
|
content: | |
|
global |
|
lua-load /etc/haproxy/minecraft.lua |
|
|
|
frontend minecraft_proxy |
|
bind :25565 |
|
mode tcp |
|
log global |
|
|
|
tcp-request inspect-delay 3s |
|
|
|
tcp-request content lua.parse_mc_handshake if { req_len gt 5 } |
|
|
|
tcp-request content set-var(txn.target_ip) var(txn.mc_server_name),lower,map(/data/backends.map) |
|
|
|
use_backend dynamic_minecraft if { var(txn.target_ip) -m found } |
|
|
|
backend dynamic_minecraft |
|
mode tcp |
|
|
|
tcp-request content set-dst var(txn.target_ip) |
|
tcp-request content set-dst-port int(25565) |
|
|
|
server dynamic_srv 0.0.0.0:0 |
|
minecraft_one_config: |
|
content: | |
|
accepts-transfers=false |
|
allow-flight=false |
|
broadcast-console-to-ops=true |
|
broadcast-rcon-to-ops=true |
|
bug-report-link= |
|
chat-spam-threshold-seconds=10 |
|
command-spam-threshold-seconds=10 |
|
difficulty=easy |
|
enable-code-of-conduct=false |
|
enable-jmx-monitoring=false |
|
enable-query=false |
|
enable-rcon=false |
|
enable-status=true |
|
enforce-secure-profile=true |
|
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=d9MEMEdjywnNDKvzmNkbrJGaiSSzJ93rimCyq2gK |
|
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=Minecraft Server One |
|
network-compression-threshold=256 |
|
online-mode=true |
|
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 |
|
minecraft_two_config: |
|
content: | |
|
accepts-transfers=false |
|
allow-flight=false |
|
broadcast-console-to-ops=true |
|
broadcast-rcon-to-ops=true |
|
bug-report-link= |
|
chat-spam-threshold-seconds=10 |
|
command-spam-threshold-seconds=10 |
|
difficulty=easy |
|
enable-code-of-conduct=false |
|
enable-jmx-monitoring=false |
|
enable-query=false |
|
enable-rcon=false |
|
enable-status=true |
|
enforce-secure-profile=true |
|
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=d9MEMEdjywnNDKvzmNkbrJGaiSSzJ93rimCyq2gK |
|
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=Minecraft Server Two |
|
network-compression-threshold=256 |
|
online-mode=true |
|
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 |
|
minecraft_three_config: |
|
content: | |
|
accepts-transfers=false |
|
allow-flight=false |
|
broadcast-console-to-ops=true |
|
broadcast-rcon-to-ops=true |
|
bug-report-link= |
|
chat-spam-threshold-seconds=10 |
|
command-spam-threshold-seconds=10 |
|
difficulty=easy |
|
enable-code-of-conduct=false |
|
enable-jmx-monitoring=false |
|
enable-query=false |
|
enable-rcon=false |
|
enable-status=true |
|
enforce-secure-profile=true |
|
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=d9MEMEdjywnNDKvzmNkbrJGaiSSzJ93rimCyq2gK |
|
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=Minecraft Server Three |
|
network-compression-threshold=256 |
|
online-mode=true |
|
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 |