Egg Repository

Pterodactyl Community Egg Repository

Factorio-ModUpdate

The vanilla Factorio server. With automatic Mod Updates after ReInstall. https://www.factorio.com/

Read Me

Factorio

The Factorio Server

The server supports mods. The factorio-modupdate egg uses the factorio-mod-updater to update your mods when ReInstalling the Server.

from the developers

Factorio is a game in which you build and maintain factories.

You will be mining resources, researching technologies, building infrastructure, automating production and fighting enemies. Use your imagination to design your factory, combine simple elements into ingenious structures, apply management skills to keep it working, and protect it from the creatures who don't really like you.

The game is very stable and optimized for building massive factories. You can create your own maps, write mods in Lua, or play with friends via Multiplayer.

Factorio has been in development since the spring of 2012. So far over 1,400,000 people have bought the game. You can get it from Steam, GOG, or directly from their shop.

New to the game? Make sure to checkout their starter page.

Server Ports

Factorio requires a single port

Portdefault
Game34197

ARM64

There is a factorio egg for ARM64 machines that uses the box64 emulator. If you are on AMD64 Like most of you download the normal non ARM64 egg!

Yolks
NameTag
ghcr.io/ptero-eggs/yolks:debianghcr.io/ptero-eggs/yolks:debian
Variables and Startup

Startup Command

./bin/x64/factorio --port {{SERVER_PORT}} --server-settings data/server-settings.json --start-server {{SAVE_NAME}}.zip

Variables

Factorio Version

Which version of Factorio to install and use.

Environment Variable: FACTORIO_VERSION
Default Value: latest
User Viewable:
User Editable:
Maximum Slots

Total number of slots to allow on the server.

Environment Variable: MAX_SLOTS
Default Value: 20
User Viewable:
User Editable:
Save Name

The save name for the server.

Environment Variable: SAVE_NAME
Default Value: gamesave
User Viewable:
User Editable:
Server Token

Your factorio.com token, it is required for your server to be visible in the public server list.

Environment Variable: SERVER_TOKEN
Default Value: undefined
User Viewable:
User Editable:
Server Name

Name of the game as it will appear in the game listing

Environment Variable: SERVER_NAME
Default Value: Factorio Server
User Viewable:
User Editable:
Server Description

Description of the game that will appear in the listing.

Environment Variable: SERVER_DESC
Default Value: Description
User Viewable:
User Editable:
Server Username

Username used for the server

Environment Variable: SERVER_USERNAME
Default Value: unnamed
User Viewable:
User Editable:
Auto Save Interval

Time between auto saves specified in minutes

Environment Variable: SAVE_INTERVAL
Default Value: 10
User Viewable:
User Editable:
Auto Save Slots

The number of auto saves to keep.

Environment Variable: SAVE_SLOTS
Default Value: 5
User Viewable:
User Editable:
AFK Kick

Time specified in minutes to kick AFK players. 0 is off

Environment Variable: AFK_KICK
Default Value: 0
User Viewable:
User Editable:
Install Script
#!/bin/bash
# Factorio Installation Script
#
# Server Files: /mnt/server
apt update 
apt install -y curl tar xz-utils python3 python3-requests jq

latest_ModUpdate=$(curl --silent "https://api.github.com/repos/pdemonaco/factorio-mod-updater/tags" | jq -r '.[0].name')

VERSION_JSON=$(curl -sSL https://factorio.com/api/latest-releases)

latest_stable=$(echo $VERSION_JSON | jq -r '.stable.headless')
latest_experimental=$(echo $VERSION_JSON | jq -r '.experimental.headless')

if [ -z "${FACTORIO_VERSION}" ] || [ "${FACTORIO_VERSION}" == "latest" ]; then
  DL_VERSION=$latest_stable
elif [ "${FACTORIO_VERSION}" == "experimental" ]; then
  DL_VERSION=$latest_experimental
else
  DL_VERSION=${FACTORIO_VERSION}
fi

mkdir -p /mnt/server
cd /mnt/server

echo -e "\n running 'curl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}' \n"

curl -sL https://www.factorio.com/get-download/${DL_VERSION}/headless/linux64 -o factorio-${DL_VERSION}

tar -xf factorio-${DL_VERSION} --strip-components=1 -C /mnt/server

rm factorio-${DL_VERSION}

if [ -e data/map-gen-settings.json ]; then
    echo "map-gen exists"
else
    echo "copying map-gen default settings"
    mv data/map-gen-settings.example.json data/map-gen-settings.json
fi

if [ -e data/server-settings.json ]; then
    echo "server settings exists"
else
    echo "copying server default settings"
    mv data/server-settings.example.json data/server-settings.json
fi

if [ -e map-settings.json ]; then
    echo "map settings exists"
else
    echo "copying map default settings"
    mv data/map-settings.example.json data/map-settings.json
fi

if [ -e ${SAVE_NAME}.zip ]; then
    echo "save file exists"
else
    ./bin/x64/factorio --create ${SAVE_NAME}
    chmod o+w ${SAVE_NAME}.zip
fi

# Download Mod Updater
echo -e "\n running 'curl -sL https://github.com/pdemonaco/factorio-mod-updater/archive/${latest_ModUpdate}.tar.gz -o factorio-MU-${latest_ModUpdate}' \n"

curl -sL https://github.com/pdemonaco/factorio-mod-updater/archive/${latest_ModUpdate}.tar.gz -o factorio-MU-${latest_ModUpdate}

tar -xf factorio-MU-${latest_ModUpdate} -C /mnt/server

rm factorio-MU-${latest_ModUpdate}

# Run Mod Updater
./factorio-mod-updater-${latest_ModUpdate}/mod_updater.py -s /mnt/server/data/server-settings.json -m /mnt/server/mods --fact-path /mnt/server/bin/x64/factorio --update

## install end
echo "-----------------------------------------"
echo "Installation completed..."
echo "-----------------------------------------"
Installation Imageghcr.io/ptero-eggs/installers:debianInstallation Entrypointbash