Compare commits

..

99 Commits

Author SHA1 Message Date
ec17a32638 updated readme for 0.12.32 2016-04-29 15:56:19 -07:00
15da4f79f5 updated version and sha1 for 0.12.32 2016-04-29 15:51:47 -07:00
68e8a5f25c Merge branch 'master' of https://github.com/zopanix/docker_factorio_server into dt_0.12.31 2016-04-29 15:48:27 -07:00
b658982c93 Merge pull request #6 from dtandersen/0.12.31_update
updated to 0.12.31
2016-04-27 13:18:07 +02:00
1d3fc75d20 updated imagelayers.io badge url 2016-04-26 15:05:59 -07:00
a4a482ee91 updated dockerfile links 2016-04-26 15:01:32 -07:00
eafe7c08be Merge branch '0.12.31_update' into dt_develop
# Conflicts:
#	Dockerfile
#	README.md
2016-04-26 14:44:56 -07:00
9acfe47d16 updated to 0.12.31 2016-04-26 14:26:18 -07:00
b47b20e834 Revert "Set version to 0.12.29"
This reverts commit 7e0718a332.
2016-04-26 13:51:29 +02:00
7e0718a332 Set version to 0.12.29 2016-04-26 13:48:32 +02:00
ae327add0b Set Version to 0.12.30 2016-04-24 14:14:19 +02:00
efb5eb7afc Set Version to 0.12.29 2016-04-24 14:13:51 +02:00
ec1c4f9455 Set Version to 0.12.28 2016-04-24 14:13:35 +02:00
edf8035ae3 Set Version to 0.12.27 2016-04-24 14:13:14 +02:00
25b41c9f22 Set Version to 0.12.25 2016-04-24 14:12:44 +02:00
228339ec31 Set Version to 0.12.25 2016-04-24 14:12:17 +02:00
755c106b7b Set Version to 0.12.24 2016-04-24 14:11:45 +02:00
f1f76e9ae0 Trying to fix with alpine 2016-04-24 14:06:44 +02:00
26f053451c Fixing some things 2016-04-24 13:42:15 +02:00
c439634ef1 Fixed typo 2016-04-24 13:36:37 +02:00
cc33c84d86 Set version back to 0.12.30 2016-04-24 12:56:23 +02:00
8806ca2160 Set version to 0.12.29 2016-04-24 12:55:53 +02:00
83bf5c4a11 Remove sha1sum 2016-04-24 12:54:12 +02:00
30859d57b8 Added feature alpine with ssl verification and sha1 verification of the image 2016-04-24 12:45:15 +02:00
3e9f74eaac Merge branch 'alpine' 2016-04-14 23:04:50 -07:00
14bbd68a3b how to see logs 2016-04-14 22:54:17 -07:00
d4052bc790 formatted the word dockerfile as code 2016-04-14 22:50:29 -07:00
2fc2b7656d reformat docs 2016-04-14 22:48:52 -07:00
199f6c7f59 added versions to top 2016-04-14 22:45:25 -07:00
d614babc54 added fancy bagde 2016-04-14 22:41:33 -07:00
257e1751c2 added description of factorio 2016-04-14 22:37:25 -07:00
e8e5047490 Merge pull request #4 from dtandersen/autopausetypo2
Fixed spelling of FACTORIO
2016-04-15 07:37:17 +02:00
d089b02941 point to dtandersen repo 2016-04-14 22:23:36 -07:00
6fe77c30da Merge branch 'readme' 2016-04-14 22:14:12 -07:00
a97763a0e1 re-enabled SSL security 2016-04-14 22:06:32 -07:00
602881a0d9 added CA root; removed domain cert 2016-04-14 22:05:59 -07:00
b56ab27e52 factorio ssl cert 2016-04-14 17:55:35 -07:00
5edbcd9055 try using alpine images 2016-04-14 17:55:24 -07:00
059a77574e Corrected a typo.
Merge branch 'autopausetypo2'

