├── .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 | 
35 |
36 | ### If you did everything above(and only then), and it's still not working, ask for support on discord
37 | 
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------