From 8049134ed582b90133182caca319d3aaee373be1 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 14:11:05 -0700 Subject: [PATCH 01/34] verify SHA1 checksum --- Dockerfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 485b830..072736a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,11 +22,16 @@ ENV FACTORIO_DISSALOW_COMMANDS true ENV FACOTIO_NO_AUTO_PAUSE false +ENV VERSION=0.12.30 +ENV FACTORIO_SHA1="77d92ecc52989f3283462fd5c9b5ba07eb6081cc" + RUN echo "# Installing curl" && \ apt-get update && \ apt-get install -y curl && \ echo "# Downloading and unzipping factorio" && \ - curl -L -k https://www.factorio.com/get-download/0.12.30/headless/linux64 | tar -xzf - && \ + curl -L -k 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 && \ echo "# Cleaning" && \ apt-get remove -y --purge curl && \ apt-get autoremove -y --purge && \ From 323718b631461bebfa1f38b18781d0725ee3de75 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 15:20:14 -0700 Subject: [PATCH 02/34] combined ENVs to reduce layer count --- Dockerfile | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 072736a..0272071 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,16 +14,12 @@ VOLUME "/opt/factorio/saves" VOLUME "/opt/factorio/mods" -ENV FACTORIO_AUTOSAVE_INTERVAL 2 - -ENV FACTORIO_AUTOSAVE_SLOTS 3 - -ENV FACTORIO_DISSALOW_COMMANDS true - -ENV FACOTIO_NO_AUTO_PAUSE false - -ENV VERSION=0.12.30 -ENV FACTORIO_SHA1="77d92ecc52989f3283462fd5c9b5ba07eb6081cc" +ENV FACTORIO_AUTOSAVE_INTERVAL=2 \ + FACTORIO_AUTOSAVE_SLOTS=3 \ + FACTORIO_DISSALOW_COMMANDS=true \ + FACTORIO_NO_AUTO_PAUSE=false \ + VERSION=0.12.30 \ + FACTORIO_SHA1="77d92ecc52989f3283462fd5c9b5ba07eb6081cc" RUN echo "# Installing curl" && \ apt-get update && \ From 327fd1c9253fe97d0bcf1a0382eb2c14cafb9d99 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 16:02:34 -0700 Subject: [PATCH 03/34] Moved factorio link to the top --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 01bd04a..f901e4b 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,12 @@ Factorio ===== -Factorio Server in docker +A Docker image for the headless [Factorio](http://www.factorio.com) server. Current Version ----- 0.12.30 + ### What's new ? -#### Factorio -See [factorio's site](http://www.factorio.com) -#### Docker image * Added possibility to add the no-auto-pause option * Added possibility to allow commands in game * Automatically takes latest save or autosave. when restarting the container. From 8f6446f088565ccb195c49520fbdc08cd0443416 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 17:55:24 -0700 Subject: [PATCH 04/34] try using alpine images --- Dockerfile | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index 0272071..010de5b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:latest +FROM frolvlad/alpine-glibc:alpine-3.3_glibc-2.23 MAINTAINER zopanix @@ -6,30 +6,23 @@ WORKDIR /opt COPY ./smart_launch.sh /opt -CMD ["./smart_launch.sh"] - -EXPOSE 34197/udp - -VOLUME "/opt/factorio/saves" - -VOLUME "/opt/factorio/mods" +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.30 \ - FACTORIO_SHA1="77d92ecc52989f3283462fd5c9b5ba07eb6081cc" + FACTORIO_SHA1=77d92ecc52989f3283462fd5c9b5ba07eb6081cc -RUN echo "# Installing curl" && \ - apt-get update && \ - apt-get install -y curl && \ - echo "# Downloading and unzipping factorio" && \ +RUN apk --update add bash curl && \ curl -L -k 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 - && \ + ls -al /tmp && \ + sha1sum -b /tmp/factorio_headless_x64_$VERSION.tar.gz && \ + echo "$FACTORIO_SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -b -c && \ tar xzf /tmp/factorio_headless_x64_$VERSION.tar.gz && \ - echo "# Cleaning" && \ - apt-get remove -y --purge curl && \ - apt-get autoremove -y --purge && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + rm /tmp/factorio_headless_x64_$VERSION.tar.gz + +EXPOSE 34197/udp + +CMD ["./smart_launch.sh"] From 16959ea374d35b3e8d4322567e246262227b7f84 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 17:55:35 -0700 Subject: [PATCH 05/34] factorio ssl cert --- factorio.crt | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 factorio.crt diff --git a/factorio.crt b/factorio.crt new file mode 100644 index 0000000..e4525dc --- /dev/null +++ b/factorio.crt @@ -0,0 +1,98 @@ +-----BEGIN CERTIFICATE----- +MIIFUzCCBDugAwIBAgIRAM0lAXnqiIwRxaRxtw5IQLEwDQYJKoZIhvcNAQELBQAw +gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYD +VQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIg +Q0EwHhcNMTYwNDExMDAwMDAwWhcNMTcwNTI1MjM1OTU5WjBcMSEwHwYDVQQLExhE +b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxHjAcBgNVBAsTFUVzc2VudGlhbFNTTCBX +aWxkY2FyZDEXMBUGA1UEAwwOKi5mYWN0b3Jpby5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCy08rHFOfP9sHaQvfwcBMcPAf7LlzyYOVjIh0eG79m +uznOykPo6C+BpUlABo5UBvrMhkjinaDoXqYtWAODjSuwnj6tllwsSoGcOTU+Rw0R +nTqTqaVHMGJ6hx1VUF/iUuDIxZdcwjC2M3n0xv7AwHKg3ivGxiS62B72+XgKfsVU +Q4XiAcVqocqr3B04rWPqH+TEp6c4uLyBZwiwMUipGK6FCzvhZYf4H42TC21293hw +x0xGx58kS4l404dEva2P/V8hxvA1TNDU8upFbf+6N0XkqTZPLhUvEdhBEdmCORUa +QTpp7eiEsYWNeMeiEeb+n0gn993dGxA/CzkJYkcOLKptAgMBAAGjggHZMIIB1TAf +BgNVHSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUChOBWzrS +51DbGHNSHs4E1lsVWB4wDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYD +VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGy +MQECAgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9D +UFMwCAYGZ4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2Rv +Y2EuY29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5j +cmwwgYUGCCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21v +ZG9jYS5jb20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNB +LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMCcGA1Ud +EQQgMB6CDiouZmFjdG9yaW8uY29tggxmYWN0b3Jpby5jb20wDQYJKoZIhvcNAQEL +BQADggEBAE+OOhuy0VIDuqD2mnJj2hySi8I3GcCp7aZkuqx/EACop9MBKkSa5oay +XZEzmmaLhpvLFULtwmvVpAEhbVpf+B3HZZ2rrhbW3WhUVMrIHPFT+sgDLPy6fNO6 +7gep0X97tpbTpXT29V8g1WTiDNeuMWEhplfJx2q65CmeRdZOMRJrkivZrkofjmOy +GcrehfI1xXTZ/mE1DNWnYsLbM8+V9doeM+xgg48z8xJ8F6q5JTLcmv8fISqzbERV +8+tPkffn29pXLq18c/23cfEQZCWPB/SMh9BTfmDgVAprQ3iyYOsxw0Ga9LzLQydY +S4oG0jnVW1AoqAJfBluwGcCZ7iNzuC8= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB +hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV +BAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQwMjEy +MDAwMDAwWhcNMjkwMjExMjM1OTU5WjCBkDELMAkGA1UEBhMCR0IxGzAZBgNVBAgT +EkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxNjA0BgNVBAMTLUNPTU9ETyBSU0EgRG9tYWluIFZh +bGlkYXRpb24gU2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAI7CAhnhoFmk6zg1jSz9AdDTScBkxwtiBUUWOqigwAwCfx3M28Sh +bXcDow+G+eMGnD4LgYqbSRutA776S9uMIO3Vzl5ljj4Nr0zCsLdFXlIvNN5IJGS0 +Qa4Al/e+Z96e0HqnU4A7fK31llVvl0cKfIWLIpeNs4TgllfQcBhglo/uLQeTnaG6 +ytHNe+nEKpooIZFNb5JPJaXyejXdJtxGpdCsWTWM/06RQ1A/WZMebFEh7lgUq/51 +UHg+TLAchhP6a5i84DuUHoVS3AOTJBhuyydRReZw3iVDpA3hSqXttn7IzW3uLh0n +c13cRTCAquOyQQuvvUSH2rnlG51/ruWFgqUCAwEAAaOCAWUwggFhMB8GA1UdIwQY +MBaAFLuvfgI9+qbxPISOre44mOzZMjLUMB0GA1UdDgQWBBSQr2o6lFoL2JDqElZz +30O0Oija5zAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNV +HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgG +BmeBDAECATBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2NhLmNv +bS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcB +AQRlMGMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9E +T1JTQUFkZFRydXN0Q0EuY3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21v +ZG9jYS5jb20wDQYJKoZIhvcNAQEMBQADggIBAE4rdk+SHGI2ibp3wScF9BzWRJ2p +mj6q1WZmAT7qSeaiNbz69t2Vjpk1mA42GHWx3d1Qcnyu3HeIzg/3kCDKo2cuH1Z/ +e+FE6kKVxF0NAVBGFfKBiVlsit2M8RKhjTpCipj4SzR7JzsItG8kO3KdY3RYPBps +P0/HEZrIqPW1N+8QRcZs2eBelSaz662jue5/DJpmNXMyYE7l3YphLG5SEXdoltMY +dVEVABt0iN3hxzgEQyjpFv3ZBdRdRydg1vs4O2xyopT4Qhrf7W8GjEXCBgCq5Ojc +2bXhc3js9iPc0d1sjhqPpepUfJa3w/5Vjo1JXvxku88+vZbrac2/4EjxYoIQ5QxG +V/Iz2tDIY+3GH5QFlkoakdH368+PUq4NCNk+qKBR6cGHdNXJ93SrLlP7u3r7l+L4 +HyaPs9Kg4DdbKDsx5Q5XLVq4rXmsXiBmGqW5prU5wfWYQ//u+aen/e7KJD2AFsQX +j4rBYKEMrltDR5FL1ZoXX/nUh8HCjLfn4g8wGTeGrODcQgPmlKidrv0PJFGUzpII +0fxQ8ANAe4hZ7Q7drNJ3gjTcBpUC2JD5Leo31Rpg0Gcg19hCC0Wvgmje3WYkN5Ap +lBlGGSW4gNfL1IYoakRwJiNiqZ+Gb7+6kHDSVneFeO/qJakXzlByjAA6quPbYzSf ++AZxAeKCINT+b72x +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFdDCCBFygAwIBAgIQJ2buVutJ846r13Ci/ITeIjANBgkqhkiG9w0BAQwFADBv +MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk +ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF +eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow +gYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO +BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD +VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkq +hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkehUktIKVrGsDSTdxc9EZ3SZKzejfSNw +AHG8U9/E+ioSj0t/EFa9n3Byt2F/yUsPF6c947AEYe7/EZfH9IY+Cvo+XPmT5jR6 +2RRr55yzhaCCenavcZDX7P0N+pxs+t+wgvQUfvm+xKYvT3+Zf7X8Z0NyvQwA1onr +ayzT7Y+YHBSrfuXjbvzYqOSSJNpDa2K4Vf3qwbxstovzDo2a5JtsaZn4eEgwRdWt +4Q08RWD8MpZRJ7xnw8outmvqRsfHIKCxH2XeSAi6pE6p8oNGN4Tr6MyBSENnTnIq +m1y9TBsoilwie7SrmNnu4FGDwwlGTm0+mfqVF9p8M1dBPI1R7Qu2XK8sYxrfV8g/ +vOldxJuvRZnio1oktLqpVj3Pb6r/SVi+8Kj/9Lit6Tf7urj0Czr56ENCHonYhMsT +8dm74YlguIwoVqwUHZwK53Hrzw7dPamWoUi9PPevtQ0iTMARgexWO/bTouJbt7IE +IlKVgJNp6I5MZfGRAy1wdALqi2cVKWlSArvX31BqVUa/oKMoYX9w0MOiqiwhqkfO +KJwGRXa/ghgntNWutMtQ5mv0TIZxMOmm3xaG4Nj/QN370EKIf6MzOi5cHkERgWPO +GHFrK+ymircxXDpqR+DDeVnWIBqv8mqYqnK8V0rSS527EPywTEHl7R09XiidnMy/ +s1Hap0flhFMCAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTvA73g +JMtUGjAdBgNVHQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQD +AgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9 +MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4dGVy +bmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6 +Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAGS/g/FfmoXQ +zbihKVcN6Fr30ek+8nYEbvFScLsePP9NDXRqzIGCJdPDoCpdTPW6i6FtxFQJdcfj +Jw5dhHk3QBN39bSsHNA7qxcS1u80GH4r6XnTq1dFDK8o+tDb5VCViLvfhVdpfZLY +Uspzgb8c8+a4bmYRBbMelC1/kZWSWfFMzqORcUx8Rww7Cxn2obFshj5cqsQugsv5 +B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx +PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR +pu/xO28QOG8= +-----END CERTIFICATE----- From c535246dac63ee06659db4231fb9650c1adfdaef Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:05:59 -0700 Subject: [PATCH 06/34] added CA root; removed domain cert --- factorio.crt | 56 +++++++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/factorio.crt b/factorio.crt index e4525dc..67de129 100644 --- a/factorio.crt +++ b/factorio.crt @@ -1,35 +1,4 @@ -----BEGIN CERTIFICATE----- -MIIFUzCCBDugAwIBAgIRAM0lAXnqiIwRxaRxtw5IQLEwDQYJKoZIhvcNAQELBQAw -gZAxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO -BgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMTYwNAYD -VQQDEy1DT01PRE8gUlNBIERvbWFpbiBWYWxpZGF0aW9uIFNlY3VyZSBTZXJ2ZXIg -Q0EwHhcNMTYwNDExMDAwMDAwWhcNMTcwNTI1MjM1OTU5WjBcMSEwHwYDVQQLExhE -b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxHjAcBgNVBAsTFUVzc2VudGlhbFNTTCBX -aWxkY2FyZDEXMBUGA1UEAwwOKi5mYWN0b3Jpby5jb20wggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQCy08rHFOfP9sHaQvfwcBMcPAf7LlzyYOVjIh0eG79m -uznOykPo6C+BpUlABo5UBvrMhkjinaDoXqYtWAODjSuwnj6tllwsSoGcOTU+Rw0R -nTqTqaVHMGJ6hx1VUF/iUuDIxZdcwjC2M3n0xv7AwHKg3ivGxiS62B72+XgKfsVU -Q4XiAcVqocqr3B04rWPqH+TEp6c4uLyBZwiwMUipGK6FCzvhZYf4H42TC21293hw -x0xGx58kS4l404dEva2P/V8hxvA1TNDU8upFbf+6N0XkqTZPLhUvEdhBEdmCORUa -QTpp7eiEsYWNeMeiEeb+n0gn993dGxA/CzkJYkcOLKptAgMBAAGjggHZMIIB1TAf -BgNVHSMEGDAWgBSQr2o6lFoL2JDqElZz30O0Oija5zAdBgNVHQ4EFgQUChOBWzrS -51DbGHNSHs4E1lsVWB4wDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYD -VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCME8GA1UdIARIMEYwOgYLKwYBBAGy -MQECAgcwKzApBggrBgEFBQcCARYdaHR0cHM6Ly9zZWN1cmUuY29tb2RvLmNvbS9D -UFMwCAYGZ4EMAQIBMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly9jcmwuY29tb2Rv -Y2EuY29tL0NPTU9ET1JTQURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5j -cmwwgYUGCCsGAQUFBwEBBHkwdzBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5jb21v -ZG9jYS5jb20vQ09NT0RPUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNB -LmNydDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMCcGA1Ud -EQQgMB6CDiouZmFjdG9yaW8uY29tggxmYWN0b3Jpby5jb20wDQYJKoZIhvcNAQEL -BQADggEBAE+OOhuy0VIDuqD2mnJj2hySi8I3GcCp7aZkuqx/EACop9MBKkSa5oay -XZEzmmaLhpvLFULtwmvVpAEhbVpf+B3HZZ2rrhbW3WhUVMrIHPFT+sgDLPy6fNO6 -7gep0X97tpbTpXT29V8g1WTiDNeuMWEhplfJx2q65CmeRdZOMRJrkivZrkofjmOy -GcrehfI1xXTZ/mE1DNWnYsLbM8+V9doeM+xgg48z8xJ8F6q5JTLcmv8fISqzbERV -8+tPkffn29pXLq18c/23cfEQZCWPB/SMh9BTfmDgVAprQ3iyYOsxw0Ga9LzLQydY -S4oG0jnVW1AoqAJfBluwGcCZ7iNzuC8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- MIIGCDCCA/CgAwIBAgIQKy5u6tl1NmwUim7bo3yMBzANBgkqhkiG9w0BAQwFADCB hTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNV @@ -96,3 +65,28 @@ B5a6SE2Q8pTIqXOi6wZ7I53eovNNVZ96YUWYGGjHXkBrI/V5eu+MtWuLt29G9Hvx PUsE2JOAWVrgQSQdso8VYFhH2+9uRv0V9dlfmrPb2LjkQLPNlzmuhbsdjrzch5vR pu/xO28QOG8= -----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU +MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs +IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 +MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h +bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v +dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt +H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 +uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX +mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX +a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN +E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 +WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD +VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 +Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU +cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx +IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN +AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH +YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC +Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX +c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a +mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- From 7d5e58d4a032600003f67afe967dcf5e21877e22 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:06:32 -0700 Subject: [PATCH 07/34] re-enabled SSL security --- Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 010de5b..f1da84c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,6 +5,7 @@ MAINTAINER zopanix WORKDIR /opt COPY ./smart_launch.sh /opt +COPY ./factorio.crt /opt VOLUME /opt/factorio/saves /opt/factorio/mods @@ -16,10 +17,8 @@ ENV FACTORIO_AUTOSAVE_INTERVAL=2 \ FACTORIO_SHA1=77d92ecc52989f3283462fd5c9b5ba07eb6081cc RUN apk --update add bash curl && \ - curl -L -k https://www.factorio.com/get-download/$VERSION/headless/linux64 -o /tmp/factorio_headless_x64_$VERSION.tar.gz && \ - ls -al /tmp && \ - sha1sum -b /tmp/factorio_headless_x64_$VERSION.tar.gz && \ - echo "$FACTORIO_SHA1 /tmp/factorio_headless_x64_$VERSION.tar.gz" | sha1sum -b -c && \ + 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 From fd4ed925b2b6a1ae6d1f35c067692eb1a535ea12 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:23:36 -0700 Subject: [PATCH 08/34] point to dtandersen repo --- README.md | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 9663d9e..0db4945 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,21 @@ Factorio ===== -A Docker image for the headless [Factorio](http://www.factorio.com) server. +An Alpine based Docker image for the headless [Factorio](http://www.factorio.com) server. Current Version ----- 0.12.30 -### What's new ? -* Added possibility to add the no-auto-pause option -* Added possibility to allow commands in game -* Automatically takes latest save or autosave. when restarting the container. -* Added possibility to change default autosave interval -* Added possibility to change default autosave slots -* Added possibility to mount a mod volume to have your mods in your multiplayer session +### Features +* 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. Versions ----- -I'm keeping the image up to date. If you need to use an older version, checkout out the different [tags](https://hub.docker.com/r/zopanix/factorio/tags/). +If you need to use an older version, checkout out the different [tags](https://hub.docker.com/r/dtandersen/factorio/tags/). How to use ? ----- @@ -26,7 +25,7 @@ This runs factorio with default settings, and your save will be kept : docker run -d \ -v [PATH]:/opt/factorio/saves \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` * 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. @@ -36,7 +35,7 @@ docker run -d \ ``` docker run -d \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` This will generate a new random map with default settings. #### With map persistence @@ -44,7 +43,7 @@ This will generate a new random map with default settings. docker run -d \ -v [PATH]:/opt/factorio/saves \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` 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. @@ -53,7 +52,7 @@ Replace [PATH] with a path to a folder on the host where the map will be saved. docker run -d \ -v [PATH]:/opt/factorio/saves \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` 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 #### Autosave interval @@ -62,7 +61,7 @@ You can set the autosave interval. By default it is set at 2 minutes bud you can docker run -d \ --env FACTORIO_AUTOSAVE_INTERVAL=[NUMBER] \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` Where [NUMBER] is the number of minutes between autosaves. #### Autosave slots @@ -71,7 +70,7 @@ You can set the number of autosave slots. By default it is set at 3 slots bud yo docker run -d \ --env FACTORIO_AUTOSAVE_SLOTS=[NUMBER] \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` Where [NUMBER] is the number of autosave slots. #### Mounting mod volume @@ -80,7 +79,7 @@ As everybody knows about factorio is you can add mods to it. Now you can also do docker run -d \ -v [PATH]:/opt/factorio/mods \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` Where [PATH] is the path to the folder with your mods. #### Allowing in-game commands @@ -89,7 +88,7 @@ I've always disabled in-game commands because I think it is like cheating, howev docker run -d \ --env FACTORIO_DISSALOW_COMMANDS=false \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` #### Activating no-auto-pause in the game when no one is on 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". @@ -97,7 +96,9 @@ I do not recommend this feature, bud it can make the game more difficult if you' docker run -d \ --env FACTORIO_NO_AUTO_PAUSE=true \ -p [PORT]:34197/udp \ - zopanix/factorio + dtandersen/factorio ``` -### ToDo's -* Add cutom savename for people with a lot of saves + +### Credits + +Based on [Zopanix' Factorio Server](https://github.com/zopanix/docker_factorio_server). From e1e8ff07e672394ffb978e9de90d37c068b98712 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:37:25 -0700 Subject: [PATCH 09/34] added description of factorio --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0db4945..cf57256 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,12 @@ -Factorio +What is Factorio? ===== -An Alpine based Docker image for the headless [Factorio](http://www.factorio.com) server. +[Factorio](https://www.factorio.com) 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 finally 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. + +NOTE: This is only the server. The game is available on [Steam](http://store.steampowered.com/app/427520/). Current Version ----- @@ -12,12 +18,13 @@ Current Version * Set autosave interval and number of saves. * Enable/disable the no-auto-pause option. * Enable/disable console commands in game. +* Based on Alpine Linux. Versions ----- If you need to use an older version, checkout out the different [tags](https://hub.docker.com/r/dtandersen/factorio/tags/). -How to use ? +How to use this image? ----- ### I just want to play ! This runs factorio with default settings, and your save will be kept : From b6d1748deb6852e0c3985b234f62662c2941871e Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:41:33 -0700 Subject: [PATCH 10/34] added fancy bagde --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cf57256..beea63f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![](https://badge.imagelayers.io/dtandersen/factorio:latest.svg)](https://imagelayers.io/?images=dtandersen/factorio:latest 'Get your own badge on imagelayers.io') + What is Factorio? ===== [Factorio](https://www.factorio.com) is a game in which you build and maintain factories. From dcac7d0c46977b532d6fd7a0b0bd84f08c1c9059 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:45:25 -0700 Subject: [PATCH 11/34] added versions to top --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index beea63f..88e184b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# Supported tags and respective Dockerfile links + +* `0.12.30`, `latest` [(0.12.30/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/Dockerfile) + [![](https://badge.imagelayers.io/dtandersen/factorio:latest.svg)](https://imagelayers.io/?images=dtandersen/factorio:latest 'Get your own badge on imagelayers.io') What is Factorio? From c8af86eaef67e21933097e2b5f84519c41f28423 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:48:52 -0700 Subject: [PATCH 12/34] reformat docs --- README.md | 66 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 88e184b..33d91f5 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ [![](https://badge.imagelayers.io/dtandersen/factorio:latest.svg)](https://imagelayers.io/?images=dtandersen/factorio:latest 'Get your own badge on imagelayers.io') -What is Factorio? -===== +# What is Factorio? + [Factorio](https://www.factorio.com) 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 finally protect it from the creatures who don't really like you. @@ -14,11 +14,7 @@ The game is very stable and optimized for building massive factories. You can cr NOTE: This is only the server. The game is available on [Steam](http://store.steampowered.com/app/427520/). -Current Version ------ -0.12.30 - -### Features +# Features * Automatically takes latest save or autosave when restarting the container. * Volumes for saves and mods * Set autosave interval and number of saves. @@ -26,14 +22,12 @@ Current Version * Enable/disable console commands in game. * Based on Alpine Linux. -Versions ------ -If you need to use an older version, checkout out the different [tags](https://hub.docker.com/r/dtandersen/factorio/tags/). +# How to use this image? + +## Quick Start + +This runs factorio with default settings, and your save will be kept: -How to use this image? ------ -### I just want to play ! -This runs factorio with default settings, and your save will be kept : ``` docker run -d \ -v [PATH]:/opt/factorio/saves \ @@ -43,15 +37,19 @@ docker run -d \ * 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. -### Advanced usage -#### Without map persistence +## Advanced usage + +### Without map persistence + ``` docker run -d \ -p [PORT]:34197/udp \ dtandersen/factorio ``` This will generate a new random map with default settings. -#### With map persistence + +### With map persistence + ``` docker run -d \ -v [PATH]:/opt/factorio/saves \ @@ -60,7 +58,9 @@ docker run -d \ ``` 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. -#### With existing map + +### With existing map + ``` docker run -d \ -v [PATH]:/opt/factorio/saves \ @@ -68,8 +68,10 @@ docker run -d \ dtandersen/factorio ``` 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 -#### 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. + +### 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. ``` docker run -d \ --env FACTORIO_AUTOSAVE_INTERVAL=[NUMBER] \ @@ -77,8 +79,10 @@ docker run -d \ dtandersen/factorio ``` Where [NUMBER] is the number of minutes between autosaves. -#### 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. + +### 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. ``` docker run -d \ --env FACTORIO_AUTOSAVE_SLOTS=[NUMBER] \ @@ -86,7 +90,9 @@ docker run -d \ dtandersen/factorio ``` Where [NUMBER] is the number of autosave slots. -#### Mounting mod volume + +### Mounting mod volume + 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 run -d \ @@ -95,16 +101,20 @@ docker run -d \ dtandersen/factorio ``` Where [PATH] is the path to the folder with your mods. -#### Allowing in-game commands -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". + +### Allowing in-game commands + +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". ``` docker run -d \ --env FACTORIO_DISSALOW_COMMANDS=false \ -p [PORT]:34197/udp \ dtandersen/factorio ``` -#### Activating no-auto-pause in the game when no one is on 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". + +### Activating no-auto-pause in the game when no one is on 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 \ @@ -112,6 +122,6 @@ docker run -d \ dtandersen/factorio ``` -### Credits +# Credits Based on [Zopanix' Factorio Server](https://github.com/zopanix/docker_factorio_server). From f17e77388593a5da72c794c9b47ffc9532d7fe75 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:50:29 -0700 Subject: [PATCH 13/34] formatted the word dockerfile as code --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33d91f5..a821d81 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Supported tags and respective Dockerfile links +# Supported tags and respective `Dockerfile` links * `0.12.30`, `latest` [(0.12.30/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/master/Dockerfile) From 70e936c7e359749fbba91a1355fc3a6c99f24312 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Thu, 14 Apr 2016 22:54:17 -0700 Subject: [PATCH 14/34] how to see logs --- README.md | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a821d81..0f8efa3 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ The game is very stable and optimized for building massive factories. You can cr NOTE: This is only the server. The game is available on [Steam](http://store.steampowered.com/app/427520/). # Features + * Automatically takes latest save or autosave when restarting the container. * Volumes for saves and mods * Set autosave interval and number of saves. @@ -34,6 +35,7 @@ docker run -d \ -p [PORT]:34197/udp \ dtandersen/factorio ``` + * 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. @@ -41,70 +43,80 @@ docker run -d \ ### Without map persistence +This will generate a new random map with default settings. + ``` docker run -d \ -p [PORT]:34197/udp \ dtandersen/factorio ``` -This will generate a new random map with default settings. ### With map persistence -``` -docker run -d \ - -v [PATH]:/opt/factorio/saves \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` 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 run -d \ + -v [PATH]:/opt/factorio/saves \ + -p [PORT]:34197/udp \ + dtandersen/factorio +``` + ### 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 run -d \ -v [PATH]:/opt/factorio/saves \ -p [PORT]:34197/udp \ dtandersen/factorio ``` -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 ### 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. + ``` docker run -d \ --env FACTORIO_AUTOSAVE_INTERVAL=[NUMBER] \ -p [PORT]:34197/udp \ dtandersen/factorio ``` + Where [NUMBER] is the number of minutes between autosaves. ### 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. + ``` docker run -d \ --env FACTORIO_AUTOSAVE_SLOTS=[NUMBER] \ -p [PORT]:34197/udp \ dtandersen/factorio ``` + Where [NUMBER] is the number of autosave slots. ### Mounting mod volume 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 run -d \ -v [PATH]:/opt/factorio/mods \ -p [PORT]:34197/udp \ dtandersen/factorio ``` + Where [PATH] is the path to the folder with your mods. ### Allowing in-game commands 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". + ``` docker run -d \ --env FACTORIO_DISSALOW_COMMANDS=false \ @@ -115,6 +127,7 @@ docker run -d \ ### Activating no-auto-pause in the game when no one is on 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 \ @@ -122,6 +135,14 @@ docker run -d \ dtandersen/factorio ``` +### Logs + +Sometimes it's useful to see the logs of a running container: + +``` +docker exec -it [CONTAINER] tail -f /opt/factorio/factorio-current.log +``` + # Credits Based on [Zopanix' Factorio Server](https://github.com/zopanix/docker_factorio_server). From 14d1af4d9ea7afc112b1b15a67bf985aefe55f9d Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 26 Apr 2016 15:01:32 -0700 Subject: [PATCH 15/34] updated dockerfile links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3612835..9046569 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Supported tags and respective `Dockerfile` links -* `0.12.31`, `latest` [(0.12.31/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/dt_develop/Dockerfile) -* `0.12.30` [(0.12.30/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/dt_develop/Dockerfile) +* `0.12.31`, `latest` [(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://badge.imagelayers.io/dtandersen/factorio:latest.svg)](https://imagelayers.io/?images=dtandersen/factorio:latest 'Get your own badge on imagelayers.io') From a28d8315aa2b3d6f414fbdfaaeb69c8ad2dc505b Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 26 Apr 2016 15:05:59 -0700 Subject: [PATCH 16/34] updated imagelayers.io badge url --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9046569..e6b1b91 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ * `0.12.31`, `latest` [(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://badge.imagelayers.io/dtandersen/factorio:latest.svg)](https://imagelayers.io/?images=dtandersen/factorio:latest 'Get your own badge on imagelayers.io') +[![](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? From a2179f3f6169bdfb23b05d76aabd1e4070df7cbf Mon Sep 17 00:00:00 2001 From: David Andersen Date: Fri, 29 Apr 2016 15:51:47 -0700 Subject: [PATCH 17/34] updated version and sha1 for 0.12.32 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index e4ab4c3..db32806 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,8 +13,8 @@ ENV FACTORIO_AUTOSAVE_INTERVAL=2 \ FACTORIO_AUTOSAVE_SLOTS=3 \ FACTORIO_DISSALOW_COMMANDS=true \ FACTORIO_NO_AUTO_PAUSE=false \ - VERSION=0.12.31 \ - FACTORIO_SHA1=2b225302bcea95d541da9057f05acc3d27b0fe79 + 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 && \ From f7c2b144cec7d49d8dac4651d45a6d65ba7fc2b7 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Fri, 29 Apr 2016 15:56:19 -0700 Subject: [PATCH 18/34] updated readme for 0.12.32 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e6b1b91..2b80cbf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Supported tags and respective `Dockerfile` links -* `0.12.31`, `latest` [(0.12.31/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/dt_0.12.31/Dockerfile) +* `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') From be4c89d937213b54d2cd75ee1080e13eab6c55d3 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 15:51:34 +0000 Subject: [PATCH 19/34] updated to 0.14.14 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index db32806..1e2a151 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,8 +13,8 @@ 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 + VERSION=0.14.14 \ + FACTORIO_SHA1=decd1ef34a75b309791e65bc92b164f10479753b 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 && \ From 65658b10d6fe957d8c0a83b1b5ab0451a6678b90 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 16:49:23 +0000 Subject: [PATCH 20/34] use server-settings.json for settings --- Dockerfile | 27 ++++++++++++--------------- smart_launch.sh | 42 +++++++----------------------------------- 2 files changed, 19 insertions(+), 50 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1e2a151..de7c061 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,25 @@ FROM frolvlad/alpine-glibc:alpine-3.3_glibc-2.23 -MAINTAINER zopanix +MAINTAINER https://github.com/dtandersen/docker_factorio_server -WORKDIR /opt +#WORKDIR /opt -COPY ./smart_launch.sh /opt -COPY ./factorio.crt /opt +COPY ./factorio.crt /opt/factorio.crt -VOLUME /opt/factorio/saves /opt/factorio/mods +EXPOSE 34197/udp 27015/tcp -ENV FACTORIO_AUTOSAVE_INTERVAL=2 \ - FACTORIO_AUTOSAVE_SLOTS=3 \ - FACTORIO_DISSALOW_COMMANDS=true \ - FACTORIO_NO_AUTO_PAUSE=false \ - VERSION=0.14.14 \ - FACTORIO_SHA1=decd1ef34a75b309791e65bc92b164f10479753b + +ENV VERSION=0.14.14 \ + SHA1=decd1ef34a75b309791e65bc92b164f10479753b 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 && \ + 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 +VOLUME /opt/factorio/saves /opt/factorio/mods -EXPOSE 34197/udp +COPY ./smart_launch.sh /opt -CMD ["./smart_launch.sh"] +CMD ["/opt/smart_launch.sh"] diff --git a/smart_launch.sh b/smart_launch.sh index dac61f8..8ddb057 100755 --- a/smart_launch.sh +++ b/smart_launch.sh @@ -1,43 +1,15 @@ -#!/bin/bash +#!/bin/bash -x -if [ -f /opt/factorio/saves/save.zip ] +SAVES=/opt/factorio/saves + +if [ -f $SAVES/*.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)}') + last_save=$(ls $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 "###" + /opt/factorio/bin/x64/factorio --create $SAVES/$last_save 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 + $SAVES/$last_save From 2d798546973296989c406ffb4e43732e724e0c36 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 16:58:54 +0000 Subject: [PATCH 21/34] update readme --- README.md | 112 +++++++----------------------------------------------- 1 file changed, 14 insertions(+), 98 deletions(-) diff --git a/README.md b/README.md index 2b80cbf..a01557c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Supported tags and respective `Dockerfile` links +* `0.14.14` [(0.14.14/Dockerfile)](https://github.com/dtandersen/docker_factorio_server/blob/0.14.14/Dockerfile) * `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) @@ -29,113 +30,28 @@ NOTE: This is only the server. The game is available on [Steam](http://store.ste ## Quick Start -This runs factorio with default settings, and your save will be kept: +Create ```server-config.json``` and modify it to your liking. Now run: ``` -docker run -d \ - -v [PATH]:/opt/factorio/saves \ - -p [PORT]:34197/udp \ +docker run -d -P \ + -v /path/to/server-config.json:/opt/factorio/data/server-config.json \ + -v /path/to/saves:/opt/factorio/saves \ + -v /path/to/mods:/opt/factorio/mods \ dtandersen/factorio ``` -* 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. +The server should start and create ```/path/to/saves/save.zip```. This save is used when the server is restarted. -## Advanced usage +## Volumes -### Without map persistence +* /opt/factorio/saves - save files +* /opt/factorio/mods - save files +* /opt/factorio/data/server-config.json - config file -This will generate a new random map with default settings. +## Ports -``` -docker run -d \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -### 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 run -d \ - -v [PATH]:/opt/factorio/saves \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -### 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 run -d \ - -v [PATH]:/opt/factorio/saves \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -### 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. - -``` -docker run -d \ - --env FACTORIO_AUTOSAVE_INTERVAL=[NUMBER] \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -Where [NUMBER] is the number of minutes between autosaves. - -### 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. - -``` -docker run -d \ - --env FACTORIO_AUTOSAVE_SLOTS=[NUMBER] \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -Where [NUMBER] is the number of autosave slots. - -### Mounting mod volume - -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 run -d \ - -v [PATH]:/opt/factorio/mods \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -Where [PATH] is the path to the folder with your mods. - -### Allowing in-game commands - -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". - -``` -docker run -d \ - --env FACTORIO_DISSALOW_COMMANDS=false \ - -p [PORT]:34197/udp \ - dtandersen/factorio -``` - -### Activating no-auto-pause in the game when no one is on 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 -``` +* 34197/udp - game data +* 27015/tcp - rcon ### Logs From 14b11329d7ea43854147a3a4a6ccd383d81e9174 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 17:03:50 +0000 Subject: [PATCH 22/34] updated readme --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a01557c..bd87450 100644 --- a/README.md +++ b/README.md @@ -37,9 +37,12 @@ docker run -d -P \ -v /path/to/server-config.json:/opt/factorio/data/server-config.json \ -v /path/to/saves:/opt/factorio/saves \ -v /path/to/mods:/opt/factorio/mods \ + --name factorio dtandersen/factorio ``` +```-d``` starts the server as a daemon. ```-P``` exposes all ports. The ```-v``` options mount volumes on the local file system to the container for config, mods, and saves. ```dtandersen/factorio``` is the docker images name. ```--name``` gives the container a name instead of a random name. + The server should start and create ```/path/to/saves/save.zip```. This save is used when the server is restarted. ## Volumes @@ -58,7 +61,7 @@ The server should start and create ```/path/to/saves/save.zip```. This save is u Sometimes it's useful to see the logs of a running container: ``` -docker exec -it [CONTAINER] tail -f /opt/factorio/factorio-current.log +docker exec -it factorio tail -f /opt/factorio/factorio-current.log ``` # Credits From 8a3df67b52df8f4f07664273b628834eabd3084f Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 10:11:09 -0700 Subject: [PATCH 23/34] example config --- server-settings.example.json | 54 ++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 server-settings.example.json diff --git a/server-settings.example.json b/server-settings.example.json new file mode 100644 index 0000000..511a7f3 --- /dev/null +++ b/server-settings.example.json @@ -0,0 +1,54 @@ +{ + "name": "Name of the game as it will appear in the game listing", + "description": "Description of the game that will appear in the listing", + "tags": ["game", "tags"], + + "_comment_max_players": "Maximum number of players allowed, admins can join even a full server. 0 means unlimited.", + "max_players": 0, + + "_comment_visibility": ["public: Game will be published on the official Factorio matching server", + "lan: Game will be broadcast on LAN", + "hidden: Game will not be published anywhere"], + "visibility": "public", + + "_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public", + "username": "", + "password": "", + + "_comment_token": "Authentication token. May be used instead of 'password' above.", + "token": "", + + "game_password": "", + + "_comment_require_user_verification": "When set to true, the server will only allow clients that have a valid Factorio.com account", + "require_user_verification": true, + + "_comment_max_upload_in_kilobytes_per_second" : "optional, default value is 0. 0 means unlimited.", + "max_upload_in_kilobytes_per_second": 0, + + "_comment_ignore_player_limit_for_returning_players": "Players that played on this map already can join even when the max player limit was reached.", + "ignore_player_limit_for_returning_players": false, + + "_comment_allow_commands": "possible values are, true, false and admins-only", + "allow_commands": "admins-only", + + "_comment_autosave_interval": "Autosave interval in minutes", + "autosave_interval": 10, + + "_comment_autosave_slots": "server autosave slots, it is cycled through when the server autosaves.", + "autosave_slots": 5, + + "_comment_afk_autokick_interval": "How many minutes until someone is kicked when doing nothing, 0 for never.", + "afk_autokick_interval": 0, + + "_comment_auto_pause": "Whether should the server be paused when no players are present.", + "auto_pause": true, + + "only_admins_can_pause_the_game": true, + + "_comment_autosave_only_on_server": "Whether autosaves should be saved only on server or also on all connected clients. Default is true.", + "autosave_only_on_server": true, + + "_comment_admins": "List of case insensitive usernames, that will be promoted immediately", + "admins": [] +} From ddf7f99a2b7b98909ba22e569d46d25293bab8ff Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 10:28:04 -0700 Subject: [PATCH 24/34] doc update --- README.md | 54 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index bd87450..2afcc6d 100644 --- a/README.md +++ b/README.md @@ -19,18 +19,18 @@ NOTE: This is only the server. The game is available on [Steam](http://store.ste # Features -* 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. +* Configurable via ```server-config.json```. +* Automatically loads the last save. +* Volumes for saves and mods. +* Small size. Based on Alpine Linux. # How to use this image? ## Quick Start -Create ```server-config.json``` and modify it to your liking. Now run: +Create ```server-config.json``` and modify it to your liking. + +Now start the server: ``` docker run -d -P \ @@ -41,22 +41,46 @@ docker run -d -P \ dtandersen/factorio ``` -```-d``` starts the server as a daemon. ```-P``` exposes all ports. The ```-v``` options mount volumes on the local file system to the container for config, mods, and saves. ```dtandersen/factorio``` is the docker images name. ```--name``` gives the container a name instead of a random name. +If you're wondering what all these options are: -The server should start and create ```/path/to/saves/save.zip```. This save is used when the server is restarted. +* ```-d``` - Start the server as a daemon. +* ```-P``` - Expose all ports. +* ```-v``` - Mount volumes for config, mods, and saves. +* ```--name``` - Give the container a name (otherwise it'll be random). +* ```dtandersen/factorio``` - The Docker image name. + +The server should start and create ```/path/to/saves/save.zip```. The save remains if the server stops, since the save folder is mounted as a volume. + +## Stopping the Server + +Assuming the server is named ```factorio```, run: + +``` +docker stop factorio +``` + +## Saves + +If there are no saves when the server starts, then a new map is generated and saved as ```save.zip```. + +Otherwise, the most recent ZIP file in the saves folder is used. To load an old save ```touch save.zip``` and restart the server. + +## Mods + +Copy them into the mods folder. ## Volumes -* /opt/factorio/saves - save files -* /opt/factorio/mods - save files -* /opt/factorio/data/server-config.json - config file +* ```/opt/factorio/saves``` - Saves (recommened) +* ```/opt/factorio/mods``` - Mods (optional) +* ```/opt/factorio/data/server-config.json``` - Configuration (recommended) ## Ports -* 34197/udp - game data -* 27015/tcp - rcon +* ```34197/udp``` - Client (required) +* ```27015/tcp``` - Remote console (optional) -### Logs +## Logs Sometimes it's useful to see the logs of a running container: From 3a007b377fb46ee84513a5f0a3dd69a22ecb8209 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 18:02:33 +0000 Subject: [PATCH 25/34] update alpine --- Dockerfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index de7c061..d4da0b3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,25 @@ -FROM frolvlad/alpine-glibc:alpine-3.3_glibc-2.23 +FROM frolvlad/alpine-glibc:alpine-3.4 MAINTAINER https://github.com/dtandersen/docker_factorio_server -#WORKDIR /opt - COPY ./factorio.crt /opt/factorio.crt -EXPOSE 34197/udp 27015/tcp - - ENV VERSION=0.14.14 \ SHA1=decd1ef34a75b309791e65bc92b164f10479753b 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 && \ + 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 + VOLUME /opt/factorio/saves /opt/factorio/mods COPY ./smart_launch.sh /opt +EXPOSE 34197/udp 27015/tcp + CMD ["/opt/smart_launch.sh"] From f3df464856682f1f344a72bce39ff1df38774cb5 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 18:30:24 +0000 Subject: [PATCH 26/34] simplify startup --- smart_launch.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/smart_launch.sh b/smart_launch.sh index 8ddb057..8040453 100755 --- a/smart_launch.sh +++ b/smart_launch.sh @@ -2,14 +2,9 @@ SAVES=/opt/factorio/saves -if [ -f $SAVES/*.zip ] +if [ ! -f $SAVES/*.zip ] then - last_save=$(ls $SAVES -lt | grep save |head -1 |awk '{print $(NF)}') -else - last_save="save.zip" - /opt/factorio/bin/x64/factorio --create $SAVES/$last_save + /opt/factorio/bin/x64/factorio --create $SAVES/save.zip fi -exec /opt/factorio/bin/x64/factorio \ - --start-server \ - $SAVES/$last_save +exec /opt/factorio/bin/x64/factorio --start-server-load-latest From 88258a263eb3ba76903f821d86c87b2d3f5265cf Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 18:31:07 +0000 Subject: [PATCH 27/34] utility script --- build.sh | 1 + run.sh | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100755 build.sh create mode 100755 run.sh diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..a9e8f77 --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +sudo docker build -t factorio . diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..e0805ac --- /dev/null +++ b/run.sh @@ -0,0 +1,6 @@ +sudo docker run --rm -it \ + -v /home/vagrant/docker_factorio_server/server-settings.json:/opt/factorio/data/server-settings.json \ + -v /data/mods:/opt/factorio/mods \ + -v /data/saves:/opt/factorio/saves \ + --name factorio \ + factorio From 4ed57b0c203d3c2c6b9eada40393dac02d25d49e Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 18:39:28 +0000 Subject: [PATCH 28/34] rename entrypoint --- Dockerfile | 5 ++--- smart_launch.sh => docker-entrypoint.sh | 0 2 files changed, 2 insertions(+), 3 deletions(-) rename smart_launch.sh => docker-entrypoint.sh (100%) diff --git a/Dockerfile b/Dockerfile index d4da0b3..5666f92 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,9 +17,8 @@ RUN apk --update add bash curl && \ VOLUME /opt/factorio/saves /opt/factorio/mods -COPY ./smart_launch.sh /opt - EXPOSE 34197/udp 27015/tcp -CMD ["/opt/smart_launch.sh"] +COPY ./docker-entrypoint.sh / +CMD ["/docker-entrypoint.sh"] diff --git a/smart_launch.sh b/docker-entrypoint.sh similarity index 100% rename from smart_launch.sh rename to docker-entrypoint.sh From 1e7c8bc8b78ac9091ec05fdcdc3d8195cd7af0dc Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 11:40:53 -0700 Subject: [PATCH 29/34] typo --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 2afcc6d..394d750 100644 --- a/README.md +++ b/README.md @@ -37,17 +37,17 @@ docker run -d -P \ -v /path/to/server-config.json:/opt/factorio/data/server-config.json \ -v /path/to/saves:/opt/factorio/saves \ -v /path/to/mods:/opt/factorio/mods \ - --name factorio + --name factorio \ dtandersen/factorio ``` If you're wondering what all these options are: -* ```-d``` - Start the server as a daemon. -* ```-P``` - Expose all ports. -* ```-v``` - Mount volumes for config, mods, and saves. +* ```-d``` - Start the server as a daemon. +* ```-P``` - Expose all ports. +* ```-v``` - Mount volumes for config, mods, and saves. * ```--name``` - Give the container a name (otherwise it'll be random). -* ```dtandersen/factorio``` - The Docker image name. +* ```dtandersen/factorio``` - The Docker image name. The server should start and create ```/path/to/saves/save.zip```. The save remains if the server stops, since the save folder is mounted as a volume. From 9dca3590ae662dec5691f8f8418a1cb6395a88a5 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 11:59:50 -0700 Subject: [PATCH 30/34] update docs --- README.md | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 394d750..c6acc2d 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,21 @@ NOTE: This is only the server. The game is available on [Steam](http://store.ste ## Quick Start -Create ```server-config.json``` and modify it to your liking. +Start the server in interactive mode for debugging. The game isn't saved. -Now start the server: +``` +docker run --rm -it -P dtandersen/factorio +``` + +* ```--rm``` - Remove container after stopping +* ```-it``` - Interactive mode, i.e. you can see the console +* ```-P``` - Expose all ports. + +## Usage + +Normally the server runs as a daemon and a configuration file is specified. Volumes are mounted for saves and mods. + +Create ```server-config.json``` and modify it to your liking. ``` docker run -d -P \ @@ -41,33 +53,32 @@ docker run -d -P \ dtandersen/factorio ``` -If you're wondering what all these options are: - * ```-d``` - Start the server as a daemon. * ```-P``` - Expose all ports. * ```-v``` - Mount volumes for config, mods, and saves. * ```--name``` - Give the container a name (otherwise it'll be random). -* ```dtandersen/factorio``` - The Docker image name. -The server should start and create ```/path/to/saves/save.zip```. The save remains if the server stops, since the save folder is mounted as a volume. +## Saves -## Stopping the Server +The first time the server is started a new map is generated and saved as ```save.zip```. On subsequent runs the newest save is used. To load an old save ```touch save.zip``` and restart the server. -Assuming the server is named ```factorio```, run: +## Mods + +Copy them into the mods folder and restart the server. + +## Start/Stopping + +Assuming the server is named ```factorio```, to stop the server: ``` docker stop factorio ``` -## Saves +To restart the server: -If there are no saves when the server starts, then a new map is generated and saved as ```save.zip```. - -Otherwise, the most recent ZIP file in the saves folder is used. To load an old save ```touch save.zip``` and restart the server. - -## Mods - -Copy them into the mods folder. +``` +docker start factorio +``` ## Volumes From f90f3c756985fdecc6592ddd334848b209f3aac2 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 19:30:12 +0000 Subject: [PATCH 31/34] removed exec --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8040453..9e63006 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -7,4 +7,4 @@ then /opt/factorio/bin/x64/factorio --create $SAVES/save.zip fi -exec /opt/factorio/bin/x64/factorio --start-server-load-latest +/opt/factorio/bin/x64/factorio --start-server-load-latest From abe0c82a8eaa5c36dc49f0ad8edf77edfe9ca96b Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 12:33:45 -0700 Subject: [PATCH 32/34] add back exec --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 9e63006..8040453 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -7,4 +7,4 @@ then /opt/factorio/bin/x64/factorio --create $SAVES/save.zip fi -/opt/factorio/bin/x64/factorio --start-server-load-latest +exec /opt/factorio/bin/x64/factorio --start-server-load-latest From 284e7f00b0c73b8a3894e82864d5912a0b06af43 Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 13:34:55 -0700 Subject: [PATCH 33/34] update example config --- server-settings.example.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/server-settings.example.json b/server-settings.example.json index 511a7f3..5b2a68c 100644 --- a/server-settings.example.json +++ b/server-settings.example.json @@ -7,9 +7,12 @@ "max_players": 0, "_comment_visibility": ["public: Game will be published on the official Factorio matching server", - "lan: Game will be broadcast on LAN", - "hidden: Game will not be published anywhere"], - "visibility": "public", + "lan: Game will be broadcast on LAN"], + "visibility": + { + "public": true, + "lan": true + }, "_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public", "username": "", @@ -45,7 +48,7 @@ "auto_pause": true, "only_admins_can_pause_the_game": true, - + "_comment_autosave_only_on_server": "Whether autosaves should be saved only on server or also on all connected clients. Default is true.", "autosave_only_on_server": true, From 6b8c0f01ab4aea39025a434629adf1d5b9ae89ff Mon Sep 17 00:00:00 2001 From: David Andersen Date: Tue, 25 Oct 2016 13:35:32 -0700 Subject: [PATCH 34/34] update checksum --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5666f92..50fca14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,8 +4,8 @@ MAINTAINER https://github.com/dtandersen/docker_factorio_server COPY ./factorio.crt /opt/factorio.crt -ENV VERSION=0.14.14 \ - SHA1=decd1ef34a75b309791e65bc92b164f10479753b +ENV VERSION=0.14.16 \ + SHA1=e27c658bf8a7579b662a1c34815daa223e57bc90 RUN apk --update add bash curl && \ curl -sSL --cacert /opt/factorio.crt \