# Conflicts:
#	Dockerfile
2016-04-14 16:08:37 -07:00
c1488c61be corrected a typo 2016-04-14 16:04:06 -07:00
fb0d7d955b Moved factorio link to the top 2016-04-14 16:02:34 -07:00
a34b260d15 combined ENVs to reduce layer count 2016-04-14 15:20:14 -07:00
5d5cb71a90 verify SHA1 checksum 2016-04-14 15:03:35 -07:00
ad9c5c37dc fixed spelling of FACTORIO 2016-04-14 14:36:34 -07:00
63a9eb14d2 Merge pull request #2 from guyspronck/master
Updated version to 0.12.30
2016-04-07 10:23:16 +02:00
76eddb14f8 Updated Version number in README 2016-04-06 12:17:42 +02:00
24bd934d98 Updated version in Dockerfile 2016-04-06 12:16:26 +02:00
9c873ac907 Added some env variables to make it more clear 2016-03-28 09:14:53 +02:00
c44a3d1faf Add a todo 2016-03-27 20:52:16 +02:00
926a377146 Removed todo as it is done 2016-03-27 19:25:16 +02:00
52bb117a2b Fixed typo in variable 2016-03-27 19:17:39 +02:00
04c4a6b577 Fixed typo 2016-03-27 19:15:05 +02:00
39c27944be Added no auto pause feature 2016-03-27 19:10:33 +02:00
ba9faac10e Fixed if statement in options 2016-03-27 18:55:08 +02:00
c987fe8769 Fixed small typo 2016-03-27 18:45:29 +02:00
606b537b13 Added dissalow_commands feature 2016-03-27 18:39:55 +02:00
9473de8934 Refactor Dockerfile 2016-03-27 09:02:10 +02:00
6b00a3fc32 Fixed readme 2016-03-27 08:57:43 +02:00
34a99ec43e Fixed readme 2016-03-27 08:56:09 +02:00
2caf5345c2 Gave readme better readebility 2016-03-27 08:50:17 +02:00
8a68a162fe Add a todo 2016-03-27 08:23:46 +02:00
96a6f66445 Fixed typo in dockerfile 2016-03-26 18:52:56 +01:00
e5c351dd14 Added mods feature and refactored readme 2016-03-26 18:45:31 +01:00
eedff789a5 Made a small fix on autosave features 2016-03-26 18:04:55 +01:00
20fcec5783 Fixed minor errors 2016-03-26 15:25:32 +01:00
2bfa89fea1 Added autosave feature 2016-03-26 10:49:27 +01:00
ee99e7d469 corrected readme 2016-03-26 10:23:21 +01:00
817844352d Added text in readme 2016-03-24 10:35:28 +01:00
abd518de79 Added a link in readme 2016-03-24 10:30:17 +01:00
98337ac18f Corrected small typo 2016-03-24 10:00:34 +01:00
2bd0d475eb Added feature to take latest save 2016-03-24 09:43:21 +01:00
2d9d8e17b8 Added current version 2016-03-24 09:42:04 +01:00
48c22aa707 Set version in readme 2016-03-24 08:39:16 +01:00
97feb7acb5 Set version to 0.12.29 2016-03-24 08:26:28 +01:00
5ee0f8d06a Set version to 0.12.28 2016-03-23 09:12:59 +01:00
7230263559 Set factorio in 0.1.27 2016-03-21 11:00:04 +01:00
6f65ae8acc Changed from ubuntu to debian so it would be lighter 2016-03-10 17:44:11 +01:00
2fae0bdb22 Changed readme 2016-03-10 11:35:35 +01:00
4f10d32d7b Made some minor correction on dockerfile 2016-03-10 11:01:15 +01:00
61e3941a5a Changed readme 2016-03-10 10:23:22 +01:00
777cac4849 Set factorio at 0.12.26 2016-03-06 17:48:32 +01:00
9a35472d8a Looking to loose some weight 2016-03-05 14:13:05 +01:00
5b3d17117f Enriched readme 2016-03-04 15:50:01 +01:00
234eea09f0 Fixed typo in dockerfile 2016-03-04 15:28:03 +01:00
c5e0b6b3b5 Removed unsued command 2016-03-04 15:25:20 +01:00
df19b88ba0 Removed unsused command 2016-03-04 15:23:17 +01:00
0a39c756a5 Fixed tar issues and apt issues 2016-03-04 15:21:09 +01:00
0cab74d578 Fixing tar issues 2016-03-04 15:15:28 +01:00
23c26f83ae Fixing tar issues 2016-03-04 14:36:44 +01:00
3de6931817 Fixing some issues with tar 2016-03-04 14:35:05 +01:00
7a370c11e0 Skipped certif verification 2016-03-04 14:29:43 +01:00
1a09531600 Added full path to docker file 2016-03-04 14:21:38 +01:00
ea57f58c3b Get server from site and removed some files 2016-03-04 13:35:29 +01:00
5eb71608de Testing docker build 2016-02-29 11:34:01 +01:00
51398ca509 Fixed typo 2016-02-26 15:03:32 +01:00
16dc9c9da2 Removed unused layer 2016-02-26 15:00:46 +01:00
e30bf8d656 Added dynamic creation of map only if needed 2016-02-26 14:59:01 +01:00
3cd89b6870 Set factorio to 0.12.24 2016-02-26 11:30:02 +01:00
f33bfadd47 Initial commit 2016-02-26 11:09:47 +01:00
20 changed files with 164 additions and 453 deletions

