├── .github └── workflows │ ├── json.yml │ └── test.yml ├── .gitignore ├── .vscode └── settings.json ├── 7days2die └── 7days2die.json ├── LICENSE ├── README.md ├── ark ├── .skip ├── README.md ├── ark.json └── data.json ├── arma3 ├── .skip ├── README.md └── arma3.json ├── csgo ├── .skip ├── README.md └── csgo.json ├── css ├── README.md └── css.json ├── cstrike └── cstrike.json ├── discord-jda ├── .skip ├── README.md └── discord-jda.json ├── discord-js ├── .skip ├── README.md └── discord-js.json ├── discord-py ├── .skip ├── README.md └── discord-py.json ├── dontstarvetogether ├── .skip ├── ReadME.md └── dontstarvetogether.json ├── eco ├── .skip ├── README.md └── eco.json ├── eco9 ├── .skip ├── README.md └── eco9.json ├── exclude.txt ├── factorio └── factorio.json ├── gmod ├── README.md └── gmod.json ├── minecraft-bedrock └── minecraft-bedrock.json ├── minecraft-bungeecord └── minecraft-bungeecord.json ├── minecraft-curseforge ├── data.json └── minecraft-curseforge.json ├── minecraft-ftb ├── README.md ├── data.json └── minecraft-ftb.json ├── minecraft-velocity └── minecraft-velocity.json ├── minecraft-waterfall └── minecraft-waterfall.json ├── minecraft ├── data.json └── minecraft.json ├── pocketmine └── pocketmine.json ├── rust ├── README.md ├── data.json └── rust.json ├── sa-mp ├── .skip └── sa-mp.json ├── satisfactory ├── .skip ├── README.md └── satisfactory.json ├── spec.json ├── squad ├── README.md └── squad.json ├── starbound ├── .skip ├── README.md └── starbound.json ├── stn ├── README.md └── stn.json ├── teamspeak3 ├── README.md ├── data.json └── teamspeak3.json ├── terraria-tmodloader ├── README.md └── terraria-tmodloader.json ├── terraria-tshock └── terraria-tshock.json ├── terraria-vanilla ├── README.md └── terraria-vanilla.json ├── tf2 └── tf2.json ├── unturned └── unturned.json ├── valheim ├── README.md └── valheim.json └── zomboid └── zomboid.json /.github/workflows/json.yml: -------------------------------------------------------------------------------- 1 | name: JSON check 2 | 3 | on: 4 | push: 5 | pull_request: 6 | workflow_dispatch: 7 | 8 | jobs: 9 | test-json: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v2 13 | 14 | - name: json-yaml-validate 15 | uses: GrantBirki/json-yaml-validate@v3.0.0 16 | with: 17 | json_schema: ./spec.json 18 | json_schema_version: draft-2020-12 19 | exclude_file: exclude.txt 20 | ajv_strict_mode: false -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Run Tool - Tester PR 2 | on: 3 | workflow_dispatch: 4 | 5 | env: 6 | TAG: templatetester 7 | REGISTRY: ghcr.io 8 | IMAGE_NAME: pufferpanel/pufferpanel 9 | 10 | jobs: 11 | get-files: 12 | name: Determine Changes 13 | runs-on: ubuntu-20.04 14 | 15 | outputs: 16 | files: ${{ steps.changed-files.outputs.all_changed_files }} 17 | 18 | steps: 19 | - uses: actions/checkout@v4 20 | 21 | - name: Get changed files 22 | id: changed-files 23 | uses: tj-actions/changed-files@v44 24 | with: 25 | matrix: true 26 | files: | 27 | **.json 28 | !spec.json 29 | 30 | run-tester: 31 | name: Run Tester 32 | runs-on: ubuntu-20.04 33 | needs: get-files 34 | 35 | permissions: 36 | packages: read 37 | 38 | strategy: 39 | matrix: 40 | template: ${{ fromJson(needs.get-files.outputs.files) }} 41 | fail-fast: false 42 | max-parallel: 2 43 | 44 | steps: 45 | - name: Login to GitHub Container Registry 46 | uses: docker/login-action@v3 47 | with: 48 | registry: ghcr.io 49 | username: ${{ github.repository_owner }} 50 | password: ${{ secrets.GITHUB_TOKEN }} 51 | 52 | - name: Set ENV 53 | run: | 54 | export FILENAME=$(basename ${{ matrix.template }}) 55 | export TEMPLATE=${FILENAME%.*} 56 | echo "FILENAME=$FILENAME" >> $GITHUB_ENV 57 | echo "TEMPLATE=$TEMPLATE" >> $GITHUB_ENV 58 | 59 | - name: Prepare 60 | run: | 61 | docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} 62 | docker rm -f templatetester-${{ env.TEMPLATE }} || true 63 | 64 | - name: Run 65 | run: | 66 | sudo rm -rf /tmp/pufferpanel-tester 67 | mkdir -p /tmp/pufferpanel-tester 68 | sudo chown -R 1000:$(getent group docker | cut -f3 -d:) /tmp/pufferpanel-tester 69 | docker run --rm --name templatetester-${{ env.TEMPLATE }} --network host -v /tmp/pufferpanel-tester:/tmp/pufferpanel-tester -v /var/run/docker.sock:/var/run/docker.sock -u "1000:$(getent group docker | cut -f3 -d:)" ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.TAG }} --workDir=/tmp/pufferpanel-tester --gitRef=${{ github.head_ref }} --files=${{ env.FILENAME }} 70 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "json.schemas": [ 3 | { 4 | "fileMatch": [ 5 | "/*.json", 6 | "!data.json" 7 | ], 8 | "url": "./spec.json" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /7days2die/7days2die.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "7 Days to Die", 4 | "icon": "7days2die", 5 | "install": [ 6 | { 7 | "if": "env == 'host'", 8 | "type": "steamgamedl", 9 | "appId": "294420" 10 | }, 11 | { 12 | "if": "env == 'docker'", 13 | "type": "command", 14 | "commands": [ 15 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 294420 +quit" 16 | ] 17 | }, 18 | { 19 | "if": "os != 'windows'", 20 | "type": "command", 21 | "commands": [ 22 | "chmod +x 7DaysToDieServer.x86_64" 23 | ] 24 | } 25 | ], 26 | "run": { 27 | "command": [ 28 | { 29 | "command": "./7DaysToDieServer.exe -quit -batchmode -nographics -dedicated -configfile=serverconfig.xml", 30 | "if": "os == 'windows'" 31 | }, 32 | { 33 | "command": "./7DaysToDieServer.x86_64 -quit -batchmode -nographics -dedicated -configfile=serverconfig.xml" 34 | } 35 | ], 36 | "stop": "shutdown", 37 | "environmentVars": { 38 | "LD_LIBRARY_PATH": "./linux64:$LD_LIBRARY_PATH" 39 | }, 40 | "stdin": { 41 | "type": "telnet", 42 | "port": "8081" 43 | }, 44 | "autostart": false, 45 | "autorecover": false, 46 | "autorestart": false 47 | }, 48 | "environment": { 49 | "type": "host" 50 | }, 51 | "supportedEnvironments": [ 52 | { 53 | "type": "host" 54 | }, 55 | { 56 | "type": "docker", 57 | "image": "steamcmd/steamcmd", 58 | "portBindings": [ 59 | "0.0.0.0:26900:26900/tcp" 60 | ] 61 | } 62 | ], 63 | "requirements": { 64 | "arch": "amd64" 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Templates 2 | 3 | To add a template to this repository, please make a pull request following the existing location structure of the other templates. 4 | 5 | Make sure to include a `README.md` file in your template's directory to document any prerequisites, workarounds, or caveats. 6 | 7 | Please see [this documentation](https://docs.pufferpanel.com/en/latest/templates/templates.html) for instructions on how to create your own template. 8 | 9 | # Formattng rules 10 | 11 | Order of fields: 12 | - Type (required) 13 | - Display (required) 14 | - Data 15 | - Install 16 | - Run (required) 17 | - Command (required) 18 | - Stop 19 | - Stop Code 20 | - Environment variables 21 | - Pre 22 | - Post 23 | - Environment (required) 24 | - Supported environments (matches environment, required) 25 | - Requirements 26 | 27 | Type must be lowercase 28 | Display must include if the environment is docker via (Docker) 29 | File is spaced using 2 spaces 30 | Type of operations must be the first line in the object 31 | -------------------------------------------------------------------------------- /ark/.skip: -------------------------------------------------------------------------------- 1 | Too large for GitHub runners 2 | -------------------------------------------------------------------------------- /ark/README.md: -------------------------------------------------------------------------------- 1 | # Template for [ARK: Survival Evolved](http://playark.com/) 2 | This template makes it possible to run [ARK: Survival Evolved](http://playark.com/) with [PufferPanel](https://www.pufferpanel.com/) on Linux. 3 | 4 | ## Prerequisites 5 | * Server requires a lot of RAM, you should have at least 4 GB free 6 | * Maybe you have to increase the open files limit on your linux system. As far as known, this is not necessary with Debian 9 (Stretch). You can increase the limits with these commands: 7 | 8 | (as root) 9 | ``` 10 | echo "fs.file-max=100000" >> /etc/sysctl.conf && sysctl -p 11 | echo "* soft nofile 1000000" >> /etc/security/limits.conf 12 | echo "* hard nofile 1000000" >> /etc/security/limits.conf 13 | echo "session required pam_limits.so" >> /etc/pam.d/common-session 14 | ``` 15 | * For more information about prerequisites for ARK server follow this link. https://ark.gamepedia.com/Dedicated_Server_Setup#Prerequisites_2 16 | 17 | 18 | Current map values available are: 19 | * TheIsland 20 | * TheCenter 21 | * ScorchedEarth_P 22 | * Ragnarok 23 | * Aberration_P 24 | * Extinction 25 | * Crystalisles 26 | 27 | ## Notes 28 | * If you want to use a whitelist you have to use the `-exclusivejoin` argument, you can set it on server creation or editing. After that you must set up a whitelist file in the file system manually. You can do this using SFTP. 29 | * Create the file in the directory `ShooterGame/Binaries/Linux_OR_Win64/PlayersExclusiveJoinList.txt` 30 | * Find the Steam64 ID of your friends and paste them, one per line. 31 | 32 | This only supports Linux. 33 | -------------------------------------------------------------------------------- /ark/ark.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "ARK: Survival Evolved", 4 | "icon": "ark", 5 | "data": { 6 | "exclusive": { 7 | "type": "option", 8 | "value": "", 9 | "display": "Exclusive?", 10 | "desc": "Set to yes to only permit friends, leave no for public", 11 | "required": false, 12 | "userEdit": true, 13 | "options": [ 14 | { 15 | "value": "", 16 | "display": "No" 17 | }, 18 | { 19 | "value": "-exclusivejoin", 20 | "display": "Yes" 21 | } 22 | ] 23 | }, 24 | "ip": { 25 | "type": "string", 26 | "value": "0.0.0.0", 27 | "display": "IP", 28 | "desc": "What IP to bind the server to", 29 | "required": true, 30 | "userEdit": true 31 | }, 32 | "mapname": { 33 | "type": "string", 34 | "value": "TheIsland", 35 | "display": "Map Name", 36 | "desc": "Name of the map", 37 | "required": true, 38 | "userEdit": true 39 | }, 40 | "maxplayers": { 41 | "type": "integer", 42 | "value": 20, 43 | "display": "Max Players", 44 | "desc": "Maximum number of players", 45 | "required": true, 46 | "userEdit": true 47 | }, 48 | "port": { 49 | "type": "integer", 50 | "value": 7777, 51 | "display": "Port", 52 | "desc": "What port to bind the server to", 53 | "required": true, 54 | "userEdit": true 55 | }, 56 | "queryport": { 57 | "type": "integer", 58 | "value": 27015, 59 | "display": "Query Port", 60 | "desc": "What port to listen for queries on", 61 | "required": true, 62 | "userEdit": true 63 | }, 64 | "serveradminpassword": { 65 | "type": "string", 66 | "value": "password", 67 | "display": "Server Admin Password", 68 | "desc": "Password for server admin", 69 | "required": true, 70 | "userEdit": true 71 | }, 72 | "sessionname": { 73 | "type": "string", 74 | "value": "My ARK Server", 75 | "display": "Session Name", 76 | "desc": "Name of server", 77 | "required": true, 78 | "userEdit": true 79 | } 80 | }, 81 | "install": [ 82 | { 83 | "if": "env == 'host'", 84 | "type": "steamgamedl", 85 | "appId": "376030" 86 | }, 87 | { 88 | "if": "env == 'docker'", 89 | "type": "command", 90 | "commands": [ 91 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 376030 +quit" 92 | ] 93 | }, 94 | { 95 | "type": "command", 96 | "commands": [ 97 | "chmod +x ShooterGame/Binaries/Linux/ShooterGameServer" 98 | ] 99 | } 100 | ], 101 | "run": { 102 | "command": "./ShooterGame/Binaries/Linux/ShooterGameServer ${mapname}?listen?SessionName=${sessionname}?ServerAdminPassword=${serveradminpassword}?MultiHome=${ip}?Port=${port}?QueryPort=${queryport}?MaxPlayers=${maxplayers} -server ${exclusive}", 103 | "stopCode": 2, 104 | "stdin": { 105 | "type": "stdin" 106 | }, 107 | "autostart": false, 108 | "autorecover": false, 109 | "autorestart": false 110 | }, 111 | "environment": { 112 | "type": "host" 113 | }, 114 | "supportedEnvironments": [ 115 | { 116 | "type": "host" 117 | }, 118 | { 119 | "type": "docker", 120 | "image": "steamcmd/steamcmd", 121 | "portBindings": [ 122 | "0.0.0.0:${port}:${port}/tcp", 123 | "0.0.0.0:${queryport}:${queryport}/tcp" 124 | ] 125 | } 126 | ], 127 | "requirements": { 128 | "os": "linux", 129 | "arch": "amd64" 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /ark/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "ark", 4 | "environment": { 5 | "type": "host" 6 | }, 7 | "ignoreExitCode": true 8 | }, 9 | { 10 | "name": "ark-docker", 11 | "environment": { 12 | "type": "docker", 13 | "image": "steamcmd/steamcmd" 14 | }, 15 | "ignoreExitCode": true 16 | } 17 | ] -------------------------------------------------------------------------------- /arma3/.skip: -------------------------------------------------------------------------------- 1 | Requires account -------------------------------------------------------------------------------- /arma3/README.md: -------------------------------------------------------------------------------- 1 | ## Arma 3 Template 2 | 3 | * This template requires credentials for a Steam account which has purchased the game. 4 | * Please reference https://community.bistudio.com/wiki/Arma_3_Startup_Parameters on how to input the strings for the startup parameters in the 'edit' section of the server. 5 | 6 | ## Notes 7 | 8 | This only supports Linux -------------------------------------------------------------------------------- /arma3/arma3.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "ARMA3", 4 | "icon": "arma3", 5 | "data": { 6 | "config": { 7 | "type": "string", 8 | "value": "config.cfg", 9 | "display": "Config File", 10 | "desc": "The Config file you want to use. NOTE: config.cfg is created on server installation!", 11 | "required": false, 12 | "userEdit": true 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "port": { 23 | "type": "integer", 24 | "value": 2302, 25 | "display": "Port", 26 | "desc": "What port to bind the server to", 27 | "required": true, 28 | "userEdit": false 29 | }, 30 | "steam_user": { 31 | "type": "string", 32 | "value": "anonymous", 33 | "display": "Steam User", 34 | "desc": "Username for Steam login", 35 | "required": true, 36 | "userEdit": true 37 | } 38 | }, 39 | "install": [ 40 | { 41 | "if": "env == 'host'", 42 | "type": "steamgamedl", 43 | "appId": "233780", 44 | "username": "${steam_user}" 45 | }, 46 | { 47 | "if": "env == 'docker'", 48 | "type": "command", 49 | "commands": [ 50 | "steamcmd +force_install_dir /pufferpanel +login ${steam_user} +app_update 233780 +quit" 51 | ] 52 | }, 53 | { 54 | "type": "command", 55 | "commands": [ 56 | "touch ./config.cfg", 57 | "touch ./parameters.txt" 58 | ] 59 | } 60 | ], 61 | "run": { 62 | "command": "./arma3server -ip=${ip} -port=${port} -config=${config} -par=parameters.txt", 63 | "stopCode": 2, 64 | "stdin": { 65 | "type": "stdin" 66 | }, 67 | "autostart": false, 68 | "autorecover": false, 69 | "autorestart": false 70 | }, 71 | "environment": { 72 | "type": "host" 73 | }, 74 | "supportedEnvironments": [ 75 | { 76 | "type": "host" 77 | }, 78 | { 79 | "type": "docker", 80 | "image": "steamcmd/steamcmd", 81 | "portBindings": [ 82 | "0.0.0.0:${port}:${port}/tcp" 83 | ] 84 | } 85 | ], 86 | "requirements": { 87 | "os": "linux", 88 | "arch": "amd64" 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /csgo/.skip: -------------------------------------------------------------------------------- 1 | Too large for GitHub runners 2 | -------------------------------------------------------------------------------- /csgo/README.md: -------------------------------------------------------------------------------- 1 | ## Notes 2 | This only supports Linux. -------------------------------------------------------------------------------- /csgo/csgo.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Counter Strike: Global Offensive", 4 | "icon": "csgo", 5 | "data": { 6 | "clientport": { 7 | "type": "integer", 8 | "value": 27016, 9 | "display": "Client Port", 10 | "desc": "What port to bind the clientport to", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "gamemap": { 15 | "type": "string", 16 | "value": "de_dust2", 17 | "display": "Map", 18 | "desc": "Map to load by default", 19 | "required": true, 20 | "userEdit": true 21 | }, 22 | "gamemode": { 23 | "type": "integer", 24 | "value": 0, 25 | "display": "Gamemode", 26 | "desc": "(Advanced) Gamemode", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "gametype": { 31 | "type": "integer", 32 | "value": 0, 33 | "display": "Gametype", 34 | "desc": "(Advanced) Gametype", 35 | "required": true, 36 | "userEdit": true 37 | }, 38 | "gslt": { 39 | "type": "string", 40 | "value": "", 41 | "display": "GSLT Token", 42 | "desc": "It is required to register your server, otherwise it can only be played on LAN. Visit http://steamcommunity.com/dev/managegameservers to get a token", 43 | "required": true, 44 | "userEdit": true 45 | }, 46 | "ip": { 47 | "type": "string", 48 | "value": "0.0.0.0", 49 | "display": "IP", 50 | "desc": "What IP to bind the server to", 51 | "required": true, 52 | "userEdit": false 53 | }, 54 | "mapgroup": { 55 | "type": "string", 56 | "value": "mg_active", 57 | "display": "Map group", 58 | "desc": "(Advanced) Map group", 59 | "required": true, 60 | "userEdit": true 61 | }, 62 | "maxplayers": { 63 | "type": "integer", 64 | "value": 20, 65 | "display": "Max Players", 66 | "desc": "Max players allowed on server", 67 | "required": true, 68 | "userEdit": true 69 | }, 70 | "port": { 71 | "type": "integer", 72 | "value": 27015, 73 | "display": "Port", 74 | "desc": "What port to bind the server to", 75 | "required": true, 76 | "userEdit": false 77 | }, 78 | "tickrate": { 79 | "type": "integer", 80 | "value": 64, 81 | "display": "Tickrate", 82 | "desc": "Server tick rate", 83 | "required": true, 84 | "userEdit": true 85 | }, 86 | "tvport": { 87 | "type": "integer", 88 | "value": 27017, 89 | "display": "GOTV Port", 90 | "desc": "What port to bind the GOTV to", 91 | "required": true, 92 | "userEdit": false 93 | } 94 | }, 95 | "install": [ 96 | { 97 | "if": "env == 'host'", 98 | "type": "steamgamedl", 99 | "appId": "740" 100 | }, 101 | { 102 | "if": "env == 'docker'", 103 | "type": "command", 104 | "commands": [ 105 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 740 +quit" 106 | ] 107 | } 108 | ], 109 | "run": { 110 | "command": "./srcds_run -game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${tvport} +map ${gamemap} -maxplayers_override ${maxplayers} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +mapgroup ${mapgroup} +game_mode ${gamemode} +game_type ${gametype} -net_port_try 1 -norestart", 111 | "stop": "exit", 112 | "stdin": { 113 | "type": "stdin" 114 | }, 115 | "autostart": false, 116 | "autorecover": false, 117 | "autorestart": false 118 | }, 119 | "environment": { 120 | "type": "host" 121 | }, 122 | "supportedEnvironments": [ 123 | { 124 | "type": "host" 125 | }, 126 | { 127 | "type": "docker", 128 | "image": "steamcmd/steamcmd:ubuntu-20", 129 | "portBindings": [ 130 | "0.0.0.0:${port}:${port}/tcp", 131 | "0.0.0.0:${clientport}:${clientport}/tcp", 132 | "0.0.0.0:${tvport}:${tvport}/tcp" 133 | ] 134 | } 135 | ], 136 | "requirements": { 137 | "os": "linux", 138 | "arch": "amd64" 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /css/README.md: -------------------------------------------------------------------------------- 1 | # Counter Strike: Source 2 | 3 | Install this for CS:Souce: 4 | ``` 5 | sudo apt install lib32tinfo5 6 | ``` 7 | If you use SourceMod and connect to MySQL install this: 8 | ``` 9 | sudo apt install lib32z1 10 | ``` 11 | 12 | ## This only supports Linux. 13 | -------------------------------------------------------------------------------- /css/css.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Counter Strike: Source", 4 | "icon": "css", 5 | "data": { 6 | "clientport": { 7 | "type": "integer", 8 | "value": 27005, 9 | "display": "Client Port", 10 | "desc": "What port to bind the clientport to", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "mapName": { 23 | "type": "string", 24 | "value": "de_dust2", 25 | "display": "Map", 26 | "desc": "Map to load by default", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "maxplayers": { 31 | "type": "integer", 32 | "value": 20, 33 | "display": "Max Players", 34 | "desc": "Max players allowed on server", 35 | "required": true, 36 | "userEdit": true 37 | }, 38 | "port": { 39 | "type": "integer", 40 | "value": 27015, 41 | "display": "Port", 42 | "desc": "What port to bind the server to", 43 | "required": true, 44 | "userEdit": false 45 | }, 46 | "tickrate": { 47 | "type": "integer", 48 | "value": 66, 49 | "display": "Tickrate", 50 | "desc": "Server tick speed, to use this value you need to download this addon: https://github.com/daemon32/tickrate_enabler/releases/tag/0.5", 51 | "required": true, 52 | "userEdit": true 53 | }, 54 | "tvport": { 55 | "type": "integer", 56 | "value": 27020, 57 | "display": "SourceTV Port", 58 | "desc": "What port to bind the SourceTV to", 59 | "required": true, 60 | "userEdit": false 61 | } 62 | }, 63 | "install": [ 64 | { 65 | "if": "env == 'host'", 66 | "type": "steamgamedl", 67 | "appId": "232330" 68 | }, 69 | { 70 | "if": "env == 'docker'", 71 | "type": "command", 72 | "commands": [ 73 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 232330 +quit" 74 | ] 75 | } 76 | ], 77 | "run": { 78 | "command": "./srcds_run -game cstrike -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${tvport} +map ${mapName} -maxplayers ${maxplayers} -tickrate ${tickrate} -norestart", 79 | "stop": "exit", 80 | "stdin": { 81 | "type": "stdin" 82 | }, 83 | "autostart": false, 84 | "autorecover": false, 85 | "autorestart": false 86 | }, 87 | "environment": { 88 | "type": "host" 89 | }, 90 | "supportedEnvironments": [ 91 | { 92 | "type": "host" 93 | }, 94 | { 95 | "type": "docker", 96 | "image": "steamcmd/steamcmd", 97 | "portBindings": [ 98 | "0.0.0.0:${port}:${port}/tcp", 99 | "0.0.0.0:${clientport}:${clientport}/tcp", 100 | "0.0.0.0:${tvport}:${tvport}/tcp" 101 | ] 102 | } 103 | ], 104 | "requirements": { 105 | "os": "linux", 106 | "arch": "amd64" 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /cstrike/cstrike.json: -------------------------------------------------------------------------------- 1 | { 2 | "display": "Counter Strike 1.6", 3 | "type": "goldsrc", 4 | "data": { 5 | "clientport": { 6 | "type": "integer", 7 | "desc": "What port to bind the clientport to", 8 | "display": "Client Port", 9 | "required": true, 10 | "value": 27005 11 | }, 12 | "ip": { 13 | "type": "string", 14 | "desc": "What IP to bind the server to", 15 | "display": "IP", 16 | "required": true, 17 | "value": "0.0.0.0" 18 | }, 19 | "loadMap": { 20 | "type": "string", 21 | "desc": "Map to load by default", 22 | "display": "Map", 23 | "required": true, 24 | "value": "de_dust2" 25 | }, 26 | "maxplayers": { 27 | "type": "integer", 28 | "desc": "Max players allowed on server", 29 | "display": "Max Players", 30 | "required": true, 31 | "value": 20 32 | }, 33 | "port": { 34 | "type": "integer", 35 | "desc": "What port to bind the server to", 36 | "display": "Port", 37 | "required": true, 38 | "value": 27015 39 | }, 40 | "tickrate": { 41 | "type": "integer", 42 | "desc": "Server tick speed, to use this value you need to download this addon: https://github.com/daemon32/tickrate_enabler/releases/tag/0.5", 43 | "display": "Tickrate", 44 | "required": true, 45 | "value": 66 46 | }, 47 | "tvport": { 48 | "type": "integer", 49 | "desc": "What port to bind the HLTV to", 50 | "display": "HLTV Port", 51 | "required": true, 52 | "value": 27020 53 | } 54 | }, 55 | "install": [ 56 | { 57 | "appId": "90", 58 | "type": "steamgamedl" 59 | }, 60 | { 61 | "type": "command", 62 | "commands": [ 63 | "cp -r .steam/linux32 .steam/sdk32" 64 | ] 65 | } 66 | ], 67 | "run": { 68 | "stop": "exit", 69 | "command": "./hlds_run -game cstrike -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${tvport} +map ${loadMap} -maxplayers ${maxplayers} -tickrate ${tickrate} -norestart", 70 | "pre": [], 71 | "post": [], 72 | "environmentVars": {} 73 | }, 74 | "environment": { 75 | "type": "host" 76 | }, 77 | "supportedEnvironments": [ 78 | { 79 | "type": "host" 80 | }, 81 | { 82 | "type": "docker", 83 | "image": "steamcmd/steamcmd", 84 | "portBindings": [ 85 | "0.0.0.0:${port}:${port}/tcp", 86 | "0.0.0.0:${clientport}:${clientport}/tcp", 87 | "0.0.0.0:${tvport}:${tvport}/tcp" 88 | ] 89 | } 90 | ], 91 | "requirements": { 92 | "os": "linux", 93 | "arch": "amd64" 94 | } 95 | } -------------------------------------------------------------------------------- /discord-jda/.skip: -------------------------------------------------------------------------------- 1 | Requires a specific file -------------------------------------------------------------------------------- /discord-jda/README.md: -------------------------------------------------------------------------------- 1 | # JDA pufferpanel template 2 | 3 | ## Allows you to easly host your JDA bots 4 | 5 | ### Note: This only works with compiled .jar files 6 | 7 | - Made by @CristianEduardMihai -------------------------------------------------------------------------------- /discord-jda/discord-jda.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "discord", 3 | "display": "JDA Bot", 4 | "data": { 5 | "jar": { 6 | "type": "string", 7 | "value": "bot.jar", 8 | "display": "Bot Jar file", 9 | "desc": "The .jar file to execute", 10 | "required": true, 11 | "userEdit": true 12 | } 13 | }, 14 | "run": { 15 | "command": "java -jar ${jar}", 16 | "stopCode": 9, 17 | "stdin": { 18 | "type": "stdin" 19 | }, 20 | "autostart": false, 21 | "autorecover": false, 22 | "autorestart": false 23 | }, 24 | "environment": { 25 | "type": "host" 26 | }, 27 | "supportedEnvironments": [ 28 | { 29 | "type": "host" 30 | }, 31 | { 32 | "type": "docker", 33 | "image": "eclipse-temurin" 34 | } 35 | ], 36 | "requirements": { 37 | "binaries": [ 38 | "java" 39 | ] 40 | }, 41 | "stats": { 42 | "type": "jcmd" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /discord-js/.skip: -------------------------------------------------------------------------------- 1 | Requires a specific file -------------------------------------------------------------------------------- /discord-js/README.md: -------------------------------------------------------------------------------- 1 | # Discord.js pufferpanel template 2 | 3 | ### Allows you to easly host your discord.js bots 4 | 5 | - Made by @CristianEduardMihai -------------------------------------------------------------------------------- /discord-js/discord-js.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "discord", 3 | "display": "discord.js", 4 | "data": { 5 | "bot-js-file": { 6 | "type": "string", 7 | "value": "bot.js", 8 | "display": "Main bot file", 9 | "desc": "The main bot file.", 10 | "required": true, 11 | "userEdit": false 12 | } 13 | }, 14 | "install": [ 15 | { 16 | "type": "command", 17 | "commands": [ 18 | "npm i" 19 | ] 20 | } 21 | ], 22 | "run": { 23 | "command": "node ./${bot-js-file}", 24 | "stopCode": 9, 25 | "stdin": { 26 | "type": "stdin" 27 | }, 28 | "autostart": false, 29 | "autorecover": false, 30 | "autorestart": false 31 | }, 32 | "environment": { 33 | "type": "host" 34 | }, 35 | "supportedEnvironments": [ 36 | { 37 | "type": "host" 38 | }, 39 | { 40 | "type": "docker", 41 | "image": "node" 42 | } 43 | ], 44 | "requirements": { 45 | "binaries": [ 46 | "node", 47 | "npm" 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /discord-py/.skip: -------------------------------------------------------------------------------- 1 | Requires a specific file -------------------------------------------------------------------------------- /discord-py/README.md: -------------------------------------------------------------------------------- 1 | # Discord.py pufferpanel template 2 | ### Allows you to easly host your discord bots 3 | - Made by @CristianEduardMihai 4 | 5 | # Troubleshooting 6 | 7 | ``` 8 | No module named pip 9 | ``` 10 | - That's an easy fix, install pip 11 | 12 | Ubuntu/Debian/Raspbian 13 | ``` 14 | sudo apt update 15 | sudo apt -y install python3-pip 16 | ``` 17 | Fedora 18 | ``` 19 | sudo dnf install python3-pip 20 | ``` 21 | [Centos](https://linuxize.com/post/how-to-install-pip-on-centos-7/) 22 | 23 | --- 24 | ``` 25 | Could not open requirements file 26 | ``` 27 | - Read [this](https://learnpython.com/blog/python-requirements-file/) and create a requirements.txt file 28 | --- 29 | ``` 30 | can't open file '/var/lib/pufferpanel/servers/xxxxxxxx/bot.py' 31 | ``` 32 | - Is your file named `bot.py` ? If not, edit the server settings 33 | 34 | ![image](https://i.imgur.com/0kAliVV.png) 35 | 36 | ### If you did everything above(and only then), and it's still not working, ask for support on discord 37 | ![image](https://i.imgur.com/Po12CF7.png) -------------------------------------------------------------------------------- /discord-py/discord-py.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "discord", 3 | "display": "discord.py Bot", 4 | "data": { 5 | "bot-py-file": { 6 | "type": "string", 7 | "value": "bot.py", 8 | "display": "Main bot file", 9 | "desc": "The main bot file.", 10 | "required": true, 11 | "userEdit": true 12 | } 13 | }, 14 | "install": [ 15 | { 16 | "type": "command", 17 | "commands": [ 18 | "python3 -m pip install -r requirements.txt" 19 | ] 20 | } 21 | ], 22 | "run": { 23 | "command": "python3 ${bot-py-file}", 24 | "stopCode": 9, 25 | "stdin": { 26 | "type": "stdin" 27 | }, 28 | "autostart": false, 29 | "autorecover": false, 30 | "autorestart": false 31 | }, 32 | "environment": { 33 | "type": "host" 34 | }, 35 | "supportedEnvironments": [ 36 | { 37 | "type": "host" 38 | }, 39 | { 40 | "type": "docker", 41 | "image": "python" 42 | } 43 | ], 44 | "requirements": { 45 | "binaries": [ 46 | "python3" 47 | ] 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /dontstarvetogether/.skip: -------------------------------------------------------------------------------- 1 | Requires account -------------------------------------------------------------------------------- /dontstarvetogether/ReadME.md: -------------------------------------------------------------------------------- 1 | # Do Not Starve Together Server 2 | 3 | ## Get the Server Token 4 | * Go to https://accounts.klei.com/account/game/servers?game=DontStarveTogether 5 | * Type in a Name for the new Server 6 | * click "add new Server" 7 | * copy the Server Token 8 | 9 | # Install needed dependencies: 10 | * For a 64-bit machine: dpkg --add-architecture i386 11 | * sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 12 | * For a 32-bit machine: sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev 13 | 14 | After the installation of the Server, you find the config files in ${rootDir}/DoNotStarveTogether/DontStarveTogetherServer/ 15 | 16 | ## Notes 17 | 18 | This only supports Linux. 19 | -------------------------------------------------------------------------------- /dontstarvetogether/dontstarvetogether.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Dont Starve Together", 4 | "icon": "dontstarvetogether", 5 | "data": { 6 | "description": { 7 | "type": "string", 8 | "value": "Dont Starve Together Server", 9 | "display": "Server Description", 10 | "desc": "Description for the Server", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "gamemode": { 15 | "type": "option", 16 | "value": "", 17 | "display": "Gamemode", 18 | "desc": "The Gamemode you want to play in", 19 | "required": true, 20 | "userEdit": true, 21 | "options": [ 22 | { 23 | "value": "survival", 24 | "display": "Survival" 25 | }, 26 | { 27 | "value": "wilderness", 28 | "display": "Wilderness" 29 | }, 30 | { 31 | "value": "endless", 32 | "display": "Endless" 33 | } 34 | ] 35 | }, 36 | "gamestyle": { 37 | "type": "option", 38 | "value": "", 39 | "display": "Gamestyle", 40 | "desc": "How do you want to play on your Server?", 41 | "required": true, 42 | "userEdit": true, 43 | "options": [ 44 | { 45 | "value": "social", 46 | "display": "Social" 47 | }, 48 | { 49 | "value": "cooperative", 50 | "display": "Cooperative" 51 | }, 52 | { 53 | "value": "competetive", 54 | "display": "Competetive" 55 | }, 56 | { 57 | "value": "madness", 58 | "display": "Madness" 59 | } 60 | ] 61 | }, 62 | "ip": { 63 | "type": "string", 64 | "value": "0.0.0.0", 65 | "display": "IP", 66 | "desc": "What IP to bind the server to", 67 | "required": true, 68 | "userEdit": true 69 | }, 70 | "maxplayers": { 71 | "type": "integer", 72 | "value": 5, 73 | "display": "Max Players", 74 | "desc": "How much Players can connect to your Server", 75 | "required": true, 76 | "userEdit": true 77 | }, 78 | "password": { 79 | "type": "string", 80 | "value": "", 81 | "display": "Password", 82 | "desc": "(optional) The password, needed to connect to your Server", 83 | "required": false, 84 | "userEdit": true 85 | }, 86 | "port": { 87 | "type": "integer", 88 | "value": 10889, 89 | "display": "Port", 90 | "desc": "What port to bind the server to", 91 | "required": true, 92 | "userEdit": true 93 | }, 94 | "pvp": { 95 | "type": "boolean", 96 | "value": false, 97 | "display": "PvP", 98 | "desc": "Should PvP activated on the Server?", 99 | "required": true, 100 | "userEdit": true 101 | }, 102 | "servername": { 103 | "type": "string", 104 | "value": "DDTServer", 105 | "display": "ServerName", 106 | "desc": "Display Name for the Server", 107 | "required": true, 108 | "userEdit": true 109 | }, 110 | "servertoken": { 111 | "type": "string", 112 | "value": "", 113 | "display": "Server Token", 114 | "desc": "Dont Starve Together Server Token (may find here here)", 115 | "required": true, 116 | "userEdit": true 117 | } 118 | }, 119 | "install": [ 120 | { 121 | "if": "env == 'host'", 122 | "type": "steamgamedl", 123 | "appId": "343050" 124 | }, 125 | { 126 | "if": "env == 'docker'", 127 | "type": "command", 128 | "commands": [ 129 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 343050 +quit" 130 | ] 131 | }, 132 | { 133 | "type": "mkdir", 134 | "target": "DoNotStarveTogether/DontStarveTogetherServer" 135 | }, 136 | { 137 | "type": "writefile", 138 | "target": "DoNotStarveTogether/DontStarveTogetherServer/cluster_token.txt", 139 | "text": "${servertoken}" 140 | }, 141 | { 142 | "type": "writefile", 143 | "text": "[GAMEPLAY]\ngame_mode = ${gamemode}\nmax_players = ${maxplayers}\npvp = ${pvp}\npause_when_empty = true\n\n[NETWORK]\ncluster_description = ${description}\ncluster_name = ${servername}\ncluster_intention = ${gamestyle}\ncluster_password = ${password}\n\n[MISC]\nconsole_enabled = true\n\n[SHARD]\nshard_enabled = true\nbind_ip = ${ip}\nmaster_ip = ${ip}\nmaster_port = ${port}\ncluster_key = ${servertoken}", 144 | "target": "DoNotStarveTogether/DontStarveTogetherServer/cluster.ini" 145 | } 146 | ], 147 | "run": { 148 | "command": "./dontstarve_dedicated_server_nullrenderer -persistent_storage_root . -console -cluster \"DontStarveTogetherServer\" -monitor_parent_process", 149 | "stop": "c_shutdown()", 150 | "stdin": { 151 | "type": "stdin" 152 | }, 153 | "autostart": false, 154 | "autorecover": false, 155 | "autorestart": false 156 | }, 157 | "environment": { 158 | "type": "host" 159 | }, 160 | "requirements": { 161 | "os": "linux", 162 | "arch": "amd64" 163 | } 164 | } 165 | -------------------------------------------------------------------------------- /eco/.skip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pufferpanel/templates/ee44ee6892625ea2ed99b54eeb2df5ada764a3e0/eco/.skip -------------------------------------------------------------------------------- /eco/README.md: -------------------------------------------------------------------------------- 1 | # Template for [ECO – Global Survival](http://www.strangeloopgames.com/eco/) 2 | This template makes it possible to run [ECO – Global Survival](http://www.strangeloopgames.com/eco/) with [PufferPanel](https://www.pufferpanel.com/) on Linux. 3 | 4 | ## Prerequisites 5 | * To use this template, you need to install `mono` on your server. 6 | To install `mono`, follow the instructions on [mono-project.com](https://www.mono-project.com/download/stable/) for your distribution. 7 | * You need the `unzip` command on your server. You can install `unzip` on Debian and Ubuntu with the following commands as root: 8 | ```bash 9 | apt-get update 10 | apt-get install unzip 11 | ``` 12 | 13 | ## Known issues 14 | * The ECO server will not start when used with mono version 5.16: https://github.com/StrangeLoopGames/EcoIssues/issues/9676 15 | 16 | You can use version 5.14 instead. 17 | -------------------------------------------------------------------------------- /eco/eco.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "eco", 3 | "display": "ECO - Global Survival", 4 | "icon": "eco", 5 | "data": { 6 | "ip": { 7 | "type": "string", 8 | "value": "0.0.0.0", 9 | "display": "IP", 10 | "desc": "What IP to bind the Eco game server to.", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "password": { 15 | "type": "string", 16 | "value": "", 17 | "display": "Password", 18 | "desc": "Password for the Eco Game Server, which will be required for login.", 19 | "required": false, 20 | "userEdit": true 21 | }, 22 | "port": { 23 | "type": "integer", 24 | "value": 3000, 25 | "display": "Game-Server Port", 26 | "desc": "What port to bind the server to", 27 | "required": true, 28 | "userEdit": false 29 | }, 30 | "serverVersion": { 31 | "type": "string", 32 | "value": "0.7.7.2-beta", 33 | "display": "Server Version", 34 | "desc": "Version of Eco server to install.", 35 | "required": true, 36 | "userEdit": true 37 | }, 38 | "webServerPort": { 39 | "type": "integer", 40 | "value": 3001, 41 | "display": "Web-Server Port", 42 | "desc": "What port to bind the Eco web server to.", 43 | "required": true, 44 | "userEdit": false 45 | } 46 | }, 47 | "install": [ 48 | { 49 | "type": "download", 50 | "files": [ 51 | "https://s3-us-west-2.amazonaws.com/eco-releases/EcoServer_v${serverVersion}.zip" 52 | ] 53 | }, 54 | { 55 | "type": "command", 56 | "commands": [ 57 | "unzip EcoServer_v*.zip", 58 | "rm EcoServer_v${serverVersion}.zip" 59 | ] 60 | }, 61 | { 62 | "type": "writefile", 63 | "target": "Configs/Network.eco", 64 | "text": "{\n \"PublicServer\": false,\n \"Password\": \"${password}\",\n \"Description\": \"\",\n \"IPAddress\": \"${ip}\",\n \"GameServerPort\": ${port},\n \"WebServerPort\": ${webServerPort},\n \"Rate\": 10,\n \"MaxConnections\": -1\n}" 65 | } 66 | ], 67 | "run": { 68 | "command": "mono EcoServer.exe -nogui", 69 | "stopCode": 9, 70 | "stdin": { 71 | "type": "stdin" 72 | }, 73 | "autostart": false, 74 | "autorecover": false, 75 | "autorestart": false 76 | }, 77 | "environment": { 78 | "type": "host" 79 | }, 80 | "requirements": { 81 | "os": "linux", 82 | "arch": "amd64", 83 | "binaries": [ 84 | "unzip", 85 | "mono" 86 | ] 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /eco9/.skip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pufferpanel/templates/ee44ee6892625ea2ed99b54eeb2df5ada764a3e0/eco9/.skip -------------------------------------------------------------------------------- /eco9/README.md: -------------------------------------------------------------------------------- 1 | # Updated Template for Eco v9 Beta versions 2 | 3 | Runs and updates using steamcmd 4 | 5 | ## Prerequisites (Tested on ubuntu 18.04.5 LTS) 6 | * .Net Core 3.1 https://docs.microsoft.com/en-us/dotnet/core/install/linux 7 | 8 | ## References 9 | 10 | * https://wiki.play.eco/en/Server_on_Linux 11 | 12 | ## Known Issues 13 | 14 | * If you get an error "Warning: failed to init SDL thread priority manager: SDL not found" 15 | This is a solution 16 | 17 | sudo apt install libsdl2-2.0-0:i386 18 | 19 | Source: https://github.com/ValveSoftware/steam-for-linux/issues/7036 20 | 21 | 22 | -------------------------------------------------------------------------------- /eco9/eco9.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Eco 9 Beta Version", 4 | "icon": "eco", 5 | "data": { 6 | "ServerName": { 7 | "type": "string", 8 | "value": "", 9 | "display": "Name the Server", 10 | "desc": "Server Name", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the Eco game server to.", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "maxcon": { 23 | "type": "integer", 24 | "value": -1, 25 | "display": "Max Connections", 26 | "desc": "Maximum Connections to Server (Player Limit, -1 is unlimited)", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "password": { 31 | "type": "string", 32 | "value": "", 33 | "display": "Password", 34 | "desc": "Password for the Eco Game Server, which will be required for login.", 35 | "required": false, 36 | "userEdit": false 37 | }, 38 | "port": { 39 | "type": "integer", 40 | "value": 3000, 41 | "display": "Game-Server Port, port forward for external access", 42 | "desc": "What port to bind the server to", 43 | "required": true, 44 | "userEdit": false 45 | }, 46 | "upnp": { 47 | "type": "boolean", 48 | "value": false, 49 | "display": "Do you wish to Enable uPnP?", 50 | "desc": "Enable pnp?", 51 | "required": true, 52 | "userEdit": false 53 | }, 54 | "webServerPort": { 55 | "type": "integer", 56 | "value": 3001, 57 | "display": "Web-Server Port", 58 | "desc": "What port to bind the Eco web server to.", 59 | "required": true, 60 | "userEdit": false 61 | } 62 | }, 63 | "install": [ 64 | { 65 | "if": "env == 'host'", 66 | "type": "steamgamedl", 67 | "appId": "739590" 68 | }, 69 | { 70 | "if": "env == 'docker'", 71 | "type": "command", 72 | "commands": [ 73 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 739590 -beta default validate +quit" 74 | ] 75 | }, 76 | { 77 | "type": "writefile", 78 | "target": "Configs/Network.eco", 79 | "text": "{\n \"PublicServer\": false,\n \"Password\": \"${password}\",\n \"Description\": \"${ServerName}\",\n \"IPAddress\": \"${ip}\",\n \"GameServerPort\": ${port},\n \"WebServerPort\": ${webServerPort},\n \"Rate\": 10,\n \"MaxConnections\": ${maxcon},\n \"UPnPEnabled\": ${upnp}\n}" 80 | }, 81 | { 82 | "type": "command", 83 | "commands": [ 84 | "chmod +x EcoServer" 85 | ] 86 | } 87 | ], 88 | "run": { 89 | "command": "./EcoServer", 90 | "stopCode": 2, 91 | "stdin": { 92 | "type": "stdin" 93 | }, 94 | "autostart": false, 95 | "autorecover": false, 96 | "autorestart": false 97 | }, 98 | "environment": { 99 | "type": "host" 100 | }, 101 | "supportedEnvironments": [ 102 | { 103 | "type": "host" 104 | }, 105 | { 106 | "type": "docker", 107 | "image": "steamcmd/steamcmd", 108 | "portBindings": [ 109 | "${port}:${port}/tcp" 110 | ] 111 | } 112 | ], 113 | "requirements": { 114 | "os": "linux", 115 | "arch": "amd64" 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /exclude.txt: -------------------------------------------------------------------------------- 1 | */data.json 2 | .vscode/* 3 | .idea/* 4 | .github/* 5 | spec.json -------------------------------------------------------------------------------- /factorio/factorio.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "factorio", 3 | "display": "Factorio", 4 | "icon": "factorio", 5 | "data": { 6 | "ip": { 7 | "type": "string", 8 | "value": "0.0.0.0", 9 | "display": "IP", 10 | "desc": "What IP to bind the server to", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "port": { 15 | "type": "integer", 16 | "value": 34197, 17 | "display": "Port", 18 | "desc": "What port to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "save": { 23 | "type": "string", 24 | "value": "saves/default.zip", 25 | "display": "Save File to Use", 26 | "desc": "Save File to Use", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "server-settings": { 31 | "type": "string", 32 | "value": "factorio/data/server-settings.json", 33 | "display": "Server Settings JSON", 34 | "desc": "Server Settings File Location", 35 | "required": true, 36 | "userEdit": true 37 | } 38 | }, 39 | "install": [ 40 | { 41 | "type": "download", 42 | "files": [ 43 | "https://www.factorio.com/get-download/latest/headless/linux64" 44 | ] 45 | }, 46 | { 47 | "type": "move", 48 | "source": "factorio-headless_*.tar.xz", 49 | "target": "factorio-install.tar.xz" 50 | }, 51 | { 52 | "type": "extract", 53 | "source": "factorio-install.tar.xz", 54 | "destination": "." 55 | }, 56 | { 57 | "type": "command", 58 | "commands": [ 59 | "cp -n factorio/data/server-settings.example.json factorio/data/server-settings.json", 60 | "chmod +x factorio/bin/x64/factorio", 61 | "factorio/bin/x64/factorio --create saves/default.zip" 62 | ] 63 | } 64 | ], 65 | "run": { 66 | "command": "factorio/bin/x64/factorio --port ${port} --bind ${ip} --start-server ${save} --server-settings ${server-settings}", 67 | "stop": "/quit", 68 | "stdin": { 69 | "type": "stdin" 70 | }, 71 | "autostart": false, 72 | "autorecover": false, 73 | "autorestart": false 74 | }, 75 | "environment": { 76 | "type": "host" 77 | }, 78 | "supportedEnvironments": [ 79 | { 80 | "type": "host" 81 | }, 82 | { 83 | "type": "docker", 84 | "image": "pufferpanel/ubuntu", 85 | "portBindings": [ 86 | "0.0.0.0:${port}:${port}/tcp" 87 | ] 88 | } 89 | ], 90 | "requirements": { 91 | "os": "linux", 92 | "arch": "amd64", 93 | "binaries": [ 94 | "curl", 95 | "tar", 96 | "xz" 97 | ] 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /gmod/README.md: -------------------------------------------------------------------------------- 1 | ## Garry's Mod 2 | Install this to use SteamCMD: 3 | ``` 4 | sudo apt install lib32gcc1 lib32stdc++6 5 | ``` 6 | Install this for Gmod: 7 | ``` 8 | sudo apt install libncurses5:i386 9 | ``` 10 | ## This only supports Linux. 11 | -------------------------------------------------------------------------------- /gmod/gmod.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Garry's Mod", 4 | "icon": "gmod", 5 | "data": { 6 | "gamemode": { 7 | "type": "string", 8 | "value": "sandbox", 9 | "display": "Gamemode", 10 | "desc": "Gamemode to load", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "mapname": { 15 | "type": "string", 16 | "value": "gm_construct", 17 | "display": "Map", 18 | "desc": "Map to load by default", 19 | "required": true, 20 | "userEdit": true 21 | }, 22 | "maxplayers": { 23 | "type": "integer", 24 | "value": 20, 25 | "display": "Max Players", 26 | "desc": "Max players allowed on server", 27 | "required": true, 28 | "userEdit": false 29 | }, 30 | "port": { 31 | "type": "integer", 32 | "value": 27015, 33 | "display": "Port", 34 | "desc": "What port to bind the server to", 35 | "required": true, 36 | "userEdit": false 37 | }, 38 | "steamaccounttoken": { 39 | "type": "string", 40 | "value": "", 41 | "display": "Steam Game Server Account Token", 42 | "desc": "Token for a game server account. *optional* (Get one here: https://steamcommunity.com/dev/managegameservers)", 43 | "required": false, 44 | "userEdit": true 45 | }, 46 | "wscollection": { 47 | "type": "string", 48 | "value": "", 49 | "display": "Workshop Collection ID", 50 | "desc": "Specify a ws collection the server should load. *optional*", 51 | "required": false, 52 | "userEdit": true 53 | } 54 | }, 55 | "install": [ 56 | { 57 | "if": "env == 'host'", 58 | "type": "steamgamedl", 59 | "appId": "4020" 60 | }, 61 | { 62 | "if": "env == 'docker'", 63 | "type": "command", 64 | "commands": [ 65 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 4020 +quit" 66 | ] 67 | }, 68 | { 69 | "type": "command", 70 | "commands": [ 71 | "chmod +x srcds_run" 72 | ] 73 | } 74 | ], 75 | "run": { 76 | "command": "./srcds_run +port ${port} -game garrysmod -console +gamemode ${gamemode} +map ${mapname} +maxplayers ${maxplayers} +host_workshop_collection ${wscollection} +sv_setsteamaccount ${steamaccounttoken} -norestart", 77 | "stop": "exit", 78 | "stdin": { 79 | "type": "stdin" 80 | }, 81 | "autostart": false, 82 | "autorecover": false, 83 | "autorestart": false 84 | }, 85 | "environment": { 86 | "type": "host" 87 | }, 88 | "supportedEnvironments": [ 89 | { 90 | "type": "host" 91 | }, 92 | { 93 | "type": "docker", 94 | "image": "steamcmd/steamcmd", 95 | "portBindings": [ 96 | "0.0.0.0:${port}:${port}/tcp" 97 | ] 98 | } 99 | ], 100 | "requirements": { 101 | "os": "linux", 102 | "arch": "amd64" 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /minecraft-bedrock/minecraft-bedrock.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-bedrock", 3 | "display": "Minecraft Bedrock", 4 | "icon": "minecraft-bedrock", 5 | "data": { 6 | "allow-cheats": { 7 | "type": "boolean", 8 | "value": false, 9 | "display": "Allow Cheats", 10 | "desc": "If true then cheats like commands can be used.", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "default-player-permission-level": { 15 | "type": "string", 16 | "value": "member", 17 | "display": "Default Permission Level", 18 | "desc": "Permission level for new players joining for the first time.", 19 | "required": true, 20 | "userEdit": true 21 | }, 22 | "difficulty": { 23 | "type": "string", 24 | "value": "easy", 25 | "display": "Difficulty", 26 | "desc": "Sets the difficulty of the world.", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "gamemode": { 31 | "type": "string", 32 | "value": "survival", 33 | "display": "Gamemode", 34 | "desc": "Sets the game mode for new players.", 35 | "required": true, 36 | "userEdit": true 37 | }, 38 | "level-name": { 39 | "type": "string", 40 | "value": "Bedrock level", 41 | "display": "Level Name", 42 | "desc": "Name of the World Folder", 43 | "required": true, 44 | "userEdit": true 45 | }, 46 | "level-seed": { 47 | "type": "string", 48 | "value": "", 49 | "display": "Level Seed", 50 | "desc": "Use to randomize the world", 51 | "required": false, 52 | "userEdit": true 53 | }, 54 | "max-players": { 55 | "type": "integer", 56 | "value": 10, 57 | "display": "Max Players", 58 | "desc": "The maximum number of players that can play on the server.", 59 | "required": true, 60 | "userEdit": true 61 | }, 62 | "max-threads": { 63 | "type": "integer", 64 | "value": 0, 65 | "display": "Max Threads", 66 | "desc": "Maximum number of threads the server will try to use. If set to 0 or removed then it will use as many as possible.", 67 | "required": true, 68 | "userEdit": true 69 | }, 70 | "online-mode": { 71 | "type": "boolean", 72 | "value": true, 73 | "display": "Online Mode", 74 | "desc": "Whether a player is required to be authenticated to XBox Live", 75 | "required": true, 76 | "userEdit": true 77 | }, 78 | "player-idle-timeout": { 79 | "type": "integer", 80 | "value": 30, 81 | "display": "Player Idle Timeout", 82 | "desc": "After a player has idled for this many minutes they will be kicked. If set to 0 then players can idle indefinitely.", 83 | "required": true, 84 | "userEdit": true 85 | }, 86 | "server-name": { 87 | "type": "string", 88 | "value": "Dedicated Server", 89 | "display": "Server Name", 90 | "desc": "Used as the server name", 91 | "required": true, 92 | "userEdit": true 93 | }, 94 | "server-port": { 95 | "type": "integer", 96 | "value": 19132, 97 | "display": "Server Port", 98 | "desc": "Which IPv4 port the server should listen to.", 99 | "required": true, 100 | "userEdit": false 101 | }, 102 | "server-portv6": { 103 | "type": "integer", 104 | "value": 19133, 105 | "display": "Server Port (IPv6)", 106 | "desc": "Which IPv6 port the server should listen to.", 107 | "required": true, 108 | "userEdit": false 109 | }, 110 | "texturepack-required": { 111 | "type": "boolean", 112 | "value": false, 113 | "display": "Force Server Texturepack", 114 | "desc": "Force clients to use texture packs in the current world", 115 | "required": true, 116 | "userEdit": true 117 | }, 118 | "tick-distance": { 119 | "type": "integer", 120 | "value": 4, 121 | "display": "Tick Distance", 122 | "desc": "The world will be ticked this many chunks away from any player.", 123 | "required": true, 124 | "userEdit": true 125 | }, 126 | "version": { 127 | "type": "string", 128 | "value": "1.19.50.02", 129 | "display": "Bedrock Version", 130 | "desc": "Version of the Minecraft Bedrock Server to use", 131 | "required": true, 132 | "userEdit": true 133 | }, 134 | "view-distance": { 135 | "type": "integer", 136 | "value": 32, 137 | "display": "View Distance", 138 | "desc": "The maximum allowed view distance in number of chunks.", 139 | "required": true, 140 | "userEdit": true 141 | }, 142 | "white-list": { 143 | "type": "boolean", 144 | "value": false, 145 | "display": "Whitelist", 146 | "desc": "If true then all connected players must be listed in the separate whitelist.json file.", 147 | "required": true, 148 | "userEdit": true 149 | } 150 | }, 151 | "install": [ 152 | { 153 | "type": "download", 154 | "files": [ 155 | "https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-${version}.zip" 156 | ] 157 | }, 158 | { 159 | "type": "extract", 160 | "source": "bedrock-server-${version}.zip", 161 | "destination": "" 162 | }, 163 | { 164 | "type": "writefile", 165 | "text": "server-name=${server-name}\ngamemode=${gamemode}\ndifficulty=${difficulty}\nallow-cheats=${allow-cheats}\nmax-players=${max-players}\nonline-mode=${online-mode}\nwhite-list=${white-list}\nserver-port=${server-port}\nserver-portv6=${server-portv6}\nview-distance=${view-distance}\ntick-distance=${tick-distance}\nplayer-idle-timeout=${player-idle-timeout}\nmax-threads=${max-threads}\nlevel-name=${level-name}\nlevel-seed=${level-seed}\ndefault-player-permission-level=${default-player-permission-level}\ntexturepack-required=${texturepack-required}\n", 166 | "target": "server.properties" 167 | } 168 | ], 169 | "run": { 170 | "command": "./bedrock_server", 171 | "stop": "stop", 172 | "environmentVars": { 173 | "LD_LIBRARY_PATH": "." 174 | }, 175 | "stdin": { 176 | "type": "stdin" 177 | }, 178 | "autostart": false, 179 | "autorecover": false, 180 | "autorestart": false 181 | }, 182 | "environment": { 183 | "type": "host" 184 | }, 185 | "supportedEnvironments": [ 186 | { 187 | "type": "host" 188 | }, 189 | { 190 | "type": "docker", 191 | "image": "pufferpanel/ubuntu", 192 | "portBindings": [ 193 | "0.0.0.0:${server-port}:${server-port}/tcp" 194 | ] 195 | } 196 | ], 197 | "requirements": { 198 | "os": "linux", 199 | "arch": "amd64", 200 | "binaries": [ 201 | "unzip" 202 | ] 203 | } 204 | } 205 | -------------------------------------------------------------------------------- /minecraft-bungeecord/minecraft-bungeecord.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-java", 3 | "display": "Bungeecord - Minecraft", 4 | "icon": "minecraft-java", 5 | "data": { 6 | "ip": { 7 | "type": "string", 8 | "value": "0.0.0.0", 9 | "display": "IP", 10 | "desc": "What IP to bind the server to", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "memory": { 15 | "type": "integer", 16 | "value": 512, 17 | "display": "Memory (MB)", 18 | "desc": "How much memory in MB to allocate to the BungeeCord server. It is generally recommended to allocated 512MB RAM for every 500 players. Please keep in mind that additional plugins may impact the amount needed in your case.", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "motd": { 23 | "type": "string", 24 | "value": "A BungeeCord Server &9hosted on PufferPanel", 25 | "display": "MOTD message of the day", 26 | "desc": "This is the message that is displayed in the server list of the client, below the name. The MOTD does support color and formatting codes.", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "port": { 31 | "type": "integer", 32 | "value": 25577, 33 | "display": "Port", 34 | "desc": "What port to bind the server to", 35 | "required": true, 36 | "userEdit": false 37 | }, 38 | "javaVersion": { 39 | "type": "string", 40 | "value": "21", 41 | "display": "Java Version", 42 | "desc": "What Java version to use", 43 | "required": true, 44 | "userEdit": false 45 | } 46 | }, 47 | "install": [ 48 | { 49 | "if": "env == 'host' && javaVersion != ''", 50 | "type": "javadl", 51 | "version": "${javaVersion}" 52 | }, 53 | { 54 | "type": "download", 55 | "files": [ 56 | "http://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar" 57 | ] 58 | }, 59 | { 60 | "type": "writefile", 61 | "text": "listeners:\n- query_port: ${port}\n host: ${ip}:${port}\n motd: '${motd}'\n", 62 | "target": "config.yml" 63 | } 64 | ], 65 | "run": { 66 | "command": [ 67 | { 68 | "command": "java${javaVersion} -Xmx${memory}M -Xms${memory}M -Dlog4j2.formatMsgNoLookups=true -jar BungeeCord.jar", 69 | "if": "env == 'host' && javaVersion != ''" 70 | }, 71 | { 72 | "command": "java -Xmx${memory}M -Xms${memory}M -Dlog4j2.formatMsgNoLookups=true -jar BungeeCord.jar" 73 | } 74 | ], 75 | "stop": "end", 76 | "stdin": { 77 | "type": "stdin" 78 | }, 79 | "autostart": false, 80 | "autorecover": false, 81 | "autorestart": false 82 | }, 83 | "environment": { 84 | "type": "host" 85 | }, 86 | "supportedEnvironments": [ 87 | { 88 | "type": "host" 89 | }, 90 | { 91 | "type": "docker", 92 | "image": "eclipse-temurin:${javaVersion}", 93 | "portBindings": [ 94 | "0.0.0.0:${port}:${port}/tcp" 95 | ] 96 | } 97 | ], 98 | "requirements": {} 99 | } 100 | -------------------------------------------------------------------------------- /minecraft-curseforge/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "minecraft-curseforge-715572", 4 | "variables": { 5 | "memory": "4096", 6 | "ip": "0.0.0.0", 7 | "port": "25565", 8 | "eula": true, 9 | "javaversion": "17", 10 | "projectId": "715572", 11 | "fileId": "0" 12 | }, 13 | "environment": { 14 | "type": "host" 15 | } 16 | }, 17 | { 18 | "name": "minecraft-curseforge-876781", 19 | "variables": { 20 | "memory": "4096", 21 | "ip": "0.0.0.0", 22 | "port": "25565", 23 | "eula": true, 24 | "javaversion": "17", 25 | "projectId": "876781", 26 | "fileId": "0" 27 | }, 28 | "environment": { 29 | "type": "host" 30 | } 31 | }, 32 | { 33 | "name": "minecraft-curseforge-829758", 34 | "variables": { 35 | "memory": "4096", 36 | "ip": "0.0.0.0", 37 | "port": "25565", 38 | "eula": true, 39 | "javaversion": "17", 40 | "projectId": "829758", 41 | "fileId": "0" 42 | }, 43 | "environment": { 44 | "type": "host" 45 | } 46 | }, 47 | { 48 | "name": "minecraft-curseforge-520914", 49 | "variables": { 50 | "memory": "4096", 51 | "ip": "0.0.0.0", 52 | "port": "25565", 53 | "eula": true, 54 | "javaversion": "17", 55 | "projectId": "520914", 56 | "fileId": "0" 57 | }, 58 | "environment": { 59 | "type": "host" 60 | } 61 | }, 62 | { 63 | "name": "minecraft-curseforge-466901", 64 | "variables": { 65 | "memory": "4096", 66 | "ip": "0.0.0.0", 67 | "port": "25565", 68 | "eula": true, 69 | "javaversion": "17", 70 | "projectId": "466901", 71 | "fileId": "5181988" 72 | }, 73 | "environment": { 74 | "type": "host" 75 | } 76 | }, 77 | { 78 | "name": "minecraft-curseforge-887839", 79 | "variables": { 80 | "memory": "4096", 81 | "ip": "0.0.0.0", 82 | "port": "25565", 83 | "eula": true, 84 | "javaversion": "17", 85 | "projectId": "887839", 86 | "fileId": "0" 87 | }, 88 | "environment": { 89 | "type": "host" 90 | } 91 | } 92 | ] 93 | -------------------------------------------------------------------------------- /minecraft-curseforge/minecraft-curseforge.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-java", 3 | "display": "Minecraft: Java Edition (Curseforge Modpack)", 4 | "icon": "minecraft-java", 5 | "data": { 6 | "eula": { 7 | "type": "boolean", 8 | "value": false, 9 | "display": "EULA Agreement (true/false)", 10 | "desc": "Do you (or the server owner) agree to the Minecraft EULA?", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "javaversion": { 23 | "type": "string", 24 | "value": "17", 25 | "display": "Java Version", 26 | "desc": "Version of Java to use", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "jvmArgs": { 31 | "type": "string", 32 | "value": "-Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true", 33 | "display": "JVM Arguments", 34 | "desc": "Extra JVM arguments to pass", 35 | "required": false, 36 | "userEdit": false 37 | }, 38 | "memory": { 39 | "type": "integer", 40 | "value": 1024, 41 | "display": "Memory (MB)", 42 | "desc": "How much memory in MB to allocate to the Java Heap", 43 | "required": true, 44 | "userEdit": false 45 | }, 46 | "port": { 47 | "type": "integer", 48 | "value": 25565, 49 | "display": "Port", 50 | "desc": "What port to bind the server to", 51 | "required": true, 52 | "userEdit": false 53 | }, 54 | "projectId": { 55 | "type": "integer", 56 | "value": 0, 57 | "display": "Project Id", 58 | "desc": "Project Id for the modpack desired. This is found on the modpack's webpage on the right side.", 59 | "required": true, 60 | "userEdit": false 61 | }, 62 | "fileId": { 63 | "type": "integer", 64 | "value": 0, 65 | "display": "File Id", 66 | "desc": "File Id for the modpack desired. This is found at the end of the URL for the specific file desired.", 67 | "required": true, 68 | "userEdit": false 69 | } 70 | }, 71 | "install": [ 72 | { 73 | "if": "env == 'host' && javaversion != ''", 74 | "type": "javadl", 75 | "version": "${javaversion}" 76 | }, 77 | { 78 | "if": "env == 'host'", 79 | "type": "curseforge", 80 | "projectId": "${projectId}", 81 | "fileId": "${fileId}", 82 | "java": "java${javaversion}" 83 | }, 84 | { 85 | "if": "env != 'host'", 86 | "type": "curseforge", 87 | "projectId": "${projectId}", 88 | "fileId": "${fileId}" 89 | }, 90 | { 91 | "if": "!file_exists(\"server.properties\")", 92 | "type": "writefile", 93 | "text": "server-ip=${ip}\nserver-port=${port}\n", 94 | "target": "server.properties" 95 | }, 96 | { 97 | "type": "writefile", 98 | "text": "eula=${eula}", 99 | "target": "eula.txt" 100 | } 101 | ], 102 | "run": { 103 | "command": [ 104 | { 105 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar fabric-server-launch.jar nogui", 106 | "if": "env == 'host' && file_exists('fabric-server-launch.jar')" 107 | }, 108 | { 109 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar fabric-server-launch.jar nogui", 110 | "if": "env != 'host' && file_exists('fabric-server-launch.jar')" 111 | }, 112 | { 113 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar server.jar nogui", 114 | "if": "env == 'host' && file_exists('server.jar')" 115 | }, 116 | { 117 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar server.jar nogui", 118 | "if": "env != 'host' && file_exists('server.jar')" 119 | }, 120 | { 121 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/win_args.txt nogui", 122 | "if": "env == 'host' && os == 'windows' && resolvedForgeVersion != ''" 123 | }, 124 | { 125 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/unix_args.txt nogui", 126 | "if": "env == 'host' && resolvedForgeVersion != ''" 127 | }, 128 | { 129 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/unix_args.txt nogui", 130 | "if": "env != 'host' && resolvedForgeVersion != ''" 131 | }, 132 | { 133 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/neoforged/neoforge/${resolvedNeoForgeVersion}/win_args.txt nogui", 134 | "if": "env == 'host' && os == 'windows' && resolvedNeoForgeVersion != ''" 135 | }, 136 | { 137 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/neoforged/neoforge/${resolvedNeoForgeVersion}/unix_args.txt nogui", 138 | "if": "env == 'host' && resolvedNeoForgeVersion != ''" 139 | }, 140 | { 141 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/neoforged/neoforge/${resolvedNeoForgeVersion}/unix_args.txt nogui", 142 | "if": "env != 'host' && resolvedNeoForgeVersion != ''" 143 | }, 144 | { 145 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar server.jar nogui" 146 | } 147 | ], 148 | "pre": [ 149 | { 150 | "type": "resolveforgeversion", 151 | "outputVariable": "resolvedForgeVersion" 152 | }, 153 | { 154 | "type": "resolveneoforgeversion", 155 | "outputVariable": "resolvedNeoForgeVersion" 156 | } 157 | ], 158 | "stop": "stop", 159 | "stdin": { 160 | "type": "stdin" 161 | }, 162 | "autostart": false, 163 | "autorecover": false, 164 | "autorestart": false 165 | }, 166 | "environment": { 167 | "type": "host" 168 | }, 169 | "supportedEnvironments": [ 170 | { 171 | "type": "host" 172 | }, 173 | { 174 | "type": "docker", 175 | "image": "eclipse-temurin:${javaversion}", 176 | "portBindings": [ 177 | "0.0.0.0:${port}:${port}/tcp" 178 | ] 179 | } 180 | ], 181 | "requirements": {}, 182 | "stats": { 183 | "type": "jcmd" 184 | }, 185 | "query": { 186 | "type": "minecraft" 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /minecraft-ftb/README.md: -------------------------------------------------------------------------------- 1 | Feed The Beast - Minecraft Template 2 | 3 | Updated for the new launcher and server install process 4 | 5 | A modpack id and version id is needed to download the installer. It can be found by selecting the preferred modpack in the [modpack list](https://www.feed-the-beast.com/modpack). The modpack id is then shown next to the modpack title and the version id is found under the versions tab. 6 | 7 | E.g. FTB Revelation 3.3.0 has the modpack id 35 and version id 143 8 | 9 | -------------------------------------------------------------------------------- /minecraft-ftb/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "minecraft-ftb", 4 | "variables": { 5 | "memory": "2048", 6 | "ip": "0.0.0.0", 7 | "port": "25565", 8 | "eula": true, 9 | "motd": "None", 10 | "javaversion": "17", 11 | "version": "1.19.2-43.2.21", 12 | "modpack_id": "108", 13 | "modpack_version": "6940" 14 | }, 15 | "environment": { 16 | "type": "host" 17 | } 18 | }, 19 | { 20 | "name": "minecraft-ftb-docker", 21 | "variables": { 22 | "memory": "2048", 23 | "ip": "0.0.0.0", 24 | "port": "25565", 25 | "eula": true, 26 | "motd": "None", 27 | "javaversion": "17", 28 | "version": "1.19.2-43.2.21", 29 | "modpack_id": "108", 30 | "modpack_version": "6940" 31 | }, 32 | "environment": { 33 | "type": "docker", 34 | "image": "eclipse-temurin:${javaversion}" 35 | } 36 | } 37 | ] -------------------------------------------------------------------------------- /minecraft-ftb/minecraft-ftb.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-java", 3 | "display": "Minecraft - FTB Modpack", 4 | "icon": "minecraft-java", 5 | "data": { 6 | "eula": { 7 | "type": "boolean", 8 | "value": false, 9 | "display": "EULA Agreement", 10 | "desc": "Do you (or the server owner) agree to the Minecraft EULA?", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "javaversion": { 23 | "type": "integer", 24 | "value": 8, 25 | "display": "Java Version", 26 | "desc": "Version of Java to use", 27 | "required": false, 28 | "userEdit": false 29 | }, 30 | "memory": { 31 | "type": "integer", 32 | "value": 4096, 33 | "display": "Memory (MB)", 34 | "desc": "How much memory in MB to allocate to the Java Heap", 35 | "required": true, 36 | "userEdit": false 37 | }, 38 | "modpack_id": { 39 | "type": "integer", 40 | "value": 0, 41 | "display": "Modpack ID", 42 | "desc": "Get the modpack ID for your preffered modpack in the Modpacklist.", 43 | "required": true, 44 | "userEdit": true 45 | }, 46 | "modpack_version": { 47 | "type": "integer", 48 | "value": 0, 49 | "display": "Modpack version ID", 50 | "desc": "Version ID from the versions tab of the selected modpack in the Modpacklist.", 51 | "required": true, 52 | "userEdit": true 53 | }, 54 | "motd": { 55 | "type": "string", 56 | "value": "A Minecraft Server hosted on PufferPanel", 57 | "display": "MOTD message of the day", 58 | "desc": "This is the message that is displayed in the server list of the client, below the name. The MOTD does support color and formatting codes.", 59 | "required": true, 60 | "userEdit": false 61 | }, 62 | "port": { 63 | "type": "integer", 64 | "value": 25565, 65 | "display": "Port", 66 | "desc": "What port to bind the server to", 67 | "required": true, 68 | "userEdit": false 69 | }, 70 | "version": { 71 | "type": "string", 72 | "value": "", 73 | "display": "Version", 74 | "desc": "Version of Forge that is shipped with the modpack with no spaces (may be located here", 75 | "required": true, 76 | "userEdit": false 77 | } 78 | }, 79 | "install": [ 80 | { 81 | "if": "env == 'host'", 82 | "type": "javadl", 83 | "version": "${javaversion}" 84 | }, 85 | { 86 | "if": "os == 'windows'", 87 | "type": "download", 88 | "files": [ 89 | "https://api.feed-the-beast.com/v1/modpacks/public/modpack/${modpack_id}/${modpack_version}/server/windows" 90 | ] 91 | }, 92 | { 93 | "if": "os == 'linux' && arch == 'amd64'", 94 | "type": "download", 95 | "files": [ 96 | "https://api.feed-the-beast.com/v1/modpacks/public/modpack/${modpack_id}/${modpack_version}/server/linux" 97 | ] 98 | }, 99 | { 100 | "if": "os == 'linux' && arch == 'arm64'", 101 | "type": "download", 102 | "files": [ 103 | "https://api.feed-the-beast.com/v1/modpacks/public/modpack/${modpack_id}/${modpack_version}/server/arm/linux" 104 | ] 105 | }, 106 | { 107 | "if": "os == 'windows'", 108 | "type": "command", 109 | "commands": [ 110 | "./windows_${modpack_id}_${modpack_version} --auto" 111 | ] 112 | }, 113 | { 114 | "if": "os == 'linux'", 115 | "type": "command", 116 | "commands": [ 117 | "chmod u+x serverinstall_${modpack_id}_${modpack_version}", 118 | "./serverinstall_${modpack_id}_${modpack_version} --auto" 119 | ] 120 | }, 121 | { 122 | "if": "version == ''", 123 | "type": "move", 124 | "target": "server.jar", 125 | "source": "forge-*.jar" 126 | }, 127 | { 128 | "type": "writefile", 129 | "text": "eula=${eula}", 130 | "target": "eula.txt" 131 | }, 132 | { 133 | "type": "writefile", 134 | "text": "server-ip=${ip}\nserver-port=${port}\nmotd=${motd}\n", 135 | "target": "server.properties" 136 | } 137 | ], 138 | "run": { 139 | "command": [ 140 | { 141 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true @libraries/net/minecraftforge/forge/${version}/win_args.txt nogui", 142 | "if": "env == 'host' && os == 'windows' && file_exists('libraries/net/minecraftforge/forge/' + version + '/win_args.txt')" 143 | }, 144 | { 145 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true @libraries/net/minecraftforge/forge/${version}/unix_args.txt nogui", 146 | "if": "env == 'host' && file_exists('libraries/net/minecraftforge/forge/' + version + '/unix_args.txt')" 147 | }, 148 | { 149 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true @libraries/net/minecraftforge/forge/${version}/win_args.txt nogui", 150 | "if": "env != 'host' && os == 'windows' && file_exists('libraries/net/minecraftforge/forge/' + version + '/win_args.txt')" 151 | }, 152 | { 153 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true @libraries/net/minecraftforge/forge/${version}/unix_args.txt nogui", 154 | "if": "env != 'host' && file_exists('libraries/net/minecraftforge/forge/' + version + '/unix_args.txt')" 155 | }, 156 | { 157 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true -jar server.jar", 158 | "if": "env == 'host'" 159 | }, 160 | { 161 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true -jar server.jar" 162 | } 163 | ], 164 | "stop": "stop", 165 | "stdin": { 166 | "type": "stdin" 167 | }, 168 | "autostart": false, 169 | "autorecover": false, 170 | "autorestart": false 171 | }, 172 | "environment": { 173 | "type": "host" 174 | }, 175 | "supportedEnvironments": [ 176 | { 177 | "type": "host" 178 | }, 179 | { 180 | "type": "docker", 181 | "image": "eclipse-temurin:${javaversion}", 182 | "portBindings": [ 183 | "0.0.0.0:${port}:${port}/tcp" 184 | ] 185 | } 186 | ], 187 | "requirements": { 188 | "os": "linux", 189 | "arch": "amd64" 190 | }, 191 | "stats": { 192 | "type": "jcmd" 193 | }, 194 | "query": { 195 | "type": "minecraft" 196 | } 197 | } 198 | -------------------------------------------------------------------------------- /minecraft-velocity/minecraft-velocity.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-java", 3 | "display": "Velocity - Minecraft", 4 | "icon": "minecraft-java", 5 | "data": { 6 | "build": { 7 | "type": "integer", 8 | "value": 195, 9 | "display": "Velocity Build", 10 | "desc": "Build of the Velocity Version to use", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "memory": { 23 | "type": "integer", 24 | "value": 512, 25 | "display": "Memory (MB)", 26 | "desc": "How much memory in MB to allocate to the Waterfall server. It is generally recommended to allocated 512MB RAM for every 500 players. Please keep in mind that additional plugins may impact the amount needed in your case.", 27 | "required": true, 28 | "userEdit": false 29 | }, 30 | "motd": { 31 | "type": "string", 32 | "value": "A Velocity proxy &9hosted on PufferPanel", 33 | "display": "MOTD message of the day", 34 | "desc": "This is the message that is displayed in the server list of the client, below the name. The MOTD does support color and formatting codes.", 35 | "required": true, 36 | "userEdit": true 37 | }, 38 | "port": { 39 | "type": "integer", 40 | "value": 25565, 41 | "display": "Port", 42 | "desc": "What port to bind the server to", 43 | "required": true, 44 | "userEdit": false 45 | }, 46 | "version": { 47 | "type": "string", 48 | "value": "3.1.2-SNAPSHOT", 49 | "display": "Velocity Version", 50 | "desc": "Version of Velocity to install.", 51 | "required": true, 52 | "userEdit": true 53 | } 54 | }, 55 | "install": [ 56 | { 57 | "if": "env == 'host'", 58 | "type": "javadl", 59 | "version": "17" 60 | }, 61 | { 62 | "type": "download", 63 | "files": [ 64 | "https://api.papermc.io/v2/projects/velocity/versions/${version}/builds/${build}/downloads/velocity-${version}-${build}.jar" 65 | ] 66 | }, 67 | { 68 | "type": "move", 69 | "source": "velocity-*.jar", 70 | "target": "velocity.jar" 71 | } 72 | ], 73 | "run": { 74 | "command": [ 75 | { 76 | "command": "java17 -Xmx${memory}M -Xms${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true -jar velocity.jar", 77 | "if": "env == 'host'" 78 | }, 79 | { 80 | "command": "java -Xmx${memory}M -Xms${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true -jar velocity.jar" 81 | } 82 | ], 83 | "stop": "shutdown", 84 | "stdin": { 85 | "type": "stdin" 86 | }, 87 | "autostart": false, 88 | "autorecover": false, 89 | "autorestart": false 90 | }, 91 | "environment": { 92 | "type": "host" 93 | }, 94 | "supportedEnvironments": [ 95 | { 96 | "type": "host" 97 | }, 98 | { 99 | "type": "docker", 100 | "image": "eclipse-temurin:17", 101 | "portBindings": [ 102 | "0.0.0.0:${port}:${port}/tcp" 103 | ] 104 | } 105 | ], 106 | "requirements": {}, 107 | "stats": { 108 | "type": "jcmd" 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /minecraft-waterfall/minecraft-waterfall.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-java", 3 | "display": "Minecraft - Waterfall", 4 | "icon": "minecraft-java", 5 | "data": { 6 | "build": { 7 | "type": "string", 8 | "value": "510", 9 | "display": "build", 10 | "desc": "Build number", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "ip": { 15 | "type": "string", 16 | "value": "0.0.0.0", 17 | "display": "IP", 18 | "desc": "What IP to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "memory": { 23 | "type": "integer", 24 | "value": 512, 25 | "display": "Memory (MB)", 26 | "desc": "How much memory in MB to allocate to the Waterfall server. It is generally recommended to allocated 512MB RAM for every 500 players. Please keep in mind that additional plugins may impact the amount needed in your case.", 27 | "required": true, 28 | "userEdit": false 29 | }, 30 | "motd": { 31 | "type": "string", 32 | "value": "A Waterfall Server &9hosted on PufferPanel", 33 | "display": "MOTD message of the day", 34 | "desc": "This is the message that is displayed in the server list of the client, below the name. The MOTD does support color and formatting codes.", 35 | "required": true, 36 | "userEdit": false 37 | }, 38 | "port": { 39 | "type": "integer", 40 | "value": 25577, 41 | "display": "Port", 42 | "desc": "What port to bind the server to", 43 | "required": true, 44 | "userEdit": false 45 | }, 46 | "version": { 47 | "type": "string", 48 | "value": "1.19", 49 | "display": "Version", 50 | "desc": "Version of Minecraft to install. Must be specified as a minor release number, e.g. 1.16", 51 | "required": true, 52 | "userEdit": false 53 | } 54 | }, 55 | "install": [ 56 | { 57 | "if": "env == 'host'", 58 | "type": "javadl", 59 | "version": "17" 60 | }, 61 | { 62 | "type": "download", 63 | "files": [ 64 | "https://api.papermc.io/v2/projects/waterfall/versions/${version}/builds/${build}/downloads/waterfall-${version}-${build}.jar" 65 | ] 66 | }, 67 | { 68 | "type": "move", 69 | "target": "Waterfall.jar", 70 | "source": "waterfall-*.jar" 71 | }, 72 | { 73 | "type": "writefile", 74 | "text": "listeners:\n- query_port: ${port}\n host: ${ip}:${port}\n motd: '${motd}'\n", 75 | "target": "config.yml" 76 | } 77 | ], 78 | "run": { 79 | "command": [ 80 | { 81 | "command": "java17 -Xmx${memory}M -Xms${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true -jar Waterfall.jar", 82 | "if": "env == 'host'" 83 | }, 84 | { 85 | "command": "java -Xmx${memory}M -Xms${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true -jar Waterfall.jar" 86 | } 87 | ], 88 | "stop": "end", 89 | "stdin": { 90 | "type": "stdin" 91 | }, 92 | "autostart": false, 93 | "autorecover": false, 94 | "autorestart": false 95 | }, 96 | "environment": { 97 | "type": "host" 98 | }, 99 | "supportedEnvironments": [ 100 | { 101 | "type": "host" 102 | }, 103 | { 104 | "type": "docker", 105 | "image": "eclipse-temurin:17", 106 | "portBindings": [ 107 | "0.0.0.0:${port}:${port}/tcp" 108 | ] 109 | } 110 | ], 111 | "requirements": {}, 112 | "stats": { 113 | "type": "jcmd" 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /minecraft/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "minecraft-vanilla", 4 | "variables": { 5 | "memory": "2048", 6 | "ip": "0.0.0.0", 7 | "port": "25565", 8 | "eula": true, 9 | "version": "latest", 10 | "motd": "None", 11 | "javaversion": "21", 12 | "modlauncher": "" 13 | }, 14 | "environment": { 15 | "type": "host" 16 | } 17 | }, 18 | { 19 | "name": "minecraft-fabric", 20 | "variables": { 21 | "memory": "2048", 22 | "ip": "0.0.0.0", 23 | "port": "25565", 24 | "eula": true, 25 | "version": "1.20.1", 26 | "motd": "None", 27 | "javaversion": "17", 28 | "modlauncher": "fabric" 29 | }, 30 | "environment": { 31 | "type": "host" 32 | } 33 | }, 34 | { 35 | "name": "minecraft-minecraftforge", 36 | "variables": { 37 | "memory": "4096", 38 | "ip": "0.0.0.0", 39 | "port": "25565", 40 | "eula": true, 41 | "version": "1.21.4", 42 | "motd": "None", 43 | "javaversion": "21", 44 | "modlauncher": "forge" 45 | }, 46 | "environment": { 47 | "type": "host" 48 | } 49 | }, 50 | { 51 | "name": "minecraft-paper", 52 | "variables": { 53 | "memory": "2048", 54 | "ip": "0.0.0.0", 55 | "port": "25565", 56 | "eula": true, 57 | "version": "1.21.4", 58 | "motd": "None", 59 | "javaversion": "21", 60 | "modlauncher": "paper", 61 | "paperbuild": "203" 62 | }, 63 | "environment": { 64 | "type": "host" 65 | } 66 | }, 67 | { 68 | "name": "minecraft-spigot", 69 | "variables": { 70 | "memory": "2048", 71 | "ip": "0.0.0.0", 72 | "port": "25565", 73 | "eula": true, 74 | "version": "1.20.4", 75 | "motd": "None", 76 | "javaversion": "17", 77 | "modlauncher": "spigot" 78 | }, 79 | "environment": { 80 | "type": "host" 81 | } 82 | }, 83 | 84 | { 85 | "name": "minecraft-vanilla-docker", 86 | "variables": { 87 | "memory": "2048", 88 | "ip": "0.0.0.0", 89 | "port": "25565", 90 | "eula": true, 91 | "version": "latest", 92 | "motd": "None", 93 | "javaversion": "21", 94 | "modlauncher": "" 95 | }, 96 | "environment": { 97 | "type": "docker", 98 | "image": "eclipse-temurin:${javaversion}" 99 | } 100 | }, 101 | { 102 | "name": "minecraft-fabric-docker", 103 | "variables": { 104 | "memory": "2048", 105 | "ip": "0.0.0.0", 106 | "port": "25565", 107 | "eula": true, 108 | "version": "1.20.1", 109 | "motd": "None", 110 | "javaversion": "17", 111 | "modlauncher": "fabric" 112 | }, 113 | "environment": { 114 | "type": "docker", 115 | "image": "eclipse-temurin:${javaversion}" 116 | } 117 | }, 118 | { 119 | "name": "minecraft-minecraftforge-docker", 120 | "variables": { 121 | "memory": "4096", 122 | "ip": "0.0.0.0", 123 | "port": "25565", 124 | "eula": true, 125 | "version": "1.21.4", 126 | "motd": "None", 127 | "javaversion": "21", 128 | "modlauncher": "forge", 129 | "forgebuild": "1.21.4-54.1.1" 130 | }, 131 | "environment": { 132 | "type": "docker", 133 | "image": "eclipse-temurin:${javaversion}" 134 | } 135 | }, 136 | { 137 | "name": "minecraft-paper-docker", 138 | "variables": { 139 | "memory": "2048", 140 | "ip": "0.0.0.0", 141 | "port": "25565", 142 | "eula": true, 143 | "version": "1.21.4", 144 | "motd": "None", 145 | "javaversion": "21", 146 | "modlauncher": "paper", 147 | "paperbuild": "203" 148 | }, 149 | "environment": { 150 | "type": "docker", 151 | "image": "eclipse-temurin:${javaversion}" 152 | } 153 | }, 154 | { 155 | "name": "minecraft-spigot-docker", 156 | "variables": { 157 | "memory": "2048", 158 | "ip": "0.0.0.0", 159 | "port": "25565", 160 | "eula": true, 161 | "version": "1.20.4", 162 | "motd": "None", 163 | "javaversion": "17", 164 | "modlauncher": "spigot" 165 | }, 166 | "environment": { 167 | "type": "docker", 168 | "image": "pufferpanel/eclipse-temurin:${javaversion}" 169 | } 170 | } 171 | ] 172 | -------------------------------------------------------------------------------- /minecraft/minecraft.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-java", 3 | "display": "Minecraft: Java Edition", 4 | "icon": "minecraft-java", 5 | "data": { 6 | "eula": { 7 | "type": "boolean", 8 | "value": false, 9 | "display": "EULA Agreement (true/false)", 10 | "desc": "Do you (or the server owner) agree to the Minecraft EULA?", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "forgebuild": { 15 | "type": "string", 16 | "value": "", 17 | "display": "Forge Version", 18 | "desc": "Version of Forge to install (may be located here", 19 | "required": false, 20 | "userEdit": true 21 | }, 22 | "ip": { 23 | "type": "string", 24 | "value": "0.0.0.0", 25 | "display": "IP", 26 | "desc": "What IP to bind the server to", 27 | "required": true, 28 | "userEdit": false 29 | }, 30 | "javaversion": { 31 | "type": "string", 32 | "value": "21", 33 | "display": "Java Version", 34 | "desc": "Version of Java to use", 35 | "required": true, 36 | "userEdit": true 37 | }, 38 | "jvmArgs": { 39 | "type": "string", 40 | "value": "", 41 | "display": "JVM Arguments", 42 | "desc": "Extra JVM arguments to pass", 43 | "required": false, 44 | "userEdit": false 45 | }, 46 | "memory": { 47 | "type": "integer", 48 | "value": 2048, 49 | "display": "Memory (MB)", 50 | "desc": "How much memory in MB to allocate to the Java Heap", 51 | "required": true, 52 | "userEdit": false 53 | }, 54 | "modlauncher": { 55 | "type": "string", 56 | "value": "", 57 | "display": "Mod/Plugin Launcher", 58 | "desc": "What mod or plugin launcher should be installed with Minecraft", 59 | "required": false, 60 | "userEdit": true, 61 | "options": [ 62 | { 63 | "value": "", 64 | "display": "None/Vanilla" 65 | }, 66 | { 67 | "value": "fabric", 68 | "display": "Fabric" 69 | }, 70 | { 71 | "value": "forge", 72 | "display": "MinecraftForge" 73 | }, 74 | { 75 | "value": "paper", 76 | "display": "Paper" 77 | }, 78 | { 79 | "value": "spigot", 80 | "display": "Spigot" 81 | } 82 | ] 83 | }, 84 | "motd": { 85 | "type": "string", 86 | "value": "A Minecraft Server\\n\\u00A79 hosted on PufferPanel", 87 | "display": "MOTD message of the day", 88 | "desc": "This is the message that is displayed in the server list of the client, below the name. The MOTD does support color and formatting codes.", 89 | "required": true, 90 | "userEdit": true 91 | }, 92 | "paperbuild": { 93 | "type": "string", 94 | "value": "203", 95 | "display": "build", 96 | "desc": "Build of Paper to install (Paper version build). Must be specified as a build number, e.g. 484", 97 | "required": false, 98 | "userEdit": true 99 | }, 100 | "port": { 101 | "type": "integer", 102 | "value": 25565, 103 | "display": "Port", 104 | "desc": "What port to bind the server to", 105 | "required": true, 106 | "userEdit": false 107 | }, 108 | "version": { 109 | "type": "string", 110 | "value": "latest", 111 | "display": "Version", 112 | "desc": "Version of Minecraft you wish to install. It is best to put a version in, as latest may not work with all server software.", 113 | "required": true, 114 | "userEdit": true 115 | }, 116 | "resolvedForgeVersion": { 117 | "type": "string", 118 | "value": "", 119 | "display": "Resolved Forge Version", 120 | "desc": "Internal, resolved version of Forge", 121 | "required": true, 122 | "userEdit": true, 123 | "internal": true 124 | } 125 | }, 126 | "groups": [ 127 | { 128 | "display": "General", 129 | "description": "General settings for all servers", 130 | "variables": [ 131 | "eula", 132 | "memory", 133 | "ip", 134 | "port", 135 | "motd", 136 | "version", 137 | "javaversion", 138 | "modlauncher", 139 | "jvmArgs" 140 | ], 141 | "order": 1 142 | }, 143 | { 144 | "if": "modlauncher == 'forge'", 145 | "display": "Forge", 146 | "description": "Settings if using MinecraftForge", 147 | "variables": [ 148 | "forgebuild" 149 | ], 150 | "order": 2 151 | }, 152 | { 153 | "if": "modlauncher == 'paper'", 154 | "display": "Paper", 155 | "description": "Settings specific if using Paper", 156 | "variables": [ 157 | "paperbuild" 158 | ], 159 | "order": 3 160 | } 161 | ], 162 | "install": [ 163 | { 164 | "if": "javaversion != '' && env == 'host'", 165 | "type": "javadl", 166 | "version": "${javaversion}" 167 | }, 168 | { 169 | "if": "modlauncher == ''", 170 | "type": "mojangdl", 171 | "version": "${version}", 172 | "target": "server.jar" 173 | }, 174 | { 175 | "if": "modlauncher == 'fabric'", 176 | "type": "fabricdl" 177 | }, 178 | { 179 | "if": "modlauncher == 'fabric' && env == 'host'", 180 | "type": "command", 181 | "commands": [ 182 | "java${javaversion} -jar fabric-installer.jar server -mcversion ${version} -downloadMinecraft -noprofile -loader latest" 183 | ] 184 | }, 185 | { 186 | "if": "modlauncher == 'fabric' && env != 'host'", 187 | "type": "command", 188 | "commands": [ 189 | "java -jar fabric-installer.jar server -mcversion ${version} -downloadMinecraft -noprofile -loader latest" 190 | ] 191 | }, 192 | { 193 | "if": "modlauncher == 'fabric'", 194 | "type": "mojangdl", 195 | "version": "${version}", 196 | "target": "server.jar" 197 | }, 198 | { 199 | "if": "modlauncher == 'forge'", 200 | "type": "forgedl", 201 | "target": "installer.jar", 202 | "version": "${forgebuild}", 203 | "minecraftVersion": "${version}", 204 | "outputVariable": "resolvedForgeVersion" 205 | }, 206 | { 207 | "if": "modlauncher == 'forge' && env == 'host'", 208 | "type": "command", 209 | "commands": [ 210 | "java${javaversion} -jar installer.jar --installServer" 211 | ] 212 | }, 213 | { 214 | "if": "modlauncher == 'forge' && env != 'host'", 215 | "type": "command", 216 | "commands": [ 217 | "java -jar installer.jar --installServer" 218 | ] 219 | }, 220 | { 221 | "if": "modlauncher == 'forge' && file_exists('forge-' + resolvedForgeVersion + '-shim.jar')", 222 | "type": "move", 223 | "source": "forge-${resolvedForgeVersion}-shim.jar", 224 | "target": "server.jar" 225 | }, 226 | { 227 | "if": "modlauncher == 'forge' && file_exists('forge-' + resolvedForgeVersion + '.jar')", 228 | "type": "move", 229 | "source": "forge-${resolvedForgeVersion}.jar", 230 | "target": "server.jar" 231 | }, 232 | { 233 | "if": "modlauncher == 'paper'", 234 | "type": "download", 235 | "files": [ 236 | "https://api.papermc.io/v2/projects/paper/versions/${version}/builds/${paperbuild}/downloads/paper-${version}-${paperbuild}.jar" 237 | ] 238 | }, 239 | { 240 | "if": "modlauncher == 'paper'", 241 | "type": "move", 242 | "target": "server.jar", 243 | "source": "paper-*.jar" 244 | }, 245 | { 246 | "if": "modlauncher == 'spigot'", 247 | "type": "download", 248 | "files": [ 249 | "https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar" 250 | ] 251 | }, 252 | { 253 | "if": "modlauncher == 'spigot' && env == 'host'", 254 | "type": "command", 255 | "commands": [ 256 | "java${javaversion} -jar BuildTools.jar --rev ${version}" 257 | ] 258 | }, 259 | { 260 | "if": "modlauncher == 'spigot' && env != 'host'", 261 | "type": "command", 262 | "commands": [ 263 | "java -jar BuildTools.jar --rev ${version}" 264 | ] 265 | }, 266 | { 267 | "if": "modlauncher == 'spigot'", 268 | "type": "move", 269 | "source": "spigot-*.jar", 270 | "target": "server.jar" 271 | }, 272 | { 273 | "if": "!file_exists(\"server.properties\")", 274 | "type": "writefile", 275 | "text": "server-ip=${ip}\nserver-port=${port}\nmotd=${motd}\n", 276 | "target": "server.properties" 277 | }, 278 | { 279 | "type": "writefile", 280 | "text": "eula=${eula}", 281 | "target": "eula.txt" 282 | } 283 | ], 284 | "run": { 285 | "command": [ 286 | { 287 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar fabric-server-launch.jar nogui", 288 | "if": "env == 'host' && file_exists('fabric-server-launch.jar')" 289 | }, 290 | { 291 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar fabric-server-launch.jar nogui", 292 | "if": "env != 'host' && file_exists('fabric-server-launch.jar')" 293 | }, 294 | { 295 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar server.jar nogui", 296 | "if": "env == 'host' && file_exists('server.jar')" 297 | }, 298 | { 299 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar server.jar nogui", 300 | "if": "env != 'host' && file_exists('server.jar')" 301 | }, 302 | { 303 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/win_args.txt nogui", 304 | "if": "env == 'host' && modlauncher == 'forge' && os == 'windows' && file_exists('libraries/net/minecraftforge/forge/' + resolvedForgeVersion + '/win_args.txt')" 305 | }, 306 | { 307 | "command": "java${javaversion} -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/unix_args.txt nogui", 308 | "if": "env == 'host' && modlauncher == 'forge' && file_exists('libraries/net/minecraftforge/forge/' + resolvedForgeVersion + '/unix_args.txt')" 309 | }, 310 | { 311 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/win_args.txt nogui", 312 | "if": "env != 'host' && modlauncher == 'forge' && os == 'windows' && file_exists('libraries/net/minecraftforge/forge/' + resolvedForgeVersion + '/win_args.txt')" 313 | }, 314 | { 315 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} @libraries/net/minecraftforge/forge/${resolvedForgeVersion}/unix_args.txt nogui", 316 | "if": "env != 'host' && modlauncher == 'forge' && file_exists('libraries/net/minecraftforge/forge/' + resolvedForgeVersion+ '/unix_args.txt')" 317 | }, 318 | { 319 | "command": "java -Xmx${memory}M -Dterminal.jline=false -Dterminal.ansi=true -Dlog4j2.formatMsgNoLookups=true ${jvmArgs} -jar server.jar nogui" 320 | } 321 | ], 322 | "pre": [ 323 | { 324 | "if": "modlauncher == 'forge'", 325 | "type": "resolveforgeversion", 326 | "minecraftVersion": "${version}", 327 | "version": "${forgebuild}", 328 | "outputVariable": "resolvedForgeVersion" 329 | } 330 | ], 331 | "stop": "stop", 332 | "stdin": { 333 | "type": "stdin" 334 | }, 335 | "autostart": false, 336 | "autorecover": false, 337 | "autorestart": false 338 | }, 339 | "environment": { 340 | "type": "host" 341 | }, 342 | "supportedEnvironments": [ 343 | { 344 | "type": "host" 345 | }, 346 | { 347 | "type": "docker", 348 | "image": "eclipse-temurin:${javaversion}", 349 | "portBindings": [ 350 | "0.0.0.0:${port}:${port}/tcp" 351 | ] 352 | } 353 | ], 354 | "requirements": {}, 355 | "stats": { 356 | "type": "jcmd" 357 | }, 358 | "query": { 359 | "type": "minecraft" 360 | } 361 | } 362 | -------------------------------------------------------------------------------- /pocketmine/pocketmine.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "minecraft-bedrock", 3 | "display": "PocketMine-MP", 4 | "icon": "minecraft-bedrock", 5 | "data": { 6 | "ip": { 7 | "type": "string", 8 | "value": "0.0.0.0", 9 | "display": "IP", 10 | "desc": "What IP to bind the server to", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "port": { 15 | "type": "integer", 16 | "value": 19132, 17 | "display": "Port", 18 | "desc": "What port to bind the server to", 19 | "required": true, 20 | "userEdit": false 21 | } 22 | }, 23 | "install": [ 24 | { 25 | "type": "download", 26 | "files": [ 27 | "https://raw.githubusercontent.com/pmmp/get.pmmp.io/stable/installer.sh" 28 | ] 29 | }, 30 | { 31 | "type": "command", 32 | "commands": [ 33 | "chmod +x ./installer.sh", 34 | "./installer.sh -r" 35 | ] 36 | }, 37 | { 38 | "type": "writefile", 39 | "text": "server-ip=${ip}\nserver-port=${port}\n", 40 | "target": "server.properties" 41 | } 42 | ], 43 | "run": { 44 | "command": "./start.sh --no-wizard", 45 | "stop": "stop", 46 | "stdin": { 47 | "type": "stdin" 48 | }, 49 | "autostart": false, 50 | "autorecover": false, 51 | "autorestart": false 52 | }, 53 | "environment": { 54 | "type": "host" 55 | }, 56 | "supportedEnvironments": [ 57 | { 58 | "type": "host" 59 | }, 60 | { 61 | "type": "docker", 62 | "image": "pufferpanel/ubuntu", 63 | "portBindings": [ 64 | "0.0.0.0:${port}:${port}/tcp" 65 | ] 66 | } 67 | ], 68 | "requirements": { 69 | "os": "linux", 70 | "arch": "amd64", 71 | "binaries": [ 72 | "curl" 73 | ] 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /rust/README.md: -------------------------------------------------------------------------------- 1 | #Rust Public Server Template 2 | -------------------------------------------------------------------------------- /rust/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "rust", 4 | "variables": { 5 | "RConPassword": "12345" 6 | }, 7 | "environment": { 8 | "type": "host" 9 | }, 10 | "runtimeRequirement": 10, 11 | "ignoreExitCode": true 12 | }, 13 | { 14 | "name": "rust-docker", 15 | "variables": { 16 | "RConPassword": "12345" 17 | }, 18 | "environment": { 19 | "type": "docker", 20 | "image": "steamcmd/steamcmd" 21 | }, 22 | "runtimeRequirement": 10, 23 | "ignoreExitCode": true 24 | } 25 | ] -------------------------------------------------------------------------------- /rust/rust.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Rust", 4 | "icon": "rust", 5 | "data": { 6 | "Description": { 7 | "type": "string", 8 | "value": "RUST Public Server Description", 9 | "display": "Server Description", 10 | "desc": "Server description shown on server browser", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "MaxPlayers": { 15 | "type": "integer", 16 | "value": 10, 17 | "display": "Max Players", 18 | "desc": "Maximum number of players to support", 19 | "required": true, 20 | "userEdit": false 21 | }, 22 | "RConPassword": { 23 | "type": "string", 24 | "value": "", 25 | "display": "RCON Password", 26 | "desc": "Password to use on RCON. CHANGE THIS", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "RConPort": { 31 | "type": "integer", 32 | "value": 28016, 33 | "display": "RCON Port", 34 | "desc": "Port to use for RCON", 35 | "required": true, 36 | "userEdit": false 37 | }, 38 | "ServerIdentity": { 39 | "type": "string", 40 | "value": "server1", 41 | "display": "Server identity", 42 | "desc": "Server identity to use, leave as default unless you know what you're doing", 43 | "required": true, 44 | "userEdit": false 45 | }, 46 | "ServerImage": { 47 | "type": "string", 48 | "value": "http://", 49 | "display": "Server Header Image", 50 | "desc": "URL For the server image banner", 51 | "required": true, 52 | "userEdit": true 53 | }, 54 | "ServerLevel": { 55 | "type": "string", 56 | "value": "Procedural Map", 57 | "display": "Server Level", 58 | "desc": "What map name do you want? If unsure, leave as default.", 59 | "required": true, 60 | "userEdit": true 61 | }, 62 | "ServerName": { 63 | "type": "string", 64 | "value": "RUST Public Server", 65 | "display": "Server Name", 66 | "desc": "Name of the server to use", 67 | "required": true, 68 | "userEdit": true 69 | }, 70 | "ServerSeed": { 71 | "type": "string", 72 | "value": "1234", 73 | "display": "Server Seed", 74 | "desc": "Server seed to use. Default should be fine.", 75 | "required": true, 76 | "userEdit": true 77 | }, 78 | "URL": { 79 | "type": "string", 80 | "value": "http://", 81 | "display": "Server Website", 82 | "desc": "URL for the website dedicated to this server.", 83 | "required": true, 84 | "userEdit": true 85 | }, 86 | "WorldSize": { 87 | "type": "integer", 88 | "value": 3000, 89 | "display": "World Size", 90 | "desc": "World size (number)", 91 | "required": true, 92 | "userEdit": true 93 | }, 94 | "ip": { 95 | "type": "string", 96 | "value": "0.0.0.0", 97 | "display": "IP", 98 | "desc": "What IP to bind the server to", 99 | "required": true, 100 | "userEdit": false 101 | }, 102 | "port": { 103 | "type": "integer", 104 | "value": 27015, 105 | "display": "Port", 106 | "desc": "What port to bind the server to", 107 | "required": true, 108 | "userEdit": false 109 | } 110 | }, 111 | "install": [ 112 | { 113 | "if": "env == 'host'", 114 | "type": "steamgamedl", 115 | "appId": "258550" 116 | }, 117 | { 118 | "if": "env == 'docker'", 119 | "type": "command", 120 | "commands": [ 121 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 258550 +quit" 122 | ] 123 | } 124 | ], 125 | "run": { 126 | "command": "./RustDedicated -nographics -batchmode +server.port ${port} +server.level \"${ServerLevel}\" +server.seed ${ServerSeed} +server.worldsize ${WorldSize} +server.maxplayers ${MaxPlayers} +server.hostname \"${ServerName}\" +server.description \"${Description}\" +server.headerimage \"${ServerImage}\" +server.url \"${URL}\" +server.identity \"${ServerIdentity}\" +rcon.port ${RConPort} +rcon.password ${RConPassword} +rcon.web 1", 127 | "stop": "quit", 128 | "environmentVars": { 129 | "LD_LIBRARY_PATH": "./RustDedicated_Data/Plugins/x86_64" 130 | }, 131 | "stdin": { 132 | "type": "rconws", 133 | "port": "${RConPort}", 134 | "password": "${RConPassword}" 135 | }, 136 | "autostart": false, 137 | "autorecover": false, 138 | "autorestart": false 139 | }, 140 | "environment": { 141 | "type": "host" 142 | }, 143 | "supportedEnvironments": [ 144 | { 145 | "type": "host" 146 | }, 147 | { 148 | "type": "docker", 149 | "image": "steamcmd/steamcmd", 150 | "portBindings": [ 151 | "0.0.0.0:${port}:${port}/tcp" 152 | ] 153 | } 154 | ], 155 | "requirements": { 156 | "os": "linux", 157 | "arch": "amd64" 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /sa-mp/.skip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pufferpanel/templates/ee44ee6892625ea2ed99b54eeb2df5ada764a3e0/sa-mp/.skip -------------------------------------------------------------------------------- /sa-mp/sa-mp.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "sa-mp", 3 | "display": "SA-MP", 4 | "data": { 5 | "Language": { 6 | "type": "string", 7 | "value": "English", 8 | "display": "language", 9 | "desc": "language", 10 | "required": false, 11 | "userEdit": true 12 | }, 13 | "announce": { 14 | "type": "string", 15 | "value": "0", 16 | "display": "announce", 17 | "desc": "announce", 18 | "required": false, 19 | "userEdit": true 20 | }, 21 | "chatlogging": { 22 | "type": "string", 23 | "value": "0", 24 | "display": "chatlogging", 25 | "desc": "chatogging", 26 | "required": false, 27 | "userEdit": true 28 | }, 29 | "filterscripts": { 30 | "type": "string", 31 | "value": "base gl_actions gl_property gl_realtime", 32 | "display": "filterscripts", 33 | "desc": "filterscripts", 34 | "required": false, 35 | "userEdit": true 36 | }, 37 | "gamemode0": { 38 | "type": "string", 39 | "value": "grandlarc 1", 40 | "display": "gamemode0", 41 | "desc": "gamemode0", 42 | "required": false, 43 | "userEdit": true 44 | }, 45 | "hostname": { 46 | "type": "string", 47 | "value": "SA-MP 0.3 Server", 48 | "display": "hostname", 49 | "desc": "hostname", 50 | "required": false, 51 | "userEdit": true 52 | }, 53 | "incar_rate": { 54 | "type": "string", 55 | "value": "40", 56 | "display": "incar_rate", 57 | "desc": "incar_rate", 58 | "required": false, 59 | "userEdit": true 60 | }, 61 | "lanmode": { 62 | "type": "integer", 63 | "value": 0, 64 | "display": "lanmode", 65 | "desc": "lanmode", 66 | "required": false, 67 | "userEdit": true 68 | }, 69 | "maxnpc": { 70 | "type": "string", 71 | "value": "0", 72 | "display": "maxnpc", 73 | "desc": "maxpnc", 74 | "required": false, 75 | "userEdit": true 76 | }, 77 | "maxplayers": { 78 | "type": "string", 79 | "value": "50", 80 | "display": "maxplayers", 81 | "desc": "maxplayers", 82 | "required": false, 83 | "userEdit": true 84 | }, 85 | "onfoot_rate": { 86 | "type": "string", 87 | "value": "40", 88 | "display": "onfoot_rate", 89 | "desc": "onfoot_rate", 90 | "required": false, 91 | "userEdit": true 92 | }, 93 | "plugins": { 94 | "type": "string", 95 | "value": "", 96 | "display": "plugins", 97 | "desc": "plugins", 98 | "required": false, 99 | "userEdit": true 100 | }, 101 | "port": { 102 | "type": "string", 103 | "value": "7777", 104 | "display": "port", 105 | "desc": "port", 106 | "required": false, 107 | "userEdit": true 108 | }, 109 | "query": { 110 | "type": "string", 111 | "value": "1", 112 | "display": "query", 113 | "desc": "query", 114 | "required": false, 115 | "userEdit": true 116 | }, 117 | "rcon_password": { 118 | "type": "string", 119 | "value": "changeme", 120 | "display": "rcon_password", 121 | "desc": "rcon_password", 122 | "required": false, 123 | "userEdit": true 124 | }, 125 | "stream_distance": { 126 | "type": "string", 127 | "value": "300.0", 128 | "display": "stream_distance", 129 | "desc": "stream_distance", 130 | "required": false, 131 | "userEdit": true 132 | }, 133 | "stream_rate": { 134 | "type": "string", 135 | "value": "100.0", 136 | "display": "stream_rate", 137 | "desc": "stream_rate", 138 | "required": false, 139 | "userEdit": true 140 | }, 141 | "weapon_rate": { 142 | "type": "string", 143 | "value": "40", 144 | "display": "weapon_rate", 145 | "desc": "weapon_rate", 146 | "required": false, 147 | "userEdit": true 148 | }, 149 | "weburl": { 150 | "type": "string", 151 | "value": "www.sa-mp.com", 152 | "display": "weburl", 153 | "desc": "weburl", 154 | "required": false, 155 | "userEdit": true 156 | } 157 | }, 158 | "install": [ 159 | { 160 | "type": "download", 161 | "files": [ 162 | "http://files.sa-mp.com/samp037svr_R2-1.tar.gz" 163 | ] 164 | }, 165 | { 166 | "type": "command", 167 | "commands": [ 168 | "tar -xvzf samp037svr_R2-1.tar.gz --strip=1 samp03", 169 | "rm samp037svr_R2-1.tar.gz" 170 | ] 171 | }, 172 | { 173 | "type": "writefile", 174 | "target": "server.cfg", 175 | "text": "echo Executing Server Config...\nlanmode ${lanmode}\nrcon_password ${rcon_password}\nmaxplayers ${maxplayers}\nport ${port}\nhostname ${hostname}\ngamemode0 ${gamemode0}\nplugins ${plugins}\nfilterscripts ${filterscripts}\nchatlogging ${chatlogging}\nannounce ${announce}\nquery ${query}\nweburl ${weburl}\nmaxnpc ${maxnpc}\nLanguage ${Language}\nonfoot_rate ${onfoot_rate}\nincar_rate ${incar_rate}\nweapon_rate ${weapon_rate}\nstream_distance ${stream_distance}\nstream_rate ${stream_distance}" 176 | } 177 | ], 178 | "run": { 179 | "command": "./samp03svr", 180 | "stopCode": 2, 181 | "stdin": { 182 | "type": "stdin" 183 | }, 184 | "autostart": false, 185 | "autorecover": false, 186 | "autorestart": false 187 | }, 188 | "environment": { 189 | "type": "host" 190 | }, 191 | "requirements": { 192 | "os": "linux", 193 | "arch": "amd64" 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /satisfactory/.skip: -------------------------------------------------------------------------------- 1 | Bad stop requirements prevent it from stopping correctly -------------------------------------------------------------------------------- /satisfactory/README.md: -------------------------------------------------------------------------------- 1 | # Notes 2 | - This only supports Linux. 3 | - Satisfactory servers are currently very experimental - Some bugs may arise 4 | # Changes 03/29/2022 5 | - Changed 'serverqueryport' variable to 'port' - Port variable gets shown in the Server Overview 6 | - Added a Max Player Variable to Change the Player count 7 | - making the Server work with docker - enable the "games" user and run server as that user - [Issue](https://github.com/PufferPanel/templates/pull/109#issuecomment-954647443) 8 | - Added a Game branch selector - Now you can start the server in the Satisfactory "experimental build" -------------------------------------------------------------------------------- /satisfactory/satisfactory.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Satisfactory", 4 | "data": { 5 | "multihome": { 6 | "type": "string", 7 | "value": "0.0.0.0", 8 | "display": "Multihome", 9 | "desc": "Ip address to bind the server to", 10 | "required": false, 11 | "userEdit": false 12 | }, 13 | "port": { 14 | "type": "integer", 15 | "value": 15777, 16 | "display": "ServerQueryPort", 17 | "desc": "Port to bind the server to", 18 | "required": false, 19 | "userEdit": false 20 | } 21 | }, 22 | "install": [ 23 | { 24 | "if": "env == 'host'", 25 | "type": "steamgamedl", 26 | "appId": "1690800" 27 | }, 28 | { 29 | "if": "env == 'docker'", 30 | "type": "command", 31 | "commands": [ 32 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 1690800 +quit" 33 | ] 34 | }, 35 | { 36 | "type": "command", 37 | "commands": [ 38 | "chmod +x Engine/Binaries/Linux/UnrealServer-Linux-Shipping", 39 | "mkdir -p ./FactoryGame/Saved/Config/LinuxServer/" 40 | ] 41 | } 42 | ], 43 | "run": { 44 | "command": "./Engine/Binaries/Linux/UnrealServer-Linux-Shipping FactoryGame ?listen -multihome=${multihome} -ServerQueryPort=${port}", 45 | "stopCode": 15, 46 | "environmentVars": { 47 | "LD_LIBRARY_PATH": "./linux64" 48 | }, 49 | "stdin": { 50 | "type": "stdin" 51 | }, 52 | "autostart": false, 53 | "autorecover": false, 54 | "autorestart": false 55 | }, 56 | "environment": { 57 | "type": "host" 58 | }, 59 | "supportedEnvironments": [ 60 | { 61 | "type": "host" 62 | }, 63 | { 64 | "type": "docker", 65 | "image": "steamcmd/steamcmd", 66 | "portBindings": [ 67 | "0.0.0.0:${port}:${port}/tcp" 68 | ] 69 | } 70 | ], 71 | "requirements": { 72 | "os": "linux", 73 | "arch": "amd64" 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "https://raw.githubusercontent.com/pufferpanel/templates/v3/spec.json", 4 | "title": "PufferPanel Template", 5 | "description": "Pufferpanel template and server schema", 6 | "type": "object", 7 | "additionalProperties": false, 8 | "properties": { 9 | "id": { 10 | "type": "string" 11 | }, 12 | "icon": { 13 | "type": "string" 14 | }, 15 | "type": { 16 | "type": "string" 17 | }, 18 | "display": { 19 | "type": "string" 20 | }, 21 | "data": { 22 | "type": "object", 23 | "patternProperties": { 24 | "^[0-9A-Za-z_]+$": { 25 | "$ref": "#/$defs/variable" 26 | } 27 | } 28 | }, 29 | "environment": { 30 | "type": "object", 31 | "$ref": "#/$defs/environment" 32 | }, 33 | "supportedEnvironments": { 34 | "type": "array", 35 | "items": { 36 | "$ref": "#/$defs/environment" 37 | }, 38 | "minItems": 1 39 | }, 40 | "requirements": { 41 | "type": "object", 42 | "properties": { 43 | "os": { 44 | "type": "string" 45 | }, 46 | "arch": { 47 | "type": "string" 48 | }, 49 | "binaries": { 50 | "type": "array", 51 | "items": { 52 | "type": "string" 53 | }, 54 | "minItems": 1 55 | } 56 | } 57 | }, 58 | "install": { 59 | "type": "array", 60 | "items": { 61 | "$ref": "#/$defs/operation" 62 | }, 63 | "minItems": 0 64 | }, 65 | "uninstall": { 66 | "type": "array", 67 | "items": { 68 | "$ref": "#/$defs/operation" 69 | }, 70 | "minItems": 0 71 | }, 72 | "run": { 73 | "type": "object", 74 | "additionalProperties": false, 75 | "properties": { 76 | "command": { 77 | "additionalProperties": false, 78 | "type": [ 79 | "string", 80 | "array" 81 | ], 82 | "items": { 83 | "additionalProperties": false, 84 | "properties": { 85 | "command": { 86 | "type": "string" 87 | }, 88 | "if": { 89 | "type": "string" 90 | } 91 | }, 92 | "required": [ 93 | "command" 94 | ] 95 | }, 96 | "minItems": 1 97 | }, 98 | "pre": { 99 | "type": "array", 100 | "items": { 101 | "$ref": "#/$defs/operation" 102 | }, 103 | "minItems": 0 104 | }, 105 | "post": { 106 | "type": "array", 107 | "items": { 108 | "$ref": "#/$defs/operation" 109 | }, 110 | "minItems": 0 111 | }, 112 | "stop": { 113 | "type": "string" 114 | }, 115 | "stopCode": { 116 | "type": "integer" 117 | }, 118 | "stdin": { 119 | "$ref": "#/$defs/stdinConfig" 120 | }, 121 | "stdout": { 122 | "$ref": "#/$defs/stdoutConfig" 123 | }, 124 | "environmentVars": { 125 | "patternProperties": { 126 | "^[0-9A-Za-z_]+$": { 127 | "type": "string" 128 | } 129 | } 130 | }, 131 | "autostart": { 132 | "type": "boolean" 133 | }, 134 | "autorecover": { 135 | "type": "boolean" 136 | }, 137 | "autorestart": { 138 | "type": "boolean" 139 | }, 140 | "expectedExitCode": { 141 | "type": "integer" 142 | } 143 | }, 144 | "required": [ 145 | "command" 146 | ], 147 | "oneOf": [ 148 | { 149 | "required": [ 150 | "stop" 151 | ] 152 | }, 153 | { 154 | "required": [ 155 | "stopCode" 156 | ] 157 | } 158 | ] 159 | }, 160 | "groups": { 161 | "type": "array", 162 | "items": { 163 | "type": "object", 164 | "additionalProperties": false, 165 | "properties": { 166 | "display": { 167 | "type": "string" 168 | }, 169 | "description": { 170 | "type": "string" 171 | }, 172 | "variables": { 173 | "type": "array", 174 | "items": { 175 | "type": "string" 176 | } 177 | }, 178 | "order": { 179 | "type": "integer" 180 | }, 181 | "if": { 182 | "type": "string" 183 | } 184 | } 185 | }, 186 | "minItems": 1, 187 | "required": [ 188 | "variables" 189 | ] 190 | }, 191 | "stats": { 192 | "type": "object", 193 | "$ref": "#/$defs/statsConfig" 194 | }, 195 | "query": { 196 | "type": "object", 197 | "$ref": "#/$defs/queryConfig" 198 | } 199 | }, 200 | "$defs": { 201 | "variable": { 202 | "type": "object", 203 | "additionalProperties": false, 204 | "properties": { 205 | "type": { 206 | "enum": [ 207 | "option", 208 | "string", 209 | "boolean", 210 | "integer" 211 | ], 212 | "description": "Variable type" 213 | }, 214 | "value": { 215 | "type": [ 216 | "number", 217 | "string", 218 | "boolean" 219 | ] 220 | }, 221 | "display": { 222 | "type": "string" 223 | }, 224 | "desc": { 225 | "type": "string" 226 | }, 227 | "required": { 228 | "type": "boolean" 229 | }, 230 | "userEdit": { 231 | "type": "boolean", 232 | "description": "Whether a user can edit this value" 233 | }, 234 | "internal": { 235 | "type": "boolean" 236 | }, 237 | "options": { 238 | "type": "array", 239 | "items": { 240 | "$ref": "#/$defs/option" 241 | }, 242 | "minItems": 1 243 | } 244 | }, 245 | "allOf": [ 246 | { 247 | "if": { 248 | "properties": { 249 | "type": { 250 | "const": "option" 251 | } 252 | }, 253 | "required": [ 254 | "type" 255 | ] 256 | }, 257 | "then": { 258 | "required": [ 259 | "options" 260 | ] 261 | } 262 | }, 263 | { 264 | "if": { 265 | "properties": { 266 | "type": { 267 | "const": "integer" 268 | } 269 | }, 270 | "required": [ 271 | "type" 272 | ] 273 | }, 274 | "then": { 275 | "properties": { 276 | "value": { 277 | "type": "number" 278 | } 279 | } 280 | } 281 | }, 282 | { 283 | "required": [ 284 | "type" 285 | ] 286 | } 287 | ] 288 | }, 289 | "option": { 290 | "type": "object", 291 | "additionalProperties": false, 292 | "properties": { 293 | "value": { 294 | "type": [ 295 | "number", 296 | "string", 297 | "boolean" 298 | ], 299 | "description": "Value to use" 300 | }, 301 | "display": { 302 | "type": "string", 303 | "description": "Display name of option" 304 | } 305 | } 306 | }, 307 | "operation": { 308 | "type": "object", 309 | "properties": { 310 | "type": { 311 | "enum": [ 312 | "alterfile", 313 | "archive", 314 | "command", 315 | "console", 316 | "curseforge", 317 | "dockerpull", 318 | "download", 319 | "extract", 320 | "fabricdl", 321 | "forgedl", 322 | "javadl", 323 | "mkdir", 324 | "mojangdl", 325 | "move", 326 | "sleep", 327 | "spongedl", 328 | "steamgamedl", 329 | "writefile", 330 | "resolveforgeversion", 331 | "resolveneoforgeversion", 332 | "stdin" 333 | ] 334 | }, 335 | "if": { 336 | "type": "string" 337 | } 338 | }, 339 | "unevaluatedProperties": false, 340 | "allOf": [ 341 | { 342 | "if": { 343 | "properties": { 344 | "type": { 345 | "const": "alterfile" 346 | } 347 | } 348 | }, 349 | "then": { 350 | "properties": { 351 | "file": { 352 | "type": "string" 353 | }, 354 | "search": { 355 | "type": "string" 356 | }, 357 | "replace": { 358 | "type": "string" 359 | }, 360 | "regex": { 361 | "type": "boolean" 362 | } 363 | }, 364 | "required": [ 365 | "file", 366 | "replace", 367 | "search" 368 | ] 369 | } 370 | }, 371 | { 372 | "if": { 373 | "properties": { 374 | "type": { 375 | "const": "archive" 376 | } 377 | } 378 | }, 379 | "then": { 380 | "properties": { 381 | "source": { 382 | "type": "array", 383 | "items": { 384 | "type": "string" 385 | } 386 | }, 387 | "destination": { 388 | "type": "string" 389 | } 390 | }, 391 | "required": [ 392 | "source", 393 | "destination" 394 | ] 395 | } 396 | }, 397 | { 398 | "if": { 399 | "properties": { 400 | "type": { 401 | "const": "command" 402 | } 403 | } 404 | }, 405 | "then": { 406 | "properties": { 407 | "commands": { 408 | "type": [ 409 | "string", 410 | "array" 411 | ], 412 | "items": { 413 | "type": "string" 414 | } 415 | } 416 | }, 417 | "required": [ 418 | "commands" 419 | ] 420 | } 421 | }, 422 | { 423 | "if": { 424 | "properties": { 425 | "type": { 426 | "const": "console" 427 | } 428 | } 429 | }, 430 | "then": { 431 | "properties": { 432 | "message": { 433 | "type": "string" 434 | } 435 | }, 436 | "required": [ 437 | "message" 438 | ] 439 | } 440 | }, 441 | { 442 | "if": { 443 | "properties": { 444 | "type": { 445 | "const": "curseforge" 446 | } 447 | } 448 | }, 449 | "then": { 450 | "properties": { 451 | "projectId": { 452 | "type": "string" 453 | }, 454 | "fileId": { 455 | "type": "string" 456 | }, 457 | "java": { 458 | "type": "string" 459 | } 460 | }, 461 | "required": [ 462 | "projectId" 463 | ] 464 | } 465 | }, 466 | { 467 | "if": { 468 | "properties": { 469 | "type": { 470 | "const": "dockerpull" 471 | } 472 | } 473 | }, 474 | "then": { 475 | "properties": { 476 | "imageName": { 477 | "type": "string" 478 | } 479 | }, 480 | "required": [ 481 | "imageName" 482 | ] 483 | } 484 | }, 485 | { 486 | "if": { 487 | "properties": { 488 | "type": { 489 | "const": "download" 490 | } 491 | } 492 | }, 493 | "then": { 494 | "properties": { 495 | "files": { 496 | "type": [ 497 | "array" 498 | ], 499 | "items": { 500 | "type": "string" 501 | } 502 | } 503 | }, 504 | "required": [ 505 | "files" 506 | ] 507 | } 508 | }, 509 | { 510 | "if": { 511 | "properties": { 512 | "type": { 513 | "const": "extract" 514 | } 515 | } 516 | }, 517 | "then": { 518 | "properties": { 519 | "source": { 520 | "type": "string" 521 | }, 522 | "destination": { 523 | "type": "string" 524 | } 525 | }, 526 | "required": [ 527 | "source", 528 | "destination" 529 | ] 530 | } 531 | }, 532 | { 533 | "if": { 534 | "properties": { 535 | "type": { 536 | "const": "fabricdl" 537 | } 538 | } 539 | }, 540 | "then": {} 541 | }, 542 | { 543 | "if": { 544 | "properties": { 545 | "type": { 546 | "const": "forgedl" 547 | } 548 | } 549 | }, 550 | "then": { 551 | "properties": { 552 | "minecraftVersion": { 553 | "type": "string" 554 | }, 555 | "version": { 556 | "type": "string" 557 | }, 558 | "target": { 559 | "type": "string" 560 | }, 561 | "outputVariable": { 562 | "type": "string" 563 | } 564 | }, 565 | "required": [ 566 | "target" 567 | ] 568 | } 569 | }, 570 | { 571 | "if": { 572 | "properties": { 573 | "type": { 574 | "const": "javadl" 575 | } 576 | } 577 | }, 578 | "then": { 579 | "properties": { 580 | "version": { 581 | "type": "string" 582 | } 583 | }, 584 | "required": [ 585 | "version" 586 | ] 587 | } 588 | }, 589 | { 590 | "if": { 591 | "properties": { 592 | "type": { 593 | "const": "mkdir" 594 | } 595 | } 596 | }, 597 | "then": { 598 | "properties": { 599 | "target": { 600 | "type": "string" 601 | } 602 | }, 603 | "required": [ 604 | "target" 605 | ] 606 | } 607 | }, 608 | { 609 | "if": { 610 | "properties": { 611 | "type": { 612 | "const": "mojangdl" 613 | } 614 | } 615 | }, 616 | "then": { 617 | "properties": { 618 | "version": { 619 | "type": "string" 620 | }, 621 | "target": { 622 | "type": "string" 623 | } 624 | }, 625 | "required": [ 626 | "target", 627 | "version" 628 | ] 629 | } 630 | }, 631 | { 632 | "if": { 633 | "properties": { 634 | "type": { 635 | "const": "move" 636 | } 637 | } 638 | }, 639 | "then": { 640 | "properties": { 641 | "source": { 642 | "type": "string" 643 | }, 644 | "target": { 645 | "type": "string" 646 | } 647 | }, 648 | "required": [ 649 | "source", 650 | "target" 651 | ] 652 | } 653 | }, 654 | { 655 | "if": { 656 | "properties": { 657 | "type": { 658 | "const": "sleep" 659 | } 660 | } 661 | }, 662 | "then": { 663 | "properties": { 664 | "duration": { 665 | "type": "string" 666 | } 667 | }, 668 | "required": [ 669 | "duration" 670 | ] 671 | } 672 | }, 673 | { 674 | "if": { 675 | "properties": { 676 | "type": { 677 | "const": "spongedl" 678 | } 679 | } 680 | }, 681 | "then": { 682 | "properties": { 683 | "recommended": { 684 | "type": "boolean" 685 | }, 686 | "spongeType": { 687 | "enum": [ 688 | "spongeforge", 689 | "spongevanilla" 690 | ] 691 | }, 692 | "spongeVersion": { 693 | "type": "string" 694 | }, 695 | "minecraftVersion": { 696 | "type": "string" 697 | } 698 | }, 699 | "required": [ 700 | "spongeType" 701 | ] 702 | } 703 | }, 704 | { 705 | "if": { 706 | "properties": { 707 | "type": { 708 | "const": "steamgamedl" 709 | } 710 | } 711 | }, 712 | "then": { 713 | "properties": { 714 | "appId": { 715 | "type": "string" 716 | }, 717 | "username": { 718 | "type": "string" 719 | }, 720 | "password": { 721 | "type": "string" 722 | }, 723 | "extraArgs": { 724 | "type": "string" 725 | } 726 | }, 727 | "required": [ 728 | "appId" 729 | ] 730 | } 731 | }, 732 | { 733 | "if": { 734 | "properties": { 735 | "type": { 736 | "const": "writefile" 737 | } 738 | } 739 | }, 740 | "then": { 741 | "properties": { 742 | "target": { 743 | "type": "string" 744 | }, 745 | "text": { 746 | "type": "string" 747 | } 748 | }, 749 | "required": [ 750 | "target", 751 | "text" 752 | ] 753 | } 754 | }, 755 | { 756 | "if": { 757 | "properties": { 758 | "type": { 759 | "const": "resolveforgeversion" 760 | } 761 | } 762 | }, 763 | "then": { 764 | "properties": { 765 | "minecraftVersion": { 766 | "type": "string" 767 | }, 768 | "version": { 769 | "type": "string" 770 | }, 771 | "outputVariable": { 772 | "type": "string" 773 | } 774 | }, 775 | "required": [ 776 | "outputVariable" 777 | ] 778 | } 779 | }, 780 | { 781 | "if": { 782 | "properties": { 783 | "type": { 784 | "const": "resolveneoforgeversion" 785 | } 786 | } 787 | }, 788 | "then": { 789 | "properties": { 790 | "minecraftVersion": { 791 | "type": "string" 792 | }, 793 | "version": { 794 | "type": "string" 795 | }, 796 | "outputVariable": { 797 | "type": "string" 798 | } 799 | }, 800 | "required": [ 801 | "outputVariable" 802 | ] 803 | } 804 | }, 805 | { 806 | "if": { 807 | "properties": { 808 | "type": { 809 | "const": "stdin" 810 | } 811 | } 812 | }, 813 | "then": { 814 | "properties": { 815 | "command": { 816 | "type": "string" 817 | } 818 | }, 819 | "required": [ 820 | "command" 821 | ] 822 | } 823 | } 824 | ] 825 | }, 826 | "environment": { 827 | "type": "object", 828 | "properties": { 829 | "type": { 830 | "enum": [ 831 | "docker", 832 | "host" 833 | ] 834 | } 835 | }, 836 | "allOf": [ 837 | { 838 | "$ref": "#/$defs/dockerEnv" 839 | }, 840 | { 841 | "$ref": "#/$defs/standardEnv" 842 | } 843 | ] 844 | }, 845 | "dockerEnv": { 846 | "type": "object", 847 | "if": { 848 | "properties": { 849 | "type": { 850 | "const": "docker" 851 | } 852 | } 853 | }, 854 | "then": { 855 | "properties": { 856 | "type": { 857 | "const": "docker" 858 | }, 859 | "image": { 860 | "type": "string" 861 | } 862 | }, 863 | "required": [ 864 | "image" 865 | ] 866 | } 867 | }, 868 | "standardEnv": { 869 | "type": "object", 870 | "if": { 871 | "properties": { 872 | "type": { 873 | "const": "host" 874 | } 875 | } 876 | }, 877 | "then": { 878 | "properties": { 879 | "type": { 880 | "const": "host" 881 | } 882 | }, 883 | "unevaluatedProperties": false 884 | } 885 | }, 886 | "stdinConfig": { 887 | "properties": { 888 | "type": { 889 | "enum": [ 890 | "telnet", 891 | "rcon", 892 | "rconws", 893 | "stdin" 894 | ] 895 | } 896 | }, 897 | "required": [ 898 | "type" 899 | ], 900 | "allOf": [ 901 | { 902 | "if": { 903 | "properties": { 904 | "type": { 905 | "const": "telnet" 906 | } 907 | } 908 | }, 909 | "then": { 910 | "$ref": "#/$defs/telnetConfig" 911 | } 912 | }, 913 | { 914 | "if": { 915 | "properties": { 916 | "type": { 917 | "const": "rcon" 918 | } 919 | } 920 | }, 921 | "then": { 922 | "$ref": "#/$defs/rconConfig" 923 | } 924 | }, 925 | { 926 | "if": { 927 | "properties": { 928 | "type": { 929 | "const": "rconws" 930 | } 931 | } 932 | }, 933 | "then": { 934 | "$ref": "#/$defs/rconwsConfig" 935 | } 936 | } 937 | ] 938 | }, 939 | "stdoutConfig": { 940 | "properties": { 941 | "type": { 942 | "enum": [ 943 | "telnet", 944 | "rcon", 945 | "rconws", 946 | "file", 947 | "stdout" 948 | ] 949 | } 950 | }, 951 | "required": [ 952 | "type" 953 | ], 954 | "allOf": [ 955 | { 956 | "if": { 957 | "properties": { 958 | "type": { 959 | "const": "telnet" 960 | } 961 | } 962 | }, 963 | "then": { 964 | "$ref": "#/$defs/telnetConfig" 965 | } 966 | }, 967 | { 968 | "if": { 969 | "properties": { 970 | "type": { 971 | "const": "rcon" 972 | } 973 | } 974 | }, 975 | "then": { 976 | "$ref": "#/$defs/rconConfig" 977 | } 978 | }, 979 | { 980 | "if": { 981 | "properties": { 982 | "type": { 983 | "const": "rconws" 984 | } 985 | } 986 | }, 987 | "then": { 988 | "$ref": "#/$defs/rconwsConfig" 989 | } 990 | }, 991 | { 992 | "if": { 993 | "properties": { 994 | "type": { 995 | "const": "file" 996 | } 997 | } 998 | }, 999 | "then": { 1000 | "$ref": "#/$defs/fileConfig" 1001 | } 1002 | } 1003 | ] 1004 | }, 1005 | "telnetConfig": { 1006 | "properties": { 1007 | "ip": { 1008 | "type": "string" 1009 | }, 1010 | "port": { 1011 | "type": [ 1012 | "integer", 1013 | "string" 1014 | ] 1015 | } 1016 | }, 1017 | "required": [ 1018 | "port" 1019 | ] 1020 | }, 1021 | "rconConfig": { 1022 | "properties": { 1023 | "ip": { 1024 | "type": "string" 1025 | }, 1026 | "port": { 1027 | "type": [ 1028 | "integer", 1029 | "string" 1030 | ] 1031 | }, 1032 | "password": { 1033 | "type": "string" 1034 | } 1035 | }, 1036 | "required": [ 1037 | "port", 1038 | "password" 1039 | ] 1040 | }, 1041 | "rconwsConfig": { 1042 | "properties": { 1043 | "ip": { 1044 | "type": "string" 1045 | }, 1046 | "port": { 1047 | "type": [ 1048 | "integer", 1049 | "string" 1050 | ] 1051 | }, 1052 | "password": { 1053 | "type": "string" 1054 | } 1055 | }, 1056 | "required": [ 1057 | "port", 1058 | "password" 1059 | ] 1060 | }, 1061 | "fileConfig": { 1062 | "properties": { 1063 | "file": { 1064 | "type": "string" 1065 | } 1066 | }, 1067 | "required": [ 1068 | "file" 1069 | ] 1070 | }, 1071 | "statsConfig": { 1072 | "type": "object", 1073 | "properties": { 1074 | "type": { 1075 | "enum": [ 1076 | "jcmd" 1077 | ] 1078 | } 1079 | }, 1080 | "required": [ 1081 | "type" 1082 | ] 1083 | }, 1084 | "queryConfig": { 1085 | "type": "object", 1086 | "properties": { 1087 | "type": { 1088 | "enum": [ 1089 | "minecraft" 1090 | ] 1091 | } 1092 | }, 1093 | "required": [ 1094 | "type" 1095 | ] 1096 | } 1097 | } 1098 | } -------------------------------------------------------------------------------- /squad/README.md: -------------------------------------------------------------------------------- 1 | # SQUAD Dedicated Server 2 | 3 | ## Template OS suport 4 | 5 | This template only works for the following operating systems: 6 | 7 | - Linux 8 | 9 | ## More info 10 | 11 | [Official Squad Wiki - Server Installation](https://squad.fandom.com/wiki/Server_Installation) 12 | -------------------------------------------------------------------------------- /squad/squad.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "squad", 3 | "display": "SQUAD Dedicated Server", 4 | "data": { 5 | "fixed_max_players": { 6 | "type": "integer", 7 | "value": 80, 8 | "display": "Fixed Max Players", 9 | "desc": "Player count cannot go higher than this", 10 | "required": true, 11 | "userEdit": false 12 | }, 13 | "port": { 14 | "type": "integer", 15 | "value": 7787, 16 | "display": "Port", 17 | "desc": "Game server port", 18 | "required": true, 19 | "userEdit": false 20 | }, 21 | "query_port": { 22 | "type": "integer", 23 | "value": 27165, 24 | "display": "Steam Query Port", 25 | "desc": "Steam query port", 26 | "required": true, 27 | "userEdit": false 28 | }, 29 | "random": { 30 | "type": "option", 31 | "value": "NONE", 32 | "display": "Random", 33 | "desc": "Randomize map rotation", 34 | "required": true, 35 | "userEdit": false, 36 | "options": [ 37 | { 38 | "value": "NONE", 39 | "display": "None" 40 | }, 41 | { 42 | "value": "FIRST", 43 | "display": "First" 44 | }, 45 | { 46 | "value": "ALWAYS", 47 | "display": "Always" 48 | } 49 | ] 50 | } 51 | }, 52 | "install": [ 53 | { 54 | "if": "env == 'host'", 55 | "type": "steamgamedl", 56 | "appId": "403240" 57 | }, 58 | { 59 | "if": "env == 'docker'", 60 | "type": "command", 61 | "commands": [ 62 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 403240 +quit" 63 | ] 64 | }, 65 | { 66 | "type": "command", 67 | "commands": [ 68 | "chmod +x SquadGame/Binaries/Linux/SquadGameServer" 69 | ] 70 | } 71 | ], 72 | "run": { 73 | "command": "SquadGame/Binaries/Linux/SquadGameServer Port=${port} QueryPort=${query_port} FIXEDMAXPLAYERS=${fixed_max_players} RANDOM=${random}", 74 | "stopCode": 15, 75 | "expectedExitCode": 143, 76 | "pre": [ 77 | { 78 | "if": "env == 'host'", 79 | "type": "steamgamedl", 80 | "appId": "403240" 81 | }, 82 | { 83 | "if": "env == 'docker'", 84 | "type": "command", 85 | "commands": [ 86 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 403240 +quit" 87 | ] 88 | }, 89 | { 90 | "type": "command", 91 | "commands": [ 92 | "chmod +x SquadGame/Binaries/Linux/SquadGameServer" 93 | ] 94 | } 95 | ], 96 | "stdin": { 97 | "type": "stdin" 98 | }, 99 | "autostart": false, 100 | "autorecover": false, 101 | "autorestart": false 102 | }, 103 | "environment": { 104 | "type": "host" 105 | }, 106 | "supportedEnvironments": [ 107 | { 108 | "type": "host" 109 | }, 110 | { 111 | "type": "docker", 112 | "image": "steamcmd/steamcmd", 113 | "portBindings": [ 114 | "0.0.0.0:${port}:${port}/tcp" 115 | ] 116 | } 117 | ], 118 | "requirements": { 119 | "os": "linux", 120 | "arch": "amd64" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /starbound/.skip: -------------------------------------------------------------------------------- 1 | Requires license -------------------------------------------------------------------------------- /starbound/README.md: -------------------------------------------------------------------------------- 1 | ## Starbound Script 2 | * This script is fairly straightforward to get a server up, just input 3 | your info and click install on the Server Control Page. 4 | * You MUST use a valid steam username that owns Starbound in order to 5 | install the server. 6 | * When you run the installer, you will enter your password into the 7 | console and answer the Steamguard interactively. 8 | 9 | * If you're getting a 'no such file or directory' error, make sure you have the 'lib32gcc-s1' package installed . 10 | -------------------------------------------------------------------------------- /starbound/starbound.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "starbound", 3 | "display": "Starbound", 4 | "icon": "starbound", 5 | "data": { 6 | "gameServerPort": { 7 | "type": "integer", 8 | "value": 21025, 9 | "display": "Server Port", 10 | "desc": "Server Port", 11 | "required": true, 12 | "userEdit": false 13 | }, 14 | "maxPlayers": { 15 | "type": "integer", 16 | "value": 8, 17 | "display": "Maximum Players", 18 | "desc": "Maximum Players", 19 | "required": true, 20 | "userEdit": true 21 | }, 22 | "serverName": { 23 | "type": "string", 24 | "value": "A Starbound Server", 25 | "display": "Server Name", 26 | "desc": "Server Name", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "steamUser": { 31 | "type": "string", 32 | "value": "", 33 | "display": "Steam Username", 34 | "desc": "Steam Username (required for install)", 35 | "required": true, 36 | "userEdit": true 37 | } 38 | }, 39 | "install": [ 40 | { 41 | "type": "mkdir", 42 | "target": "storage" 43 | }, 44 | { 45 | "if": "env == 'host'", 46 | "type": "steamgamedl", 47 | "username": "${steamUser}", 48 | "appId": "533830" 49 | }, 50 | { 51 | "if": "env == 'docker'", 52 | "type": "command", 53 | "commands": [ 54 | "steamcmd +force_install_dir /pufferpanel +login ${steamUser} +app_update 533830 +quit" 55 | ] 56 | }, 57 | { 58 | "type": "writefile", 59 | "text": "{\n\t\"assetDirectories\" : [\n\t\t\"assets/\",\n\t\t\"mods/\"\n\t],\n\t\"storageDirectory\" : \"storage/\"\n}\n", 60 | "target": "sbinit.config" 61 | }, 62 | { 63 | "type": "writefile", 64 | "text": "{\n\t\"allowAdminCommands\" : true,\n\t\"allowAdminCommandsFromAnyone\" : false,\n\t\"allowAnonymousConnections\" : true,\n\t\"allowAssetsMismatch\" : true,\n\t\"anonymousConnectionsAreAdmin\" : false,\n\t\"bannedIPs\" : [],\n\t\"bannedUuids\" : [],\n\t\"checkAssetsDigest\" : false,\n\t\"clearPlayerFiles\" : false,\n\t\"clearUniverseFiles\" : false,\n\t\"clientIPJoinable\" : true,\n\t\"clientP2PJoinable\" : false,\n\t\"configurationVersion\" : {\n\t\t\"basic\" : 2,\n\t\t\"server\" : 4\n\t},\n\t\"crafting\" : {\n\t\t\"filterHaveMaterials\" : false\n\t},\n\t\"gameServerBind\" : \"::\",\n\t\"gameServerPort\" : ${gameServerPort},\n\t\"interactiveHighlight\" : true,\n\t\"inventory\" : {\n\t\t\"pickupToActionBar\" : true\n\t},\n\t\"maxPlayers\" : ${maxPlayers},\n\t\"maxTeamSize\" : 4,\n\t\"monochromeLighting\" : false,\n\t\"playerBackupFileCount\" : 3,\n\t\"queryServerBind\" : \"::\",\n\t\"queryServerPort\" : 21025,\n\t\"rconServerBind\" : \"::\",\n\t\"rconServerPassword\" : \"\",\n\t\"rconServerPort\" : 21026,\n\t\"rconServerTimeout\" : 1000,\n\t\"runQueryServer\" : false,\n\t\"runRconServer\" : false,\n\t\"safeScripts\" : true,\n\t\"scriptInstructionLimit\" : 10000000,\n\t\"scriptInstructionMeasureInterval\" : 10000,\n\t\"scriptProfilingEnabled\" : false,\n\t\"scriptRecursionLimit\" : 100,\n\t\"serverFidelity\" : \"automatic\",\n\t\"serverName\" : \"${serverName}\",\n\t\"serverOverrideAssetsDigest\" : null,\n\t\"serverUsers\" : {\n\t},\n\t\"tutorialMessages\" : true\n}\n", 65 | "target": "storage/starbound_server.config" 66 | }, 67 | { 68 | "type": "command", 69 | "commands": [ 70 | "chmod +x starbound_server" 71 | ] 72 | } 73 | ], 74 | "run": { 75 | "command": "./starbound_server", 76 | "stopCode": 2, 77 | "stdin": { 78 | "type": "stdin" 79 | }, 80 | "autostart": false, 81 | "autorecover": false, 82 | "autorestart": false 83 | }, 84 | "environment": { 85 | "type": "host" 86 | }, 87 | "supportedEnvironments": [ 88 | { 89 | "type": "host" 90 | }, 91 | { 92 | "type": "docker", 93 | "image": "steamcmd/steamcmd", 94 | "portBindings": [ 95 | "0.0.0.0:${gameServerPort}:${gameServerPort}/tcp" 96 | ] 97 | } 98 | ], 99 | "requirements": { 100 | "os": "linux", 101 | "arch": "amd64" 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /stn/README.md: -------------------------------------------------------------------------------- 1 | # Survive The Nights Dedicated Server 2 | Requires: 3 | - [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD) 4 | 5 | ### Server config 6 | This script will generate all the required default files inside a Config folder. 7 | 8 | For details about config see here: https://survivethenights.fandom.com/wiki/Hosting 9 | 10 | ## This only supports Linux. 11 | -------------------------------------------------------------------------------- /teamspeak3/README.md: -------------------------------------------------------------------------------- 1 | ## Notes 2 | This only supports Linux. -------------------------------------------------------------------------------- /teamspeak3/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "teamspeak", 4 | "variables": { 5 | "eula": "1" 6 | }, 7 | "environment": { 8 | "type": "host" 9 | } 10 | } 11 | ] -------------------------------------------------------------------------------- /teamspeak3/teamspeak3.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "voice", 3 | "display": "Teamspeak 3", 4 | "data": { 5 | "eula": { 6 | "type": "option", 7 | "value": "0", 8 | "display": "EULA", 9 | "desc": "Do you accept the Teamspeak EULA? 1 = Yes, 0 = No.", 10 | "required": true, 11 | "userEdit": false, 12 | "options": [ 13 | { 14 | "value": "0", 15 | "display": "No" 16 | }, 17 | { 18 | "value": "1", 19 | "display": "Yes" 20 | } 21 | ] 22 | }, 23 | "ftport": { 24 | "type": "integer", 25 | "value": 30033, 26 | "display": "Port Number", 27 | "desc": "What Port do you want your file transfer server to run on?", 28 | "required": false, 29 | "userEdit": false 30 | }, 31 | "ip": { 32 | "type": "string", 33 | "value": "0.0.0.0", 34 | "display": "IP Address", 35 | "desc": "What IP do you want your voice server to run on?", 36 | "required": false, 37 | "userEdit": false 38 | }, 39 | "license": { 40 | "type": "string", 41 | "value": "", 42 | "display": "License Path", 43 | "desc": "The absolute path to your license file.", 44 | "required": false, 45 | "userEdit": true 46 | }, 47 | "qport": { 48 | "type": "string", 49 | "value": "10011", 50 | "display": "Port Number", 51 | "desc": "What Port do you want your query server to run on?", 52 | "required": false, 53 | "userEdit": false 54 | }, 55 | "version": { 56 | "type": "string", 57 | "value": "3.13.7", 58 | "display": "Version", 59 | "desc": "What version of Teamspeak do you want to use?", 60 | "required": true, 61 | "userEdit": true 62 | }, 63 | "vport": { 64 | "type": "integer", 65 | "value": 9987, 66 | "display": "Port Number", 67 | "desc": "What Port do you want your voice server to run on?", 68 | "required": false, 69 | "userEdit": false 70 | } 71 | }, 72 | "install": [ 73 | { 74 | "type": "download", 75 | "files": [ 76 | "https://files.teamspeak-services.com/releases/server/${version}/teamspeak3-server_linux_amd64-${version}.tar.bz2" 77 | ] 78 | }, 79 | { 80 | "type": "command", 81 | "commands": [ 82 | "tar -xjf teamspeak3-server_linux_amd64-${version}.tar.bz2 --strip-components 1", 83 | "rm teamspeak3-server_linux_amd64-${version}.tar.bz2" 84 | ] 85 | } 86 | ], 87 | "run": { 88 | "command": "./ts3server_minimal_runscript.sh default_voice_port=${vport} query_port=${qport} filetransfer_port=${ftport} voice_ip=${ip} licensepath=${license} license_accepted=${eula}", 89 | "stopCode": 2, 90 | "stdin": { 91 | "type": "stdin" 92 | }, 93 | "autostart": false, 94 | "autorecover": false, 95 | "autorestart": false 96 | }, 97 | "environment": { 98 | "type": "host" 99 | }, 100 | "supportedEnvironments": [ 101 | { 102 | "type": "host" 103 | }, 104 | { 105 | "type": "docker", 106 | "image": "ubuntu", 107 | "portBindings": [ 108 | "0.0.0.0:${ftport}:${ftport}/tcp", 109 | "0.0.0.0:${vport}:${vport}/tcp", 110 | "0.0.0.0:${qport}:${qport}/tcp" 111 | ] 112 | } 113 | ], 114 | "requirements": { 115 | "os": "linux", 116 | "arch": "amd64", 117 | "binaries": [ 118 | "tar" 119 | ] 120 | } 121 | } -------------------------------------------------------------------------------- /terraria-tmodloader/README.md: -------------------------------------------------------------------------------- 1 | Terarria - tModLoader Template - made for linux non arm 2 | 3 | How to install mods: 4 | 5 | 1. Upload the .tmod file into the mods folder 6 | 2. Edit the enabled.json inside the mods folder 7 | 8 | For example in my mods folder i have three mods (mod1.tmod, mod2.tmod and mod3.tmod) and so my enabled.json looks like this: 9 | [ 10 | "Mod1", 11 | "Mod2", 12 | "Mod3" 13 | ] 14 | 15 | NOTE: Adding mods after the world was first created may not ever work 16 | 17 | Do not forget to install the tModLoader also on your PC (https://store.steampowered.com/app/1281930/tModLoader) and also to activate the automatic mod download from the server! 18 | -------------------------------------------------------------------------------- /terraria-tmodloader/terraria-tmodloader.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "terraria", 3 | "display": "Terraria - tModLoader", 4 | "icon": "terraria", 5 | "data": { 6 | "abr": { 7 | "type": "string", 8 | "value": "-1", 9 | "display": "announcementbox-range", 10 | "desc": "Sets the announcementbox text messaging range in pixels, -1 for serverwide announcements.", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "backups": { 15 | "type": "string", 16 | "value": "2", 17 | "display": "Backups", 18 | "desc": "Sets the number of rolling world backups to keep", 19 | "required": true, 20 | "userEdit": true 21 | }, 22 | "ban": { 23 | "type": "string", 24 | "value": "banlist.txt", 25 | "display": "Banlist", 26 | "desc": "Name of the banlist file", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "difficulty": { 31 | "type": "string", 32 | "value": "0", 33 | "display": "Difficulty", 34 | "desc": "This can not be changed after the world was generated", 35 | "required": true, 36 | "userEdit": true, 37 | "options": [ 38 | { 39 | "value": "0", 40 | "display": "Normal" 41 | }, 42 | { 43 | "value": "1", 44 | "display": "Expert" 45 | }, 46 | { 47 | "value": "2", 48 | "display": "Master" 49 | }, 50 | { 51 | "value": "3", 52 | "display": "Journey" 53 | } 54 | ] 55 | }, 56 | "disableannouncementbox": { 57 | "type": "string", 58 | "value": "", 59 | "display": "Announcement Box", 60 | "desc": "Decides if the text announcements the Announcement Box makes when pulsed from wire.", 61 | "required": false, 62 | "userEdit": true, 63 | "options": [ 64 | { 65 | "value": "", 66 | "display": "Enable" 67 | }, 68 | { 69 | "value": "-disableannouncementbox", 70 | "display": "Disable" 71 | } 72 | ] 73 | }, 74 | "ip": { 75 | "type": "string", 76 | "value": "0.0.0.0", 77 | "display": "IP", 78 | "desc": "Sets the IP address for the server to listen on - 0.0.0.0 means every possible IP", 79 | "required": true, 80 | "userEdit": false 81 | }, 82 | "lang": { 83 | "type": "string", 84 | "value": "en-US", 85 | "display": "Language", 86 | "desc": "Language for the server", 87 | "required": true, 88 | "userEdit": true, 89 | "options": [ 90 | { 91 | "value": "en-US", 92 | "display": "English" 93 | }, 94 | { 95 | "value": "de-DE", 96 | "display": "German" 97 | }, 98 | { 99 | "value": "it-IT", 100 | "display": "Italian" 101 | }, 102 | { 103 | "value": "fr-FR", 104 | "display": "French" 105 | }, 106 | { 107 | "value": "es-ES", 108 | "display": "Spanish" 109 | }, 110 | { 111 | "value": "ru-RU", 112 | "display": "Russian" 113 | }, 114 | { 115 | "value": "zh-Hans", 116 | "display": "Chinese" 117 | }, 118 | { 119 | "value": "pt-PR", 120 | "display": "Portuguese" 121 | }, 122 | { 123 | "value": "pl-PL", 124 | "display": "Polish" 125 | } 126 | ] 127 | }, 128 | "motd": { 129 | "type": "string", 130 | "value": "Hello!", 131 | "display": "motd", 132 | "desc": "Set the message of the day", 133 | "required": true, 134 | "userEdit": true 135 | }, 136 | "npcs": { 137 | "type": "string", 138 | "value": "60", 139 | "display": "npcstream", 140 | "desc": "Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off.", 141 | "required": true, 142 | "userEdit": true 143 | }, 144 | "password": { 145 | "type": "string", 146 | "value": "", 147 | "display": "Password", 148 | "desc": "Server Password - leave blank for none", 149 | "required": true, 150 | "userEdit": true 151 | }, 152 | "players": { 153 | "type": "string", 154 | "value": "4", 155 | "display": "Players", 156 | "desc": "Max Players", 157 | "required": true, 158 | "userEdit": true 159 | }, 160 | "port": { 161 | "type": "string", 162 | "value": "7777", 163 | "display": "Port", 164 | "desc": "What port to bind the server to", 165 | "required": true, 166 | "userEdit": false 167 | }, 168 | "secure": { 169 | "type": "string", 170 | "value": "1", 171 | "display": "secure", 172 | "desc": "Enable cheat protection = 1 and disable = 0", 173 | "required": true, 174 | "userEdit": true, 175 | "options": [ 176 | { 177 | "value": "1", 178 | "display": "Enable" 179 | }, 180 | { 181 | "value": "0", 182 | "display": "Disable" 183 | } 184 | ] 185 | }, 186 | "seed": { 187 | "type": "string", 188 | "value": "VeryGoodStartingSeed", 189 | "display": "Seed", 190 | "desc": "This can not be changed after the world was generated - Seed of the World", 191 | "required": true, 192 | "userEdit": true 193 | }, 194 | "sl": { 195 | "type": "string", 196 | "value": "1", 197 | "display": "maximum liquids moving", 198 | "desc": "Reduces maximum liquids moving at the same time. If enabled may reduce lags but liquids may take longer to settle.", 199 | "required": true, 200 | "userEdit": true 201 | }, 202 | "steam": { 203 | "type": "string", 204 | "value": "", 205 | "display": "Steam", 206 | "desc": "Enables Steam Support", 207 | "required": false, 208 | "userEdit": true, 209 | "options": [ 210 | { 211 | "value": "-steam", 212 | "display": "Enable" 213 | }, 214 | { 215 | "value": "", 216 | "display": "Disable" 217 | } 218 | ] 219 | }, 220 | "tversion": { 221 | "type": "string", 222 | "value": "v2023.11.3.3", 223 | "display": "tModLoader Version (Set this to the latest tModLoader version to enable support - see https://github.com/tModLoader/tModLoader/releases/latest)", 224 | "desc": "tModLoader Version", 225 | "required": false, 226 | "userEdit": false 227 | }, 228 | "world": { 229 | "type": "string", 230 | "value": "Terraria-World-1", 231 | "display": "World-Name", 232 | "desc": "Name of your World", 233 | "required": true, 234 | "userEdit": true 235 | }, 236 | "wp": { 237 | "type": "string", 238 | "value": "worlds", 239 | "display": "Worldpath", 240 | "desc": "Name of the world folder", 241 | "required": true, 242 | "userEdit": true 243 | }, 244 | "arch": { 245 | "type": "option", 246 | "value": "x64", 247 | "display": "Architecture", 248 | "desc": "Architecture your machine", 249 | "required": true, 250 | "userEdit": false, 251 | "options": [ 252 | { 253 | "value": "arm", 254 | "display": "arm" 255 | }, 256 | { 257 | "value": "arm64", 258 | "display": "arm64" 259 | }, 260 | { 261 | "value": "x64", 262 | "display": "amd64" 263 | } 264 | ] 265 | }, 266 | "dotnetversion": { 267 | "type": "string", 268 | "value": "6.0.14", 269 | "display": ".NET Runtime Version", 270 | "desc": ".NET Runtime Version", 271 | "required": true, 272 | "userEdit": false 273 | }, 274 | "size": { 275 | "type": "option", 276 | "value": "3", 277 | "display": "World Size", 278 | "desc": "World Size to create", 279 | "required": true, 280 | "userEdit": false, 281 | "options": [ 282 | { 283 | "value": "1", 284 | "display": "Small" 285 | }, 286 | { 287 | "value": "2", 288 | "display": "Medium" 289 | }, 290 | { 291 | "value": "3", 292 | "display": "Large" 293 | } 294 | ] 295 | } 296 | }, 297 | "install": [ 298 | { 299 | "if": "env == 'host'", 300 | "type": "download", 301 | "files": [ 302 | "https://dotnetcli.azureedge.net/dotnet/Runtime/${dotnetversion}/dotnet-runtime-${dotnetversion}-linux-${arch}.tar.gz" 303 | ] 304 | }, 305 | { 306 | "if": "env == 'host'", 307 | "type": "command", 308 | "commands": [ 309 | "rm -rf dotnet", 310 | "mkdir -p dotnet" 311 | ] 312 | }, 313 | { 314 | "if": "env == 'host'", 315 | "type": "extract", 316 | "source": "dotnet-runtime-${dotnetversion}-linux-${arch}.tar.gz", 317 | "destination": "dotnet" 318 | }, 319 | { 320 | "if": "env == 'host'", 321 | "type": "command", 322 | "commands": [ 323 | "rm -rf dotnet-runtime-linux-${arch}.tar.gz" 324 | ] 325 | }, 326 | { 327 | "type": "download", 328 | "files": [ 329 | "https://github.com/tModLoader/tModLoader/releases/download/${tversion}/tModLoader.zip" 330 | ] 331 | }, 332 | { 333 | "type": "extract", 334 | "source": "tModLoader.zip", 335 | "destination": "." 336 | }, 337 | { 338 | "type": "command", 339 | "commands": [ 340 | "rm tModLoader.zip", 341 | "mkdir -p ./${wp}" 342 | ] 343 | } 344 | ], 345 | "run": { 346 | "command": [ 347 | { 348 | "if": "env == 'docker'", 349 | "command": "dotnet tModLoader.dll -server ${steam} -ip ${ip} ${disableannouncementbox} -announcementboxrange ${abr} -config ./serverconfig.txt -autocreate ${size}" 350 | }, 351 | { 352 | "command": "dotnet/dotnet tModLoader.dll -server ${steam} -ip ${ip} ${disableannouncementbox} -announcementboxrange ${abr} -config ./serverconfig.txt -autocreate ${size}" 353 | } 354 | ], 355 | "stop": "exit", 356 | "pre": [ 357 | { 358 | "type": "writefile", 359 | "target": "serverconfig.txt", 360 | "text": "world=${wp}/${world}.wld\nautocreate=${size}\nseed=${seed}\nworldname=${world}\ndifficulty=${difficulty}\nmaxplayers=${players}\nport=${port}\npassword=${password}\nmotd=${motd}\nworldpath=../${wp}\nbanlist=../${ban}\nsecure=${secure}\nlanguage=${lang}\nupnp=1\nnpcstream=${npcs}\npriority=3\nslowliquids=${sl}\nworldrollbackstokeep=${backups}" 361 | } 362 | ], 363 | "stdin": { 364 | "type": "stdin" 365 | }, 366 | "autostart": false, 367 | "autorecover": false, 368 | "autorestart": false 369 | }, 370 | "environment": { 371 | "type": "host" 372 | }, 373 | "supportedEnvironments": [ 374 | { 375 | "type": "host" 376 | }, 377 | { 378 | "type": "docker", 379 | "image": "mcr.microsoft.com/dotnet/runtime:${dotnetversion}", 380 | "portBindings": [ 381 | "0.0.0.0:${port}:${port}/tcp" 382 | ] 383 | } 384 | ], 385 | "requirements": { 386 | "os": "linux", 387 | "arch": "amd64", 388 | "binaries": [ 389 | "tar" 390 | ] 391 | } 392 | } 393 | -------------------------------------------------------------------------------- /terraria-tshock/terraria-tshock.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "terraria", 3 | "display": "Terraria - TShock", 4 | "icon": "terraria", 5 | "data": { 6 | "arch": { 7 | "type": "option", 8 | "value": "x64", 9 | "display": "Architecture", 10 | "desc": "Architecture your machine", 11 | "required": true, 12 | "userEdit": false, 13 | "options": [ 14 | { 15 | "value": "arm", 16 | "display": "arm" 17 | }, 18 | { 19 | "value": "arm64", 20 | "display": "arm64" 21 | }, 22 | { 23 | "value": "x64", 24 | "display": "amd64" 25 | } 26 | ] 27 | }, 28 | "dotnetversion": { 29 | "type": "string", 30 | "value": "6.0.14", 31 | "display": ".NET Runtime Version", 32 | "desc": ".NET Runtime Version", 33 | "required": true, 34 | "userEdit": false 35 | }, 36 | "ip": { 37 | "type": "string", 38 | "value": "0.0.0.0", 39 | "display": "IP", 40 | "desc": "Sets the IP address for the server to listen on - 0.0.0.0 means every possible IP", 41 | "required": true, 42 | "userEdit": false 43 | }, 44 | "port": { 45 | "type": "integer", 46 | "value": 7777, 47 | "display": "Port", 48 | "desc": "What port to bind the server to", 49 | "required": true, 50 | "userEdit": false 51 | }, 52 | "secure": { 53 | "type": "option", 54 | "value": "", 55 | "display": "secure", 56 | "desc": "Enable cheat protection ?", 57 | "required": true, 58 | "userEdit": false, 59 | "options": [ 60 | { 61 | "value": "-secure", 62 | "display": "Yes" 63 | }, 64 | { 65 | "value": "", 66 | "display": "No" 67 | } 68 | ] 69 | }, 70 | "tshockversion": { 71 | "type": "string", 72 | "value": "5.1.3", 73 | "display": "TShock Version (Set this to the latest server version - see here https://github.com/Pryaxis/TShock/releases/latest)", 74 | "desc": "TShock Version", 75 | "required": true, 76 | "userEdit": false 77 | }, 78 | "version": { 79 | "type": "string", 80 | "value": "1.4.4.9", 81 | "display": "Server Version", 82 | "desc": "Server Version (Set this to the latest server version)", 83 | "required": true, 84 | "userEdit": false 85 | }, 86 | "wsize": { 87 | "type": "option", 88 | "value": "3", 89 | "display": "World Size", 90 | "desc": "World Size to create", 91 | "required": true, 92 | "userEdit": false, 93 | "options": [ 94 | { 95 | "value": "1", 96 | "display": "Small" 97 | }, 98 | { 99 | "value": "2", 100 | "display": "Medium" 101 | }, 102 | { 103 | "value": "3", 104 | "display": "Large" 105 | } 106 | ] 107 | } 108 | }, 109 | "install": [ 110 | { 111 | "if": "env == 'host'", 112 | "type": "download", 113 | "files": [ 114 | "https://dotnetcli.azureedge.net/dotnet/Runtime/${dotnetversion}/dotnet-runtime-${dotnetversion}-linux-${arch}.tar.gz" 115 | ] 116 | }, 117 | { 118 | "if": "env == 'host'", 119 | "type": "command", 120 | "commands": [ 121 | "rm -rf dotnet", 122 | "mkdir -p dotnet" 123 | ] 124 | }, 125 | { 126 | "if": "env == 'host'", 127 | "type": "extract", 128 | "source": "dotnet-runtime-${dotnetversion}-linux-${arch}.tar.gz", 129 | "destination": "dotnet" 130 | }, 131 | { 132 | "if": "env == 'host'", 133 | "type": "command", 134 | "commands": [ 135 | "rm -rf dotnet-runtime-linux-${arch}.tar.gz" 136 | ] 137 | }, 138 | { 139 | "type": "download", 140 | "files": [ 141 | "https://github.com/Pryaxis/TShock/releases/download/v${tshockversion}/TShock-${tshockversion}-for-Terraria-${version}-linux-${arch}-Release.zip" 142 | ] 143 | }, 144 | { 145 | "type": "extract", 146 | "source": "TShock-${tshockversion}-for-Terraria-${version}-linux-${arch}-Release.zip", 147 | "destination": "." 148 | }, 149 | { 150 | "type": "extract", 151 | "source": "TShock-Beta-linux-${arch}-Release.tar", 152 | "destination": "." 153 | }, 154 | { 155 | "type": "command", 156 | "commands": [ 157 | "mkdir worlds", 158 | "rm -rf TShock-${tshockversion}-for-Terraria-${version}-linux-${arch}-Release.zip", 159 | "rm -rf TShock-Beta-linux-${arch}-Release.tar" 160 | ] 161 | } 162 | ], 163 | "run": { 164 | "command": "./TShock.Server -ip ${ip} -port ${port} -world ${rootDir}/worlds/world.wld -autocreate ${wsize} ${secure} --stats-optout", 165 | "stop": "exit", 166 | "environmentVars": { 167 | "DOTNET_ROOT": "./dotnet" 168 | }, 169 | "stdin": { 170 | "type": "stdin" 171 | }, 172 | "autostart": false, 173 | "autorecover": false, 174 | "autorestart": false 175 | }, 176 | "environment": { 177 | "type": "host" 178 | }, 179 | "supportedEnvironments": [ 180 | { 181 | "type": "host" 182 | }, 183 | { 184 | "type": "docker", 185 | "image": "mcr.microsoft.com/dotnet/runtime:${dotnetversion}", 186 | "portBindings": [ 187 | "0.0.0.0:${port}:${port}/tcp" 188 | ] 189 | } 190 | ], 191 | "requirements": { 192 | "os": "linux", 193 | "binaries": [ 194 | "unzip" 195 | ] 196 | } 197 | } -------------------------------------------------------------------------------- /terraria-vanilla/README.md: -------------------------------------------------------------------------------- 1 | Terarria Vanilla Template - made for linux non arm 2 | 3 | You need to have unzip installed, see here how you can install it on Linux: https://command-not-found.com/unzip 4 | -------------------------------------------------------------------------------- /terraria-vanilla/terraria-vanilla.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "terraria", 3 | "display": "Terraria - Vanila", 4 | "icon": "terraria", 5 | "data": { 6 | "abr": { 7 | "type": "string", 8 | "value": "-1", 9 | "display": "announcementbox-range", 10 | "desc": "Sets the announcementbox text messaging range in pixels, -1 for serverwide announcements.", 11 | "required": true, 12 | "userEdit": true 13 | }, 14 | "backups": { 15 | "type": "string", 16 | "value": "2", 17 | "display": "Backups", 18 | "desc": "Sets the number of rolling world backups to keep", 19 | "required": true, 20 | "userEdit": true 21 | }, 22 | "ban": { 23 | "type": "string", 24 | "value": "banlist.txt", 25 | "display": "Banlist", 26 | "desc": "Name of the banlist file", 27 | "required": true, 28 | "userEdit": true 29 | }, 30 | "difficulty": { 31 | "type": "string", 32 | "value": "0", 33 | "display": "Difficulty", 34 | "desc": "This can not be changed after the world was generated", 35 | "required": true, 36 | "userEdit": true, 37 | "options": [ 38 | { 39 | "value": "0", 40 | "display": "Normal" 41 | }, 42 | { 43 | "value": "1", 44 | "display": "Expert" 45 | }, 46 | { 47 | "value": "2", 48 | "display": "Master" 49 | }, 50 | { 51 | "value": "3", 52 | "display": "Journey" 53 | } 54 | ] 55 | }, 56 | "disableannouncementbox": { 57 | "type": "string", 58 | "value": "", 59 | "display": "Announcement Box", 60 | "desc": "Decides if the text announcements the Announcement Box makes when pulsed from wire.", 61 | "required": false, 62 | "userEdit": true, 63 | "options": [ 64 | { 65 | "value": "", 66 | "display": "Enable" 67 | }, 68 | { 69 | "value": "-disableannouncementbox", 70 | "display": "Disable" 71 | } 72 | ] 73 | }, 74 | "ip": { 75 | "type": "string", 76 | "value": "0.0.0.0", 77 | "display": "IP", 78 | "desc": "Sets the IP address for the server to listen on - 0.0.0.0 means every possible IP", 79 | "required": true, 80 | "userEdit": false 81 | }, 82 | "lang": { 83 | "type": "string", 84 | "value": "en-US", 85 | "display": "Language", 86 | "desc": "Language for the server", 87 | "required": true, 88 | "userEdit": true, 89 | "options": [ 90 | { 91 | "value": "en-US", 92 | "display": "English" 93 | }, 94 | { 95 | "value": "de-DE", 96 | "display": "German" 97 | }, 98 | { 99 | "value": "it-IT", 100 | "display": "Italian" 101 | }, 102 | { 103 | "value": "fr-FR", 104 | "display": "French" 105 | }, 106 | { 107 | "value": "es-ES", 108 | "display": "Spanish" 109 | }, 110 | { 111 | "value": "ru-RU", 112 | "display": "Russian" 113 | }, 114 | { 115 | "value": "zh-Hans", 116 | "display": "Chinese" 117 | }, 118 | { 119 | "value": "pt-PR", 120 | "display": "Portuguese" 121 | }, 122 | { 123 | "value": "pl-PL", 124 | "display": "Polish" 125 | } 126 | ] 127 | }, 128 | "motd": { 129 | "type": "string", 130 | "value": "Hello!", 131 | "display": "motd", 132 | "desc": "Set the message of the day", 133 | "required": true, 134 | "userEdit": true 135 | }, 136 | "npcs": { 137 | "type": "string", 138 | "value": "60", 139 | "display": "npcstream", 140 | "desc": "Reduces enemy skipping but increases bandwidth usage. The lower the number the less skipping will happen, but more data is sent. 0 is off.", 141 | "required": true, 142 | "userEdit": true 143 | }, 144 | "password": { 145 | "type": "string", 146 | "value": "", 147 | "display": "Password", 148 | "desc": "Server Password - leave blank for none", 149 | "required": true, 150 | "userEdit": true 151 | }, 152 | "players": { 153 | "type": "string", 154 | "value": "4", 155 | "display": "Players", 156 | "desc": "Max Players", 157 | "required": true, 158 | "userEdit": true 159 | }, 160 | "port": { 161 | "type": "string", 162 | "value": "7777", 163 | "display": "Port", 164 | "desc": "What port to bind the server to", 165 | "required": true, 166 | "userEdit": false 167 | }, 168 | "secure": { 169 | "type": "string", 170 | "value": "1", 171 | "display": "secure", 172 | "desc": "Enable cheat protection = 1 and disable = 0", 173 | "required": true, 174 | "userEdit": true, 175 | "options": [ 176 | { 177 | "value": "1", 178 | "display": "Enable" 179 | }, 180 | { 181 | "value": "0", 182 | "display": "Disable" 183 | } 184 | ] 185 | }, 186 | "seed": { 187 | "type": "string", 188 | "value": "VeryGoodStartingSeed", 189 | "display": "Seed", 190 | "desc": "This can not be changed after the world was generated - Seed of the World", 191 | "required": true, 192 | "userEdit": true 193 | }, 194 | "size": { 195 | "type": "string", 196 | "value": "3", 197 | "display": "World-Size", 198 | "desc": "This can not be changed after the world was generated - World Size (1-3 - 3 is biggest)", 199 | "required": true, 200 | "userEdit": true 201 | }, 202 | "sl": { 203 | "type": "string", 204 | "value": "1", 205 | "display": "maximum liquids moving", 206 | "desc": "Reduces maximum liquids moving at the same time. If enabled may reduce lags but liquids may take longer to settle.", 207 | "required": true, 208 | "userEdit": true 209 | }, 210 | "steam": { 211 | "type": "string", 212 | "value": "-steam", 213 | "display": "Steam", 214 | "desc": "Enables Steam Support", 215 | "required": false, 216 | "userEdit": true, 217 | "options": [ 218 | { 219 | "value": "-steam", 220 | "display": "Enable" 221 | }, 222 | { 223 | "value": "", 224 | "display": "Disable" 225 | } 226 | ] 227 | }, 228 | "version": { 229 | "type": "string", 230 | "value": "1449", 231 | "display": "Server Version (Set this to the latest server version) - It is the current terraria Version without the Points (Client Version: 1.4.3.2 -> Server Version: 1432)", 232 | "desc": "Server Version", 233 | "required": true, 234 | "userEdit": true 235 | }, 236 | "world": { 237 | "type": "string", 238 | "value": "Terraria-World-1", 239 | "display": "World-Name", 240 | "desc": "Name of your World", 241 | "required": true, 242 | "userEdit": true 243 | }, 244 | "wp": { 245 | "type": "string", 246 | "value": "worlds", 247 | "display": "Worldpath", 248 | "desc": "Name of the world folder", 249 | "required": true, 250 | "userEdit": true 251 | } 252 | }, 253 | "install": [ 254 | { 255 | "type": "download", 256 | "files": [ 257 | "https://terraria.org/api/download/pc-dedicated-server/terraria-server-${version}.zip" 258 | ] 259 | }, 260 | { 261 | "type": "extract", 262 | "source": "terraria-server-${version}.zip", 263 | "destination": "." 264 | }, 265 | { 266 | "type": "command", 267 | "commands": [ 268 | "rm -rf ./server", 269 | "mkdir ./server", 270 | "cp -r ./${version}/Linux/. ./server", 271 | "chmod +x ./server/TerrariaServer", 272 | "chmod +x ./server/TerrariaServer.bin.x86_64", 273 | "mkdir ./${wp}", 274 | "rm terraria-server-${version}.zip", 275 | "rm -r ${version}" 276 | ] 277 | } 278 | ], 279 | "run": { 280 | "command": "./server/TerrariaServer -ip ${ip} ${steam} ${disableannouncementbox} -announcementboxrange ${abr} -config ../serverconfig.txt", 281 | "stop": "exit", 282 | "pre": [ 283 | { 284 | "type": "writefile", 285 | "text": "world=../${wp}/${world}.wld\nautocreate=${size}\nseed=${seed}\nworldname=${world}\ndifficulty=${difficulty}\nmaxplayers=${players}\nport=${port}\npassword=${password}\nmotd=${motd}\nworldpath=../${wp}\nbanlist=../${ban}\nsecure=${secure}\nlanguage=${lang}\nupnp=1\nnpcstream=${npcs}\npriority=3\nslowliquids=${sl}\nworldrollbackstokeep=${backups}", 286 | "target": "serverconfig.txt" 287 | } 288 | ], 289 | "stdin": { 290 | "type": "stdin" 291 | }, 292 | "autostart": false, 293 | "autorecover": false, 294 | "autorestart": false 295 | }, 296 | "environment": { 297 | "type": "host" 298 | }, 299 | "supportedEnvironments": [ 300 | { 301 | "type": "host" 302 | }, 303 | { 304 | "type": "docker", 305 | "image": "pufferpanel/ubuntu", 306 | "portBindings": [ 307 | "0.0.0.0:${port}:${port}/tcp" 308 | ] 309 | } 310 | ], 311 | "requirements": { 312 | "os": "linux", 313 | "arch": "amd64", 314 | "binaries": [ 315 | "unzip" 316 | ] 317 | } 318 | } 319 | -------------------------------------------------------------------------------- /tf2/tf2.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Team Fortress 2", 4 | "data": { 5 | "ip": { 6 | "type": "string", 7 | "value": "0.0.0.0", 8 | "display": "IP", 9 | "desc": "What IP to bind the server to", 10 | "required": true, 11 | "userEdit": false 12 | }, 13 | "mapname": { 14 | "type": "string", 15 | "value": "ctf_2fort", 16 | "display": "Team Fortess 2 Map to load", 17 | "desc": "TF2 Map", 18 | "required": true, 19 | "userEdit": true 20 | }, 21 | "port": { 22 | "type": "integer", 23 | "value": 27015, 24 | "display": "Port", 25 | "desc": "What port to bind the server to", 26 | "required": true, 27 | "userEdit": false 28 | } 29 | }, 30 | "install": [ 31 | { 32 | "if": "env == 'host'", 33 | "type": "steamgamedl", 34 | "appId": "232250" 35 | }, 36 | { 37 | "if": "env == 'docker'", 38 | "type": "command", 39 | "commands": [ 40 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 232250 +quit" 41 | ] 42 | }, 43 | { 44 | "type": "command", 45 | "commands": [ 46 | "chmod +x srcds_run" 47 | ] 48 | } 49 | ], 50 | "run": { 51 | "command": "./srcds_run +ip ${ip} +port ${port} -game tf -console +map ${mapname} -norestart", 52 | "stop": "exit", 53 | "stdin": { 54 | "type": "stdin" 55 | }, 56 | "autostart": false, 57 | "autorecover": false, 58 | "autorestart": false 59 | }, 60 | "environment": { 61 | "type": "host" 62 | }, 63 | "supportedEnvironments": [ 64 | { 65 | "type": "host" 66 | }, 67 | { 68 | "type": "docker", 69 | "image": "pufferpanel/steamcmd", 70 | "portBindings": [ 71 | "0.0.0.0:${port}:${port}/tcp" 72 | ] 73 | } 74 | ], 75 | "requirements": { 76 | "os": "linux", 77 | "arch": "amd64" 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /unturned/unturned.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "srcds", 3 | "display": "Unturned", 4 | "data": { 5 | "mapname": { 6 | "type": "option", 7 | "value": "PEI", 8 | "display": "Map", 9 | "desc": "Server map.", 10 | "required": false, 11 | "userEdit": true, 12 | "options": [ 13 | { 14 | "value": "PEI", 15 | "display": "PEI" 16 | }, 17 | { 18 | "value": "Germany", 19 | "display": "Germany" 20 | }, 21 | { 22 | "value": "Russia", 23 | "display": "Russia" 24 | }, 25 | { 26 | "value": "Washington", 27 | "display": "Washington" 28 | }, 29 | { 30 | "value": "Yukon", 31 | "display": "Yukon" 32 | } 33 | ] 34 | }, 35 | "maxplayers": { 36 | "type": "integer", 37 | "value": 24, 38 | "display": "Server slots", 39 | "desc": "Slots", 40 | "required": false, 41 | "userEdit": false 42 | }, 43 | "mode": { 44 | "type": "option", 45 | "value": "normal", 46 | "display": "Mode", 47 | "desc": "Game difficulty", 48 | "required": true, 49 | "userEdit": true, 50 | "options": [ 51 | { 52 | "value": "easy", 53 | "display": "Easy" 54 | }, 55 | { 56 | "value": "normal", 57 | "display": "Normal" 58 | }, 59 | { 60 | "value": "hard", 61 | "display": "Hard" 62 | } 63 | ] 64 | }, 65 | "name": { 66 | "type": "string", 67 | "value": "Unturned Server", 68 | "display": "Name", 69 | "desc": "Server name", 70 | "required": true, 71 | "userEdit": true 72 | }, 73 | "password": { 74 | "type": "string", 75 | "value": "", 76 | "display": "Server password", 77 | "desc": "Password users enter to join server", 78 | "required": false, 79 | "userEdit": true 80 | }, 81 | "perspective": { 82 | "type": "option", 83 | "value": "", 84 | "display": "Perspective", 85 | "desc": "Perspective of the server", 86 | "required": false, 87 | "userEdit": true, 88 | "options": [ 89 | { 90 | "value": "First", 91 | "display": "First" 92 | }, 93 | { 94 | "value": "Third", 95 | "display": "Third" 96 | }, 97 | { 98 | "value": "Both", 99 | "display": "Both" 100 | }, 101 | { 102 | "value": "Vehicle", 103 | "display": "Vehicle" 104 | } 105 | ] 106 | }, 107 | "port": { 108 | "type": "integer", 109 | "value": 27015, 110 | "display": "Port", 111 | "desc": "Server port.", 112 | "required": true, 113 | "userEdit": false 114 | }, 115 | "server": { 116 | "type": "string", 117 | "value": "Default", 118 | "display": "Server", 119 | "desc": "Server name under Servers folder", 120 | "required": false, 121 | "userEdit": true 122 | }, 123 | "steam_id": { 124 | "type": "string", 125 | "value": "", 126 | "display": "STEAMID_64", 127 | "desc": "Server owner STEAMID_64", 128 | "required": true, 129 | "userEdit": true 130 | }, 131 | "welcome": { 132 | "type": "string", 133 | "value": "Welcome to the server!", 134 | "display": "Server welcome message", 135 | "desc": "Welcome", 136 | "required": true, 137 | "userEdit": true 138 | } 139 | }, 140 | "install": [ 141 | { 142 | "if": "env == 'host'", 143 | "type": "steamgamedl", 144 | "appId": "1110390" 145 | }, 146 | { 147 | "if": "env == 'docker'", 148 | "type": "command", 149 | "commands": [ 150 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 1110390 validate +exit" 151 | ] 152 | }, 153 | { 154 | "type": "command", 155 | "commands": [ 156 | "chmod +x ServerHelper.sh" 157 | ] 158 | }, 159 | { 160 | "type": "mkdir", 161 | "target": "Servers/${server}/Server" 162 | }, 163 | { 164 | "type": "writefile", 165 | "text": "Name ${name}\nMap ${mapname}\nPort ${port}\nMaxPlayers ${maxplayers}\nMode ${mode}\nOwner ${steam_id}\nWelcome ${welcome}\nPassword ${password}\nPerspective ${perspective}", 166 | "target": "/Servers/${server}/Server/Commands.dat" 167 | } 168 | ], 169 | "run": { 170 | "command": "./ServerHelper.sh", 171 | "stop": "shutdown", 172 | "stdin": { 173 | "type": "stdin" 174 | }, 175 | "autostart": false, 176 | "autorecover": false, 177 | "autorestart": false 178 | }, 179 | "environment": { 180 | "type": "host" 181 | }, 182 | "supportedEnvironments": [ 183 | { 184 | "type": "host" 185 | }, 186 | { 187 | "type": "docker", 188 | "image": "steamcmd/steamcmd", 189 | "portBindings": [ 190 | "0.0.0.0:${port}:${port}/tcp" 191 | ] 192 | } 193 | ], 194 | "requirements": { 195 | "os": "linux", 196 | "arch": "amd64" 197 | } 198 | } 199 | -------------------------------------------------------------------------------- /valheim/README.md: -------------------------------------------------------------------------------- 1 | ## Notes 2 | This only supports Linux. -------------------------------------------------------------------------------- /valheim/valheim.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "valheim", 3 | "display": "Valheim Dedicated Server", 4 | "data": { 5 | "modpack": { 6 | "type": "string", 7 | "value": "", 8 | "display": "Modpack to run with", 9 | "desc": "Open https://valheim.thunderstore.io/package/denikson/BepInExPack_Valheim/ in new tab and right 'manual download' click > copy link. Paste it here if you wish to use this modpack.", 10 | "required": false, 11 | "userEdit": true 12 | }, 13 | "name": { 14 | "type": "string", 15 | "value": "Valheim Server", 16 | "display": "Name", 17 | "desc": "Choose your servername.", 18 | "required": true, 19 | "userEdit": true 20 | }, 21 | "password": { 22 | "type": "string", 23 | "value": "valheim", 24 | "display": "Password", 25 | "desc": "Set the server password.", 26 | "required": true, 27 | "userEdit": true 28 | }, 29 | "port": { 30 | "type": "integer", 31 | "value": 2456, 32 | "display": "Port", 33 | "desc": "What port to bind the server to.", 34 | "required": true, 35 | "userEdit": false 36 | }, 37 | "world": { 38 | "type": "string", 39 | "value": "VHWorld", 40 | "display": "World", 41 | "desc": "What worldmap name to use.", 42 | "required": true, 43 | "userEdit": true 44 | } 45 | }, 46 | "install": [ 47 | { 48 | "if": "env == 'host'", 49 | "type": "steamgamedl", 50 | "appId": "896660" 51 | }, 52 | { 53 | "if": "env == 'docker'", 54 | "type": "command", 55 | "commands": [ 56 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 896660 +quit" 57 | ] 58 | }, 59 | { 60 | "if": "modpack != ''", 61 | "type": "download", 62 | "files": [ 63 | "${modpack}" 64 | ] 65 | }, 66 | { 67 | "if": "modpack != ''", 68 | "type": "command", 69 | "commands": [ 70 | "unzip ./denikson-BepInExPack_Valheim*.zip -d ./bepin_temp/", 71 | "cp -r ./bepin_temp/BepInExPack_Valheim/. ./", 72 | "rm -r ./bepin_temp" 73 | ] 74 | }, 75 | { 76 | "type": "command", 77 | "commands": [ 78 | "chmod +x valheim_server.x86_64" 79 | ] 80 | } 81 | ], 82 | "run": { 83 | "command": "./valheim_server.x86_64 -name ${name} -port ${port} -world ${world} -password ${password} -public 1 > /dev/null &", 84 | "stopCode": 2, 85 | "environmentVars": { 86 | "LD_LIBRARY_PATH": "./linux64:$LD_LIBRARY_PATH" 87 | }, 88 | "stdin": { 89 | "type": "stdin" 90 | }, 91 | "autostart": false, 92 | "autorecover": false, 93 | "autorestart": false 94 | }, 95 | "environment": { 96 | "type": "host" 97 | }, 98 | "supportedEnvironments": [ 99 | { 100 | "type": "host" 101 | }, 102 | { 103 | "type": "docker", 104 | "image": "steamcmd/steamcmd", 105 | "portBindings": [ 106 | "0.0.0.0:${port}:${port}/tcp" 107 | ] 108 | } 109 | ], 110 | "requirements": { 111 | "os": "linux", 112 | "arch": "amd64", 113 | "binaries": [ 114 | "unzip" 115 | ] 116 | } 117 | } -------------------------------------------------------------------------------- /zomboid/zomboid.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "zomboid", 3 | "display": "Project Zomboid", 4 | "data": { 5 | "adminPassword": { 6 | "type": "string", 7 | "value": "password", 8 | "display": "Admin Password", 9 | "desc": "Password for admin account", 10 | "required": true, 11 | "userEdit": true 12 | }, 13 | "memory": { 14 | "type": "integer", 15 | "value": 4096, 16 | "display": "Memory (MB)", 17 | "desc": "Memory to allocate", 18 | "required": true, 19 | "userEdit": true 20 | }, 21 | "port": { 22 | "type": "integer", 23 | "value": 16261, 24 | "display": "port", 25 | "desc": "Base port (UDP) for server. Additional ports (TCP) beyond this will need to be opened. 1 per user.", 26 | "required": true, 27 | "userEdit": true 28 | }, 29 | "serverName": { 30 | "type": "string", 31 | "value": "pufferserver", 32 | "display": "serverName", 33 | "desc": "Name of the PZ server", 34 | "required": false, 35 | "userEdit": true 36 | }, 37 | "steamVAC": { 38 | "type": "boolean", 39 | "value": true, 40 | "display": "steamVAC", 41 | "desc": "Enable or disable Steam VAC", 42 | "required": true, 43 | "userEdit": true 44 | } 45 | }, 46 | "install": [ 47 | { 48 | "if": "env == 'host'", 49 | "type": "steamgamedl", 50 | "appId": "380870" 51 | }, 52 | { 53 | "if": "env == 'docker'", 54 | "type": "command", 55 | "commands": [ 56 | "steamcmd +force_install_dir /pufferpanel +login anonymous +app_update 380870 +quit" 57 | ] 58 | }, 59 | { 60 | "type": "writefile", 61 | "text": "{\n\t\"mainClass\": \"zombie/network/GameServer\",\n\t\"classpath\": [\n\t\t\"java/.\",\n\t\t\"java/istack-commons-runtime.jar\",\n\t\t\"java/jassimp.jar\",\n\t\t\"java/javacord-2.0.17-shaded.jar\",\n\t\t\"java/javax.activation-api.jar\",\n\t\t\"java/jaxb-api.jar\",\n\t\t\"java/jaxb-runtime.jar\",\n\t\t\"java/lwjgl.jar\",\n\t\t\"java/lwjgl-natives-linux.jar\",\n\t\t\"java/lwjgl-glfw.jar\",\n\t\t\"java/lwjgl-glfw-natives-linux.jar\",\n\t\t\"java/lwjgl-jemalloc.jar\",\n\t\t\"java/lwjgl-jemalloc-natives-linux.jar\",\n\t\t\"java/lwjgl-opengl.jar\",\n\t\t\"java/lwjgl-opengl-natives-linux.jar\",\n\t\t\"java/lwjgl_util.jar\",\n\t\t\"java/sqlite-jdbc-3.27.2.1.jar\",\n\t\t\"java/trove-3.0.3.jar\",\n\t\t\"java/commons-compress-1.18.jar\",\n\t\t\"java/uncommons-maths-1.2.3.jar\"\n\t],\n\t\"vmArgs\": [\n\t\t\"-Djava.awt.headless=true\",\n\t\t\"-Xmx${memory}M\",\n\t\t\"-Dzomboid.steam=1\",\n\t\t\"-Dzomboid.znetlog=1\",\n\t\t\"-Djava.library.path=linux64/:natives/\",\n \"-Duser.home=./\",\n\t\t\"-Djava.security.egd=file:/dev/urandom\",\n\t\t\"-XX:+UseZGC\",\n\t\t\"-XX:-OmitStackTraceInFastThrow\"\n\t]\n}", 62 | "target": "ProjectZomboid64.json" 63 | }, 64 | { 65 | "type": "command", 66 | "commands": [ 67 | "chmod +x start-server.sh" 68 | ] 69 | } 70 | ], 71 | "run": { 72 | "command": "./start-server.sh -servername ${serverName} -adminpassword ${adminPassword} -steamvac ${steamVAC} -port ${port}", 73 | "stop": "quit", 74 | "stdin": { 75 | "type": "stdin" 76 | }, 77 | "autostart": false, 78 | "autorecover": false, 79 | "autorestart": false 80 | }, 81 | "environment": { 82 | "type": "host" 83 | }, 84 | "supportedEnvironments": [ 85 | { 86 | "type": "host" 87 | }, 88 | { 89 | "type": "docker", 90 | "image": "steamcmd/steamcmd", 91 | "portBindings": [ 92 | "0.0.0.0:${port}:${port}/tcp" 93 | ] 94 | } 95 | ], 96 | "requirements": { 97 | "os": "linux", 98 | "arch": "amd64" 99 | } 100 | } 101 | --------------------------------------------------------------------------------