diff --git a/.gitignore b/.gitignore index b25c15b..43704fe 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *~ +logs/*.log \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8385359 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +FROM mono:latest + +# MAINTAINER Kazuki Yasufuku # Thanks dude! +MAINTAINER Cristoffer Fairweather + +RUN apt-get update && apt-get install wget unzip sudo && apt-get clean + +#add kerman user +#create home folder +RUN useradd kerman && mkdir -p /home/kerman + +WORKDIR /home/kerman +RUN wget https://d-mp.org/downloads/release/latest/DMPServer.zip && unzip DMPServer.zip && rm DMPServer.zip + +#change file owner +RUN mkdir /home/kerman/DMPServer/Universe +#Copy config files to init proper permissions +COPY config/*.txt /home/kerman/DMPServer/ +RUN chown -R kerman:kerman /home/kerman + +WORKDIR /home/kerman/DMPServer + +#run as kerman user +# USER kerman +# Run as root and then launch mono as kerman + +#expose DMP port +EXPOSE 6702 + +VOLUME ["/home/kerman/DMPServer/Universe"] +COPY docker-entrypoint.sh /docker-entrypoint.sh +RUN chmod +x /docker-entrypoint.sh + +ENTRYPOINT ["/docker-entrypoint.sh"] +# CMD mono /home/kerman/DMPServer/DMPServer.exe + + diff --git a/README.md b/README.md index 2f5ecf2..ed9ae1e 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,32 @@ DarkMultiPlayer-docker ====================== +`Dockerfile`, `docker-compose.yml`, and configuration mapping for [Kerbal Space Program DarkMultiPlayer(DMP) MOD Server](http://d-mp.org). -dockerfile and bootstrap for Kerbal Space Program DarkMultiPlayer(DMP) MOD Server. +[The mode source is here](https://github.com/godarklight/DarkMultiPlayer) -[original source is here](https://github.com/godarklight/DarkMultiPlayer) +[The original Dockerfile was forked from wilfrem, here](https://github.com/wilfrem/DarkMultiPlayer-docker) to add some Docker paradigm updates and latest code. -build image +The new setup has been tested against Docker 1.9.0. + +Build the image ----------- +Thanks to feats of modern software engineering, you no longer need to build this image yourself. You may pull and run it from docker hub! -move ./dockerfile folder and run this code -```sh -docker build -t "your tag" . -``` +Simply skip to "Run Server" -if you want modify DMP server settings, you can modify files in ./dockerfile/DMPServerApp before building image. -./dockerfile/DMPServerApp will be included in building process. +If you're one of those fun users that likes to build things themselves you can use the `dev` docker-compose and run `docker-compose -f docker-compose-dev.yml build ksp-dmp` in this folder. +Then do `docker-compose -f docker-compose-dev.yml up -d ksp-dmp` to run the server instead. -run server ----- -put ./buotstrap/DMPServerFiles into storage and run ./bootstrap.sh -t "your tag" -v "DMPServerFilesPath" +Run Server +---- +`docker-compose up -d ksp-dmp` + +Configuration +---- +If you want modify DMP server settings, you can modify files in `config/` and then restart the server for the changes to take effect. Don't worry, your universe files are mapped out to `universe/`, so you won't lose your game changes. +``` +docker-compose restart ksp-dmp +``` \ No newline at end of file diff --git a/bootstrap/DMPServerFiles/Universe/subspace.txt b/bootstrap/DMPServerFiles/Universe/subspace.txt deleted file mode 100644 index 9fb2b30..0000000 --- a/bootstrap/DMPServerFiles/Universe/subspace.txt +++ /dev/null @@ -1,7 +0,0 @@ -#Incorrectly editing this file will cause weirdness. If there is any errors, the universe time will be reset. -#This file can only be edited if the server is stopped. -#Each variable is on a new line. They are subspaceID, server clock (from DateTime.UtcNow.Ticks), universe time, and subspace speed. -0 -635550406881397780 -100 -1 diff --git a/bootstrap/DMPServerFiles/logs/dummy.txt b/bootstrap/DMPServerFiles/logs/dummy.txt deleted file mode 100644 index 421376d..0000000 --- a/bootstrap/DMPServerFiles/logs/dummy.txt +++ /dev/null @@ -1 +0,0 @@ -dummy diff --git a/bootstrap/bootstrap.sh b/bootstrap/bootstrap.sh deleted file mode 100755 index c27aef8..0000000 --- a/bootstrap/bootstrap.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -usage_exit() { - echo "KSP DMP Server bootstrap" 1>&2 - echo "Usage: $0 [-t tag] [-v DMPServerFilesPath] " 1>&2 - exit 1 -} -TAG=wilfrem/ksp-dmp -VOLUME=$(cd `dirname $0`; pwd)/DMPServerFiles -while getopts "t:v:h" OPT -do - case $OPT in - t) TAG=$OPTARG - ;; - v) VOLUME=$(cd $(dirname $OPTARG) && pwd)/$(basename $OPTARG) - ;; - h) usage_exit - ;; - \?) usage_exit - ;; - esac -done -UniverseFolder=$VOLUME/Universe -LogsFolder=$VOLUME/logs -#run docker container -sudo docker run -p 6702:6702 -v $UniverseFolder:/home/kerman/DMPServerApp/Universe -v $LogsFolder:/home/kerman/DMPServer/logs -t $TAG - - diff --git a/dockerfile/DMPServerApp/DMPIPBans.txt b/config/DMPAdmins.txt similarity index 100% rename from dockerfile/DMPServerApp/DMPIPBans.txt rename to config/DMPAdmins.txt diff --git a/dockerfile/DMPServerApp/DMPKeyBans.txt b/config/DMPIPBans.txt similarity index 100% rename from dockerfile/DMPServerApp/DMPKeyBans.txt rename to config/DMPIPBans.txt diff --git a/dockerfile/DMPServerApp/DMPPlayerBans.txt b/config/DMPKeyBans.txt similarity index 100% rename from dockerfile/DMPServerApp/DMPPlayerBans.txt rename to config/DMPKeyBans.txt diff --git a/dockerfile/DMPServerApp/DMPModControl.txt b/config/DMPModControl.txt similarity index 87% rename from dockerfile/DMPServerApp/DMPModControl.txt rename to config/DMPModControl.txt index 95279dc..a9af03f 100644 --- a/dockerfile/DMPServerApp/DMPModControl.txt +++ b/config/DMPModControl.txt @@ -1,3 +1,4 @@ +#MODCONTROLVERSION=1.0.3 #You can comment by starting a line with a #, these are ignored by the server. #Commenting will NOT work unless the line STARTS with a '#'. #You can also indent the file with tabs or spaces. @@ -277,4 +278,66 @@ mk3FuselageLFO.100 mk3FuselageLFO.25 mk3FuselageLFO.50 mk3FuselageMONO +kerbalEVAfemale +airbrake1 +airlinerCtrlSrf +airlinerMainWing +airlinerTailFin +pointyNoseConeA +pointyNoseConeB +airplaneTailB +fairingSize1 +fairingSize2 +fairingSize3 +HeatShield1 +HeatShield2 +HeatShield3 +wingShuttleDelta +elevonMk3 +wingShuttleElevon1 +wingShuttleElevon2 +wingShuttleRudder +wingShuttleStrake +delta.small +mk2Cockpit.Inline +mk2Cockpit.Standard +mk3Cockpit.Shuttle +ksp.r.largeBatteryPack +solidBooster.sm +fuelTank.long +mk2.1m.Bicoupler +mk2.1m.AdapterLong +mk3FuselageLFO.100 +mk3FuselageLFO.25 +mk3FuselageLFO.50 +mk3FuselageLF.100 +mk3FuselageLF.25 +mk3FuselageLF.50 +xenonTankLarge +mk3Cockpit.Shuttle +FuelCell +FuelCellArray +ISRU +LargeTank +OrbitalScanner +RadialDrill +SmallTank +SurfaceScanner +SurveyScanner +sensorAtmosphere +Large.Crewed.Lab +science.module +radialDrogue +ServiceBay.125 +ServiceBay.250 +GearFixed +GearFree +GearLarge +GearMedium +basicFin +foldingRadLarge +foldingRadMed +foldingRadSmall +radPanelLg +radPanelSm diff --git a/config/DMPPlayerBans.txt b/config/DMPPlayerBans.txt new file mode 100644 index 0000000..e69de29 diff --git a/dockerfile/DMPServerApp/DMPServerSettings.txt b/config/DMPServerSettings.txt similarity index 100% rename from dockerfile/DMPServerApp/DMPServerSettings.txt rename to config/DMPServerSettings.txt diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml new file mode 100644 index 0000000..a8307d4 --- /dev/null +++ b/docker-compose-dev.yml @@ -0,0 +1,10 @@ +ksp-dmp: + build: . + container_name: ksp-dmp + ports: + - "6702:6702" + volumes: + - "./config/:/home/kerman/config" + - "./universe:/home/kerman/DMPServer/Universe" + - "./logs:/home/kerman/DMPServer/logs" + restart: on-failure:3 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fb8489b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +ksp-dmp: + image: cfairweather/ksp-dmp + container_name: ksp-dmp + ports: + - "6702:6702" + volumes: + - "./config/:/home/kerman/config" + - "./universe:/home/kerman/DMPServer/Universe" + - "./logs:/home/kerman/DMPServer/logs" + restart: on-failure:3 \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..beb16f2 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +if [[ -d "/home/kerman/config" ]]; then + cp /home/kerman/config/* /home/kerman/DMPServer/ + chown -R kerman:kerman /home/kerman/DMPServer/* +fi + +/usr/bin/sudo -u kerman mono /home/kerman/DMPServer/DMPServer.exe \ No newline at end of file diff --git a/dockerfile/DMPServerApp/DMPServer.exe b/dockerfile/DMPServerApp/DMPServer.exe deleted file mode 100755 index e50ece5..0000000 Binary files a/dockerfile/DMPServerApp/DMPServer.exe and /dev/null differ diff --git a/dockerfile/DMPServerApp/DarkMultiPlayer-Common.dll b/dockerfile/DMPServerApp/DarkMultiPlayer-Common.dll deleted file mode 100755 index e5a8114..0000000 Binary files a/dockerfile/DMPServerApp/DarkMultiPlayer-Common.dll and /dev/null differ diff --git a/dockerfile/DMPServerApp/ICSharpCode.SharpZipLib.dll b/dockerfile/DMPServerApp/ICSharpCode.SharpZipLib.dll deleted file mode 100644 index fe643eb..0000000 Binary files a/dockerfile/DMPServerApp/ICSharpCode.SharpZipLib.dll and /dev/null differ diff --git a/dockerfile/DMPServerApp/MessageWriter2.dll b/dockerfile/DMPServerApp/MessageWriter2.dll deleted file mode 100755 index a534341..0000000 Binary files a/dockerfile/DMPServerApp/MessageWriter2.dll and /dev/null differ diff --git a/dockerfile/DMPServerApp/git-version.txt b/dockerfile/DMPServerApp/git-version.txt deleted file mode 100644 index d024702..0000000 --- a/dockerfile/DMPServerApp/git-version.txt +++ /dev/null @@ -1 +0,0 @@ -v0.2.0.0 diff --git a/dockerfile/Dockerfile b/dockerfile/Dockerfile deleted file mode 100644 index 1b0a652..0000000 --- a/dockerfile/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -FROM mono:3.10 - -MAINTAINER Kazuki Yasufuku - -#add kerman user -#create home folder -RUN useradd kerman && mkdir -p /home/kerman - -#ADD DMPServer file -ADD DMPServerApp /home/kerman/DMPServerApp - -#change file owner -RUN chown -R kerman:kerman /home/kerman - -WORKDIR /home/kerman/DMPServerApp - -#run as kerman user -USER kerman - -#expose DMP port -EXPOSE 6702 - -CMD mono /home/kerman/DMPServerApp/DMPServer.exe -