View File

@ -1,28 +0,0 @@
FROM frolvlad/alpine-glibc:alpine-3.4
MAINTAINER https://github.com/dtandersen/docker_factorio_server
COPY ./factorio.crt /opt/factorio.crt
ENV VERSION=0.13.20 \
SHA1=59ed0edb3f62f0f41a01fc291959b0a8b44cf631
RUN apk --no-cache add curl tini pwgen && \
curl -sSL --cacert /opt/factorio.crt \
https://www.factorio.com/get-download/$VERSION/headless/linux64 \
-o /tmp/factorio_headless_x64_$VERSION.tar.gz && \
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -c && \
tar xzf /tmp/factorio_headless_x64_$VERSION.tar.gz --directory /opt && \
rm /tmp/factorio_headless_x64_$VERSION.tar.gz && \
apk del curl && \
ln -s /factorio/saves /opt/factorio/saves && \
ln -s /factorio/mods /opt/factorio/mods
VOLUME /factorio
EXPOSE 34197/udp 27015/tcp
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/docker-entrypoint.sh"]

View File

@ -1 +0,0 @@
sudo docker build -t dtandersen/factorio:0.13-dev .

View File

@ -1 +0,0 @@
sudo rm -rf /tmp/factorio

View File

@ -1,35 +0,0 @@
#!/bin/sh -x
set -e
SAVES=/factorio/saves
CONFIG=/factorio/config
mkdir -p $SAVES
mkdir -p /factorio/mods
mkdir -p $CONFIG
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 ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
/opt/factorio/bin/x64/factorio \
--create $SAVES/_autosave1.zip \
--map-gen-settings $CONFIG/map-gen-settings.json
fi
exec /opt/factorio/bin/x64/factorio \
--port 34197 \
--start-server-load-latest \
--server-settings $CONFIG/server-settings.json \
--rcon-port 27015 \
--rcon-password "$(cat $CONFIG/rconpw)"

View File

@ -1,5 +0,0 @@
sudo docker run --rm -it \
-v /tmp/factorio:/factorio \
--name factorio \
dtandersen/factorio:0.13-dev "$@"
find /tmp/factorio -type f

View File

@ -1,26 +0,0 @@
FROM frolvlad/alpine-glibc:alpine-3.4
MAINTAINER https://github.com/dtandersen/docker_factorio_server
ENV VERSION=0.14.23 \
SHA1=6ef84341c6fc1cf45cfdd6acc8468aaa117b9e8a
RUN mkdir /opt && \
apk --no-cache add curl tini pwgen && \
curl -sSL https://www.factorio.com/get-download/$VERSION/headless/linux64 \
-o /tmp/factorio_headless_x64_$VERSION.tar.gz && \
echo "$SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -c && \
tar xzf /tmp/factorio_headless_x64_$VERSION.tar.gz --directory /opt && \
rm /tmp/factorio_headless_x64_$VERSION.tar.gz && \
apk del curl && \
ln -s /factorio/saves /opt/factorio/saves && \
ln -s /factorio/mods /opt/factorio/mods
VOLUME /factorio
EXPOSE 34197/udp 27015/tcp
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/docker-entrypoint.sh"]

View File

@ -1 +0,0 @@
sudo docker build --no-cache -t factorio .

View File

