Development on Hytale is moving fast. This is an in-progress how-to current as of version 2026.01.28-87d03be09.
If you've tried running a dedicated Hytale server, you've encountered an error about a missing library, and the server failed to start. There is a workaround! This guide explains, step-by-step, how to build the missing library and how to either use a command to add the library to the Java classpath so the server will use it or to inject the library into HytaleServer.jar so that it will be used automatically. The only current problem that I have not solved (and likely won't be solved unless upstream adds FreeBSD support) is that it is necessary to manually authenticate the server each time it is started because the server fails to create an encryption key for persistent storage of the key on FreeBSD. This guide will assume you have already downloaded and extracted HytaleServer.jar and Assets.zip to a suitable directory such as /usr/local/hytale-server .
1) Download the latest source archive from the Netty 4.2.x series (4.2.9 is the version used in the current Hytale server) from https://github.com/netty/netty/releases/tag/netty-4.2.9.Final
2) Make sure you have the necessary tools to compile Netty and run Hytale: e.g. "pkg install maven rust cmake ninja clang openjdk25"
3) Extract the Netty source to a directory of your choice, navigate to the codec-native-quic directory, then run:
mvn clean install -DskipTests -Dlibssl=libssl.a -Dlibcrypto=libcrypto.a -Dlibquiche=libquiche.a
4) Copy ${sourcedir}/codec-native-quic/target/netty-codec-native-quic-4.2.9.Final-freebsd-x86_64.jar to your server directory e.g. /usr/local/hytale-server
5) Strip the native Linux library from HytaleServer.jar:
zip -d HytaleServer.jar "META-INF/native/libnetty_quiche42_linux_x86_64.so"
5) You can now run your server with a command such as:
java -cp "netty-codec-native-quic-4.2.9.Final-freebsd-x86_64.jar:HytaleServer.jar" com.hypixel.hytale.Main --assets Assets.zip
SECOND METHOD -- Injecting the FreeBSD native library directly into the HytaleServer.jar
1) Build netty-codec-quic as above and copy it to your server directory.
2) Extract the native FreeBSD library from the jar file you built earlier:
unzip -j netty-codec-native-quic-4.2.9.Final-freebsd-x86_64.jar META-INF/native/libnetty_quiche42_freebsd_x86_64.so
3) Create a temporary directory:
mkdir -p META-INF/native
4) Move the native shared library to the new directory:
mv libnetty_quiche42_freebsd_x86_64.so META-INF/native/
5) Inject the native shared library:
zip -u HytaleServer.jar META-INF/native/libnetty_quiche42_freebsd_x86_64.so
6) Launch the server:
java -jar HytaleServer.jar --assets Assets.zip
FINAL NOTES:
This guide is not intended to be comprehensive. The upstream server manual at https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual covers most of the information necessary for setting up the server. Information about optimizing server performance, specifying memory usage, etc. can be found in online discussions. Installing the server in such a way as to conform to FHS can be achieved by following the example of the minecraft-server port. Getting an actual port made for the Hytale server on FreeBSD might not be feasible until upstream makes it easier to fetch the server software. But I hope this guide has at least achieved its sole intended purpose of showing how to overcome the technical hurdle of just getting it to run on FreeBSD. There may be some minor things I need to double check (such as whether stripping the native Linux library is actually necessary -- it may not be, so feel free to try skipping that step to see if it still works for you). Feedback is welcome. Hopefully this guide helps someone.
If you've tried running a dedicated Hytale server, you've encountered an error about a missing library, and the server failed to start. There is a workaround! This guide explains, step-by-step, how to build the missing library and how to either use a command to add the library to the Java classpath so the server will use it or to inject the library into HytaleServer.jar so that it will be used automatically. The only current problem that I have not solved (and likely won't be solved unless upstream adds FreeBSD support) is that it is necessary to manually authenticate the server each time it is started because the server fails to create an encryption key for persistent storage of the key on FreeBSD. This guide will assume you have already downloaded and extracted HytaleServer.jar and Assets.zip to a suitable directory such as /usr/local/hytale-server .
1) Download the latest source archive from the Netty 4.2.x series (4.2.9 is the version used in the current Hytale server) from https://github.com/netty/netty/releases/tag/netty-4.2.9.Final
2) Make sure you have the necessary tools to compile Netty and run Hytale: e.g. "pkg install maven rust cmake ninja clang openjdk25"
3) Extract the Netty source to a directory of your choice, navigate to the codec-native-quic directory, then run:
mvn clean install -DskipTests -Dlibssl=libssl.a -Dlibcrypto=libcrypto.a -Dlibquiche=libquiche.a
4) Copy ${sourcedir}/codec-native-quic/target/netty-codec-native-quic-4.2.9.Final-freebsd-x86_64.jar to your server directory e.g. /usr/local/hytale-server
5) Strip the native Linux library from HytaleServer.jar:
zip -d HytaleServer.jar "META-INF/native/libnetty_quiche42_linux_x86_64.so"
5) You can now run your server with a command such as:
java -cp "netty-codec-native-quic-4.2.9.Final-freebsd-x86_64.jar:HytaleServer.jar" com.hypixel.hytale.Main --assets Assets.zip
SECOND METHOD -- Injecting the FreeBSD native library directly into the HytaleServer.jar
1) Build netty-codec-quic as above and copy it to your server directory.
2) Extract the native FreeBSD library from the jar file you built earlier:
unzip -j netty-codec-native-quic-4.2.9.Final-freebsd-x86_64.jar META-INF/native/libnetty_quiche42_freebsd_x86_64.so
3) Create a temporary directory:
mkdir -p META-INF/native
4) Move the native shared library to the new directory:
mv libnetty_quiche42_freebsd_x86_64.so META-INF/native/
5) Inject the native shared library:
zip -u HytaleServer.jar META-INF/native/libnetty_quiche42_freebsd_x86_64.so
6) Launch the server:
java -jar HytaleServer.jar --assets Assets.zip
FINAL NOTES:
This guide is not intended to be comprehensive. The upstream server manual at https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual covers most of the information necessary for setting up the server. Information about optimizing server performance, specifying memory usage, etc. can be found in online discussions. Installing the server in such a way as to conform to FHS can be achieved by following the example of the minecraft-server port. Getting an actual port made for the Hytale server on FreeBSD might not be feasible until upstream makes it easier to fetch the server software. But I hope this guide has at least achieved its sole intended purpose of showing how to overcome the technical hurdle of just getting it to run on FreeBSD. There may be some minor things I need to double check (such as whether stripping the native Linux library is actually necessary -- it may not be, so feel free to try skipping that step to see if it still works for you). Feedback is welcome. Hopefully this guide helps someone.