Solved Guide: Basic notes on installing FTB Infinity Evolved server on Linux (Ubuntu 18.04 LTS)

  • Tech Support section is for getting help with FTB related problems. If there's a repeatable issue that can be labeled as a bug, then please use the issue tracker for the pack or the app at GitHub issue trackers - If there's no repository for a pack that means that the pack is old and/or will not be updated. Bugs for older packs will not be fixed, unless they are critical.

decroded

New Member
Jun 18, 2020
1
3
4
Hi, I wanted to share my notes from installing a Minecraft FTB Infinity Evolved server on Ubuntu 18.04. When I was starting I couldn't find clear instructions so am sharing what I figured out. There is a lot that could be said but this guide is meant to cover the essentials.

Since it is my first post here I cannot post links, so I'll indicate where more info can be googled easily.

0. Preparing your Linux installation.
Minecraft seems to work only with Oracle Java as of June 2020. Adopt OpenJDK didn't work and threw exceptions. Make sure you have Oracle Java 8 (1.8.0) or later installed. Note the Oracle licence you must accept, and that the free licence does not seem to cover commercial uses of Java.
  • If you have multiple java installations use the update-alternatives command to select the one that runs from the command line. Use java -version to verify which one you have.
  • I strongly recommend you create a new unprivileged user account to run the server under. There are lots of guides on how to do this for vanilla minecraft servers. This is mainly for security reasons, as you'll have to leave the minecraft listener port exposed to let users log in. Running Minecraft as a dedicated unprivileged user will make it harder for a hacker to do any damage if they get in through this port and exploit the server.
  • You'll need to forward port 25565 from your home router to your linux server. I'm not clear on whether TCP or UDP is required so I forward both. (Microsoft says it's TCP but it's not that a big a deal to forward both.)
  • UFW (Uncomplicated Firewall) is a user-friendly front end to iptables that will let you build a basic whitelist for your exposed firewall port. If you're running this on a home network and are running a private server, I recommend you do this and whitelist IPs your users will be coming from.
    • You want to whitelist IP addresses (either single addresses or ranges) that can access the server's listening port on 25565. Everything else should be denied. This will keep villains from even being able to see the open port.
    • There are many guides on how to use UFW. First, add default rules for incoming, outgoing, and forwarded traffic. Then add additional rules to handle exceptions to the default rules. Finally, enable UFW to have it start enforcing the firewall policy.
    • You can install UFW from apt-get but it may already be installed. Run sudo ufw status to see if it's there.
  • If you don't need the GUI on your linux installation, consider turning it off. You can google for the correct systemctl command to do this and make the change stick. This will conserve critical RAM resources, which can be helpful if you don't have tons of it. I'll talk more about RAM usage later.
    • This command will disable the GUI and persist the change: sudo systemctl set-default multi-user.target
    • This command will reenable the GUI: sudo systemctl set-default graphical.target
1. Downloading the file.
From the FTBApp launcher, you can download the Linux server file. I actually downloaded it from Windows and moved it over.
  • From the modpacks menu, browse or search for FTB Infinity Evolved.
  • Click on the three dots detail icon.
  • Go to the Versions tab. Click on the "Download Server" button and you'll get a prompt for different OSes.
  • Select Linux. This will download an executable binary, the installer.
2. Running the installer.
  • Launch the file you just downloaded. Run it directly from a command line. You might have to run chmod a+x to make it executable.
  • This installer will create a complete Forge installation, including updated 1.7.10 Minecraft server files, Forge, and Forge Mods. If you don't know what this means:
    • Minecraft server files are the original server files directly from Mojang/Microsoft. You don't have to download these separately since the installer will grab them.
    • Forge is a widely used framework (ie. add-on software) that makes many Minecraft mods, including the ones used in FTB Infinity Evolved, work.
    • Forge mods work by putting a bunch of files in the /mods directory. The installer pulls updated versions of these mods from their repositories, which is probably one of a number of reasons why they are not simply prepackaged.
    • It all comes together when you start Minecraft, it loads Forge, then Forge loads all of the mods.
    • FTB Infinity Evolved is essentially a curated set of these mods, with configurations that make them work nicely together.