@ -1 +0,0 @@
sudo rm -rf /tmp/factorio

View File

@ -1,35 +0,0 @@
#!/bin/sh -x
set -e
SAVES=/factorio/saves
CONFIG=/factorio/config
mkdir -p $SAVES
mkdir -p /factorio/mods
mkdir -p $CONFIG
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 ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
/opt/factorio/bin/x64/factorio \
--create $SAVES/_autosave1.zip \
--map-gen-settings $CONFIG/map-gen-settings.json
fi
exec /opt/factorio/bin/x64/factorio \
--port 34197 \
--start-server-load-latest \
--server-settings $CONFIG/server-settings.json \
--rcon-port 27015 \
--rcon-password "$(cat $CONFIG/rconpw)"

View File

@ -1,5 +0,0 @@
sudo docker run --rm -it \
-v /tmp/factorio:/factorio \
--name factorio \
factorio "$@"
find /tmp/factorio -type f

View File

@ -1,30 +0,0 @@
FROM frolvlad/alpine-glibc:alpine-3.6
MAINTAINER https://github.com/dtandersen/docker_factorio_server
ENV PORT=34197 \
RCON_PORT=27015 \
VERSION=0.15.40 \
SHA1=f79a975f6b8c0ee87e2fa60f7d1f7133f332c3ec
RUN mkdir /opt && \
apk add --update --no-cache tini pwgen && \
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 -R ugo=rwx /opt/factorio && \
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \
ln -s /factorio/saves /opt/factorio/saves && \
ln -s /factorio/mods /opt/factorio/mods && \
apk del .build-deps
VOLUME /factorio
EXPOSE $PORT/udp $RCON_PORT/tcp
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/docker-entrypoint.sh"]

View File

@ -1,8 +0,0 @@
version: '2'
services:
factorio:
build: .
ports:
- "34197:34197"
volumes:
- /tmp/factorio:/factorio

View File

@ -1,43 +0,0 @@
#!/bin/sh -x
set -e
SAVES=/factorio/saves
CONFIG=/factorio/config
mkdir -p $SAVES
mkdir -p /factorio/mods
mkdir -p $CONFIG
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
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
/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 /opt/factorio/bin/x64/factorio \
--port $PORT \
--start-server-load-latest \
--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

View File

@ -1,49 +0,0 @@
FROM frolvlad/alpine-glibc:alpine-3.6
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.16.1 \
SHA1=1247cdb57b8146896f1972c60911fe45119c384b
VOLUME /factorio
RUN mkdir -p /opt && \
apk add --update --no-cache pwgen && \
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 -R ugo=rwx /opt/factorio && \
rm /tmp/factorio_headless_x64_$VERSION.tar.xz && \
ln -s /factorio/saves /opt/factorio/saves && \
ln -s /factorio/mods /opt/factorio/mods && \
apk del .build-deps && \
addgroup -g $PGID -S $GROUP && \
adduser -u $PUID -G $USER -s /bin/sh -SDH $GROUP && \
chown -R $USER:$GROUP /opt/factorio /factorio
EXPOSE $PORT/udp $RCON_PORT/tcp
COPY ./docker-entrypoint.sh /
USER $USER
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["/opt/factorio/bin/x64/factorio", \
"--port", "$PORT", \
"--start-server-load-latest", \
"--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" \
]

View File

@ -1,9 +0,0 @@
version: '2'
services:
factorio:
build: .
ports:
- "34197:34197"
volumes:
- /opt/factorio:/factorio
user: 1000:1000

View File

@ -1,48 +0,0 @@
#!/bin/sh -x
set -e
id
SAVES=/factorio/saves
CONFIG=/factorio/config
mkdir -p $SAVES
mkdir -p /factorio/mods
mkdir -p $CONFIG
#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
if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then
/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 "$@"
exec /opt/factorio/bin/x64/factorio \
--port $PORT \
--start-server-load-latest \
--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

28
Dockerfile Normal file
View File

