metaruss

Flying an Eaglercraft Server

by on Jan.23, 2025, under Linux

This is a brain-dump of what I ended up doing to setup an “Eaglercraft Server”.  I’ve been running small Minecraft servers since around 2011.  It was just for myself and a few of my work colleagues.  I enjoyed experiencing MC coming out of beta and eventually growing up.  We ended up with two servers, the original that started in Beta1.3 became a creative server and a “newer” 1.4 server running in survival mode.  Over time, I eventually lost interest in the game but left the servers running.  Like so many kids over the past decade or so, mine inevitably got into MC in a big way and still spend time on the old servers with their friends from time to time.  I also stood up a third server for them to have a fresh start, since the old worlds are massive and had been generated using such old versions (there are some pretty weird chunk transitions in places).  One day, my youngest asked me if I could help him setup an “Eaglercraft Server”.  Boy, what a rabbit hole that turned out to be…

I am by no means an expert here, but I wanted to document what I’ve learned.  At its core, Eaglercraft is a Javascript port of the Minecraft client that can run in a web browser (I’ll leave the reason why it exists and the origin of the name as an exercise to the reader).  Since it was an unofficial port, the project came under fire by Mojang’s current owners and had to go underground to some extent.  The client is only currently available in specific versions: 1.5.2 and 1.8.8.  There is no such thing as an “Eaglercraft server”, per se.  What is actually needed is a Java Edition server configured such that:

  1. It’s preferably running in offline mode so that unauthorized users can connect…ah-hem.
  2. It’s reachable by Eaglercraft clients from a web browser, preferably via port 80 if possible.
  3. It supports version 1.8 clients.

All of these present their own sets of problems, but all are solvable thanks to the amazingly active development community around Minecraft servers.  I am assuming that the reader knows how to administrate a Linux server and has background knowledge of operating a Minecraft server.  If not, there are lots of resources out there.  My goal here was to fill in the missing big picture around what is required.

Authentication

One can, technically, login to an “online” (officially-authenticating) server from an Eaglercraft client by going through a number of convoluted steps to acquire the necessary credentials.  Each player would need to do this on their own, which can be a bit of a pain for the less-technically-inclined.

All of that can be avoided by running in offline mode and setting up an authentication server that users can bounce-through when they first connect.  There are plugins available for forked servers such as Forge, Spigot, and Paper that implement this: nLogin can provide authentication which will then use BungeeCord to tie the servers together.  The authentication server needs to support the same client version(s) as the main server and don’t forget to turn on the whitelist for both if they are going to run offline.  The first time a player connects, they will be asked to set a password, which they then have to remember.  nLogin offers tools for administrators to reset passwords, etc.

One annoying problem is the UUID generation that nLogin does will conflict with any online Java clients coming in, which then causes conflicts in the whitelist.  nLogin has some settings for this, but each has caveats.  One workaround is after adding an online player to the whitelist, look for the actual UUID they are using in the logs and manually edit the whitelist.json file to override the generated one for that player.  You’ll have to issue a “whitelist reload” command afterwards, but they should be granted access then.  The same process needs to be repeated on the main server as well, if it is running a whitelist.

Proxy

To avoid exposing old server versions to the Internet, it is wise to put everything behind a proxy.  The PaperMC project has a lightweight proxy server called Velocity that is a good candidate for this, as it supports BungeeCord and many of the required plugins including nLogin and Eaglercraft.  The main and authentication servers can then be setup to bind only to localhost, preventing direct external connections.  BungeeGuard can also be used as a further protective step.

Note that when using nLogin, the plugin is actually resident on the proxy and not the authentication server.  This can be a little bit confusing when trying to manage the plugin from the local console.  One has to connect to the proxy console, not the authentication server console.

Server

The primary server that players will play on needs to support 1.8 clients.  There are two ways to approach this:

  1. Run an actual 1.8 server.
  2. Run a more modern server with ViaVersion plugins.

The first approach is the simplest, but it doesn’t scale well thanks to the many bugs present in Minecraft 1.8.  It’s fine if playing among friends that behave themselves or that all agree to use the same exploits.  It can also be more fun and nostalgic to play this way, but it can also go horribly wrong.  At the very least, use a forked server project for this.

Otherwise, it is probably better to run a newer server and support older clients via ViaVersion.  A nice compromise might be to run a 1.12 server, which predates Update Aquatic but fixes a lot of the flaws of earlier servers.  This requires the installation of the following plugins:

  • ViaVersion – allows newer clients on older servers for those connecting from a modern Java client.
  • ViaBackwards – allows older clients on newer servers.
  • ViaRewind – expands ViaBackwards support to really old clients, including 1.8 that EaglerCraft needs.
  • ViaRewind-Legacy-Support – fixes a number of glitches and bugs that 1.8 clients would normally experience.

Once everything is setup, players will connect to the proxy which will connect them to the authentication server.  nLogin can be setup a few different ways, but again be sure to turn on the whitelist.  Once authenticated, players are connected to the main server.

:, ,
No comments for this entry yet...

Leave a Reply

Search

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact me.

Sites that interest me

A few highly recommended friends...

Meta