diff --git a/README.md b/README.md index 723a65a5..7d772c44 100644 --- a/README.md +++ b/README.md @@ -262,7 +262,7 @@ If you want old mods to be removed as the `/mods` content is updated, then add ` For example: `-e REMOVE_OLD_MODS=TRUE -e REMOVE_OLD_MODS_INCLUDE="*.jar" -e REMOVE_OLD_MODS_DEPTH=1` will remove all old jar files that are directly inside the `plugins/` or `mods/` directory. -You can specify the destination of the files that are copied from `/config` by setting the `COPY_CONFIG_DEST` variable, where the default is `/data/config`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. +You can specify the destination of the files that are copied from `/mods` and `/config` by setting the `COPY_MODS_DEST` and `COPY_CONFIG_DEST`, where the default is `/data/mods` and `/data/config`. For example, `-v ./config:/config -e COPY_CONFIG_DEST=/data` will allow you to copy over files like `bukkit.yml` and so on directly into the server directory. > NOTE: If a file was updated in the destination path and is newer than the source file from `/config`, then it will not be overwritten. @@ -512,9 +512,9 @@ the `/path/on/host` folder contents look like: ``` /path/on/host ├── mods -│   └── ... INSTALL MODS HERE ... +│ └── ... INSTALL MODS HERE ... ├── config -│   └── ... CONFIGURE MODS HERE ... +│ └── ... CONFIGURE MODS HERE ... ├── ops.json ├── server.properties ├── whitelist.json @@ -527,24 +527,20 @@ up: docker stop mc docker start mc -### Using separate mounts +## Optional plugins, mods, and config attach points -This is the easiest way if you are using an ephemeral `/data` filesystem, -or downloading a world with the `WORLD` option. +There are optional volume paths that can be attached to supply content to be copied into the data area: -There are two additional volumes that can be mounted; `/mods` and `/config`. -Any files in either of these filesystems will be copied over to the main -`/data` filesystem before starting Minecraft. +`/plugins` +: contents are copied into `/data/plugins` for Bukkit related server types. Set `PLUGINS_SYNC_UPDATE=false` if you want files from `/plugins` to take precedence over newer files in `/data/plugins`. -This works well if you want to have a common set of modules in a separate -location, but still have multiple worlds with different server requirements -in either persistent volumes or a downloadable archive. +`/mods` +: contents are copied into `/data/mods` for Forge related server types -## Deploying plugins from attached volume +`/config` +: contents are copied into `/data/config` by default, but can be changed with `COPY_CONFIG_DEST` -If the `/plugins` directory exists in the container, such as from an attached volume, any files in this directory will be copied over to `/data/plugins` before starting Minecraft. Set `PLUGINS_SYNC_UPDATE=false` if you want files from `/plugins` to take precedence over newer files in `/data/plugins`. - -This works well if you want to have a common set of plugins in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive. +These paths work well if you want to have a common set of modules in a separate location, but still have multiple worlds with different server requirements in either persistent volumes or a downloadable archive. ## Auto-downloading SpigotMC/Bukkit/PaperMC plugins diff --git a/start-deployAirplane b/start-deployAirplane index a5664d64..85b398f8 100644 --- a/start-deployAirplane +++ b/start-deployAirplane @@ -33,5 +33,4 @@ fi export TYPE=SPIGOT export SKIP_LOG4J_CONFIG=true -# Continue to Final Setup -exec ${SCRIPTS:-/}start-finalSetupWorld $@ +exec ${SCRIPTS:-/}start-spiget "$@" diff --git a/start-deployCF b/start-deployCF index 95f8ee0a..1c9efbff 100644 --- a/start-deployCF +++ b/start-deployCF @@ -167,6 +167,16 @@ if [[ $startScriptCount = 0 ]]; then log "Unpacking FTB server modpack ${srv_modpack} ..." mkdir -p ${FTB_BASE_DIR} unzip -o "${srv_modpack}" -d ${FTB_BASE_DIR} | awk '{printf "."} END {print ""}' + + installScript=$(find "${FTB_BASE_DIR}" -maxdepth 2 -type f -name install.sh) + if [[ "$installScript" ]]; then + ( + cd "$(dirname "${installScript}")" + chmod +x ./install.sh + log "Running included install.sh" + ./install.sh + ) + fi fi if [[ $(find ${FTB_BASE_DIR} $entryScriptExpr | wc -l) = 0 ]]; then diff --git a/start-deployPurpur b/start-deployPurpur index 91a5fbf3..ba30e929 100755 --- a/start-deployPurpur +++ b/start-deployPurpur @@ -34,5 +34,4 @@ fi export TYPE=SPIGOT export SKIP_LOG4J_CONFIG=true -# Continue to Final Setup -exec ${SCRIPTS:-/}start-finalSetupWorld $@ +exec ${SCRIPTS:-/}start-spiget "$@" diff --git a/start-deployTuinity b/start-deployTuinity index d0343402..54221dd8 100644 --- a/start-deployTuinity +++ b/start-deployTuinity @@ -23,5 +23,4 @@ fi # Normalize on Spigot for later operations export TYPE=SPIGOT -# Continue to Final Setup -exec ${SCRIPTS:-/}start-finalSetupWorld $@ +exec ${SCRIPTS:-/}start-spiget "$@" diff --git a/start-finalSetupEnvVariables b/start-finalSetupEnvVariables index e1508576..dc0fdd1c 100644 --- a/start-finalSetupEnvVariables +++ b/start-finalSetupEnvVariables @@ -42,7 +42,7 @@ if isTrue "${REPLACE_ENV_VARIABLES}"; then $dirExcludes \ -type f \ \( -name "*.yml" -or -name "*.yaml" -or -name "*.txt" -or -name "*.cfg" \ - -or -name "*.conf" -or -name "*.properties" \) \ + -or -name "*.conf" -or -name "*.properties" -or -name "*.hjson" -or -name "*.json" \) \ $fileExcludes \ -exec sed -i 's#${'"$name"'}#'"$value"'#g' {} \; done diff --git a/start-finalSetupMounts b/start-finalSetupMounts index f56b37cb..c96b12cd 100755 --- a/start-finalSetupMounts +++ b/start-finalSetupMounts @@ -21,10 +21,12 @@ if [ -d /plugins ]; then fi # If any modules have been provided, copy them over +: ${COPY_MODS_DEST:="/data/mods"} + if [ -d /mods ]; then log "Copying any mods over..." - mkdir -p /data/mods - rsync -a --out-format="update:%f:Last Modified %M" "${rsyncArgs[@]}" --prune-empty-dirs --update /mods /data + mkdir -p $COPY_MODS_DEST + rsync -a --out-format="update:%f:Last Modified %M" "${rsyncArgs[@]}" --prune-empty-dirs --update /mods/ $COPY_MODS_DEST fi : ${COPY_CONFIG_DEST:="/data/config"}