@ -0,0 +1,28 @@
FROM frolvlad/alpine-glibc:alpine-3.3_glibc-2.23
MAINTAINER zopanix <zopanix@gmail.com>
WORKDIR /opt
COPY ./smart_launch.sh /opt
COPY ./factorio.crt /opt
VOLUME /opt/factorio/saves /opt/factorio/mods
ENV FACTORIO_AUTOSAVE_INTERVAL=2 \
FACTORIO_AUTOSAVE_SLOTS=3 \
FACTORIO_DISSALOW_COMMANDS=true \
FACTORIO_NO_AUTO_PAUSE=false \
VERSION=0.12.32 \
FACTORIO_SHA1=ce3ebfd819ae335f71f1ac68dbd6b1962bbd1df0
RUN apk --update add bash curl && \
curl -sSL --cacert /opt/factorio.crt https://www.factorio.com/get-download/$VERSION/headless/linux64 -o /tmp/factorio_headless_x64_$VERSION.tar.gz && \
echo "$FACTORIO_SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -c && \
tar xzf /tmp/factorio_headless_x64_$VERSION.tar.gz && \
rm /tmp/factorio_headless_x64_$VERSION.tar.gz
EXPOSE 34197/udp
CMD ["./smart_launch.sh"]

221
README.md
View File

