Compare commits

...

95 Commits

Author SHA1 Message Date
d90f45bd41 Merge pull request #195 from DBendit/0.17.4
0.17.4
2019-03-01 11:41:12 -08:00
2b201fea5b 0.17.4 2019-03-01 13:06:08 -06:00
b0a64e5939 minor text changes 2019-03-01 08:43:50 -08:00
ef24dad0bf Merge pull request #194 from DBendit/readme
Reorganizing volume listing to include map-settings and proper ordering
2019-02-28 14:01:13 -08:00
69a52f2c19 Reorganizing volume listing to include map-settings and proper ordering 2019-02-28 13:45:51 -06:00
902ad53bd3 Merge pull request #193 from DBendit/0.17.3
0.17.3
2019-02-28 11:36:06 -08:00
bd2af80a52 0.17.3 2019-02-28 13:26:18 -06:00
de9fb52d48 minor text changes 2019-02-28 09:35:29 -08:00
c0157e19ee added binutils 2019-02-28 17:33:30 +00:00
8e7bca222a generate map as factorio user 2019-02-27 19:45:13 +00:00
3e7c79ab74 update readme 2019-02-27 11:11:36 -08:00
979326ebf6 Merge pull request #189 from DBendit/fix-mapgen
Mapgen example fixed in 0.17.2
2019-02-27 11:10:11 -08:00
d5ac333364 make sure /opt/factorio/temp exists 2019-02-27 19:09:35 +00:00
e941e9a2c8 Mapgen example fixed in 0.17.2 2019-02-27 13:06:47 -06:00
6fece0c9e3 Merge pull request #188 from DBendit/0.17.2
0.17.2
2019-02-27 10:27:22 -08:00
10d000408c take ownership of /opt/factorio/temp 2019-02-27 18:25:54 +00:00
d59fd0844a 0.17.2 2019-02-27 12:23:11 -06:00
324920cdf8 don't run su-exec if container starts as non-root 2019-02-27 16:30:46 +00:00
2c88f5e982 Merge pull request #185 from DBendit/master
Adding support for 0.17's new banlist and adminlist options
2019-02-26 20:02:24 -08:00
26cec3ae93 Adding banlist support 2019-02-26 19:30:47 -06:00
7897de5080 Adding support for adminlist 2019-02-26 19:26:59 -06:00
b474afc1b7 tag description update 2019-02-26 14:51:16 -08:00
795ec7dc55 0.17.1 2019-02-26 14:34:54 -08:00
03f171e34c updated tag descriptions 2019-02-26 14:32:32 -08:00
313faf6fa5 0.17 tags 2019-02-26 14:19:35 -08:00
17109c97c1 removed unused USER directive 2019-02-26 14:18:43 -08:00
e62f5e799a updated docker tag for 0.17 2019-02-26 14:08:37 -08:00
47a7b8312f Merge pull request #183 from notgne2/master
workaround 0.17 issues (fix #181 and #182)
2019-02-26 13:26:44 -08:00
3cdf39d04b Merge branch '0.17-debug' into master 2019-02-26 21:19:14 +00:00
b840e86d21 use su-exec instead of gosu; don't use example map settings 2019-02-26 21:13:05 +00:00
a9047cae58 workaround 0.17 issues 2019-02-26 14:12:51 -07:00
bf128afdb4 debugging branch 2019-02-26 19:55:45 +00:00
f5ffae1cb4 make scripts executable 2019-02-26 19:44:26 +00:00
31b6768882 updated sha1 for 0.17.0 2019-02-26 19:24:59 +00:00
41eca9edf6 correct case on Dockerfile 2019-02-26 19:22:53 +00:00
86169c9dad add files to 0.17 2019-02-26 11:11:21 -08:00
f36e58058b update sha1 for 0.17.0 2019-02-26 11:09:08 -08:00
1a12761739 Merge pull request #178 from nexusmaniac/patch-1
Create 0.17 dockerfile
2019-02-26 11:03:14 -08:00
7f43739481 Create 0.17 dockerfile
Updated to Alpine 3.9 & added preliminary support for the 0.17 headless binary (once released) 💥
2019-02-26 17:31:14 +00:00
33e33a4db7 update to 0.16.51 2018-06-15 12:42:59 +00:00
2d54d50951 update to 0.16.50 2018-06-11 15:32:59 +00:00
86c8270d99 update to 0.16.49 2018-06-08 11:52:59 +00:00
5109bc1b40 update to 0.16.48 2018-06-07 17:33:00 +00:00
5e36f8bad8 update to 0.16.47 2018-05-31 07:47:59 +00:00
d1258008c1 Added catch all to allow custom options for factorio (#169) 2018-05-30 20:37:46 +02:00
275faa1fcc update to 0.16.46 2018-05-29 14:03:01 +00:00
87cf6c051a Fixed wrong checksum 2018-05-23 09:41:09 +02:00
3d8cdfcc1d update to 0.16.45 2018-05-22 20:07:47 +00:00
d3ef74b10d update to 0.16.43 (#162) 2018-05-16 18:03:52 +02:00
b41aad4dc6 update to 0.16.42 (#161) 2018-05-11 18:48:47 +02:00
24ac45dbce Merge pull request #157 from afex/master
Expose script-output to mounted volume
2018-05-04 12:19:56 -07:00
8286ab58ac update to 0.16.41 (#159) 2018-05-03 21:22:40 +02:00
c2d8509aa8 update to 0.16.40 (#158) 2018-05-03 00:53:14 +02:00
b94db83033 setup script-output directory 2018-05-02 12:45:11 -07:00
cc23bb396e expose script-output to volume 2018-05-02 12:44:34 -07:00
1b2fdb298f update to 0.16.39 (#156) 2018-04-30 20:00:30 +02:00
ab277975ae Merge pull request #153 from dtandersen/update-0.16.38
Updated to version 0.16.38
2018-04-26 11:45:23 -07:00
80d8866242 update to 0.16.38 2018-04-26 15:24:39 +00:00
4ec18b2d15 Merge pull request #152 from dtandersen/update-0.16.37
Updated to version 0.16.37
2018-04-23 10:57:13 -07:00
93a3011cd3 update to 0.16.37 2018-04-23 17:44:49 +00:00
15cacdc3da 0.16 is stable 2018-03-29 09:44:34 -07:00
927bcb89a0 Merge pull request #150 from dtandersen/update-0.16.36
Updated to version 0.16.36
2018-03-28 09:40:26 -07:00
4ceff25fc2 update to 0.16.36 2018-03-28 12:54:40 +00:00
5d072db9cc update to 0.16.35 (#149) 2018-03-24 14:37:57 +01:00
216b225681 update to 0.16.34 (#148) 2018-03-23 13:42:54 +01:00
18f3943eaf Merge pull request #146 from dtandersen/update-0.16.33
Updated to version 0.16.33
2018-03-22 10:24:01 -07:00
2725534b2b update to 0.16.33 2018-03-22 17:04:41 +00:00
df35d57455 Merge pull request #145 from dtandersen/update-0.16.32
Updated to version 0.16.32
2018-03-20 08:20:37 -07:00
9adc8ce4bc update to 0.16.32 2018-03-20 12:54:39 +00:00
6272bb0018 update to 0.16.31 (#144) 2018-03-19 20:37:39 +01:00
a989b500b0 moved entrypoints to files directory 2018-03-19 17:28:40 +00:00
66bef56cd2 moved entry points to /; dont put hard link in place of entrypoint folder 2018-03-19 16:58:53 +00:00
10f891cabf don't need to create these 2018-03-14 13:16:23 -07:00
9a7f01f8bf Merge pull request #142 from yukienterprises/temp-save-removal
Remove temp (invalid) saves on container start
2018-03-14 07:56:50 -07:00
877219f9c9 Remove temp (invalid) saves on container start 2018-03-14 23:13:43 +11:00
843bcbff21 update to 0.16.30 (#140) 2018-03-12 23:35:36 +01:00
a7786f03ed updated maintainers 2018-03-12 10:33:05 -07:00
754663df49 Merge pull request #139 from dtandersen/scenario2
Scenario tweaks
2018-03-12 10:00:12 -07:00
9ac04bcff8 moved env to Dockerfile so they can be shared 2018-03-12 16:54:17 +00:00
66d4652302 moved volume creation back as per PR#101; create symlink once 2018-03-12 09:38:40 -07:00
5ddb9ab472 Merge pull request #115 from bplein/master
Add Scenarios Folder, Alternate Entrypoints Folder
2018-03-12 09:29:15 -07:00
9e72f0509a Merge pull request #138 from dtandersen/update-0.16.29
Updated to version 0.16.29
2018-03-12 09:22:49 -07:00
914b12adf4 update to 0.16.29 2018-03-12 16:15:23 +00:00
dc3c040d7c another symlink bug 2018-03-10 17:17:16 -06:00
6a9a596cd8 fix syntax on symlink 2018-03-10 17:11:47 -06:00
eb22dac840 force symlinks 2018-03-10 17:08:09 -06:00
b48bb4c134 Merge branch 'master' of https://github.com/dtandersen/docker_factorio_server 2018-03-09 14:45:36 -06:00
cf5af1aae1 Merge pull request #137 from dtandersen/update-0.16.28
Updated to version 0.16.28
2018-03-05 12:25:24 -08:00
d7f0fe16d7 update to 0.16.28 2018-03-05 18:09:43 +00:00
27c1426109 Merged in dtandersen/factorio changes 2018-03-02 15:40:08 -06:00
a86ac6cafe Merge remote-tracking branch 'upstream/master'
Updating to catch up with upstream
2018-03-02 15:36:31 -06:00
70e08f10f3 update to 0.16.27 (#136) 2018-02-28 19:40:35 +01:00
14fb9ecf35 Typo in Dockerfile 2018-01-16 18:24:35 -06:00
ffef5899e9 Updated Dockerfile to copy in example entrypoints 2018-01-16 18:03:13 -06:00
4449e13675 Added creation and symlinking of scenarios directory, creation and symlinking of an entrypoints directory for custom entrypoints, and two examples of using entrypoints with scenarios 2018-01-16 17:59:28 -06:00
10 changed files with 361 additions and 25 deletions

View File

@ -9,8 +9,13 @@ ARG PGID=845
ENV PORT=34197 \
RCON_PORT=27015 \
VERSION=0.16.26 \
SHA1=caba0f66f4e9a0ac509eedd361c3ea5935b76e98
VERSION=0.16.51 \
SHA1=127e7ff484ab263b13615d6114013ce0a66ac929 \
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 && \
@ -21,8 +26,10 @@ RUN mkdir -p /opt /factorio && \
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 /factorio/saves /opt/factorio/saves && \
ln -s /factorio/mods /opt/factorio/mods && \
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 && \
@ -32,7 +39,7 @@ VOLUME /factorio
EXPOSE $PORT/udp $RCON_PORT/tcp
COPY ./docker-entrypoint.sh /
COPY files/ /
USER $USER

View File

@ -1,17 +1,13 @@
#!/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
mkdir -p $MODS
mkdir -p $SCENARIOS
mkdir -p $SCRIPTOUTPUT
if [ ! -f $CONFIG/rconpw ]; then
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
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
/opt/factorio/bin/x64/factorio \
--create $SAVES/_autosave1.zip \
@ -44,4 +44,5 @@ exec /opt/factorio/bin/x64/factorio \
--server-banlist $CONFIG/server-banlist.json \
--rcon-port $RCON_PORT \
--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
View 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
View 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
View 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.4 \
SHA1=30a7387e0450ecda8a48a9b56b18058c3f8a9f69 \
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 && \
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
View 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

68
0.17/files/docker-entrypoint.sh Executable file
View File

@ -0,0 +1,68 @@
#!/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
echo "{}" > $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 \
--server-banlist $CONFIG/server-banlist.json \
--rcon-password "$(cat $CONFIG/rconpw)" \
--server-id /factorio/config/server-id.json \
"$@"

44
0.17/files/scenario.sh Executable file
View 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
View 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

View File

@ -1,15 +1,16 @@
# 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/)
* `0.16.26`, `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.17.4`, `0.17`, `latest` [(0.17/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/0.17/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.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.
* `latest` - most up-to-date version (may be experimental).
* `stable` - version declared stable on [factorio.com](https://www.factorio.com).
* `0.x` - latest version in a branch.
* `0.x.y` - a specific version.
* `0.x-dev` - whatever is in master for that version.
@ -39,7 +40,7 @@ sudo docker run -d \
-p 27015:27015/tcp \
-v /opt/factorio:/factorio \
--name factorio \
--restart=always \
--restart=always \
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.
## 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
Set the RCON password in the `rconpw` file. A random password is generated if `rconpw` doesn't exist.
@ -131,6 +164,24 @@ Create file `config/server-whitelist.json` and add the whitelisted users.
"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"
]
# Container Details
The philosophy is to [keep it simple](http://wiki.c2.com/?KeepItSimple).
@ -144,10 +195,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.
The files in this volume should be owned by the factorio user, uid 845.
factorio
|-- config
| |-- map-gen-settings.json
| |-- map-settings.json
| |-- rconpw
| |-- server-adminlist.json
| |-- server-banlist.json
| |-- server-settings.json
| `-- server-whitelist.json
|-- mods
@ -155,7 +211,6 @@ To keep things simple, the container uses a single volume mounted at `/factorio`
`-- saves
`-- _autosave1.zip
## Docker Compose
[Docker Compose](https://docs.docker.com/compose/install/) is an easy way to run Docker containers.
@ -227,17 +282,17 @@ sudo docker run -d \
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 "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
**My server is listed in the server browser, but nobody can connect**
@ -256,7 +311,9 @@ Use the `PORT` environment variable to start the server on the a different port,
# Contributors
* [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.
* [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
* [bplein](https://github.com/bplein/docker_factorio_server) - Scenario support
* [jaredledvina](https://github.com/jaredledvina/docker_factorio_server) - Version update