mirror of
https://github.com/factoriotools/factorio-docker.git
synced 2025-07-01 14:38:05 +02:00
Compare commits
154 Commits
Author | SHA1 | Date | |
---|---|---|---|
e22ce8989b | |||
29f3e54adf | |||
148de89c52 | |||
4fc8da6581 | |||
e6290605c7 | |||
662372a1ba | |||
82f6bdf865 | |||
c9f4510195 | |||
6602c7cf7f | |||
8be7b47c07 | |||
717275198e | |||
d68ec4fdd4 | |||
47464e0b9b | |||
23fdd4ed09 | |||
e7a6bddc1f | |||
3d9e2999b6 | |||
7b33b9f6e8 | |||
066c61fb85 | |||
303fbb5d97 | |||
3f4fd9e348 | |||
504ebfde23 | |||
f982370229 | |||
51d3845af7 | |||
889c10bd48 | |||
46f397a9bb | |||
988aa08a73 | |||
ff6f4b6cd0 | |||
ea426ca0f4 | |||
4ecb1dcb6b | |||
3ef8c5309e | |||
70c402b9dd | |||
2b434ff08f | |||
49c5dff898 | |||
35d22efc67 | |||
f1b75ac034 | |||
fbb550916c | |||
1d8be250e9 | |||
d90f45bd41 | |||
2b201fea5b | |||
b0a64e5939 | |||
ef24dad0bf | |||
69a52f2c19 | |||
902ad53bd3 | |||
bd2af80a52 | |||
de9fb52d48 | |||
c0157e19ee | |||
8e7bca222a | |||
3e7c79ab74 | |||
979326ebf6 | |||
d5ac333364 | |||
e941e9a2c8 | |||
6fece0c9e3 | |||
10d000408c | |||
d59fd0844a | |||
324920cdf8 | |||
2c88f5e982 | |||
26cec3ae93 | |||
7897de5080 | |||
b474afc1b7 | |||
795ec7dc55 | |||
03f171e34c | |||
313faf6fa5 | |||
17109c97c1 | |||
e62f5e799a | |||
47a7b8312f | |||
3cdf39d04b | |||
b840e86d21 | |||
a9047cae58 | |||
bf128afdb4 | |||
f5ffae1cb4 | |||
31b6768882 | |||
41eca9edf6 | |||
86169c9dad | |||
f36e58058b | |||
1a12761739 | |||
7f43739481 | |||
33e33a4db7 | |||
2d54d50951 | |||
86c8270d99 | |||
5109bc1b40 | |||
5e36f8bad8 | |||
d1258008c1 | |||
275faa1fcc | |||
87cf6c051a | |||
3d8cdfcc1d | |||
d3ef74b10d | |||
b41aad4dc6 | |||
24ac45dbce | |||
8286ab58ac | |||
c2d8509aa8 | |||
b94db83033 | |||
cc23bb396e | |||
1b2fdb298f | |||
ab277975ae | |||
80d8866242 | |||
4ec18b2d15 | |||
93a3011cd3 | |||
15cacdc3da | |||
927bcb89a0 | |||
4ceff25fc2 | |||
5d072db9cc | |||
216b225681 | |||
18f3943eaf | |||
2725534b2b | |||
df35d57455 | |||
9adc8ce4bc | |||
6272bb0018 | |||
a989b500b0 | |||
66bef56cd2 | |||
10f891cabf | |||
9a7f01f8bf | |||
877219f9c9 | |||
843bcbff21 | |||
a7786f03ed | |||
754663df49 | |||
9ac04bcff8 | |||
66d4652302 | |||
5ddb9ab472 | |||
9e72f0509a | |||
914b12adf4 | |||
dc3c040d7c | |||
6a9a596cd8 | |||
eb22dac840 | |||
b48bb4c134 | |||
cf5af1aae1 | |||
d7f0fe16d7 | |||
27c1426109 | |||
a86ac6cafe | |||
70e08f10f3 | |||
c28cea29a4 | |||
e21fc20eb2 | |||
c75b7fa830 | |||
387383d3e8 | |||
c6c94ee180 | |||
b2908081b4 | |||
e53c2adc54 | |||
d6da776148 | |||
30e5f6dd2d | |||
b69fe57291 | |||
b99c1044ca | |||
b37af9bf93 | |||
185ee256ff | |||
6020015574 | |||
a520b87fc8 | |||
e3abfbbe9b | |||
6a135a06bc | |||
14fb9ecf35 | |||
ffef5899e9 | |||
4449e13675 | |||
189395d5c8 | |||
4c1ea766f4 | |||
9ce9a63cfc | |||
8d16422fcb | |||
628c7a34aa |
@ -1,4 +1,4 @@
|
|||||||
FROM frolvlad/alpine-glibc:alpine-3.6
|
FROM frolvlad/alpine-glibc:alpine-3.7
|
||||||
|
|
||||||
MAINTAINER https://github.com/dtandersen/docker_factorio_server
|
MAINTAINER https://github.com/dtandersen/docker_factorio_server
|
||||||
|
|
||||||
@ -9,8 +9,13 @@ ARG PGID=845
|
|||||||
|
|
||||||
ENV PORT=34197 \
|
ENV PORT=34197 \
|
||||||
RCON_PORT=27015 \
|
RCON_PORT=27015 \
|
||||||
VERSION=0.16.14 \
|
VERSION=0.16.51 \
|
||||||
SHA1=e8c5650dd1180554757f78b5a5f53f6fc5f56e42
|
SHA1=127e7ff484ab263b13615d6114013ce0a66ac929 \
|
||||||
|
SAVES=/factorio/saves \
|
||||||
|
CONFIG=/factorio/config \
|
||||||
|
MODS=/factorio/mods \
|
||||||
|
SCENARIOS=/factorio/scenarios \
|
||||||
|
SCRIPTOUTPUT=/factorio/script-output
|
||||||
|
|
||||||
RUN mkdir -p /opt /factorio && \
|
RUN mkdir -p /opt /factorio && \
|
||||||
apk add --update --no-cache pwgen && \
|
apk add --update --no-cache pwgen && \
|
||||||
@ -21,18 +26,20 @@ RUN mkdir -p /opt /factorio && \
|
|||||||
tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt && \
|
tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt && \
|
||||||
chmod ugo=rwx /opt/factorio && \
|
chmod ugo=rwx /opt/factorio && \
|
||||||
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \
|
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \
|
||||||
ln -s /factorio/saves /opt/factorio/saves && \
|
ln -s $SAVES /opt/factorio/saves && \
|
||||||
ln -s /factorio/mods /opt/factorio/mods && \
|
ln -s $MODS /opt/factorio/mods && \
|
||||||
|
ln -s $SCENARIOS /opt/factorio/scenarios && \
|
||||||
|
ln -s $SCRIPTOUTPUT /opt/factorio/script-output && \
|
||||||
apk del .build-deps && \
|
apk del .build-deps && \
|
||||||
addgroup -g $PGID -S $GROUP && \
|
addgroup -g $PGID -S $GROUP && \
|
||||||
adduser -u $PUID -G $USER -s /bin/sh -SDH $GROUP && \
|
adduser -u $PUID -G $GROUP -s /bin/sh -SDH $USER && \
|
||||||
chown -R $USER:$GROUP /opt/factorio /factorio
|
chown -R $USER:$GROUP /opt/factorio /factorio
|
||||||
|
|
||||||
VOLUME /factorio
|
VOLUME /factorio
|
||||||
|
|
||||||
EXPOSE $PORT/udp $RCON_PORT/tcp
|
EXPOSE $PORT/udp $RCON_PORT/tcp
|
||||||
|
|
||||||
COPY ./docker-entrypoint.sh /
|
COPY files/ /
|
||||||
|
|
||||||
USER $USER
|
USER $USER
|
||||||
|
|
||||||
|
@ -1,17 +1,13 @@
|
|||||||
#!/bin/sh -x
|
#!/bin/sh -x
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
id
|
id
|
||||||
|
|
||||||
SAVES=/factorio/saves
|
|
||||||
CONFIG=/factorio/config
|
|
||||||
|
|
||||||
mkdir -p $SAVES
|
mkdir -p $SAVES
|
||||||
mkdir -p /factorio/mods
|
|
||||||
mkdir -p $CONFIG
|
mkdir -p $CONFIG
|
||||||
|
mkdir -p $MODS
|
||||||
#chown -R factorio /factorio
|
mkdir -p $SCENARIOS
|
||||||
|
mkdir -p $SCRIPTOUTPUT
|
||||||
|
|
||||||
if [ ! -f $CONFIG/rconpw ]; then
|
if [ ! -f $CONFIG/rconpw ]; then
|
||||||
echo $(pwgen 15 1) > $CONFIG/rconpw
|
echo $(pwgen 15 1) > $CONFIG/rconpw
|
||||||
@ -29,6 +25,10 @@ if [ ! -f $CONFIG/map-settings.json ]; then
|
|||||||
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then
|
||||||
|
rm -f $SAVES/*.tmp.zip
|
||||||
|
fi
|
||||||
|
|
||||||
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
|
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
|
||||||
/opt/factorio/bin/x64/factorio \
|
/opt/factorio/bin/x64/factorio \
|
||||||
--create $SAVES/_autosave1.zip \
|
--create $SAVES/_autosave1.zip \
|
||||||
@ -44,4 +44,5 @@ exec /opt/factorio/bin/x64/factorio \
|
|||||||
--server-banlist $CONFIG/server-banlist.json \
|
--server-banlist $CONFIG/server-banlist.json \
|
||||||
--rcon-port $RCON_PORT \
|
--rcon-port $RCON_PORT \
|
||||||
--rcon-password "$(cat $CONFIG/rconpw)" \
|
--rcon-password "$(cat $CONFIG/rconpw)" \
|
||||||
--server-id /factorio/config/server-id.json
|
--server-id /factorio/config/server-id.json \
|
||||||
|
$@
|
44
0.16/files/scenario.sh
Executable file
44
0.16/files/scenario.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "No argument supplied"
|
||||||
|
fi
|
||||||
|
SCENARIO=$1
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
id
|
||||||
|
|
||||||
|
mkdir -p $SAVES
|
||||||
|
mkdir -p $CONFIG
|
||||||
|
mkdir -p $MODS
|
||||||
|
mkdir -p $SCENARIOS
|
||||||
|
|
||||||
|
#chown -R factorio /factorio
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/rconpw ]; then
|
||||||
|
echo $(pwgen 15 1) > $CONFIG/rconpw
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/server-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-gen-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
exec /opt/factorio/bin/x64/factorio \
|
||||||
|
--port $PORT \
|
||||||
|
--start-server-load-scenario $SCENARIO \
|
||||||
|
--server-settings $CONFIG/server-settings.json \
|
||||||
|
--server-whitelist $CONFIG/server-whitelist.json \
|
||||||
|
--server-banlist $CONFIG/server-banlist.json \
|
||||||
|
--rcon-port $RCON_PORT \
|
||||||
|
--rcon-password "$(cat $CONFIG/rconpw)" \
|
||||||
|
--server-id /factorio/config/server-id.json
|
30
0.16/files/scenario2map.sh
Executable file
30
0.16/files/scenario2map.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "No argument supplied"
|
||||||
|
fi
|
||||||
|
SCENARIO=$1
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
id
|
||||||
|
|
||||||
|
mkdir -p $SAVES
|
||||||
|
mkdir -p $CONFIG
|
||||||
|
mkdir -p $MODS
|
||||||
|
mkdir -p $SCENARIOS
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/server-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-gen-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec /opt/factorio/bin/x64/factorio \
|
||||||
|
--scenario2map $SCENARIO
|
44
0.17/Dockerfile
Normal file
44
0.17/Dockerfile
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
FROM frolvlad/alpine-glibc:alpine-3.9
|
||||||
|
|
||||||
|
MAINTAINER https://github.com/dtandersen/docker_factorio_server
|
||||||
|
|
||||||
|
ARG USER=factorio
|
||||||
|
ARG GROUP=factorio
|
||||||
|
ARG PUID=845
|
||||||
|
ARG PGID=845
|
||||||
|
|
||||||
|
ENV PORT=34197 \
|
||||||
|
RCON_PORT=27015 \
|
||||||
|
VERSION=0.17.14 \
|
||||||
|
SHA1=be9cbb077939d48649c71f8fc59a34c03707bd27 \
|
||||||
|
SAVES=/factorio/saves \
|
||||||
|
CONFIG=/factorio/config \
|
||||||
|
MODS=/factorio/mods \
|
||||||
|
SCENARIOS=/factorio/scenarios \
|
||||||
|
SCRIPTOUTPUT=/factorio/script-output
|
||||||
|
|
||||||
|
RUN mkdir -p /opt /factorio && \
|
||||||
|
apk add --update --no-cache pwgen su-exec binutils gettext libintl && \
|
||||||
|
apk add --update --no-cache --virtual .build-deps curl && \
|
||||||
|
curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \
|
||||||
|
-o /tmp/factorio_headless_x64_$VERSION.tar.xz && \
|
||||||
|
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.xz" | sha1sum -c && \
|
||||||
|
tar xf /tmp/factorio_headless_x64_$VERSION.tar.xz --directory /opt && \
|
||||||
|
chmod ugo=rwx /opt/factorio && \
|
||||||
|
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \
|
||||||
|
ln -s $SAVES /opt/factorio/saves && \
|
||||||
|
ln -s $MODS /opt/factorio/mods && \
|
||||||
|
ln -s $SCENARIOS /opt/factorio/scenarios && \
|
||||||
|
ln -s $SCRIPTOUTPUT /opt/factorio/script-output && \
|
||||||
|
apk del .build-deps && \
|
||||||
|
addgroup -g $PGID -S $GROUP && \
|
||||||
|
adduser -u $PUID -G $GROUP -s /bin/sh -SDH $USER && \
|
||||||
|
chown -R $USER:$GROUP /opt/factorio /factorio
|
||||||
|
|
||||||
|
VOLUME /factorio
|
||||||
|
|
||||||
|
EXPOSE $PORT/udp $RCON_PORT/tcp
|
||||||
|
|
||||||
|
COPY files/ /
|
||||||
|
|
||||||
|
ENTRYPOINT ["/docker-entrypoint.sh"]
|
11
0.17/docker-compose.yml
Normal file
11
0.17/docker-compose.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
version: '2'
|
||||||
|
services:
|
||||||
|
factorio:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "34197:34197/udp"
|
||||||
|
- "27015:27015/tcp"
|
||||||
|
volumes:
|
||||||
|
- /opt/factorio:/factorio
|
||||||
|
# user: 845:845
|
||||||
|
# user: 1000:1000
|
66
0.17/files/docker-entrypoint.sh
Executable file
66
0.17/files/docker-entrypoint.sh
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
set -e
|
||||||
|
|
||||||
|
id
|
||||||
|
|
||||||
|
FACTORIO_VOL=/factorio
|
||||||
|
mkdir -p $FACTORIO_VOL
|
||||||
|
mkdir -p $SAVES
|
||||||
|
mkdir -p $CONFIG
|
||||||
|
mkdir -p $MODS
|
||||||
|
mkdir -p $SCENARIOS
|
||||||
|
mkdir -p $SCRIPTOUTPUT
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/rconpw ]; then
|
||||||
|
# Generate a new RCON password if none exists
|
||||||
|
echo $(pwgen 15 1) > $CONFIG/rconpw
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/server-settings.json ]; then
|
||||||
|
# Copy default settings if server-settings.json doesn't exist
|
||||||
|
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-gen-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then
|
||||||
|
# Delete incomplete saves (such as after a forced exit)
|
||||||
|
rm -f $SAVES/*.tmp.zip
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(id -u)" = '0' ]; then
|
||||||
|
# Take ownership of factorio data if running as root
|
||||||
|
chown -R factorio:factorio $FACTORIO_VOL
|
||||||
|
# Make sure we own temp
|
||||||
|
#mkdir -p /opt/factorio/temp
|
||||||
|
#chown -R factorio:factorio /opt/factorio/temp
|
||||||
|
# Drop to the factorio user
|
||||||
|
SU_EXEC="su-exec factorio"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
|
||||||
|
# Generate a new map if no save ZIPs exist
|
||||||
|
${SU_EXEC} /opt/factorio/bin/x64/factorio \
|
||||||
|
--create $SAVES/_autosave1.zip \
|
||||||
|
--map-gen-settings $CONFIG/map-gen-settings.json \
|
||||||
|
--map-settings $CONFIG/map-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec ${SU_EXEC} /opt/factorio/bin/x64/factorio \
|
||||||
|
--port $PORT \
|
||||||
|
--start-server-load-latest \
|
||||||
|
--server-settings $CONFIG/server-settings.json \
|
||||||
|
--server-banlist $CONFIG/server-banlist.json \
|
||||||
|
--rcon-port $RCON_PORT \
|
||||||
|
--server-whitelist $CONFIG/server-whitelist.json \
|
||||||
|
--use-server-whitelist \
|
||||||
|
--server-adminlist $CONFIG/server-adminlist.json \
|
||||||
|
--rcon-password "$(cat $CONFIG/rconpw)" \
|
||||||
|
--server-id /factorio/config/server-id.json \
|
||||||
|
"$@"
|
44
0.17/files/scenario.sh
Executable file
44
0.17/files/scenario.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "No argument supplied"
|
||||||
|
fi
|
||||||
|
SCENARIO=$1
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
id
|
||||||
|
|
||||||
|
mkdir -p $SAVES
|
||||||
|
mkdir -p $CONFIG
|
||||||
|
mkdir -p $MODS
|
||||||
|
mkdir -p $SCENARIOS
|
||||||
|
|
||||||
|
#chown -R factorio /factorio
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/rconpw ]; then
|
||||||
|
echo $(pwgen 15 1) > $CONFIG/rconpw
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/server-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-gen-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
exec /opt/factorio/bin/x64/factorio \
|
||||||
|
--port $PORT \
|
||||||
|
--start-server-load-scenario $SCENARIO \
|
||||||
|
--server-settings $CONFIG/server-settings.json \
|
||||||
|
--server-whitelist $CONFIG/server-whitelist.json \
|
||||||
|
--server-banlist $CONFIG/server-banlist.json \
|
||||||
|
--rcon-port $RCON_PORT \
|
||||||
|
--rcon-password "$(cat $CONFIG/rconpw)" \
|
||||||
|
--server-id /factorio/config/server-id.json
|
30
0.17/files/scenario2map.sh
Executable file
30
0.17/files/scenario2map.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh -x
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "No argument supplied"
|
||||||
|
fi
|
||||||
|
SCENARIO=$1
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
id
|
||||||
|
|
||||||
|
mkdir -p $SAVES
|
||||||
|
mkdir -p $CONFIG
|
||||||
|
mkdir -p $MODS
|
||||||
|
mkdir -p $SCENARIOS
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/server-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-gen-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f $CONFIG/map-settings.json ]; then
|
||||||
|
cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec /opt/factorio/bin/x64/factorio \
|
||||||
|
--scenario2map $SCENARIO
|
107
README.md
107
README.md
@ -1,15 +1,16 @@
|
|||||||
# Factorio [](https://microbadger.com/images/dtandersen/factorio "Get your own image badge on microbadger.com") [](https://hub.docker.com/r/dtandersen/factorio/) [](https://hub.docker.com/r/dtandersen/factorio/)
|
# Factorio [](https://microbadger.com/images/dtandersen/factorio "Get your own image badge on microbadger.com") [](https://hub.docker.com/r/dtandersen/factorio/) [](https://hub.docker.com/r/dtandersen/factorio/)
|
||||||
|
|
||||||
* `0.16.14`, `0.16`, `latest` [(0.16/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.16/Dockerfile)
|
* `0.17.14`, `0.17`, `latest` [(0.17/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.17/Dockerfile)
|
||||||
* `0.15.40`, `0.15`, `stable` [(0.15/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.15/Dockerfile)
|
* `0.16.51`, `0.16`, `stable` [(0.16/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.16/Dockerfile)
|
||||||
|
* `0.15.40`, `0.15` [(0.15/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.15/Dockerfile)
|
||||||
* `0.14.23`, `0.14` [(0.14/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.14/Dockerfile)
|
* `0.14.23`, `0.14` [(0.14/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.14/Dockerfile)
|
||||||
* `0.13.20`, `0.13` [(0.13/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.13/Dockerfile)
|
* `0.13.20`, `0.13` [(0.13/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.13/Dockerfile)
|
||||||
|
|
||||||
*Tag descriptions*
|
*Tag descriptions*
|
||||||
|
|
||||||
* `latest` - highest version: may be experimental.
|
* `latest` - most up-to-date version (may be experimental).
|
||||||
* `stable` - highest version declared stable.
|
* `stable` - version declared stable on [factorio.com](https://www.factorio.com).
|
||||||
* `0.x` - highest version in a branch: may be experimental.
|
* `0.x` - latest version in a branch.
|
||||||
* `0.x.y` - a specific version.
|
* `0.x.y` - a specific version.
|
||||||
* `0.x-dev` - whatever is in master for that version.
|
* `0.x-dev` - whatever is in master for that version.
|
||||||
|
|
||||||
@ -39,7 +40,7 @@ sudo docker run -d \
|
|||||||
-p 27015:27015/tcp \
|
-p 27015:27015/tcp \
|
||||||
-v /opt/factorio:/factorio \
|
-v /opt/factorio:/factorio \
|
||||||
--name factorio \
|
--name factorio \
|
||||||
--restart=always \
|
--restart=always \
|
||||||
dtandersen/factorio
|
dtandersen/factorio
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -113,6 +114,38 @@ To generate a new map stop the server, delete all of the saves and restart the s
|
|||||||
Copy mods into the mods folder and restart the server.
|
Copy mods into the mods folder and restart the server.
|
||||||
|
|
||||||
|
|
||||||
|
## Scenarios
|
||||||
|
|
||||||
|
If you want to launch a scenario from a clean start (not from a saved map) you'll need to start the docker image from an alternate entrypoint. To do this, use the example entrypoint file stored in the /factorio/entrypoints directory in the volume, and launch the image with the following syntax. Note that this is the normal syntax with the addition of the --entrypoint setting AND the additional argument at the end, which is the name of the Scenario in the Scenarios folder.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -d \
|
||||||
|
-p 34197:34197/udp \
|
||||||
|
-p 27015:27015/tcp \
|
||||||
|
-v /opt/factorio:/factorio \
|
||||||
|
--name factorio \
|
||||||
|
--restart=always \
|
||||||
|
--entrypoint "/scenario.sh" \
|
||||||
|
dtandersen/factorio \
|
||||||
|
MyScenarioName
|
||||||
|
```
|
||||||
|
|
||||||
|
## Converting Scenarios to Regular Maps
|
||||||
|
|
||||||
|
If you would like to export your scenario to a saved map, you can use the example entrypoint similar to the Scenario usag above. Factorio will run once, converting the Scenario to a saved Map in your saves directory. A restart of the docker image using the standard options will then load that map, just as if the scenario were just started by the Scenarios example noted above.
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -d \
|
||||||
|
-p 34197:34197/udp \
|
||||||
|
-p 27015:27015/tcp \
|
||||||
|
-v /opt/factorio:/factorio \
|
||||||
|
--name factorio \
|
||||||
|
--restart=always \
|
||||||
|
--entrypoint "/scenario2map.sh" \
|
||||||
|
dtandersen/factorio
|
||||||
|
MyScenarioName
|
||||||
|
```
|
||||||
|
|
||||||
## RCON
|
## RCON
|
||||||
|
|
||||||
Set the RCON password in the `rconpw` file. A random password is generated if `rconpw` doesn't exist.
|
Set the RCON password in the `rconpw` file. A random password is generated if `rconpw` doesn't exist.
|
||||||
@ -131,6 +164,49 @@ Create file `config/server-whitelist.json` and add the whitelisted users.
|
|||||||
"friend"
|
"friend"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
## Banlisting (0.17.1+)
|
||||||
|
|
||||||
|
Create file `config/server-banlist.json` and add the banlisted users.
|
||||||
|
|
||||||
|
[
|
||||||
|
"bad_person",
|
||||||
|
"other_bad_person"
|
||||||
|
]
|
||||||
|
|
||||||
|
## Adminlisting (0.17.1+)
|
||||||
|
|
||||||
|
Create file `config/server-adminlist.json` and add the adminlisted users.
|
||||||
|
|
||||||
|
[
|
||||||
|
"you",
|
||||||
|
"friend"
|
||||||
|
]
|
||||||
|
|
||||||
|
## Customize configuration files (0.17.x+)
|
||||||
|
|
||||||
|
Out-of-the box, factorio does not support environment variables inside the configuration files. A workaround is the usage of `envsubst` which generates the configuration files dynamically during startup from environment variables set in docker-compose:
|
||||||
|
|
||||||
|
Example which replaces the server-settings.json:
|
||||||
|
|
||||||
|
|
||||||
|
factorio_1:
|
||||||
|
image: dtanders/factorio
|
||||||
|
ports:
|
||||||
|
- "34197:34197/udp"
|
||||||
|
volumes:
|
||||||
|
- /opt/factorio:/factorio
|
||||||
|
- ./server-settings.json:/server-settings.json
|
||||||
|
environment:
|
||||||
|
- INSTANCE_NAME=Your Instance's Name
|
||||||
|
- INSTANCE_DESC=Your Instance's Description
|
||||||
|
entrypoint: /bin/sh -c "mkdir -p /factorio/config && envsubst < /server-settings.json > /factorio/config/server-settings.json && exec /docker-entrypoint.sh"
|
||||||
|
|
||||||
|
The `server-settings.json` file may then contain the variable references like this:
|
||||||
|
|
||||||
|
"name": "${INSTANCE_NAME}",
|
||||||
|
"description": "${INSTANCE_DESC}",
|
||||||
|
|
||||||
|
|
||||||
# Container Details
|
# Container Details
|
||||||
|
|
||||||
The philosophy is to [keep it simple](http://wiki.c2.com/?KeepItSimple).
|
The philosophy is to [keep it simple](http://wiki.c2.com/?KeepItSimple).
|
||||||
@ -144,10 +220,15 @@ The philosophy is to [keep it simple](http://wiki.c2.com/?KeepItSimple).
|
|||||||
|
|
||||||
To keep things simple, the container uses a single volume mounted at `/factorio`. This volume stores configuration, mods, and saves.
|
To keep things simple, the container uses a single volume mounted at `/factorio`. This volume stores configuration, mods, and saves.
|
||||||
|
|
||||||
|
The files in this volume should be owned by the factorio user, uid 845.
|
||||||
|
|
||||||
factorio
|
factorio
|
||||||
|-- config
|
|-- config
|
||||||
| |-- map-gen-settings.json
|
| |-- map-gen-settings.json
|
||||||
|
| |-- map-settings.json
|
||||||
| |-- rconpw
|
| |-- rconpw
|
||||||
|
| |-- server-adminlist.json
|
||||||
|
| |-- server-banlist.json
|
||||||
| |-- server-settings.json
|
| |-- server-settings.json
|
||||||
| `-- server-whitelist.json
|
| `-- server-whitelist.json
|
||||||
|-- mods
|
|-- mods
|
||||||
@ -155,7 +236,6 @@ To keep things simple, the container uses a single volume mounted at `/factorio`
|
|||||||
`-- saves
|
`-- saves
|
||||||
`-- _autosave1.zip
|
`-- _autosave1.zip
|
||||||
|
|
||||||
|
|
||||||
## Docker Compose
|
## Docker Compose
|
||||||
|
|
||||||
[Docker Compose](https://docs.docker.com/compose/install/) is an easy way to run Docker containers.
|
[Docker Compose](https://docs.docker.com/compose/install/) is an easy way to run Docker containers.
|
||||||
@ -227,17 +307,17 @@ sudo docker run -d \
|
|||||||
dtandersen/factorio
|
dtandersen/factorio
|
||||||
```
|
```
|
||||||
|
|
||||||
VirtualBox users must enable Bridged networking in order for the host to be assigned an internal network IP. Enable Bridged networking in Vagrant with:
|
## Vagrant
|
||||||
|
|
||||||
|
[Vagrant](https://www.vagrantup.com/) is a easy way to setup a virtual machine (VM) to run Docker. The [Factorio Vagrant box repository](https://github.com/dtandersen/factorio-lan-vagrant) contains a sample Vagrantfile.
|
||||||
|
|
||||||
|
For LAN games the VM needs an internal IP in order for clients to connect. One way to do this is with a public network. The VM uses DHCP to acquire an IP address. The VM must also forward port 34197.
|
||||||
|
|
||||||
```
|
```
|
||||||
config.vm.network "public_network"
|
config.vm.network "public_network"
|
||||||
config.vm.network "forwarded_port", guest: 34197, host: 34197
|
config.vm.network "forwarded_port", guest: 34197, host: 34197
|
||||||
```
|
```
|
||||||
|
|
||||||
## Vagrant
|
|
||||||
|
|
||||||
Vagrant is a good way for those without a Linux machine to try Docker. Check out the [Factorio Vagrant Box](https://github.com/dtandersen/factorio-lan-vagrant).
|
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
**My server is listed in the server browser, but nobody can connect**
|
**My server is listed in the server browser, but nobody can connect**
|
||||||
@ -256,7 +336,10 @@ Use the `PORT` environment variable to start the server on the a different port,
|
|||||||
# Contributors
|
# Contributors
|
||||||
|
|
||||||
* [dtandersen](https://github.com/dtandersen/docker_factorio_server) - Maintainer
|
* [dtandersen](https://github.com/dtandersen/docker_factorio_server) - Maintainer
|
||||||
|
* [Fank](https://github.com/Fankserver/docker-factorio-watchdog) - Keeper of the Factorio watchdog that keeps the version up-to-date.
|
||||||
|
* [DBendit](https://github.com/DBendit/docker_factorio_server) - Admin list, ban list, version updates
|
||||||
* [Zopanix](https://github.com/zopanix/docker_factorio_server) - Originator
|
* [Zopanix](https://github.com/zopanix/docker_factorio_server) - Originator
|
||||||
* [Rfvgyhn](https://github.com/Rfvgyhn/docker-factorio) - Randomly generate RCON password
|
* [Rfvgyhn](https://github.com/Rfvgyhn/docker-factorio) - Randomly generate RCON password
|
||||||
* [gnomus](https://github.com/gnomus/docker_factorio_server) - White listing
|
* [gnomus](https://github.com/gnomus/docker_factorio_server) - White listing
|
||||||
|
* [bplein](https://github.com/bplein/docker_factorio_server) - Scenario support
|
||||||
* [jaredledvina](https://github.com/jaredledvina/docker_factorio_server) - Version update
|
* [jaredledvina](https://github.com/jaredledvina/docker_factorio_server) - Version update
|
||||||
|
Reference in New Issue
Block a user