@ -1,18 +1,10 @@
# Factorio [![](https://images.microbadger.com/badges/image/dtandersen/factorio.svg)](https://microbadger.com/images/dtandersen/factorio "Get your own image badge on microbadger.com") [![Docker Pulls](https://img.shields.io/docker/pulls/dtandersen/factorio.svg)](https://hub.docker.com/r/dtandersen/factorio/) [![Docker Stars](https://img.shields.io/docker/stars/dtandersen/factorio.svg)](https://hub.docker.com/r/dtandersen/factorio/)
# Supported tags and respective `Dockerfile` links
* `0.16.1`, `0.16`, `latest` [(0.16/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.16/Dockerfile)
* `0.15.40`, `0.15`, `stable` [(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.13.20`, `0.13` [(0.13/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.13/Dockerfile)
*Tag descriptions*
* `latest` - highest version: may be experimental.
* `stable` - highest version declared stable.
* `0.x` - highest version in a branch: may be experimental.
* `0.x.y` - a specific version.
* `0.x-dev` - whatever is in master for that version.
* `0.12.32`, `latest` [(0.12.32/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/dt_0.12.32/Dockerfile)
* `0.12.31` [(0.12.31/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/dt_0.12.31/Dockerfile)
* `0.12.30` [(0.12.30/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/dt_0.12.30/Dockerfile)
[![](https://imagelayers.io/badge/dtandersen/factorio:latest.svg)](https://imagelayers.io/?images=dtandersen/factorio:latest 'Get your own badge on imagelayers.io')
# What is Factorio?
@ -22,164 +14,137 @@ You will be mining resources, researching technologies, building infrastructure,
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.
NOTE: This is only the server. The game is available at [factorio.com](https://www.factorio.com) and [Steam](http://store.steampowered.com/app/427520/).
NOTE: This is only the server. The game is available on [Steam](http://store.steampowered.com/app/427520/).
# Features
# Usage
* Automatically takes latest save or autosave when restarting the container.
* Volumes for saves and mods
* Set autosave interval and number of saves.
* Enable/disable the no-auto-pause option.
* Enable/disable console commands in game.
* Based on Alpine Linux.
# How to use this image?
## Quick Start
Run the server to create the necessary folder structure and configuration files. For this example data is stored in `/tmp/factorio`.
This runs factorio with default settings, and your save will be kept:
```
docker run -d -p 34197:34197/udp -p 27015:27015/tcp \
-v /tmp/factorio:/factorio \
--name factorio \
--restart=always \
docker run -d \
-v [PATH]:/opt/factorio/saves \
-p [PORT]:34197/udp \
dtandersen/factorio
```
For those new to Docker, here is an explanation of the options:
* Where [PATH] is a folder where you'll put your saves, if there already is a save in it with the string "save", that one will be taken by default, otherwize, a new one will be made.
* Where [PORT] is the port number you choose, if you're going to launch it on your local machine, don't use the port 34197, take another one at random.
* `-d` - Run as a daemon ("detached").
* `-p` - Expose ports.
* `-v` - Mount `/tmp/factorio` on the local file system to `/factorio` in the container.
* `--restart` - Restart the server if it crashes and at system start
* `--name` - Name the container "factorio" (otherwise it has a funny random name).
## Advanced usage
Check the logs to see what happened:
### Without map persistence
This will generate a new random map with default settings.
```
docker logs factorio
docker run -d \
-p [PORT]:34197/udp \
dtandersen/factorio
```
Stop the server:
### With map persistence
This will generate a new random map with default settings and save it onto the volume.
Replace [PATH] with a path to a folder on the host where the map will be saved.
```
docker stop factorio
docker run -d \
-v [PATH]:/opt/factorio/saves \
-p [PORT]:34197/udp \
dtandersen/factorio
```
Now there's a `server-settings.json` file in the folder `/tmp/factorio/config`. Modify this to your liking and restart the server:
### With existing map
It's the same as above, it takes the last modified file which contains the word save in the filename as current save when booting the server. This allows when upgrading the container to take the last save, you don't have to rename the last autosave as save.zip
```
docker start factorio
docker run -d \
-v [PATH]:/opt/factorio/saves \
-p [PORT]:34197/udp \
dtandersen/factorio
```
Try to connect to the server. Check the logs if it isn't working.
### Autosave interval
You can set the autosave interval. By default it is set at 2 minutes bud you can change it by launching the container with the `FACTORIO_AUTOSAVE_INTERVAL` variable to whatever suits you best.
## Console
```
docker run -d \
--env FACTORIO_AUTOSAVE_INTERVAL=[NUMBER] \
-p [PORT]:34197/udp \
dtandersen/factorio
```
To issue console commands to the server, start the server in interactive mode with `-it`. Open the console with `docker attach` and then type commands.
Where [NUMBER] is the number of minutes between autosaves.
docker run -d -it \
--name factorio \
dtandersen/factorio
docker attach factorio
### Autosave slots
You can set the number of autosave slots. By default it is set at 3 slots bud you can change it by launching the container with the `FACTORIO_AUTOSAVE_SLOTS` variable to whatever suits you best.
## Upgrading
```
docker run -d \
--env FACTORIO_AUTOSAVE_SLOTS=[NUMBER] \
-p [PORT]:34197/udp \
dtandersen/factorio
```
Before upgrading backup the save. It's easy to make a save in the client.
Where [NUMBER] is the number of autosave slots.
Ensure `-v` was used to run the server so the save is outside of the Docker container. The `docker rm` command completely destroys the container, which includes the save if it isn't stored in an data volume.
### Mounting mod volume
Delete the container and refresh the image:
As everybody knows about factorio is you can add mods to it. Now you can also do it in this docker image by mounting a volume.
docker stop factorio
docker rm factorio
docker pull dtandersen/factorio
```
docker run -d \
-v [PATH]:/opt/factorio/mods \
-p [PORT]:34197/udp \
dtandersen/factorio
```
Now run the server as before. In about a minute the new version of Factorio should be up and running, complete with saves and config!
Where [PATH] is the path to the folder with your mods.
### Allowing in-game commands
## Saves
I've always disabled in-game commands because I think it is like cheating, however, you can enable them by setting the the `FACTORIO_DISSALOW_COMMANDS` variable to "false".
A new map named `_autosave1.zip` is generated the first time the server is started. The `map-gen-settings.json` and `map-settings.json` files in `/tmp/factorio/config` are used for the map settings. On subsequent runs the newest save is used.
```
docker run -d \
--env FACTORIO_DISSALOW_COMMANDS=false \
-p [PORT]:34197/udp \
dtandersen/factorio
```
To load an old save stop the server and run the command `touch oldsave.zip`. This resets the date. Then restart the server. Another option is to delete all saves except one.
### Activating no-auto-pause in the game when no one is on the server
To generate a new map stop the server, delete all of the saves and restart the server.
I do not recommend this feature, bud it can make the game more difficult if you're up for a challenge :-). Just set the `FACTORIO_NO_AUTO_PAUSE` variable to "true".
```
docker run -d \
--env FACTORIO_NO_AUTO_PAUSE=true \
-p [PORT]:34197/udp \
dtandersen/factorio
```
## Mods
### Logs
Copy mods into the mods folder and restart the server.
Sometimes it's useful to see the logs of a running container:
```
docker exec -it [CONTAINER] tail -f /opt/factorio/factorio-current.log
```
## RCON
# Credits
Set the RCON password in the `rconpw` file. A random password is generated if `rconpw` doesn't exist.
To change the password, stop the server, modify `rconpw`, and restart the server.
To "disable" RCON don't expose port 27015, i.e. start the server without `-p 27015:27015/tcp`. RCON is still running, but nobody can to connect to it.
## Whitelisting (0.15.3+)
Create file `config/server-whitelist.json` and add the whitelisted users.
[
"you",
"friend"
]
# Container Details
The philosophy is to [keep it simple](http://wiki.c2.com/?KeepItSimple).
* The server should bootstrap itself.
* Prefer configuration files over environment variables.
* Use one volume for data.
## Volumes
To keep things simple, the container uses a single volume mounted at `/factorio`. This volume stores configuration, mods, and saves.
factorio
|-- config
| |-- map-gen-settings.json
| |-- rconpw
| |-- server-settings.json
| `-- server-whitelist.json
|-- mods
| `-- fancymod.zip
`-- saves
`-- _autosave1.zip
## Ports
* `34197/udp` - Game server (required).
* `27015/tcp` - RCON (optional).
## Environment Variables
* `PORT` (0.15+) - Start the server on an alterate port, .e.g. `docker run -e "PORT=34198"`.
## Troubleshooting
**My server is listed in the server browser, but nobody can connect**
Check the logs. If there is the line `Own address is RIGHT IP:WRONG PORT`, then this could be caused by the Docker proxy. If the the IP and port is correct it's probably a port forwarding or firewall issue instead.
By default, Docker routes traffic through a proxy. The proxy changes the source UDP port, so the wrong port is detected. See the forum post *[Incorrect port detected for docker hosted server](https://forums.factorio.com/viewtopic.php?f=49&t=35255)* for details.
To fix the incorrect port, start the Docker service with the `--userland-proxy=false` switch. Docker will route traffic with iptables rules instead of a proxy. Add the switch to the `DOCKER_OPTS` environment variable or `ExecStart` in the Docker systemd service definition. The specifics vary by operating system.
**When I run a server on a port besides 34197 nobody can connect from the server browser**
Use the `PORT` environment variable to start the server on the a different port, .e.g. `docker run -e "PORT=34198"`. This changes the source port on the packets used for port detection. `-p 34198:34197` works fine for private servers, but the server browser detects the wrong port.
# Contributors
* [dtandersen](https://github.com/dtandersen/docker_factorio_server) - Maintainer
* [Zopanix](https://github.com/zopanix/docker_factorio_server) - Originator
* [Rfvgyhn](https://github.com/Rfvgyhn/docker-factorio) - Randomly generate RCON password
* [gnomus](https://github.com/gnomus/docker_factorio_server) - White listing
* [jaredledvina](https://github.com/jaredledvina/docker_factorio_server) - Version update
Based on [Zopanix' Factorio Server](https://github.com/zopanix/docker_factorio_server).

43
smart_launch.sh Executable file
View File

@ -0,0 +1,43 @@
#!/bin/bash
if [ -f /opt/factorio/saves/save.zip ]
then
echo "###"
echo "# Using existing map [save.zip]"
echo "###"
echo "###"
echo "# Finding latest map"
echo "###"
last_save=$(ls /opt/factorio/saves -lt | grep save |head -1 |awk '{print $(NF)}')
else
echo "###"
echo "# Creating a new map [save.zip]"
echo "###"
/opt/factorio/bin/x64/factorio --create save.zip
last_save="save.zip"
echo "###"
echo "# New map created [save.zip]"
echo "###"
fi
# Checking options
if [ "$FACTORIO_DISSALOW_COMMANDS" == false ]; then
disallow_commands=""
else
disallow_commands="--disallow-commands"
fi
if [ "$FACTORIO_NO_AUTO_PAUSE" == true ]; then
no_auto_pause="--no-auto-pause"
else
no_auto_pause=""
fi
echo "###"
echo "# Launching Game"
echo "###"
exec /opt/factorio/bin/x64/factorio \
$disallow_commands \
$no_auto_pause \
--autosave-interval ${FACTORIO_AUTOSAVE_INTERVAL} \
--autosave-slots ${FACTORIO_AUTOSAVE_SLOTS} \
--start-server \
$last_save