Compare commits

..

10 Commits

Author SHA1 Message Date
github-actions[bot]
098e4337cb Auto Update Factorio to stable version: 2.0.69 experimental version: 2.0.71 2025-10-16 09:27:23 +00:00
github-actions[bot]
3e473f384b Auto Update Factorio to stable version: 2.0.69 experimental version: 2.0.70 2025-10-13 12:51:58 +00:00
github-actions[bot]
5d5c4562d0 Auto Update Factorio to stable version: 2.0.69 experimental version: 2.0.69 2025-10-02 08:31:37 +00:00
dependabot[bot]
242b12b647 Bump peter-evans/dockerhub-description from 4.0.2 to 5.0.0 (#592)
Bumps [peter-evans/dockerhub-description](https://github.com/peter-evans/dockerhub-description) from 4.0.2 to 5.0.0.
- [Release notes](https://github.com/peter-evans/dockerhub-description/releases)
- [Commits](https://github.com/peter-evans/dockerhub-description/compare/v4.0.2...v5.0.0)

---
updated-dependencies:
- dependency-name: peter-evans/dockerhub-description
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-02 14:14:06 +09:00
Chrisliebär
a17f905cac Add option to ignore mods from auto-update (#590) 2025-10-01 12:37:49 +09:00
github-actions[bot]
2367a3358c Auto Update Factorio to stable version: 2.0.66 experimental version: 2.0.69 2025-09-29 16:24:50 +00:00
github-actions[bot]
37f7a4efd6 Auto Update Factorio to stable version: 2.0.66 experimental version: 2.0.68 2025-09-23 13:32:19 +00:00
github-actions[bot]
fa1af81fbc Auto Update Factorio to stable version: 2.0.66 experimental version: 2.0.67 2025-09-22 15:25:48 +00:00
github-actions[bot]
874e859e84 Auto Update Factorio to stable version: 2.0.66 experimental version: 2.0.66 2025-09-05 10:25:17 +00:00
github-actions[bot]
bfd14e3b06 Auto Update Factorio to stable version: 2.0.60 experimental version: 2.0.66 2025-09-02 12:51:42 +00:00
12 changed files with 60 additions and 53 deletions

View File

@@ -17,7 +17,7 @@ jobs:
uses: actions/checkout@v5
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v4.0.2
uses: peter-evans/dockerhub-description@v5.0.0
if: ${{ env.DOCKER_USERNAME != '' && env.DOCKER_PASSWORD != '' }}
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

View File

@@ -6,8 +6,8 @@
[中文](./README_zh_CN.md)
<!-- start autogeneration tags -->
* `latest, 2.0.65`
* `2, 2.0, 2.0.60, stable, stable-2.0.60`
* `latest, 2.0.71`
* `2, 2.0, 2.0.69, stable, stable-2.0.69`
<!-- end autogeneration tags -->
## Tag descriptions
@@ -175,6 +175,8 @@ Copy mods into the mods folder and restart the server.
As of 0.17 a new environment variable was added ``UPDATE_MODS_ON_START`` which if set to ``true`` will cause the mods get to updated on server start. If set a valid [Factorio Username and Token](https://www.factorio.com/profile) must be supplied or else the server will not start. They can either be set as docker secrets, environment variables, or pulled from the server-settings.json file.
To prevent specific mods from being automatically updated, you can use the ``UPDATE_IGNORE`` environment variable with a comma-separated list of mod names. For example: ``UPDATE_IGNORE=mod1,mod2,mod3`` will skip updates for those three mods. This can be useful to prevent compatibility issues when certain mods should remain at specific versions. Be warned that it can also create compatibility issues.
**Note:** When using the Space Age DLC, the built-in mods (`elevated-rails`, `quality`, and `space-age`) are automatically skipped during mod updates to prevent conflicts. These mods are included with the DLC and should not be downloaded separately.
### Scenarios
@@ -292,6 +294,7 @@ These are the environment variables which can be specified at container run time
| PRESET | Map generation preset when GENERATE_NEW_SAVE is true | | 0.17+ |
| TOKEN | factorio.com token | | 0.17+ |
| UPDATE_MODS_ON_START | If mods should be updated before starting the server | | 0.17+ |
| UPDATE_IGNORE | Comma-separated list of mod names to skip during automatic updates | | 0.17+ |
| USERNAME | factorio.com username | | 0.17+ |
| CONSOLE_LOG_LOCATION | Saves the console log to the specifies location | | |
| DLC_SPACE_AGE | Enables or disables the mods for DLC Space Age in mod-list.json[^1] | true | 2.0.8+ |

View File

@@ -1,19 +1,19 @@
{
"2.0.60": {
"sha256": "69b5be1a867fd99524f9914dfee900a1ac386cf4e74c4a63768c05dc4d2b2b0b",
"2.0.69": {
"sha256": "235147bb3ed6b5f0a6993893c6c92fdfe535ba95ab866046f51f865284b57341",
"tags": [
"stable",
"stable-2.0.60",
"stable-2.0.69",
"2",
"2.0",
"2.0.60"
"2.0.69"
]
},
"2.0.65": {
"sha256": "6b80f0fbeb43753ed7654695ffa427f442496068f2f72129de76cea246a0c63e",
"2.0.71": {
"sha256": "5f95599fd204ade051b1027f32902b3227da61a2822faf1e144cb1407b36a251",
"tags": [
"latest",
"2.0.65"
"2.0.71"
]
}
}

View File

@@ -11,6 +11,8 @@ services:
- ./data:/factorio
environment:
- UPDATE_MODS_ON_START=true
# Uncomment to skip updating specific mods
# - UPDATE_IGNORE=mod1,mod2,mod3
# Uncomment to enable autoupdate via watchtower
#labels:

View File

@@ -6,8 +6,8 @@ services:
args:
# Check buildinfo.json for supported versions and SHAs
# https://github.com/factoriotools/factorio-docker/blob/master/buildinfo.json
- VERSION=2.0.60
- SHA256=69b5be1a867fd99524f9914dfee900a1ac386cf4e74c4a63768c05dc4d2b2b0b
- VERSION=2.0.69
- SHA256=235147bb3ed6b5f0a6993893c6c92fdfe535ba95ab866046f51f865284b57341
ports:
- "34197:34197/udp"
- "27015:27015/tcp"
@@ -17,6 +17,7 @@ services:
# - PUID=1000
# - PGID=1000
# - UPDATE_MODS_ON_START=true
# - UPDATE_IGNORE=mod1,mod2,mod3
# - USERNAME=FactorioUsername
# - TOKEN=FactorioToken
# - PORT=34198

View File

@@ -53,9 +53,10 @@ fi
# In rootless mode, we don't need to handle user switching or chown
# The container runs as the specified user from the start
EXEC=""
# Setup ARM64 emulation support
# shellcheck disable=SC1091
source "${INSTALLED_DIRECTORY}/setup-exec.sh"
if [[ -f /bin/box64 ]]; then
# Use emulator for ARM hosts
EXEC="/bin/box64"
fi
# Update config path
sed -i '/write-data=/c\write-data=\/factorio/' /opt/factorio/config/config.ini

View File

@@ -41,10 +41,10 @@ if [[ $NRTMPSAVES -gt 0 ]]; then
fi
if [[ ${UPDATE_MODS_ON_START:-} == "true" ]]; then
"${INSTALLED_DIRECTORY}"/docker-update-mods.sh
${INSTALLED_DIRECTORY}/docker-update-mods.sh
fi
"${INSTALLED_DIRECTORY}"/docker-dlc.sh
${INSTALLED_DIRECTORY}/docker-dlc.sh
EXEC=""
if [[ $(id -u) == 0 ]]; then
@@ -56,10 +56,11 @@ if [[ $(id -u) == 0 ]]; then
# Drop to the factorio user
EXEC="runuser -u factorio -g factorio --"
fi
# Setup ARM64 emulation support
# shellcheck disable=SC1091
source "${INSTALLED_DIRECTORY}/setup-exec.sh"
if [[ -f /bin/box64 ]]; then
# Use an emulator to run on ARM hosts
# this only gets installed when the target docker platform is linux/arm64
EXEC="$EXEC /bin/box64"
fi
sed -i '/write-data=/c\write-data=\/factorio/' /opt/factorio/config/config.ini

View File

@@ -25,4 +25,4 @@ if [[ -z ${TOKEN:-} ]]; then
echo "You need to provide your Factorio token to update mods."
fi
./update-mods.sh "$VERSION" "$MODS" "$USERNAME" "$TOKEN"
./update-mods.sh "$VERSION" "$MODS" "$USERNAME" "$TOKEN" "${UPDATE_IGNORE:-}"

View File

@@ -1,6 +1,5 @@
#!/bin/bash
set -eoux pipefail
INSTALLED_DIRECTORY=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
if [[ -z ${1:-} ]]; then
echo "No argument supplied"
@@ -32,12 +31,7 @@ if [[ ! -f $CONFIG/map-settings.json ]]; then
cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json"
fi
# Setup ARM64 emulation support
EXEC=""
# shellcheck disable=SC1091
source "${INSTALLED_DIRECTORY}/setup-exec.sh"
exec $EXEC /opt/factorio/bin/x64/factorio \
exec /opt/factorio/bin/x64/factorio \
--port "$PORT" \
--start-server-load-scenario "$SERVER_SCENARIO" \
--preset "$PRESET" \

View File

@@ -1,6 +1,5 @@
#!/bin/bash
set -eoux pipefail
INSTALLED_DIRECTORY=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
if [[ -z ${1:-} ]]; then
echo "No argument supplied"
@@ -24,10 +23,5 @@ if [[ ! -f $CONFIG/map-settings.json ]]; then
cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json"
fi
# Setup ARM64 emulation support
EXEC=""
# shellcheck disable=SC1091
source "${INSTALLED_DIRECTORY}/setup-exec.sh"
exec $EXEC /opt/factorio/bin/x64/factorio \
exec /opt/factorio/bin/x64/factorio \
--scenario2map "$SERVER_SCENARIO"

View File

@@ -1,16 +0,0 @@
#!/bin/bash
# Setup EXEC variable for running Factorio with ARM64 emulation support
# This script handles ARM64 emulation and can be combined with user switching as needed
# If EXEC is not already set, initialize it
if [[ -z "${EXEC:-}" ]]; then
EXEC=""
fi
if [[ -f /bin/box64 ]]; then
# Use an emulator to run on ARM hosts
# this only gets installed when the target docker platform is linux/arm64
EXEC="$EXEC /bin/box64"
fi
export EXEC

View File

@@ -5,6 +5,7 @@ FACTORIO_VERSION=$1
MOD_DIR=$2
USERNAME=$3
TOKEN=$4
UPDATE_IGNORE=$5
MOD_BASE_URL="https://mods.factorio.com"
@@ -158,6 +159,28 @@ get_mod_info()
done < <(echo "$mod_info_json" | jq -c ".releases|sort_by(.released_at)|reverse|.[]")
}
# Check if a mod should be ignored based on UPDATE_IGNORE environment variable
is_mod_ignored() {
local mod_name="$1"
# If UPDATE_IGNORE is not set or empty, don't ignore any mods
if [[ -z "${UPDATE_IGNORE:-}" ]]; then
return 1
fi
# Split the comma-separated list and check if mod_name is in it
IFS=',' read -ra ignored_mods <<< "$UPDATE_IGNORE"
for ignored_mod in "${ignored_mods[@]}"; do
# Trim whitespace from ignored_mod
ignored_mod=$(echo "$ignored_mod" | xargs)
if [[ "$mod_name" == "$ignored_mod" ]]; then
return 0
fi
done
return 1
}
update_mod()
{
MOD_NAME="$1"
@@ -233,7 +256,11 @@ if [[ -f $MOD_DIR/mod-list.json ]]; then
jq -r ".mods|map(select(.enabled))|.[].name" "$MOD_DIR/mod-list.json" | while read -r mod; do
# Skip base mod and DLC built-in mods
if [[ $mod != base ]] && [[ $mod != elevated-rails ]] && [[ $mod != quality ]] && [[ $mod != space-age ]]; then
update_mod "$mod" || true
if is_mod_ignored "$mod"; then
print_success "Skipping mod $mod (listed in UPDATE_IGNORE)"
else
update_mod "$mod" || true
fi
fi
done
fi