rk1ve

geysermc

geysermc is a plugin for minecraft java servers which allows bedrock players to join java servers. the setup was fairly simple after watching videos and reading the documentation. however my setup was a bit complicated since i was using crafty controller, playitgg tunneling, and domain dns record mapping. this just means that my server is accessible through a subdomain.

i was running crafty controller in docker, and it port forwards many ports to the host. what i failed to realize that i needed to port forward the tcp and udp ports separately, not together as this will cause issues recognizing the difference. the same is with the playitgg tunnel, make sure that it is two separate tunnels, one for tcp and one for udp. this was the fix for me, and i had clone remote port on.

this will eventually be irrelevant as i transferred my server to my cloud server. with crafty controller, they make backups and restoring very easy through the gui. it was just a matter of changing the ports and ip address of the server in the configuration files. the great thing about this is that i can expose those ports directly on the server as it is not my public ip address. meaning i can keep the original server ports, 25565 and 19132. for java it does not matter as it can take a domain name, but bedrock needs a port, and having at default makes it easier for players to join.

the dns setup was very easy. all that is needed is an a record pointing to your cloud server ip address or playitgg’s ip address they give you. then an srv record with “_minecraft._tcp.subdomain”, 0 priority, 5 weight, port either being the one you expose in your server or the port given from playitgg, then the target is your a record. whether you decided to use a custom or the default port is up to you, and the a record as well, you can name it mc.domain.com or whatever you want.

the a record resolves to the ip address of the server or playitgg proxy.

the srv record tells minecraft clients that your a record should be reached from a specific port, which is why java does not need a port.

the process is the same for bedrock, but since it uses udp, change the tcp to udp in the serv record, and change the port to the one in use.

the configuration for geysermc is again easy, but make sure to install plugins like viaversion and viabackwards to support previous versions. along with that would be to change where the cooldown goes for bedrock, i use action bar. as well as turn off secure chat, as it will allow bedrock players to chat.

here is what i documented:

installed crafty with casa os.
playitgg account with tunnel, docker container installed tunnel to playitgg with casa os.
in order to run geysermc:
open TWO separate ports TCP and UDP, do NOT COMBINE.
create a paper java server and assign the above port opened
start the server and accept the EULA.
stop the server then go to geysermc.com to install geysermc jar file, floodgate jar file, viaversion and viabackwards
upload the jar files into the plugins folder of the server files.
start the server and let plugins install.
open geyser folder and configure the yml file to:
clone remote port
uncomment address
change remote port to the port opened in crafty
change command suggestions to false
change cooldown to actionbar

playitgg configuration:
make sure the agent is connected with the token url
create a TWO tunnels, one for java, one for bedrock
assign the ip address to the local server IP and the port from above
make a note of the ip address and port given from playitgg

dns configuration:
requires an A record and SRV record.
first create an A record that points to a subdomain and the IP of the playigg address
then create an SRV record of TCP and UDP minecraft ports: _minecraft._tcp.XXX or _minecraft._udp.XXX
subdomain goes into XXX and enter the playitgg port and the subdomain as the target: XXX.domain.com
wait for dns to propogate and play!

java > enter the subdomain
bedrock > enter subdomain with the playitgg port

here is also how to export and import a server:

run a backup and download the .zip file
open the new instance of crafty controller
create a new server and use the import zip function on the bottom right
upload the zip and fill in the information (server.jar, RAM, name, server port)
from there, load the server and run it for the first time
turn the server off

IF RUNNING GEYSER:
edit the server config file, the geysermc file (plugins > Geyser-Spigot > config.yml)
change the address under “remote:” to the new IP address of the server
stop the docker container with “docker stop “container-name”
along with this, you will have to add another udp port to the docker container if you are NOT using the default port (19132)
to do this, edit the docker-compose.yml file and add this:

  • “12345:12345/udp”
    save the file
    type in the command “docker compose up -d” to update the container
    this will start the docker container as well

IF USING W/ playit.gg:
you must go into the dashboard and into your tunnel
update the local IP address to the new IP address of your server

These steps will ensure that you have a 100% migrated minecraft server using Crafty Controller

preserve the moment.