3. Configure the installation that the installer put down.
  • First, edit the eula.txt file in the main folder. You need to change the eula line to "eula=true" to accept the Minecraft licence terms. The server won't start without it.
  • Next, edit the start.sh file that the installer created. You can actually comment out or delete all of the lines except the first line and the last line (with the java command). (The eula fixer here didn't work for me and seems unnecessary.)
  • Edit the java line:
    • Edit the -Xms and -Xmx switches to reflect the physical RAM you want to allocate to the server.
    • - Xms specifies how much starting RAM the server should have, and Xmx is the maximum the server can be allocated.
    • After the -jar switch, add the file name of the Forge file the installer created, eg. forge-1.7.10-10.13.4.1614-1.7.10-universal.jar. Make sure you use the jar that ends in universal, and not the installer jar.
    • nogui is important as it tells Minecraft not to attempt to launch the GUI.
  • There are many thoughts on the Internet as to what the ideal amount of RAM is. Your mileage may vary. Here's what worked for me:
    • For my new-ish FTB Infinity Evolved world and about 4 users, RAM usage is holding steady at about 2.2 GB. I have minimum set to 1GB and max set to 4GB.
    • According to some people, allocating too much RAM can actually negatively impact the efficiency of the Java garbage collector.
  • There exist fancy java switches to optimize Java's garbage collector. These may help in a situation where you are trying to make the most of limited physical RAM. I haven't experimented with these, but note that there is a lot of dated advice on using these switches with Minecraft servers. Because garbage collection can change with each new release, you can't trust advice that is not clearly for the version and build of Oracle Java you're using.

4. Configure server.properties
These are the standard Minecraft server settings.
  • If you want Biomes o'Plenty biomes, change the value of the "level-type" key to read "level-type=biomesoplenty". Do this before running the server for the first time and triggering world generation.
  • If you are creating a private server, then set the "white-list" key to true. Then, add your user's Minecraft account names and UUIDs to the whitelist.json file. Given a user's Minecraft account name, you can look up the UUID yourself using one of a number of public websites that will do this for you. Make sure you use proper syntax, you can google for what a proper whitelist.json should look like.
    • While you are doing this, you can set the initial list of Admins/OPs by editing ops.json. This is the list of users who will have admin rights. This is a similar format as the whitelist JSON file, except there is an additional line for level. "level": 4 seems to be adequate to grant admin rights. Don't ask me what the levels mean. Once this is done you can add additional admins through a console command from an admin account - how to do this can be googled.
  • Edit the message of the day (motd) to something personal to help your users know they found the right server.
5. Configure FTB Utilities.
FTB Utilities is a mod that provides many utility functions. Some key ones are automatic backup and restarts, which you may want to tailor.
  • * The configuration file for FTB Utilities is in /local/ftbu/config.json.
  • * Notable settings here:
    • "backup_timer": in hours, specifies how often backups should be made to the folder specified by the "folder" setting.
    • "restart_time": in hours, specifies how often the server should be auto restarted. Users will be kicked when this happens. People seem to find that restarting the server every 8-12 hours helps keep on top of lag, but I haven't verified this myself.
    • "safe_spawn": if set to true, allegedly positions spawns further away from mobs and danger.
    • "motd": Message of the Day. Again, I like setting this so users know they're in the right place.
  • You can apply changes in this file (as well as server.properties) to a running server by running the admin command /reload from an admin console. The server should confirm that it has reloaded its configs.
6. Running the server
A really helpful utility is screen. It will store your console session persistently and let you leave and come back to it from different places (console, SSH session, etc.). You can also scroll back through the console output. This makes administering and monitoring the server easier.
  • Start server with "screen ./start.sh". This will run the script you just edited and store all output into a screen session.
  • You can leave a screen session and keep it running in the background by pressing Control+A+D. To resume, type screen -r while logged in as the same user you created the session with.
  • You should be able to scroll back through the session output.
  • To stop the server, open the screen session where you started it an press Control+C. Or, find the PID and kill the java process.

That's about all I have to share! Good luck!
 
Last edited: