diff --git a/404.html b/404.html index bc626a4b..6b44560a 100644 --- a/404.html +++ b/404.html @@ -14,7 +14,7 @@ - + @@ -49,6 +49,6 @@ legacy

  • - + diff --git a/assets/js/12.7214ee65.js b/assets/js/12.7214ee65.js new file mode 100644 index 00000000..e2c19b55 --- /dev/null +++ b/assets/js/12.7214ee65.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{339:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Process_Management.516b5b6f.png"},348:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Select.5a2867ee.png"},349:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Copy_Settings_From.e3102cdd.png"},350:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Variables.3962b264.png"},351:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Startup.b6e22637.png"},366:function(e,t,s){"use strict";s.r(t);var a=s(46),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"creating-a-custom-egg"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-custom-egg"}},[e._v("#")]),e._v(" Creating a Custom Egg")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("You should not edit existing services or options that ship with the Panel. Each upgrade we push can make minor\nchanges to these, and you'll lose any changes you've made.")])]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#create-new-option"}},[e._v("Create New Option")])]),a("li",[a("a",{attrs:{href:"#configure-process-management"}},[e._v("Configure Process Management")]),a("ul",[a("li",[a("a",{attrs:{href:"#stop-command"}},[e._v("Stop Command")])]),a("li",[a("a",{attrs:{href:"#log-storage"}},[e._v("Log Storage")])]),a("li",[a("a",{attrs:{href:"#configuration-files"}},[e._v("Configuration Files")])]),a("li",[a("a",{attrs:{href:"#start-configuration"}},[e._v("Start Configuration")])])])]),a("li",[a("a",{attrs:{href:"#copy-settings-from"}},[e._v("Copy Settings From")])]),a("li",[a("a",{attrs:{href:"#egg-variables"}},[e._v("Egg Variables")])])])]),a("p"),e._v(" "),a("p",[e._v("The first thing you'll need to do is create a new service. In this case, the name and description speak for themselves\nin this case. The "),a("code",[e._v("Folder Name")]),e._v(" "),a("em",[e._v("must be a unique name")]),e._v(" not being used by any other service, and should only\ncontain letters, numbers, underscores, and dashes. This is the name of the folder where the daemon will be storing\nthe service options on the daemon.")]),e._v(" "),a("p",[e._v("The default start command is also required, however it can be changed per-option.")]),e._v(" "),a("h2",{attrs:{id:"create-new-option"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-new-option"}},[e._v("#")]),e._v(" Create New Option")]),e._v(" "),a("p",[e._v("After creating the service, in the bottom right of the page you should see a button titled "),a("code",[e._v("New Egg")]),e._v(", press it.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(348),alt:""}})]),e._v(" "),a("p",[e._v("You will be taken to a new service option page which is where most of the configuration happens. The first thing\nyou need to do is select your service that you created previously from the "),a("code",[e._v("Associated Nest")]),e._v(" dropdown.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(339),alt:""}})]),e._v(" "),a("p",[e._v("After that, enter an Option Name to describe it, in this case I am using "),a("code",[e._v("Widget")]),e._v(". You will also need to provide a\n"),a("em",[e._v("valid")]),e._v(" docker image, as well as a start command to be assigned to servers under this service option (remember, this\ncan be tweaked per-server if needed).")]),e._v(" "),a("p",[a("em",[e._v("Docker images must be specifically designed to work with Pterodactyl Panel.")]),e._v(" You should read more about that in\nour "),a("RouterLink",{attrs:{to:"/community/config/eggs/creating_a_custom_image.html"}},[e._v("Creating a Docker Image")]),e._v(" guide.")],1),e._v(" "),a("h2",{attrs:{id:"configure-process-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-process-management"}},[e._v("#")]),e._v(" Configure Process Management")]),e._v(" "),a("p",[e._v("This is perhaps the most important step in this service option configuration, as this tells the Daemon how to run everything.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(339),alt:""}})]),e._v(" "),a("p",[e._v("The first field you'll encounter is "),a("code",[e._v("Copy Settings From")]),e._v(". The default selection is "),a("code",[e._v("None")]),e._v(". That is expected, and okay.\nThis dropdown is discussed at the end of this article.")]),e._v(" "),a("h3",{attrs:{id:"stop-command"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stop-command"}},[e._v("#")]),e._v(" Stop Command")]),e._v(" "),a("p",[e._v("Next, you'll encounter "),a("code",[e._v("Stop Command")]),e._v(" and, as the name implies, this should be the command used to safely stop the\noption. For some games, this is "),a("code",[e._v("stop")]),e._v(" or "),a("code",[e._v("end")]),e._v(". Certain programs and games don't have a specified stop command, so\nyou can enter "),a("code",[e._v("^C")]),e._v(" to have the daemon execute a "),a("code",[e._v("SIGINT")]),e._v(" to end the process.")]),e._v(" "),a("h3",{attrs:{id:"log-storage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#log-storage"}},[e._v("#")]),e._v(" Log Storage")]),e._v(" "),a("p",[e._v("Logs are competely handeled by the daemon now and use the docker logs to output the complete output from the server.\nThis can be set like below.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"configuration-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuration-files"}},[e._v("#")]),e._v(" Configuration Files")]),e._v(" "),a("p",[e._v("The next block is one of the most complex blocks, the "),a("code",[e._v("Configuration Files")]),e._v(" descriptor. The Daemon will process this\nblock prior to booting the server to ensure all of the required settings are defined and set correctly.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server.properties"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"properties"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-ip"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enable-query"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-port"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"query.port"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("In this example, we are telling the Daemon to read "),a("code",[e._v("server.properties")]),e._v(" in "),a("code",[e._v("/home/container")]),e._v(". Within this block, we\ndefine a "),a("code",[e._v("parser")]),e._v(", in this case "),a("code",[e._v("properties")]),e._v(" but the following are "),a("a",{attrs:{href:"https://github.com/Pterodactyl/Daemon/blob/develop/src/helpers/fileparser.js",target:"_blank",rel:"noopener noreferrer"}},[e._v("valid parsers"),a("OutboundLink")],1),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("file")]),e._v(" — This parser goes based on matching the beginning of lines, and not a specific property like the other four.\nAvoid using this parser if possible.")]),e._v(" "),a("li",[a("code",[e._v("yaml")]),e._v(" (supports "),a("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),a("li",[a("code",[e._v("properties")])]),e._v(" "),a("li",[a("code",[e._v("ini")])]),e._v(" "),a("li",[a("code",[e._v("json")]),e._v(" (supports "),a("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),a("li",[a("code",[e._v("xml")])])]),e._v(" "),a("p",[e._v("Once you have defined a parser, we then define a "),a("code",[e._v("find")]),e._v(" block which tells the Daemon what specific elements to find\nand replace. In this example, we have provided four separate items within the "),a("code",[e._v("server.properties")]),e._v(" file that we want to\nfind and replace to the assigned values. You can use either an exact value, or define a specific server setting from\nthe "),a("code",[e._v("server.json")]),e._v(" file. In this case, we're assigning the default server port to be used as the "),a("code",[e._v("server-port")]),e._v(" and\n"),a("code",[e._v("query.port")]),e._v(". "),a("strong",[e._v("These placeholders are case sensitive, and should have no spaces in them.")])]),e._v(" "),a("p",[e._v("You can have multiple files listed here, the Daemon will process them in parallel before starting the server. When\nusing "),a("code",[e._v("yaml")]),e._v(" or "),a("code",[e._v("json")]),e._v(" you can use more advanced searching for elements.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"config.yml"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"yaml"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_enabled"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_port"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].host"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0:{{server.build.default.port}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"servers.*.address"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"127.0.0.1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("In this example, we are parsing "),a("code",[e._v("config.yml")]),e._v(" using the "),a("code",[e._v("yaml")]),e._v(" parser. The first three find items are simply assigning\nports and IPs for the first listener block. The last one, "),a("code",[e._v("servers.*.address")]),e._v(" uses wildcard matching to match any items\nwithin the "),a("code",[e._v("servers")]),e._v(" block, and then finding each "),a("code",[e._v("address")]),e._v(" block for those items.")]),e._v(" "),a("div",{pre:!0},[a("p",[e._v("An advanced feature of this file configuration is the ability to define multiple find and replace statements for a\nsingle matching line. In this case, we are looking for either "),a("code",[e._v("127.0.0.1")]),e._v(" or "),a("code",[e._v("localhost")]),e._v(" and replacing them with the\ndocker interface defined in the configuration file using "),a("code",[e._v("{{config.docker.interface}}")]),e._v(".")])]),a("h3",{attrs:{id:"start-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-configuration"}},[e._v("#")]),e._v(" Start Configuration")]),e._v(" "),a("p",[e._v("The last block to configure is the "),a("code",[e._v("Start Configuration")]),e._v(" for servers running using this service option.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"done"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('")! For help, type "')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"userInteraction"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Go to eula.txt for more info."')]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("In the example block above, we define "),a("code",[e._v("done")]),e._v(" as the entire line, or part of a line that indicates a server is done\nstarting, and is ready for players to join. When the Daemon sees this output, it will mark the server as "),a("code",[e._v("ON")]),e._v(" rather\nthan "),a("code",[e._v("STARTING")]),e._v(". We can also define "),a("code",[e._v("userInteraction")]),e._v(" as an array of lines that should indicate that the server\n"),a("em",[e._v("did not crash")]),e._v(", but rather stopped because the user needs to perform some action.")]),e._v(" "),a("p",[e._v("In this case, we define it as the line asking users to agree to the EULA. You are not required to have\n"),a("code",[e._v("userInteraction")]),e._v(" lines, however if you are going to leave it empty, it should still be defined with an empty array,\nas shown below:")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"done"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('")! For help, type "')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"userInteraction"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("That concludes basic service option configuration.")]),e._v(" "),a("h2",{attrs:{id:"copy-settings-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#copy-settings-from"}},[e._v("#")]),e._v(" Copy Settings From")]),e._v(" "),a("p",[e._v("As mentioned above, there is a unique "),a("code",[e._v("Copy Settings From")]),e._v(" dropdown when adding a new option. This gives you the\nability to, as the name suggests, copy settings defined above from a different option.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(349),alt:""}})]),e._v(" "),a("p",[e._v("In the panel, we use this to copy settings that remain the same between similar service options, such as many of the\nMinecraft options.")]),e._v(" "),a("p",[e._v("For example, lets look at the "),a("code",[e._v("Sponge (SpongeVanilla)")]),e._v(" service option.")]),e._v(" "),a("p",[e._v("As you can see, it as been told to copy settings from "),a("code",[e._v("Vanilla Minecraft")]),e._v(". This means that any of the fields that are\nleft blank will inherit from the assigned parent. We then define a specific "),a("code",[e._v("userInteraction")]),e._v(" line that is different in\nSponge compared to Vanilla, but tell it that everything else should remain the same.")]),e._v(" "),a("p",[a("em",[e._v("Please note that "),a("code",[e._v("Copy Settings From")]),e._v(" does not support nested copies, you can only copy from a single parent,\nand that parent "),a("strong",[e._v("must not be copying from another option.")])])]),e._v(" "),a("h2",{attrs:{id:"egg-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#egg-variables"}},[e._v("#")]),e._v(" Egg Variables")]),e._v(" "),a("p",[e._v("One of the great parts of the Egg Variables is the ability to define specific variables that users and/or admins can\ncontrol to tweak different settings without letting users modify the startup command. To create new variables, or edit\nexisting ones, visit the new service option you created, and click the "),a("code",[e._v("Variables")]),e._v(" tab at the top of the page. Lets take\na look at an example variable that we can create.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(350),alt:""}})]),e._v(" "),a("div",{pre:!0},[a("p",[e._v("The name and description are rather self-explanitory, so I'll skip down to the "),a("code",[e._v("Environment Variable")]),e._v(" box. This should\nbe an Alpha-Numeric name with underscores, and should be uppercase. This will be the name of the environment variable\nwhich can be accessed in the startup command as "),a("code",[e._v("{{WOOZLE_WOO}}")]),e._v(", within file modifications as "),a("code",[e._v("{{env.WOOZLE_WOO}}")]),e._v(", or\njust "),a("code",[e._v("${WOOZLE_WOO}")]),e._v(" in any shell scripts (it is passed through in the environment). We also define a default value for\nthis environment variable in this example, but it is not required to do so.")])]),a("p",[e._v("The next section is "),a("code",[e._v("Permissions")]),e._v(", which is a dropdown with two options: "),a("code",[e._v("Users Can View")]),e._v(" and "),a("code",[e._v("Users Can Edit")]),e._v(".")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("Users Can View")]),e._v(" — allows a user to view the field on the front-end, as well as the assigned value of that variable.\nThey will be able to see it replaced in their startup command.")]),e._v(" "),a("li",[a("code",[e._v("Users Can Edit")]),e._v(" — allows a user to edit the value of the variable, for example the name of their "),a("code",[e._v("server.jar")]),e._v(" file\nif running Minecraft.")])]),e._v(" "),a("p",[e._v("You should use caution here, even if you assign neither of the permissions it does not mean that the value will be\nhidden. Crafty users will still be able to get the environment on their server. In most cases this is simply hiding\nit from the user, and then used within the Dockerfile to perform actions, thus it is not important for the user to see.")]),e._v(" "),a("p",[e._v("Finally, you will need to define some input rules to validate the value against. In this example, we use\n"),a("code",[e._v("required|string|between:1,10")]),e._v(", which means the field is "),a("code",[e._v("required")]),e._v(", must be a "),a("code",[e._v("string")]),e._v(", and must be between "),a("code",[e._v("1")]),e._v(" and\n"),a("code",[e._v("10")]),e._v(" characters in length. You can find "),a("a",{attrs:{href:"https://laravel.com/docs/5.6/validation#available-validation-rules",target:"_blank",rel:"noopener noreferrer"}},[e._v("all of the available validation rules"),a("OutboundLink")],1),e._v("\non the Laravel website. You can also use ReGEX based validation by using the "),a("code",[e._v("regex:")]),e._v(" rule flag. For example,\n"),a("a",{attrs:{href:"https://regex101.com/r/k4oEOn/1",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("required|regex:/^([\\w\\d._-]+)(\\.jar)$/")]),a("OutboundLink")],1),e._v(" will require the field, and will match the\nregex as any letters or numbers ("),a("code",[e._v("\\w\\d")]),e._v(") including underscore ("),a("code",[e._v("_")]),e._v("), periods ("),a("code",[e._v(".")]),e._v("), and dashes ("),a("code",[e._v("-")]),e._v(") ending in "),a("code",[e._v(".jar")]),e._v(".")]),e._v(" "),a("p",[e._v("They will then be visible when managing the startup for a server in both the Admin CP and on the Front-End.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(351),alt:""}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/12.b0d18e64.js b/assets/js/12.b0d18e64.js deleted file mode 100644 index b2484806..00000000 --- a/assets/js/12.b0d18e64.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{339:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Process_Management.516b5b6f.png"},348:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Select.5a2867ee.png"},349:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Copy_Settings_From.e3102cdd.png"},350:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Variables.3962b264.png"},351:function(e,t,s){e.exports=s.p+"assets/img/Pterodactyl_Create_New_Egg_Startup.b6e22637.png"},366:function(e,t,s){"use strict";s.r(t);var a=s(46),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"creating-a-custom-egg"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-custom-egg"}},[e._v("#")]),e._v(" Creating a Custom Egg")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("You should not edit existing services or options that ship with the Panel. Each upgrade we push can make minor\nchanges to these, and you'll lose any changes you've made.")])]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#create-new-option"}},[e._v("Create New Option")])]),a("li",[a("a",{attrs:{href:"#configure-process-management"}},[e._v("Configure Process Management")]),a("ul",[a("li",[a("a",{attrs:{href:"#stop-command"}},[e._v("Stop Command")])]),a("li",[a("a",{attrs:{href:"#log-storage"}},[e._v("Log Storage")])]),a("li",[a("a",{attrs:{href:"#configuration-files"}},[e._v("Configuration Files")])]),a("li",[a("a",{attrs:{href:"#start-configuration"}},[e._v("Start Configuration")])])])]),a("li",[a("a",{attrs:{href:"#copy-settings-from"}},[e._v("Copy Settings From")])]),a("li",[a("a",{attrs:{href:"#egg-variables"}},[e._v("Egg Variables")])])])]),a("p"),e._v(" "),a("p",[e._v("The first thing you'll need to do is create a new service. In this case, the name and description speak for themselves\nin this case. The "),a("code",[e._v("Folder Name")]),e._v(" "),a("em",[e._v("must be a unique name")]),e._v(" not being used by any other service, and should only\ncontain letters, numbers, underscores, and dashes. This is the name of the folder where the daemon will be storing\nthe service options on the daemon.")]),e._v(" "),a("p",[e._v("The default start command is also required, however it can be changed per-option.")]),e._v(" "),a("h2",{attrs:{id:"create-new-option"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-new-option"}},[e._v("#")]),e._v(" Create New Option")]),e._v(" "),a("p",[e._v("After creating the service, in the bottom right of the page you should see a button titled "),a("code",[e._v("New Egg")]),e._v(", press it.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(348),alt:""}})]),e._v(" "),a("p",[e._v("You will be taken to a new service option page which is where most of the configuration happens. The first thing\nyou need to do is select your service that you created previously from the "),a("code",[e._v("Associated Nest")]),e._v(" dropdown.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(339),alt:""}})]),e._v(" "),a("p",[e._v("After that, enter an Option Name to describe it, in this case I am using "),a("code",[e._v("Widget")]),e._v(". You will also need to provide a\n"),a("em",[e._v("valid")]),e._v(" docker image, as well as a start command to be assigned to servers under this service option (remember, this\ncan be tweaked per-server if needed).")]),e._v(" "),a("p",[a("em",[e._v("Docker images must be specifically designed to work with Pterodactyl Panel.")]),e._v(" You should read more about that in\nour "),a("RouterLink",{attrs:{to:"/community/config/eggs/creating_a_custom_image.html"}},[e._v("Creating a Docker Image")]),e._v(" guide.")],1),e._v(" "),a("h2",{attrs:{id:"configure-process-management"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configure-process-management"}},[e._v("#")]),e._v(" Configure Process Management")]),e._v(" "),a("p",[e._v("This is perhaps the most important step in this service option configuration, as this tells the Daemon how to run everything.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(339),alt:""}})]),e._v(" "),a("p",[e._v("The first field you'll encounter is "),a("code",[e._v("Copy Settings From")]),e._v(". The default selection is "),a("code",[e._v("None")]),e._v(". That is expected, and okay.\nThis dropdown is discussed at the end of this article.")]),e._v(" "),a("h3",{attrs:{id:"stop-command"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#stop-command"}},[e._v("#")]),e._v(" Stop Command")]),e._v(" "),a("p",[e._v("Next, you'll encounter "),a("code",[e._v("Stop Command")]),e._v(" and, as the name implies, this should be the command used to safely stop the\noption. For some games, this is "),a("code",[e._v("stop")]),e._v(" or "),a("code",[e._v("end")]),e._v(". Certain programs and games don't have a specified stop command, so\nyou can enter "),a("code",[e._v("^C")]),e._v(" to have the daemon execute a "),a("code",[e._v("SIGINT")]),e._v(" to end the process.")]),e._v(" "),a("h3",{attrs:{id:"log-storage"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#log-storage"}},[e._v("#")]),e._v(" Log Storage")]),e._v(" "),a("p",[e._v("Logs are competely handeled by the daemon now and use the docker logs to output the complete output from the server.\nThis can be set like below.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h3",{attrs:{id:"configuration-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuration-files"}},[e._v("#")]),e._v(" Configuration Files")]),e._v(" "),a("p",[e._v("The next block is one of the most complex blocks, the "),a("code",[e._v("Configuration Files")]),e._v(" descriptor. The Daemon will process this\nblock prior to booting the server to ensure all of the required settings are defined and set correctly.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server.properties"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"properties"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-ip"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enable-query"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"true"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-port"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"query.port"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("In this example, we are telling the Daemon to read "),a("code",[e._v("server.properties")]),e._v(" in "),a("code",[e._v("/home/container")]),e._v(". Within this block, we\ndefine a "),a("code",[e._v("parser")]),e._v(", in this case "),a("code",[e._v("properties")]),e._v(" but the following are "),a("a",{attrs:{href:"https://github.com/pterodactyl/wings/blob/develop/parser/parser.go#L25-L30",target:"_blank",rel:"noopener noreferrer"}},[e._v("valid parsers"),a("OutboundLink")],1),e._v(":")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("file")]),e._v(" — This parser goes based on matching the beginning of lines, and not a specific property like the other four.\nAvoid using this parser if possible.")]),e._v(" "),a("li",[a("code",[e._v("yaml")]),e._v(" (supports "),a("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),a("li",[a("code",[e._v("properties")])]),e._v(" "),a("li",[a("code",[e._v("ini")])]),e._v(" "),a("li",[a("code",[e._v("json")]),e._v(" (supports "),a("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),a("li",[a("code",[e._v("xml")])])]),e._v(" "),a("p",[e._v("Once you have defined a parser, we then define a "),a("code",[e._v("find")]),e._v(" block which tells the Daemon what specific elements to find\nand replace. In this example, we have provided four separate items within the "),a("code",[e._v("server.properties")]),e._v(" file that we want to\nfind and replace to the assigned values. You can use either an exact value, or define a specific server setting from\nthe "),a("code",[e._v("server.json")]),e._v(" file. In this case, we're assigning the default server port to be used as the "),a("code",[e._v("server-port")]),e._v(" and\n"),a("code",[e._v("query.port")]),e._v(". "),a("strong",[e._v("These placeholders are case sensitive, and should have no spaces in them.")])]),e._v(" "),a("p",[e._v("You can have multiple files listed here, the Daemon will process them in parallel before starting the server. When\nusing "),a("code",[e._v("yaml")]),e._v(" or "),a("code",[e._v("json")]),e._v(" you can use more advanced searching for elements.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"config.yml"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"yaml"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_enabled"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_port"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].host"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0:{{server.build.default.port}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"servers.*.address"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"127.0.0.1"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"localhost"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("In this example, we are parsing "),a("code",[e._v("config.yml")]),e._v(" using the "),a("code",[e._v("yaml")]),e._v(" parser. The first three find items are simply assigning\nports and IPs for the first listener block. The last one, "),a("code",[e._v("servers.*.address")]),e._v(" uses wildcard matching to match any items\nwithin the "),a("code",[e._v("servers")]),e._v(" block, and then finding each "),a("code",[e._v("address")]),e._v(" block for those items.")]),e._v(" "),a("div",{pre:!0},[a("p",[e._v("An advanced feature of this file configuration is the ability to define multiple find and replace statements for a\nsingle matching line. In this case, we are looking for either "),a("code",[e._v("127.0.0.1")]),e._v(" or "),a("code",[e._v("localhost")]),e._v(" and replacing them with the\ndocker interface defined in the configuration file using "),a("code",[e._v("{{config.docker.interface}}")]),e._v(".")])]),a("h3",{attrs:{id:"start-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-configuration"}},[e._v("#")]),e._v(" Start Configuration")]),e._v(" "),a("p",[e._v("The last block to configure is the "),a("code",[e._v("Start Configuration")]),e._v(" for servers running using this service option.")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"done"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('")! For help, type "')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"userInteraction"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Go to eula.txt for more info."')]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("In the example block above, we define "),a("code",[e._v("done")]),e._v(" as the entire line, or part of a line that indicates a server is done\nstarting, and is ready for players to join. When the Daemon sees this output, it will mark the server as "),a("code",[e._v("ON")]),e._v(" rather\nthan "),a("code",[e._v("STARTING")]),e._v(". We can also define "),a("code",[e._v("userInteraction")]),e._v(" as an array of lines that should indicate that the server\n"),a("em",[e._v("did not crash")]),e._v(", but rather stopped because the user needs to perform some action.")]),e._v(" "),a("p",[e._v("In this case, we define it as the line asking users to agree to the EULA. You are not required to have\n"),a("code",[e._v("userInteraction")]),e._v(" lines, however if you are going to leave it empty, it should still be defined with an empty array,\nas shown below:")]),e._v(" "),a("div",{staticClass:"language-json extra-class"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"done"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('")! For help, type "')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[e._v('"userInteraction"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("p",[e._v("That concludes basic service option configuration.")]),e._v(" "),a("h2",{attrs:{id:"copy-settings-from"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#copy-settings-from"}},[e._v("#")]),e._v(" Copy Settings From")]),e._v(" "),a("p",[e._v("As mentioned above, there is a unique "),a("code",[e._v("Copy Settings From")]),e._v(" dropdown when adding a new option. This gives you the\nability to, as the name suggests, copy settings defined above from a different option.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(349),alt:""}})]),e._v(" "),a("p",[e._v("In the panel, we use this to copy settings that remain the same between similar service options, such as many of the\nMinecraft options.")]),e._v(" "),a("p",[e._v("For example, lets look at the "),a("code",[e._v("Sponge (SpongeVanilla)")]),e._v(" service option.")]),e._v(" "),a("p",[e._v("As you can see, it as been told to copy settings from "),a("code",[e._v("Vanilla Minecraft")]),e._v(". This means that any of the fields that are\nleft blank will inherit from the assigned parent. We then define a specific "),a("code",[e._v("userInteraction")]),e._v(" line that is different in\nSponge compared to Vanilla, but tell it that everything else should remain the same.")]),e._v(" "),a("p",[a("em",[e._v("Please note that "),a("code",[e._v("Copy Settings From")]),e._v(" does not support nested copies, you can only copy from a single parent,\nand that parent "),a("strong",[e._v("must not be copying from another option.")])])]),e._v(" "),a("h2",{attrs:{id:"egg-variables"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#egg-variables"}},[e._v("#")]),e._v(" Egg Variables")]),e._v(" "),a("p",[e._v("One of the great parts of the Egg Variables is the ability to define specific variables that users and/or admins can\ncontrol to tweak different settings without letting users modify the startup command. To create new variables, or edit\nexisting ones, visit the new service option you created, and click the "),a("code",[e._v("Variables")]),e._v(" tab at the top of the page. Lets take\na look at an example variable that we can create.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(350),alt:""}})]),e._v(" "),a("div",{pre:!0},[a("p",[e._v("The name and description are rather self-explanitory, so I'll skip down to the "),a("code",[e._v("Environment Variable")]),e._v(" box. This should\nbe an Alpha-Numeric name with underscores, and should be uppercase. This will be the name of the environment variable\nwhich can be accessed in the startup command as "),a("code",[e._v("{{WOOZLE_WOO}}")]),e._v(", within file modifications as "),a("code",[e._v("{{env.WOOZLE_WOO}}")]),e._v(", or\njust "),a("code",[e._v("${WOOZLE_WOO}")]),e._v(" in any shell scripts (it is passed through in the environment). We also define a default value for\nthis environment variable in this example, but it is not required to do so.")])]),a("p",[e._v("The next section is "),a("code",[e._v("Permissions")]),e._v(", which is a dropdown with two options: "),a("code",[e._v("Users Can View")]),e._v(" and "),a("code",[e._v("Users Can Edit")]),e._v(".")]),e._v(" "),a("ul",[a("li",[a("code",[e._v("Users Can View")]),e._v(" — allows a user to view the field on the front-end, as well as the assigned value of that variable.\nThey will be able to see it replaced in their startup command.")]),e._v(" "),a("li",[a("code",[e._v("Users Can Edit")]),e._v(" — allows a user to edit the value of the variable, for example the name of their "),a("code",[e._v("server.jar")]),e._v(" file\nif running Minecraft.")])]),e._v(" "),a("p",[e._v("You should use caution here, even if you assign neither of the permissions it does not mean that the value will be\nhidden. Crafty users will still be able to get the environment on their server. In most cases this is simply hiding\nit from the user, and then used within the Dockerfile to perform actions, thus it is not important for the user to see.")]),e._v(" "),a("p",[e._v("Finally, you will need to define some input rules to validate the value against. In this example, we use\n"),a("code",[e._v("required|string|between:1,10")]),e._v(", which means the field is "),a("code",[e._v("required")]),e._v(", must be a "),a("code",[e._v("string")]),e._v(", and must be between "),a("code",[e._v("1")]),e._v(" and\n"),a("code",[e._v("10")]),e._v(" characters in length. You can find "),a("a",{attrs:{href:"https://laravel.com/docs/5.6/validation#available-validation-rules",target:"_blank",rel:"noopener noreferrer"}},[e._v("all of the available validation rules"),a("OutboundLink")],1),e._v("\non the Laravel website. You can also use ReGEX based validation by using the "),a("code",[e._v("regex:")]),e._v(" rule flag. For example,\n"),a("a",{attrs:{href:"https://regex101.com/r/k4oEOn/1",target:"_blank",rel:"noopener noreferrer"}},[a("code",[e._v("required|regex:/^([\\w\\d._-]+)(\\.jar)$/")]),a("OutboundLink")],1),e._v(" will require the field, and will match the\nregex as any letters or numbers ("),a("code",[e._v("\\w\\d")]),e._v(") including underscore ("),a("code",[e._v("_")]),e._v("), periods ("),a("code",[e._v(".")]),e._v("), and dashes ("),a("code",[e._v("-")]),e._v(") ending in "),a("code",[e._v(".jar")]),e._v(".")]),e._v(" "),a("p",[e._v("They will then be visible when managing the startup for a server in both the Admin CP and on the Front-End.")]),e._v(" "),a("p",[a("img",{attrs:{src:s(351),alt:""}})])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.5cec21e4.js b/assets/js/app.efb94fbf.js similarity index 99% rename from assets/js/app.5cec21e4.js rename to assets/js/app.efb94fbf.js index 7a748591..af1b29a0 100644 --- a/assets/js/app.5cec21e4.js +++ b/assets/js/app.efb94fbf.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,u=e[0],l=e[1],s=e[2],f=0,p=[];f-1}function u(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function l(t,e){for(var n in e)t[n]=e[n];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,i=e.parent,o=e.data;o.routerView=!0;for(var a=i.$createElement,u=n.name,s=i.$route,f=i._routerViewCache||(i._routerViewCache={}),p=0,d=!1;i&&i._routerRoot!==i;){var h=i.$vnode?i.$vnode.data:{};h.routerView&&p++,h.keepAlive&&i._directInactive&&i._inactive&&(d=!0),i=i.$parent}if(o.routerViewDepth=p,d){var v=f[u],g=v&&v.component;return g?(v.configProps&&c(g,o,v.route,v.configProps),a(g,o,r)):a()}var m=s.matched[p],y=m&&m.components[u];if(!m||!y)return f[u]=null,a();f[u]={component:y},o.registerRouteInstance=function(t,e){var n=m.instances[u];(e&&n!==t||!e&&n===t)&&(m.instances[u]=e)},(o.hook||(o.hook={})).prepatch=function(t,e){m.instances[u]=e.componentInstance},o.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==m.instances[u]&&(m.instances[u]=t.componentInstance)};var b=m.props&&m.props[u];return b&&(l(f[u],{route:s,configProps:b}),c(y,o,s,b)),a(y,o,r)}};function c(t,e,n,r){var i=e.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(n,r);if(i){i=e.props=l({},i);var o=e.attrs=e.attrs||{};for(var a in i)t.props&&a in t.props||(o[a]=i[a],delete i[a])}}var f=/[!'()*]/g,p=function(t){return"%"+t.charCodeAt(0).toString(16)},d=/%2C/g,h=function(t){return encodeURIComponent(t).replace(f,p).replace(d,",")},v=decodeURIComponent;function g(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=v(n.shift()),i=n.length>0?v(n.join("=")):null;void 0===e[r]?e[r]=i:Array.isArray(e[r])?e[r].push(i):e[r]=[e[r],i]})),e):e}function m(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return h(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(h(e)):r.push(h(e)+"="+h(t)))})),r.join("&")}return h(e)+"="+h(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var y=/\/?$/;function b(t,e,n,r){var i=r&&r.options.stringifyQuery,o=e.query||{};try{o=_(o)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:S(e,i),matched:t?x(t):[]};return n&&(a.redirectedFrom=S(n,i)),Object.freeze(a)}function _(t){if(Array.isArray(t))return t.map(_);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=_(t[n]);return e}return t}var w=b(null,{path:"/"});function x(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function S(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var i=t.hash;return void 0===i&&(i=""),(n||"/")+(e||m)(r)+i}function k(t,e){return e===w?t===e:!!e&&(t.path&&e.path?t.path.replace(y,"")===e.path.replace(y,"")&&t.hash===e.hash&&O(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&O(t.query,e.query)&&O(t.params,e.params)))}function O(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],i=e[n];return"object"==typeof r&&"object"==typeof i?O(r,i):String(r)===String(i)}))}function C(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var i=e.split("/");n&&i[i.length-1]||i.pop();for(var o=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var i=t.indexOf("?");return i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),{path:t,query:n,hash:e}}(i.path||""),c=e&&e.path||"/",f=s.path?C(s.path,c,n||i.append):c,p=function(t,e,n){void 0===e&&(e={});var r,i=n||g;try{r=i(t||"")}catch(t){r={}}for(var o in e)r[o]=e[o];return r}(s.query,i.query,r&&r.options.parseQuery),d=i.hash||s.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:f,query:p,hash:d}}var G,K=function(){},X={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),o=i.location,a=i.route,u=i.href,s={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,g=a.redirectedFrom?b(null,H(a.redirectedFrom),null,n):a;s[v]=k(r,g),s[h]=this.exact?s[v]:function(t,e){return 0===t.path.replace(y,"/").indexOf(e.path.replace(y,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,g);var m=function(t){Q(t)&&(e.replace?n.replace(o,K):n.push(o,K))},_={click:Q};Array.isArray(this.event)?this.event.forEach((function(t){_[t]=m})):_[this.event]=m;var w={class:s},x=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:m,isActive:s[h],isExactActive:s[v]});if(x){if(1===x.length)return x[0];if(x.length>1||!x.length)return 0===x.length?t():t("span",{},x)}if("a"===this.tag)w.on=_,w.attrs={href:u};else{var S=function t(e){var n;if(e)for(var r=0;r-1&&(u.params[p]=n.params[p]);return u.path=W(c.path,u.params),l(c,u,a)}if(u.path){u.params={};for(var d=0;d=t.length?n():t[i]?e(t[i],(function(){r(i+1)})):r(i+1)};r(0)}function wt(t){return function(e,n,r){var i=!1,o=0,u=null;xt(t,(function(t,e,n,l){if("function"==typeof t&&void 0===t.cid){i=!0,o++;var s,c=Ot((function(e){var i;((i=e).__esModule||kt&&"Module"===i[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:G.extend(e),n.components[l]=e,--o<=0&&r()})),f=Ot((function(t){var e="Failed to resolve async component "+l+": "+t;u||(u=a(t)?t:new Error(e),r(u))}));try{s=t(c,f)}catch(t){f(t)}if(s)if("function"==typeof s.then)s.then(c,f);else{var p=s.component;p&&"function"==typeof p.then&&p.then(c,f)}}})),i||r()}}function xt(t,e){return St(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function St(t){return Array.prototype.concat.apply([],t)}var kt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ot(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Ct=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);Ct._name="NavigationDuplicated";var jt=function(t,e){this.router=t,this.base=function(t){if(!t)if(Y){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=w,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function Pt(t,e,n,r){var i=xt(t,(function(t,r,i,o){var a=function(t,e){"function"!=typeof t&&(t=G.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,i,o)})):n(a,r,i,o)}));return St(r?i.reverse():i)}function Et(t,e){if(e)return function(){return t.apply(e,arguments)}}jt.prototype.listen=function(t){this.cb=t},jt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},jt.prototype.onError=function(t){this.errorCbs.push(t)},jt.prototype.transitionTo=function(t,e,n){var r=this,i=this.router.match(t,this.current);this.confirmTransition(i,(function(){r.updateRoute(i),e&&e(i),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(i)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},jt.prototype.confirmTransition=function(t,e,n){var r=this,i=this.current,o=function(t){!u(Ct,t)&&a(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if(k(t,i)&&t.matched.length===i.matched.length)return this.ensureURL(),o(new Ct(t));var l=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else t=decodeURI(t.slice(0,n))+t.slice(n);return t}function It(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Dt(t){mt?yt(It(t)):window.location.hash=t}function Mt(t){mt?bt(It(t)):window.location.replace(It(t))}var Nt=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){u(Ct,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(jt),Ut=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=tt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!mt&&!1!==t.fallback,this.fallback&&(e="hash"),Y||(e="abstract"),this.mode=e,e){case"history":this.history=new At(this,t.base);break;case"hash":this.history=new Lt(this,t.base,this.fallback);break;case"abstract":this.history=new Nt(this,t.base);break;default:0}},Ft={currentRoute:{configurable:!0}};function zt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Ut.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Ft.currentRoute.get=function(){return this.history&&this.history.current},Ut.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof At)n.transitionTo(n.getCurrentLocation());else if(n instanceof Lt){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Ut.prototype.beforeEach=function(t){return zt(this.beforeHooks,t)},Ut.prototype.beforeResolve=function(t){return zt(this.resolveHooks,t)},Ut.prototype.afterEach=function(t){return zt(this.afterHooks,t)},Ut.prototype.onReady=function(t,e){this.history.onReady(t,e)},Ut.prototype.onError=function(t){this.history.onError(t)},Ut.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Ut.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Ut.prototype.go=function(t){this.history.go(t)},Ut.prototype.back=function(){this.go(-1)},Ut.prototype.forward=function(){this.go(1)},Ut.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Ut.prototype.resolve=function(t,e,n){var r=H(t,e=e||this.history.current,n,this),i=this.match(r,e),o=i.redirectedFrom||i.fullPath;return{location:r,route:i,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?j(t+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:i}},Ut.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==w&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ut.prototype,Ft),Ut.install=function t(e){if(!t.installed||G!==e){t.installed=!0,G=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",s),e.component("RouterLink",X);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}},Ut.version="3.1.6",Y&&window.Vue&&window.Vue.use(Ut);var Bt=Ut;n(50),n(194),n(196),n(142),n(143),n(72),n(108),n(51);function qt(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}n(198),n(144),n(48),n(199),n(69),n(41),n(61),n(92);function Vt(t){return(Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Wt=n(44),Ht={DropdownLink:function(){return Promise.all([n.e(0),n.e(6)]).then(n.bind(null,340))},DropdownTransition:function(){return Promise.all([n.e(0),n.e(18)]).then(n.bind(null,317))},Home:function(){return Promise.all([n.e(2),n.e(7)]).then(n.bind(null,341))},Layout:function(){return Promise.all([n.e(0),n.e(2),n.e(1),n.e(4)]).then(n.bind(null,361))},NavLink:function(){return n.e(9).then(n.bind(null,316))},NavLinks:function(){return Promise.all([n.e(0),n.e(1)]).then(n.bind(null,332))},Navbar:function(){return Promise.all([n.e(0),n.e(1),n.e(10)]).then(n.bind(null,342))},NotFound:function(){return n.e(24).then(n.bind(null,362))},Page:function(){return n.e(16).then(n.bind(null,343))},SearchBox:function(){return n.e(13).then(n.bind(null,331))},Sidebar:function(){return Promise.all([n.e(0),n.e(1),n.e(8)]).then(n.bind(null,344))},SidebarButton:function(){return n.e(25).then(n.bind(null,334))},SidebarGroup:function(){return Promise.all([n.e(0),n.e(5)]).then(n.bind(null,333))},SidebarLink:function(){return n.e(14).then(n.bind(null,319))},SlickCarousel:function(){return Promise.all([n.e(2),n.e(26)]).then(n.bind(null,330))},VersionSelect:function(){return n.e(11).then(n.bind(null,325))},VersionSelectItem:function(){return n.e(27).then(n.bind(null,318))}},Gt={"v-680eebc3":function(){return n.e(28).then(n.bind(null,363))},"v-4e72e1d8":function(){return n.e(29).then(n.bind(null,364))},"v-7d127123":function(){return n.e(30).then(n.bind(null,365))},"v-4a1e6e3a":function(){return n.e(12).then(n.bind(null,366))},"v-10fe793a":function(){return n.e(31).then(n.bind(null,367))},"v-622f23e3":function(){return n.e(17).then(n.bind(null,368))},"v-ef34fffa":function(){return n.e(32).then(n.bind(null,369))},"v-090070fa":function(){return n.e(33).then(n.bind(null,370))},"v-67c3f2ba":function(){return n.e(15).then(n.bind(null,371))},"v-0af75f63":function(){return n.e(34).then(n.bind(null,372))},"v-cc322cfa":function(){return n.e(35).then(n.bind(null,373))},"v-4d5d0f9b":function(){return n.e(36).then(n.bind(null,374))},"v-22a01883":function(){return n.e(37).then(n.bind(null,375))},"v-047b1c1f":function(){return n.e(38).then(n.bind(null,376))},"v-030337f1":function(){return n.e(39).then(n.bind(null,377))},"v-26037fe3":function(){return n.e(40).then(n.bind(null,378))},"v-9619ebfa":function(){return n.e(41).then(n.bind(null,379))},"v-432db923":function(){return n.e(42).then(n.bind(null,380))},"v-3dac3903":function(){return n.e(43).then(n.bind(null,381))},"v-e046bab2":function(){return n.e(44).then(n.bind(null,382))},"v-e336830e":function(){return n.e(45).then(n.bind(null,383))},"v-7c7b3203":function(){return n.e(46).then(n.bind(null,384))},"v-439f9686":function(){return n.e(47).then(n.bind(null,385))},"v-07a77f72":function(){return n.e(48).then(n.bind(null,386))},"v-00d38f11":function(){return n.e(49).then(n.bind(null,387))},"v-d39223ba":function(){return n.e(19).then(n.bind(null,388))},"v-a31c3dba":function(){return n.e(50).then(n.bind(null,389))},"v-6f0eac21":function(){return n.e(51).then(n.bind(null,390))},"v-481dea23":function(){return n.e(52).then(n.bind(null,391))},"v-15b388aa":function(){return n.e(53).then(n.bind(null,392))},"v-8a6363ba":function(){return n.e(54).then(n.bind(null,393))},"v-7f0b5429":function(){return n.e(55).then(n.bind(null,394))},"v-29055241":function(){return n.e(56).then(n.bind(null,395))},"v-c0e60bfa":function(){return n.e(57).then(n.bind(null,396))},"v-2339aa03":function(){return n.e(58).then(n.bind(null,397))},"v-019cb63a":function(){return n.e(59).then(n.bind(null,398))},"v-7ffeb723":function(){return n.e(60).then(n.bind(null,399))},"v-9478f2ba":function(){return n.e(61).then(n.bind(null,400))},"v-4f03fe0f":function(){return n.e(62).then(n.bind(null,401))},"v-5baa92ba":function(){return n.e(63).then(n.bind(null,402))},"v-c249e07a":function(){return n.e(64).then(n.bind(null,403))},"v-27941b23":function(){return n.e(65).then(n.bind(null,404))},"v-6f4baca5":function(){return n.e(66).then(n.bind(null,405))},"v-fa75e63a":function(){return n.e(67).then(n.bind(null,406))},"v-f0c998de":function(){return n.e(68).then(n.bind(null,407))},"v-11e0c7ba":function(){return n.e(69).then(n.bind(null,408))},"v-46094903":function(){return n.e(70).then(n.bind(null,409))},"v-cbda523a":function(){return n.e(71).then(n.bind(null,410))},"v-a75af93a":function(){return n.e(72).then(n.bind(null,411))},"v-22ba6d3a":function(){return n.e(73).then(n.bind(null,412))},"v-d6319362":function(){return n.e(74).then(n.bind(null,413))},"v-7b99cfba":function(){return n.e(20).then(n.bind(null,414))},"v-6ec4d123":function(){return n.e(75).then(n.bind(null,415))},"v-5c5d50fa":function(){return n.e(76).then(n.bind(null,416))},"v-6cd19ba3":function(){return n.e(77).then(n.bind(null,417))},"v-55eb8eca":function(){return n.e(21).then(n.bind(null,418))},"v-1ec46263":function(){return n.e(22).then(n.bind(null,419))},"v-9213d4fa":function(){return n.e(78).then(n.bind(null,420))}};function Kt(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var Xt=/-(\w)/g,Qt=Kt((function(t){return t.replace(Xt,(function(t,e){return e?e.toUpperCase():""}))})),Yt=/\B([A-Z])/g,Jt=Kt((function(t){return t.replace(Yt,"-$1").toLowerCase()})),Zt=Kt((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function te(t,e){if(e)return t(e)?t(e):e.includes("-")?t(Zt(Qt(e))):t(Zt(e))||t(Jt(e))}var ee=Object.assign({},Ht,Gt),ne=function(t){return ee[t]},re=function(t){return Gt[t]},ie=function(t){return Ht[t]},oe=function(t){return o.a.component(t)};function ae(t){return te(re,t)}function ue(t){return te(ie,t)}function le(t){return te(ne,t)}function se(t){return te(oe,t)}function ce(){for(var t=arguments.length,e=new Array(t),n=0;n"})).join("\n "):""}var e},mounted:function(){this.currentMetaTags=Object(Wt.a)(document.querySelectorAll("meta")),this.updateMeta()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=ge(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return ve()([{name:"description",content:this.$description}],t,this.siteMeta,me)}},watch:{$page:function(){this.updateMeta()}},beforeDestroy:function(){ge(null,this.currentMetaTags)}}],be={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return fe("layout",t),o.a.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},_e=n(46),we=Object(_e.a)(be,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){var r;switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),(r=t[e]).push.apply(r,Object(Wt.a)(n));break;default:throw new Error("Unknown option name.")}}(we,"mixins",ye);var xe=[{name:"v-680eebc3",path:"/404.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-680eebc3").then(n)}},{name:"v-4e72e1d8",path:"/",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-7d127123",path:"/community/about.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7d127123").then(n)}},{name:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4a1e6e3a").then(n)}},{name:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-10fe793a").then(n)}},{name:"v-622f23e3",path:"/community/config/nodes/add_node.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-622f23e3").then(n)}},{name:"v-ef34fffa",path:"/community/customization/panel.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-ef34fffa").then(n)}},{name:"v-090070fa",path:"/community/customization/wings.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-090070fa").then(n)}},{name:"v-67c3f2ba",path:"/community/games/minecraft.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-67c3f2ba").then(n)}},{name:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-0af75f63").then(n)}},{name:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-cc322cfa").then(n)}},{name:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4d5d0f9b").then(n)}},{name:"v-22a01883",path:"/community/installation-guides/panel/debian9.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-22a01883").then(n)}},{name:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-047b1c1f").then(n)}},{name:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-030337f1").then(n)}},{name:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-26037fe3").then(n)}},{name:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-9619ebfa").then(n)}},{name:"v-432db923",path:"/community/installation-guides/wings/debian10.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-432db923").then(n)}},{name:"v-3dac3903",path:"/community/installation-guides/wings/debian9.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-3dac3903").then(n)}},{name:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-e046bab2").then(n)}},{name:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-e336830e").then(n)}},{name:"v-7c7b3203",path:"/community/tutorials/artisan.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7c7b3203").then(n)}},{name:"v-439f9686",path:"/community/tutorials/custom_theme_setup.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-439f9686").then(n)}},{name:"v-07a77f72",path:"/daemon/0.6/configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-07a77f72").then(n)}},{name:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-00d38f11").then(n)}},{name:"v-d39223ba",path:"/daemon/0.6/installing.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-d39223ba").then(n)}},{name:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-a31c3dba").then(n)}},{name:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6f0eac21").then(n)}},{name:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-481dea23").then(n)}},{name:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-15b388aa").then(n)}},{name:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-8a6363ba").then(n)}},{name:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7f0b5429").then(n)}},{name:"v-29055241",path:"/daemon/0.6/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-29055241").then(n)}},{name:"v-c0e60bfa",path:"/guides/mounts.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-c0e60bfa").then(n)}},{name:"v-2339aa03",path:"/ops/publish_release.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-2339aa03").then(n)}},{name:"v-019cb63a",path:"/panel/0.7/configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-019cb63a").then(n)}},{name:"v-7ffeb723",path:"/panel/0.7/getting_started.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7ffeb723").then(n)}},{name:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-9478f2ba").then(n)}},{name:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4f03fe0f").then(n)}},{name:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-5baa92ba").then(n)}},{name:"v-c249e07a",path:"/panel/0.7/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-c249e07a").then(n)}},{name:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-27941b23").then(n)}},{name:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6f4baca5").then(n)}},{name:"v-fa75e63a",path:"/panel/1.0/getting_started.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-fa75e63a").then(n)}},{name:"v-f0c998de",path:"/panel/1.0/upgrade/0.7_to_1.0.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-f0c998de").then(n)}},{name:"v-11e0c7ba",path:"/panel/1.0/upgrade/1.0.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-11e0c7ba").then(n)}},{name:"v-46094903",path:"/panel/1.0/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-46094903").then(n)}},{name:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-cbda523a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-a75af93a").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-22ba6d3a").then(n)}},{name:"v-d6319362",path:"/project/introduction.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-d6319362").then(n)}},{name:"v-7b99cfba",path:"/project/terms.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7b99cfba").then(n)}},{name:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6ec4d123").then(n)}},{name:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-5c5d50fa").then(n)}},{name:"v-6cd19ba3",path:"/wings/1.0/configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6cd19ba3").then(n)}},{name:"v-55eb8eca",path:"/wings/1.0/installing.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-55eb8eca").then(n)}},{name:"v-1ec46263",path:"/wings/1.0/migrating.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-1ec46263").then(n)}},{name:"v-9213d4fa",path:"/wings/1.0/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-9213d4fa").then(n)}},{path:"*",component:we}],Se={title:"Pterodactyl",description:"The open-source server management solution.",base:"/",headTags:[["link",{rel:"apple-touch-icon",sizes:"180x180",href:"/favicons/apple-touch-icon.png"}],["link",{rel:"icon",type:"image/png",href:"/favicons/favicon-32x32.png",sizes:"32x32"}],["link",{rel:"icon",type:"image/png",href:"/favicons/favicon-16x16.png",sizes:"16x16"}],["link",{rel:"mask-icon",href:"/favicons/safari-pinned-tab.svg",color:"#0e4688"}],["link",{rel:"manifest",href:"/favicons/manifest.json"}],["link",{rel:"shortcut icon",href:"/favicons/favicon.ico"}],["meta",{name:"msapplication-config",content:"/favicons/browserconfig.xml"}],["meta",{name:"theme-color",content:"#0e4688"}]],pages:[{frontmatter:{},regularPath:"/404.html",relativePath:"404.md",key:"v-680eebc3",path:"/404.html"},{title:"Home",frontmatter:{home:!0,heroImage:"/doc_pterry.png",actionText:"Get Started →",actionLink:"/project/introduction",features:[{title:"Security First",details:"Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box."},{title:"Modern Tooling",details:"Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications."},{title:"Docker to the Core",details:"All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game."}],footer:"MIT Licensed | Copyright © 2015 - 2018 Dane Everitt & Contributors"},regularPath:"/",relativePath:"README.md",key:"v-4e72e1d8",path:"/"},{title:"Community Guides and Tutorials",frontmatter:{},regularPath:"/community/about.html",relativePath:"community/about.md",key:"v-7d127123",path:"/community/about.html",headers:[{level:2,title:"About",slug:"about"}]},{title:"Creating a Custom Egg",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_egg.html",relativePath:"community/config/eggs/creating_a_custom_egg.md",key:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",headers:[{level:2,title:"Create New Option",slug:"create-new-option"},{level:2,title:"Configure Process Management",slug:"configure-process-management"},{level:3,title:"Stop Command",slug:"stop-command"},{level:3,title:"Log Storage",slug:"log-storage"},{level:3,title:"Configuration Files",slug:"configuration-files"},{level:3,title:"Start Configuration",slug:"start-configuration"},{level:2,title:"Copy Settings From",slug:"copy-settings-from"},{level:2,title:"Egg Variables",slug:"egg-variables"}]},{title:"Creating a Custom Docker Image",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_image.html",relativePath:"community/config/eggs/creating_a_custom_image.md",key:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",headers:[{level:2,title:"Creating the Dockerfile",slug:"creating-the-dockerfile"},{level:2,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"Creating a Container User",slug:"creating-a-container-user"},{level:2,title:"Work Directory & Entrypoint",slug:"work-directory-entrypoint"},{level:2,title:"Entrypoint Script",slug:"entrypoint-script"},{level:2,title:"Modifying the Startup Command",slug:"modifying-the-startup-command"},{level:2,title:"Run the Command",slug:"run-the-command"},{level:3,title:"Note",slug:"note"}]},{title:"Creating a New Node",frontmatter:{},regularPath:"/community/config/nodes/add_node.html",relativePath:"community/config/nodes/add_node.md",key:"v-622f23e3",path:"/community/config/nodes/add_node.html",headers:[{level:2,title:"Location",slug:"location"},{level:2,title:"Information Required",slug:"information-required"},{level:2,title:"Install the Daemon",slug:"install-the-daemon"},{level:2,title:"Configuring the Node",slug:"configuring-the-node"},{level:3,title:"Auto-Deploy",slug:"auto-deploy"}]},{title:"Building Panel Assets",frontmatter:{},regularPath:"/community/customization/panel.html",relativePath:"community/customization/panel.md",key:"v-ef34fffa",path:"/community/customization/panel.html",headers:[{level:2,title:"Install Dependencies",slug:"install-dependencies"},{level:2,title:"Build Panel Assets",slug:"build-panel-assets"}]},{title:"Building Wings",frontmatter:{},regularPath:"/community/customization/wings.html",relativePath:"community/customization/wings.md",key:"v-090070fa",path:"/community/customization/wings.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Building",slug:"building"},{level:2,title:"Install the new binary",slug:"install-the-new-binary"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Minecraft",frontmatter:{},regularPath:"/community/games/minecraft.html",relativePath:"community/games/minecraft.md",key:"v-67c3f2ba",path:"/community/games/minecraft.html",headers:[{level:2,title:"Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)",slug:"configuring-a-server-network-bungeecord-waterfall-hexacord-etc"},{level:3,title:"Allocations in the Panel",slug:"allocations-in-the-panel"},{level:3,title:"proxy server settings",slug:"proxy-server-settings"},{level:3,title:"paper/spigot/bukkit settings",slug:"paper-spigot-bukkit-settings"},{level:3,title:"Firewalls",slug:"firewalls"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/panel/centos7.html",relativePath:"community/installation-guides/panel/centos7.md",key:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 8",frontmatter:{},regularPath:"/community/installation-guides/panel/centos8.html",relativePath:"community/installation-guides/panel/centos8.md",key:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/panel/debian10.html",relativePath:"community/installation-guides/panel/debian10.md",key:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 9",frontmatter:{},regularPath:"/community/installation-guides/panel/debian9.html",relativePath:"community/installation-guides/panel/debian9.md",key:"v-22a01883",path:"/community/installation-guides/panel/debian9.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu1804.html",relativePath:"community/installation-guides/panel/ubuntu1804.md",key:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu2004.html",relativePath:"community/installation-guides/panel/ubuntu2004.md",key:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/wings/centos7.html",relativePath:"community/installation-guides/wings/centos7.md",key:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"CentOS 8",frontmatter:{},regularPath:"/community/installation-guides/wings/centos8.html",relativePath:"community/installation-guides/wings/centos8.md",key:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/wings/debian10.html",relativePath:"community/installation-guides/wings/debian10.md",key:"v-432db923",path:"/community/installation-guides/wings/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 9",frontmatter:{},regularPath:"/community/installation-guides/wings/debian9.html",relativePath:"community/installation-guides/wings/debian9.md",key:"v-3dac3903",path:"/community/installation-guides/wings/debian9.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu1804.html",relativePath:"community/installation-guides/wings/ubuntu1804.md",key:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu2004.html",relativePath:"community/installation-guides/wings/ubuntu2004.md",key:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Artisan CLI",frontmatter:{},regularPath:"/community/tutorials/artisan.html",relativePath:"community/tutorials/artisan.md",key:"v-7c7b3203",path:"/community/tutorials/artisan.html",headers:[{level:2,title:"User Management",slug:"user-management"},{level:3,title:"Create User",slug:"create-user"},{level:3,title:"Delete User",slug:"delete-user"},{level:3,title:"Disable 2FA",slug:"disable-2fa"},{level:2,title:"Server & Node Management",slug:"server-node-management"},{level:3,title:"Create Location",slug:"create-location"},{level:3,title:"Delete Location",slug:"delete-location"},{level:3,title:"Server Bulk Power",slug:"server-bulk-power"},{level:3,title:"Server Rebuild",slug:"server-rebuild"},{level:2,title:"Panel Management",slug:"panel-management"},{level:3,title:"View Panel Info",slug:"view-panel-info"},{level:2,title:"Theme Management",slug:"theme-management"},{level:3,title:"List All Themes",slug:"list-all-themes"},{level:3,title:"Install a Theme",slug:"install-a-theme"},{level:3,title:"Create a Theme",slug:"create-a-theme"},{level:3,title:"Remove a Theme",slug:"remove-a-theme"}]},{title:"Creating a theme for Pterodactyl",frontmatter:{},regularPath:"/community/tutorials/custom_theme_setup.html",relativePath:"community/tutorials/custom_theme_setup.md",key:"v-439f9686",path:"/community/tutorials/custom_theme_setup.html",headers:[{level:2,title:"Using CLI",slug:"using-cli"},{level:3,title:"Set your newly created theme as default",slug:"set-your-newly-created-theme-as-default"},{level:3,title:"Setting your theme name in .env",slug:"setting-your-theme-name-in-env"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/daemon/0.6/configuration.html",relativePath:"daemon/0.6/configuration.md",key:"v-07a77f72",path:"/daemon/0.6/configuration.html",headers:[{level:2,title:"Output Throttles",slug:"output-throttles"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:2,title:"Private Registries",slug:"private-registries"},{level:2,title:"Security Policies",slug:"security-policies"},{level:2,title:"Container Policy",slug:"container-policy"},{level:3,title:"Default Security Opts Array",slug:"default-security-opts-array"},{level:3,title:"Default Capabilities Drop Array",slug:"default-capabilities-drop-array"},{level:2,title:"Enabling Cloudflare",slug:"enabling-cloudflare"}]},{title:"Docker on Debian 8",frontmatter:{},regularPath:"/daemon/0.6/debian_8_docker.html",relativePath:"daemon/0.6/debian_8_docker.md",key:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",headers:[{level:2,title:"Install Docker",slug:"install-docker"},{level:2,title:"Update GRUB Startup",slug:"update-grub-startup"},{level:2,title:"Add Backports Repo",slug:"add-backports-repo"},{level:2,title:"Update Software & Setup Docker",slug:"update-software-setup-docker"}]},{title:"Installation",frontmatter:{},regularPath:"/daemon/0.6/installing.html",relativePath:"daemon/0.6/installing.md",key:"v-d39223ba",path:"/daemon/0.6/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:3,title:"Installing Nodejs",slug:"installing-nodejs"},{level:2,title:"Installing Daemon Software",slug:"installing-daemon-software"},{level:2,title:"Configure Daemon",slug:"configure-daemon"},{level:2,title:"Starting the Daemon",slug:"starting-the-daemon"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"}]},{title:"Kernel Modifications",frontmatter:{},regularPath:"/daemon/0.6/kernel_modifications.html",relativePath:"daemon/0.6/kernel_modifications.md",key:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",headers:[{level:2,title:"Update Kernel",slug:"update-kernel"},{level:2,title:"Confirm Kernel",slug:"confirm-kernel"},{level:2,title:"Set Default Boot",slug:"set-default-boot"},{level:2,title:"Boot from hard disk",slug:"boot-from-hard-disk"}]},{title:"Standalone SFTP Server",frontmatter:{},regularPath:"/daemon/0.6/standalone_sftp.html",relativePath:"daemon/0.6/standalone_sftp.md",key:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",headers:[{level:2,title:"Disable Daemon's Server",slug:"disable-daemon-s-server"},{level:2,title:"Run the Standalone Server",slug:"run-the-standalone-server"},{level:3,title:"Start the Server",slug:"start-the-server"},{level:2,title:"Daemonize Server",slug:"daemonize-server"},{level:3,title:"Customizing Startup",slug:"customizing-startup"}]},{title:"Upgrading 0.4.X to 0.5.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.4_to_0.5.html",relativePath:"daemon/0.6/upgrade/0.4_to_0.5.md",key:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",headers:[{level:2,title:"Docker Adjustments",slug:"docker-adjustments"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"SFTP Cleanup",slug:"sftp-cleanup"},{level:2,title:"File Migration",slug:"file-migration"},{level:3,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.5 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5.html",relativePath:"daemon/0.6/upgrade/0.5.md",key:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading 0.5.X to 0.6.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5_to_0.6.html",relativePath:"daemon/0.6/upgrade/0.5_to_0.6.md",key:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",headers:[{level:2,title:"Breaking Changes",slug:"breaking-changes"},{level:2,title:"Download Files",slug:"download-files"},{level:3,title:"Start the Daemon",slug:"start-the-daemon"},{level:2,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.6 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.6.html",relativePath:"daemon/0.6/upgrade/0.6.md",key:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading",frontmatter:{},regularPath:"/daemon/0.6/upgrading.html",relativePath:"daemon/0.6/upgrading.md",key:"v-29055241",path:"/daemon/0.6/upgrading.html",headers:[{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Using Mounts",frontmatter:{},regularPath:"/guides/mounts.html",relativePath:"guides/mounts.md",key:"v-c0e60bfa",path:"/guides/mounts.html",headers:[{level:2,title:"Wings Configuration",slug:"wings-configuration"},{level:2,title:"Panel Configuration",slug:"panel-configuration"},{level:3,title:"Creating a Mount",slug:"creating-a-mount"},{level:3,title:"Assigning a Mount to a Server",slug:"assigning-a-mount-to-a-server"}]},{title:"Publishing a Release",frontmatter:{},regularPath:"/ops/publish_release.html",relativePath:"ops/publish_release.md",key:"v-2339aa03",path:"/ops/publish_release.html",headers:[{level:2,title:"Pick a Codename",slug:"pick-a-codename"},{level:2,title:"Create the Release Branch",slug:"create-the-release-branch"},{level:2,title:"Tag a Release",slug:"tag-a-release"},{level:3,title:"Update the Release on GitHub",slug:"update-the-release-on-github"},{level:2,title:"Generate Signatures & Hashes",slug:"generate-signatures-hashes"},{level:3,title:"Create Checksum",slug:"create-checksum"},{level:3,title:"GPG Sign Release",slug:"gpg-sign-release"},{level:3,title:"Attach to Release",slug:"attach-to-release"},{level:2,title:"Update Documentation",slug:"update-documentation"},{level:2,title:"Update CDN",slug:"update-cdn"},{level:2,title:"Make Discord Announcement",slug:"make-discord-announcement"},{level:2,title:"Example Process",slug:"example-process"}]},{title:"Environment Configuration",frontmatter:{},regularPath:"/panel/0.7/configuration.html",relativePath:"panel/0.7/configuration.md",key:"v-019cb63a",path:"/panel/0.7/configuration.html",headers:[{level:2,title:"Reporting All Exceptions",slug:"reporting-all-exceptions"},{level:2,title:"Client Databases",slug:"client-databases"},{level:2,title:"Reverse Proxy Setup",slug:"reverse-proxy-setup"},{level:3,title:"NGINX Specific Configuration",slug:"nginx-specific-configuration"},{level:3,title:"Cloudflare Specific Configuration",slug:"cloudflare-specific-configuration"},{level:2,title:"Increasing the Editable File Size",slug:"increasing-the-editable-file-size"},{level:2,title:"Disable or Modify ReCaptcha",slug:"disable-or-modify-recaptcha"},{level:3,title:"Using Your Own Keys",slug:"using-your-own-keys"}]},{title:"Getting Started",frontmatter:{},regularPath:"/panel/0.7/getting_started.html",relativePath:"panel/0.7/getting_started.md",key:"v-7ffeb723",path:"/panel/0.7/getting_started.html",headers:[{level:2,title:"Picking a Server OS",slug:"picking-a-server-os"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Example Dependency Installation",slug:"example-dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"Installation",slug:"installation"},{level:3,title:"Environment Configuration",slug:"environment-configuration"},{level:3,title:"Database Setup",slug:"database-setup"},{level:3,title:"Add The First User",slug:"add-the-first-user"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Queue Listeners",slug:"queue-listeners"},{level:3,title:"Crontab Configuration",slug:"crontab-configuration"},{level:3,title:"Create Queue Worker",slug:"create-queue-worker"}]},{title:"Troubleshooting",frontmatter:{},regularPath:"/panel/0.7/troubleshooting.html",relativePath:"panel/0.7/troubleshooting.md",key:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",headers:[{level:2,title:"Reading Error Logs",slug:"reading-error-logs"},{level:3,title:"Parsing the Error",slug:"parsing-the-error"},{level:3,title:"Understanding the Error",slug:"understanding-the-error"},{level:3,title:"Utilizing GREP",slug:"utilizing-grep"},{level:2,title:"Transfer Exceptions / XHR Poll Error",slug:"transfer-exceptions-xhr-poll-error"},{level:3,title:"Example Errors",slug:"example-errors"},{level:3,title:"Basic Debugging Steps",slug:"basic-debugging-steps"},{level:3,title:"More Advanced Debugging Steps",slug:"more-advanced-debugging-steps"},{level:2,title:"Invalid MAC Exception",slug:"invalid-mac-exception"},{level:2,title:"SELinux Issues",slug:"selinux-issues"},{level:3,title:"Redis Permissions Errors",slug:"redis-permissions-errors"},{level:3,title:"In case there is any weirdness with parts of the panel",slug:"in-case-there-is-any-weirdness-with-parts-of-the-panel"},{level:3,title:"Daemon Connection Errors",slug:"daemon-connection-errors"},{level:2,title:"FirewallD issues",slug:"firewalld-issues"},{level:2,title:"Database Errors",slug:"database-errors"},{level:3,title:"DatabaseController.php:142",slug:"databasecontroller-php-142"}]},{title:"Upgrading 0.6 to 0.7",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.6_to_0.7.html",relativePath:"panel/0.7/upgrade/0.6_to_0.7.md",key:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Clear Compiled Assets",slug:"clear-compiled-assets"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Update Environment",slug:"update-environment"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Cleanup API Keys",slug:"cleanup-api-keys"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading 0.7 Series",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.7.html",relativePath:"panel/0.7/upgrade/0.7.md",key:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading",frontmatter:{},regularPath:"/panel/0.7/upgrading.html",relativePath:"panel/0.7/upgrading.md",key:"v-c249e07a",path:"/panel/0.7/upgrading.html",headers:[{level:2,title:"Maintenance Mode",slug:"maintenance-mode"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Webserver Configuration",frontmatter:{},regularPath:"/panel/0.7/webserver_configuration.html",relativePath:"panel/0.7/webserver_configuration.md",key:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",headers:[{level:2,title:"NGINX",slug:"nginx"},{level:3,title:"NGINX With SSL",slug:"nginx-with-ssl"},{level:3,title:"NGINX Without SSL",slug:"nginx-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:2,title:"Apache",slug:"apache"},{level:3,title:"Apache With SSL",slug:"apache-with-ssl"},{level:3,title:"Apache Without SSL",slug:"apache-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/panel/1.0/additional_configuration.html",relativePath:"panel/1.0/additional_configuration.md",key:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",headers:[{level:2,title:"Backups",slug:"backups"},{level:3,title:"Using S3 Backups",slug:"using-s3-backups"},{level:2,title:"reCAPTCHA",slug:"recaptcha"},{level:3,title:"Configuring reCAPTCHA",slug:"configuring-recaptcha"},{level:3,title:"Disabling reCAPTCHA",slug:"disabling-recaptcha"}]},{title:"Getting Started",frontmatter:{},regularPath:"/panel/1.0/getting_started.html",relativePath:"panel/1.0/getting_started.md",key:"v-fa75e63a",path:"/panel/1.0/getting_started.html",headers:[{level:2,title:"Picking a Server OS",slug:"picking-a-server-os"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Example Dependency Installation",slug:"example-dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"Installation",slug:"installation"},{level:3,title:"Environment Configuration",slug:"environment-configuration"},{level:3,title:"Database Setup",slug:"database-setup"},{level:3,title:"Add The First User",slug:"add-the-first-user"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Queue Listeners",slug:"queue-listeners"},{level:3,title:"Crontab Configuration",slug:"crontab-configuration"},{level:3,title:"Create Queue Worker",slug:"create-queue-worker"}]},{title:"Upgrading 0.7 Series to 1.0 Series",frontmatter:{},regularPath:"/panel/1.0/upgrade/0.7_to_1.0.html",relativePath:"panel/1.0/upgrade/0.7_to_1.0.md",key:"v-f0c998de",path:"/panel/1.0/upgrade/0.7_to_1.0.html",headers:[{level:2,title:"Enter Maintenance Mode",slug:"enter-maintenance-mode"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies-2"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Exit Maintenance Mode",slug:"exit-maintenance-mode"},{level:2,title:"Switch to Wings",slug:"switch-to-wings"}]},{title:"Upgrading 1.0 Series",frontmatter:{},regularPath:"/panel/1.0/upgrade/1.0.html",relativePath:"panel/1.0/upgrade/1.0.md",key:"v-11e0c7ba",path:"/panel/1.0/upgrade/1.0.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"}]},{title:"Upgrading",frontmatter:{},regularPath:"/panel/1.0/upgrading.html",relativePath:"panel/1.0/upgrading.md",key:"v-46094903",path:"/panel/1.0/upgrading.html",headers:[{level:2,title:"Maintenance Mode",slug:"maintenance-mode"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Webserver Configuration",frontmatter:{},regularPath:"/panel/1.0/webserver_configuration.html",relativePath:"panel/1.0/webserver_configuration.md",key:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",headers:[{level:2,title:"NGINX",slug:"nginx"},{level:3,title:"NGINX With SSL",slug:"nginx-with-ssl"},{level:3,title:"NGINX Without SSL",slug:"nginx-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:2,title:"Apache",slug:"apache"},{level:3,title:"Apache With SSL",slug:"apache-with-ssl"},{level:3,title:"Apache Without SSL",slug:"apache-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"}]},{title:"About",frontmatter:{},regularPath:"/project/about.html",relativePath:"project/about.md",key:"v-a75af93a",path:"/project/about.html",headers:[{level:2,title:"Core Project Team",slug:"core-project-team"},{level:2,title:"Community Team",slug:"community-team"},{level:2,title:"License",slug:"license"},{level:2,title:"GPG Signature",slug:"gpg-signature"}]},{title:"Community Standards",frontmatter:{},regularPath:"/project/community.html",relativePath:"project/community.md",key:"v-22ba6d3a",path:"/project/community.html",headers:[{level:2,title:"Community Guidelines",slug:"community-guidelines"},{level:3,title:"Be Mature",slug:"be-mature"},{level:3,title:"Limit the Drama",slug:"limit-the-drama"},{level:3,title:"Be Patient",slug:"be-patient"},{level:3,title:"No Commercial Services",slug:"no-commercial-services"},{level:3,title:"No Mention or Ping Spam",slug:"no-mention-or-ping-spam"}]},{title:"Introduction",frontmatter:{},regularPath:"/project/introduction.html",relativePath:"project/introduction.md",key:"v-d6319362",path:"/project/introduction.html",headers:[{level:2,title:"Supported Games",slug:"supported-games"},{level:2,title:"Responsible Disclosure",slug:"responsible-disclosure"}]},{title:"Terminology",frontmatter:{},regularPath:"/project/terms.html",relativePath:"project/terms.md",key:"v-7b99cfba",path:"/project/terms.html",headers:[{level:2,title:"Example Setup Diagram",slug:"example-setup-diagram"}]},{title:"Creating SSL Certificates",frontmatter:{},regularPath:"/tutorials/creating_ssl_certificates.html",relativePath:"tutorials/creating_ssl_certificates.md",key:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",headers:[{level:2,title:"Method 1: Using Certbot",slug:"method-1-using-certbot"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate"},{level:3,title:"Auto Renewal",slug:"auto-renewal"},{level:3,title:"Troubleshooting",slug:"troubleshooting"},{level:2,title:"Method 2: Using acme.sh (Cloudflare)",slug:"method-2-using-acme-sh-cloudflare"},{level:3,title:"Obtaining CloudFlare API Key",slug:"obtaining-cloudflare-api-key"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-2"},{level:3,title:"Auto Renewal",slug:"auto-renewal-2"}]},{title:"Setting up MySQL",frontmatter:{},regularPath:"/tutorials/mysql_setup.html",relativePath:"tutorials/mysql_setup.md",key:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",headers:[{level:2,title:"Creating a database for Pterodactyl",slug:"creating-a-database-for-pterodactyl"},{level:3,title:"Logging In",slug:"logging-in"},{level:3,title:"Creating a user",slug:"creating-a-user"},{level:3,title:"Create a database",slug:"create-a-database"},{level:3,title:"Assigning permissions",slug:"assigning-permissions"},{level:2,title:"Creating a Database Host for Nodes",slug:"creating-a-database-host-for-nodes"},{level:3,title:"Creating a user",slug:"creating-a-user-2"},{level:3,title:"Assigning permissions",slug:"assigning-permissions-2"},{level:3,title:"Allowing external database access",slug:"allowing-external-database-access"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/wings/1.0/configuration.html",relativePath:"wings/1.0/configuration.md",key:"v-6cd19ba3",path:"/wings/1.0/configuration.html",headers:[{level:2,title:"Private Registries",slug:"private-registries"},{level:3,title:"Available Keys",slug:"available-keys"},{level:3,title:"Usage Example",slug:"usage-example"}]},{title:"Installing Wings",frontmatter:{},regularPath:"/wings/1.0/installing.html",relativePath:"wings/1.0/installing.md",key:"v-55eb8eca",path:"/wings/1.0/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:2,title:"Installing Wings",slug:"installing-wings-2"},{level:2,title:"Configure",slug:"configure"},{level:3,title:"Starting Wings",slug:"starting-wings"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"}]},{title:"Migrating to Wings",frontmatter:{},regularPath:"/wings/1.0/migrating.html",relativePath:"wings/1.0/migrating.md",key:"v-1ec46263",path:"/wings/1.0/migrating.html",headers:[{level:2,title:"Install Wings",slug:"install-wings"},{level:2,title:"Copy New Configuration File",slug:"copy-new-configuration-file"},{level:2,title:"Remove Old Daemon",slug:"remove-old-daemon"},{level:3,title:"Remove Standalone SFTP",slug:"remove-standalone-sftp"},{level:2,title:"Daemonize Wings",slug:"daemonize-wings"}]},{title:"Upgrading Wings",frontmatter:{},regularPath:"/wings/1.0/upgrading.html",relativePath:"wings/1.0/upgrading.md",key:"v-9213d4fa",path:"/wings/1.0/upgrading.html",headers:[{level:2,title:"Download Updated Binary",slug:"download-updated-binary"},{level:2,title:"Restart Process",slug:"restart-process"}]}],themeConfig:{repo:"pterodactyl/panel",docsRepo:"pterodactyl/documentation",repoLabel:"Contribute",editLinkText:"Help us improve this page.",editLinks:!0,logo:"/pterodactyl-flat.png",nav:[{text:"Documentation",link:"/project/introduction.md"},{text:"Community Guides",link:"/community/about.md"},{text:"Get Help",link:"https://pterodactyl.io/discord"},{text:"API",link:"https://dashflo.net/docs/api/pterodactyl/v1/"}],sidebar:{"/community/":[{title:"Community Guides",collapsable:!1,children:["/community/about.md"]},{title:"Panel Installation",collapsable:!1,children:["/community/installation-guides/panel/centos7.md","/community/installation-guides/panel/centos8.md","/community/installation-guides/panel/debian9.md","/community/installation-guides/panel/debian10.md","/community/installation-guides/panel/ubuntu1804.md","/community/installation-guides/panel/ubuntu2004.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian9.md","/community/installation-guides/wings/debian10.md","/community/installation-guides/wings/ubuntu1804.md","/community/installation-guides/wings/ubuntu2004.md"]},{title:"Creating Eggs",collapsable:!1,children:["/community/config/eggs/creating_a_custom_egg.md","/community/config/eggs/creating_a_custom_image.md"]},{title:"Game Configuration",collapsable:!1,children:["/community/games/minecraft.md"]},{title:"Tutorials",collapsable:!1,children:["/community/config/nodes/add_node.md","/community/tutorials/custom_theme_setup.md","/community/tutorials/artisan.md"]},{title:"Customization",collapsable:!1,children:["/community/customization/panel.md","/community/customization/wings.md"]}],"/":[{title:"Project Information",collapsable:!1,children:["/project/introduction.md","/project/about.md","/project/terms.md","/project/community.md"]},{title:"Panel",collapsable:!1,path:"/panel/",currentVersion:"1.0",versions:[{name:"0.7",status:"legacy",children:["/getting_started","/webserver_configuration","/upgrading","/configuration","/troubleshooting"]},{name:"1.0",status:"stable",children:["/getting_started","/webserver_configuration","/upgrading","/additional_configuration"]}]},{title:"Wings",collapsable:!1,path:"/wings/",currentVersion:"1.0",versions:[{name:"1.0",status:"stable",children:["/installing","/upgrading","/migrating","/configuration"]}]},{title:"Daemon",collapsable:!1,path:"/daemon/",versions:[{name:"0.6",status:"legacy",children:["/installing","/upgrading","/configuration","/kernel_modifications","/debian_8_docker","/standalone_sftp"]}]},{title:"Tutorials",collapsable:!1,children:["/tutorials/mysql_setup.md","/tutorials/creating_ssl_certificates.md"]},{title:"Guides",collapsable:!1,children:["/guides/mounts.md"]},{title:"Development & Ops",collapsable:!0,children:["/ops/publish_release.md"]}]}}},ke=(n(297),n(299),n(300),n(179),n(76),n(107));function Oe(){for(var t="/",e=new RegExp(t+"{1,}","g"),n=arguments.length,r=new Array(n),i=0;i0}var Ue={props:{pageKey:String,slotKey:{type:String,default:"default"}},render:function(t){var e=this.pageKey||this.$parent.$page.key;return fe("pageKey",e),o.a.component(e)||o.a.component(e,ae(e)),o.a.component(e)?t(e):t("")}},Fe={functional:!0,props:{slotKey:String,required:!0},render:function(t,e){var n=e.props,r=e.slots;return t("div",{class:["content__".concat(n.slotKey)]},r()[n.slotKey])}},ze=(n(306),Object(_e.a)({},(function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])}),[],!0,null,null,null).exports);function Be(){return(Be=i(regeneratorRuntime.mark((function t(e){var n,r,i,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n="undefined"!=typeof window&&window.__VUEPRESS_ROUTER_BASE__?window.__VUEPRESS_ROUTER_BASE__:Se.routerBase||Se.base,Me(r=new Bt({base:n,mode:"history",fallback:!1,routes:xe,scrollBehavior:function(t,e,n){return n||(t.hash?!o.a.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})}})),i={},t.prev=4,t.next=7,Promise.all(Ce.filter((function(t){return"function"==typeof t})).map((function(t){return t({Vue:o.a,options:i,router:r,siteData:Se,isServer:e})})));case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(4),console.error(t.t0);case 12:return a=new o.a(Object.assign(i,{router:r,render:function(t){return t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},je.map((function(e){return t(e)})))])}})),t.abrupt("return",{app:a,router:r});case 14:case"end":return t.stop()}}),t,null,[[4,9]])})))).apply(this,arguments)}o.a.config.productionTip=!1,o.a.use(Bt),o.a.use(De),o.a.mixin(function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.a;qt(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),i=new r,a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(i)),u={};return Object.keys(a).reduce((function(t,e){return e.startsWith("$")&&(t[e]=a[e].get),t}),u),{computed:u}}((function(t){return function(){function e(){Pe(this,e)}return Ae(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var i in r)"/"===i?e=r[i]:0===this.$page.path.indexOf(i)&&(t=r[i]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n-1}function u(t,e){return e instanceof t||e&&(e.name===t.name||e._name===t._name)}function l(t,e){for(var n in e)t[n]=e[n];return t}var s={name:"RouterView",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,i=e.parent,o=e.data;o.routerView=!0;for(var a=i.$createElement,u=n.name,s=i.$route,f=i._routerViewCache||(i._routerViewCache={}),p=0,d=!1;i&&i._routerRoot!==i;){var h=i.$vnode?i.$vnode.data:{};h.routerView&&p++,h.keepAlive&&i._directInactive&&i._inactive&&(d=!0),i=i.$parent}if(o.routerViewDepth=p,d){var v=f[u],g=v&&v.component;return g?(v.configProps&&c(g,o,v.route,v.configProps),a(g,o,r)):a()}var m=s.matched[p],y=m&&m.components[u];if(!m||!y)return f[u]=null,a();f[u]={component:y},o.registerRouteInstance=function(t,e){var n=m.instances[u];(e&&n!==t||!e&&n===t)&&(m.instances[u]=e)},(o.hook||(o.hook={})).prepatch=function(t,e){m.instances[u]=e.componentInstance},o.hook.init=function(t){t.data.keepAlive&&t.componentInstance&&t.componentInstance!==m.instances[u]&&(m.instances[u]=t.componentInstance)};var b=m.props&&m.props[u];return b&&(l(f[u],{route:s,configProps:b}),c(y,o,s,b)),a(y,o,r)}};function c(t,e,n,r){var i=e.props=function(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:0}}(n,r);if(i){i=e.props=l({},i);var o=e.attrs=e.attrs||{};for(var a in i)t.props&&a in t.props||(o[a]=i[a],delete i[a])}}var f=/[!'()*]/g,p=function(t){return"%"+t.charCodeAt(0).toString(16)},d=/%2C/g,h=function(t){return encodeURIComponent(t).replace(f,p).replace(d,",")},v=decodeURIComponent;function g(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var n=t.replace(/\+/g," ").split("="),r=v(n.shift()),i=n.length>0?v(n.join("=")):null;void 0===e[r]?e[r]=i:Array.isArray(e[r])?e[r].push(i):e[r]=[e[r],i]})),e):e}function m(t){var e=t?Object.keys(t).map((function(e){var n=t[e];if(void 0===n)return"";if(null===n)return h(e);if(Array.isArray(n)){var r=[];return n.forEach((function(t){void 0!==t&&(null===t?r.push(h(e)):r.push(h(e)+"="+h(t)))})),r.join("&")}return h(e)+"="+h(n)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var y=/\/?$/;function b(t,e,n,r){var i=r&&r.options.stringifyQuery,o=e.query||{};try{o=_(o)}catch(t){}var a={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:o,params:e.params||{},fullPath:S(e,i),matched:t?x(t):[]};return n&&(a.redirectedFrom=S(n,i)),Object.freeze(a)}function _(t){if(Array.isArray(t))return t.map(_);if(t&&"object"==typeof t){var e={};for(var n in t)e[n]=_(t[n]);return e}return t}var w=b(null,{path:"/"});function x(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function S(t,e){var n=t.path,r=t.query;void 0===r&&(r={});var i=t.hash;return void 0===i&&(i=""),(n||"/")+(e||m)(r)+i}function k(t,e){return e===w?t===e:!!e&&(t.path&&e.path?t.path.replace(y,"")===e.path.replace(y,"")&&t.hash===e.hash&&O(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&O(t.query,e.query)&&O(t.params,e.params)))}function O(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){var r=t[n],i=e[n];return"object"==typeof r&&"object"==typeof i?O(r,i):String(r)===String(i)}))}function C(t,e,n){var r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;var i=e.split("/");n&&i[i.length-1]||i.pop();for(var o=t.replace(/^\//,"").split("/"),a=0;a=0&&(e=t.slice(r),t=t.slice(0,r));var i=t.indexOf("?");return i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),{path:t,query:n,hash:e}}(i.path||""),c=e&&e.path||"/",f=s.path?C(s.path,c,n||i.append):c,p=function(t,e,n){void 0===e&&(e={});var r,i=n||g;try{r=i(t||"")}catch(t){r={}}for(var o in e)r[o]=e[o];return r}(s.query,i.query,r&&r.options.parseQuery),d=i.hash||s.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:f,query:p,hash:d}}var G,K=function(){},X={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,event:{type:[String,Array],default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),o=i.location,a=i.route,u=i.href,s={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,g=a.redirectedFrom?b(null,H(a.redirectedFrom),null,n):a;s[v]=k(r,g),s[h]=this.exact?s[v]:function(t,e){return 0===t.path.replace(y,"/").indexOf(e.path.replace(y,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var n in e)if(!(n in t))return!1;return!0}(t.query,e.query)}(r,g);var m=function(t){Q(t)&&(e.replace?n.replace(o,K):n.push(o,K))},_={click:Q};Array.isArray(this.event)?this.event.forEach((function(t){_[t]=m})):_[this.event]=m;var w={class:s},x=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:a,navigate:m,isActive:s[h],isExactActive:s[v]});if(x){if(1===x.length)return x[0];if(x.length>1||!x.length)return 0===x.length?t():t("span",{},x)}if("a"===this.tag)w.on=_,w.attrs={href:u};else{var S=function t(e){var n;if(e)for(var r=0;r-1&&(u.params[p]=n.params[p]);return u.path=W(c.path,u.params),l(c,u,a)}if(u.path){u.params={};for(var d=0;d=t.length?n():t[i]?e(t[i],(function(){r(i+1)})):r(i+1)};r(0)}function wt(t){return function(e,n,r){var i=!1,o=0,u=null;xt(t,(function(t,e,n,l){if("function"==typeof t&&void 0===t.cid){i=!0,o++;var s,c=Ot((function(e){var i;((i=e).__esModule||kt&&"Module"===i[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:G.extend(e),n.components[l]=e,--o<=0&&r()})),f=Ot((function(t){var e="Failed to resolve async component "+l+": "+t;u||(u=a(t)?t:new Error(e),r(u))}));try{s=t(c,f)}catch(t){f(t)}if(s)if("function"==typeof s.then)s.then(c,f);else{var p=s.component;p&&"function"==typeof p.then&&p.then(c,f)}}})),i||r()}}function xt(t,e){return St(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function St(t){return Array.prototype.concat.apply([],t)}var kt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Ot(t){var e=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!e)return e=!0,t.apply(this,n)}}var Ct=function(t){function e(e){t.call(this),this.name=this._name="NavigationDuplicated",this.message='Navigating to current location ("'+e.fullPath+'") is not allowed',Object.defineProperty(this,"stack",{value:(new t).stack,writable:!0,configurable:!0})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(Error);Ct._name="NavigationDuplicated";var jt=function(t,e){this.router=t,this.base=function(t){if(!t)if(Y){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=w,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[]};function Pt(t,e,n,r){var i=xt(t,(function(t,r,i,o){var a=function(t,e){"function"!=typeof t&&(t=G.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,i,o)})):n(a,r,i,o)}));return St(r?i.reverse():i)}function Et(t,e){if(e)return function(){return t.apply(e,arguments)}}jt.prototype.listen=function(t){this.cb=t},jt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},jt.prototype.onError=function(t){this.errorCbs.push(t)},jt.prototype.transitionTo=function(t,e,n){var r=this,i=this.router.match(t,this.current);this.confirmTransition(i,(function(){r.updateRoute(i),e&&e(i),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach((function(t){t(i)})))}),(function(t){n&&n(t),t&&!r.ready&&(r.ready=!0,r.readyErrorCbs.forEach((function(e){e(t)})))}))},jt.prototype.confirmTransition=function(t,e,n){var r=this,i=this.current,o=function(t){!u(Ct,t)&&a(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)};if(k(t,i)&&t.matched.length===i.matched.length)return this.ensureURL(),o(new Ct(t));var l=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n-1?decodeURI(t.slice(0,r))+t.slice(r):decodeURI(t)}else t=decodeURI(t.slice(0,n))+t.slice(n);return t}function It(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function Dt(t){mt?yt(It(t)):window.location.hash=t}function Mt(t){mt?bt(It(t)):window.location.replace(It(t))}var Nt=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,(function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)}),n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){e.index=n,e.updateRoute(r)}),(function(t){u(Ct,t)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(jt),Ut=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=tt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!mt&&!1!==t.fallback,this.fallback&&(e="hash"),Y||(e="abstract"),this.mode=e,e){case"history":this.history=new At(this,t.base);break;case"hash":this.history=new Lt(this,t.base,this.fallback);break;case"abstract":this.history=new Nt(this,t.base);break;default:0}},Ft={currentRoute:{configurable:!0}};function zt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Ut.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Ft.currentRoute.get=function(){return this.history&&this.history.current},Ut.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var n=e.apps.indexOf(t);n>-1&&e.apps.splice(n,1),e.app===t&&(e.app=e.apps[0]||null)})),!this.app){this.app=t;var n=this.history;if(n instanceof At)n.transitionTo(n.getCurrentLocation());else if(n instanceof Lt){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Ut.prototype.beforeEach=function(t){return zt(this.beforeHooks,t)},Ut.prototype.beforeResolve=function(t){return zt(this.resolveHooks,t)},Ut.prototype.afterEach=function(t){return zt(this.afterHooks,t)},Ut.prototype.onReady=function(t,e){this.history.onReady(t,e)},Ut.prototype.onError=function(t){this.history.onError(t)},Ut.prototype.push=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.push(t,e,n)}));this.history.push(t,e,n)},Ut.prototype.replace=function(t,e,n){var r=this;if(!e&&!n&&"undefined"!=typeof Promise)return new Promise((function(e,n){r.history.replace(t,e,n)}));this.history.replace(t,e,n)},Ut.prototype.go=function(t){this.history.go(t)},Ut.prototype.back=function(){this.go(-1)},Ut.prototype.forward=function(){this.go(1)},Ut.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Ut.prototype.resolve=function(t,e,n){var r=H(t,e=e||this.history.current,n,this),i=this.match(r,e),o=i.redirectedFrom||i.fullPath;return{location:r,route:i,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?j(t+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:i}},Ut.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==w&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ut.prototype,Ft),Ut.install=function t(e){if(!t.installed||G!==e){t.installed=!0,G=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",s),e.component("RouterLink",X);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}},Ut.version="3.1.6",Y&&window.Vue&&window.Vue.use(Ut);var Bt=Ut;n(50),n(194),n(196),n(142),n(143),n(72),n(108),n(51);function qt(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}n(198),n(144),n(48),n(199),n(69),n(41),n(61),n(92);function Vt(t){return(Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Wt=n(44),Ht={DropdownLink:function(){return Promise.all([n.e(0),n.e(6)]).then(n.bind(null,340))},DropdownTransition:function(){return Promise.all([n.e(0),n.e(18)]).then(n.bind(null,317))},Home:function(){return Promise.all([n.e(2),n.e(7)]).then(n.bind(null,341))},Layout:function(){return Promise.all([n.e(0),n.e(2),n.e(1),n.e(4)]).then(n.bind(null,361))},NavLink:function(){return n.e(9).then(n.bind(null,316))},NavLinks:function(){return Promise.all([n.e(0),n.e(1)]).then(n.bind(null,332))},Navbar:function(){return Promise.all([n.e(0),n.e(1),n.e(10)]).then(n.bind(null,342))},NotFound:function(){return n.e(24).then(n.bind(null,362))},Page:function(){return n.e(16).then(n.bind(null,343))},SearchBox:function(){return n.e(13).then(n.bind(null,331))},Sidebar:function(){return Promise.all([n.e(0),n.e(1),n.e(8)]).then(n.bind(null,344))},SidebarButton:function(){return n.e(25).then(n.bind(null,334))},SidebarGroup:function(){return Promise.all([n.e(0),n.e(5)]).then(n.bind(null,333))},SidebarLink:function(){return n.e(14).then(n.bind(null,319))},SlickCarousel:function(){return Promise.all([n.e(2),n.e(26)]).then(n.bind(null,330))},VersionSelect:function(){return n.e(11).then(n.bind(null,325))},VersionSelectItem:function(){return n.e(27).then(n.bind(null,318))}},Gt={"v-680eebc3":function(){return n.e(28).then(n.bind(null,363))},"v-4e72e1d8":function(){return n.e(29).then(n.bind(null,364))},"v-7d127123":function(){return n.e(30).then(n.bind(null,365))},"v-4a1e6e3a":function(){return n.e(12).then(n.bind(null,366))},"v-10fe793a":function(){return n.e(31).then(n.bind(null,367))},"v-622f23e3":function(){return n.e(17).then(n.bind(null,368))},"v-ef34fffa":function(){return n.e(32).then(n.bind(null,369))},"v-090070fa":function(){return n.e(33).then(n.bind(null,370))},"v-67c3f2ba":function(){return n.e(15).then(n.bind(null,371))},"v-0af75f63":function(){return n.e(34).then(n.bind(null,372))},"v-cc322cfa":function(){return n.e(35).then(n.bind(null,373))},"v-4d5d0f9b":function(){return n.e(36).then(n.bind(null,374))},"v-22a01883":function(){return n.e(37).then(n.bind(null,375))},"v-047b1c1f":function(){return n.e(38).then(n.bind(null,376))},"v-030337f1":function(){return n.e(39).then(n.bind(null,377))},"v-26037fe3":function(){return n.e(40).then(n.bind(null,378))},"v-9619ebfa":function(){return n.e(41).then(n.bind(null,379))},"v-432db923":function(){return n.e(42).then(n.bind(null,380))},"v-3dac3903":function(){return n.e(43).then(n.bind(null,381))},"v-e046bab2":function(){return n.e(44).then(n.bind(null,382))},"v-e336830e":function(){return n.e(45).then(n.bind(null,383))},"v-7c7b3203":function(){return n.e(46).then(n.bind(null,384))},"v-439f9686":function(){return n.e(47).then(n.bind(null,385))},"v-07a77f72":function(){return n.e(48).then(n.bind(null,386))},"v-00d38f11":function(){return n.e(49).then(n.bind(null,387))},"v-d39223ba":function(){return n.e(19).then(n.bind(null,388))},"v-a31c3dba":function(){return n.e(50).then(n.bind(null,389))},"v-6f0eac21":function(){return n.e(51).then(n.bind(null,390))},"v-481dea23":function(){return n.e(52).then(n.bind(null,391))},"v-15b388aa":function(){return n.e(53).then(n.bind(null,392))},"v-8a6363ba":function(){return n.e(54).then(n.bind(null,393))},"v-7f0b5429":function(){return n.e(55).then(n.bind(null,394))},"v-29055241":function(){return n.e(56).then(n.bind(null,395))},"v-c0e60bfa":function(){return n.e(57).then(n.bind(null,396))},"v-2339aa03":function(){return n.e(58).then(n.bind(null,397))},"v-019cb63a":function(){return n.e(59).then(n.bind(null,398))},"v-7ffeb723":function(){return n.e(60).then(n.bind(null,399))},"v-9478f2ba":function(){return n.e(61).then(n.bind(null,400))},"v-4f03fe0f":function(){return n.e(62).then(n.bind(null,401))},"v-5baa92ba":function(){return n.e(63).then(n.bind(null,402))},"v-c249e07a":function(){return n.e(64).then(n.bind(null,403))},"v-27941b23":function(){return n.e(65).then(n.bind(null,404))},"v-6f4baca5":function(){return n.e(66).then(n.bind(null,405))},"v-fa75e63a":function(){return n.e(67).then(n.bind(null,406))},"v-f0c998de":function(){return n.e(68).then(n.bind(null,407))},"v-11e0c7ba":function(){return n.e(69).then(n.bind(null,408))},"v-46094903":function(){return n.e(70).then(n.bind(null,409))},"v-cbda523a":function(){return n.e(71).then(n.bind(null,410))},"v-a75af93a":function(){return n.e(72).then(n.bind(null,411))},"v-22ba6d3a":function(){return n.e(73).then(n.bind(null,412))},"v-d6319362":function(){return n.e(74).then(n.bind(null,413))},"v-7b99cfba":function(){return n.e(20).then(n.bind(null,414))},"v-6ec4d123":function(){return n.e(75).then(n.bind(null,415))},"v-5c5d50fa":function(){return n.e(76).then(n.bind(null,416))},"v-6cd19ba3":function(){return n.e(77).then(n.bind(null,417))},"v-55eb8eca":function(){return n.e(21).then(n.bind(null,418))},"v-1ec46263":function(){return n.e(22).then(n.bind(null,419))},"v-9213d4fa":function(){return n.e(78).then(n.bind(null,420))}};function Kt(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var Xt=/-(\w)/g,Qt=Kt((function(t){return t.replace(Xt,(function(t,e){return e?e.toUpperCase():""}))})),Yt=/\B([A-Z])/g,Jt=Kt((function(t){return t.replace(Yt,"-$1").toLowerCase()})),Zt=Kt((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function te(t,e){if(e)return t(e)?t(e):e.includes("-")?t(Zt(Qt(e))):t(Zt(e))||t(Jt(e))}var ee=Object.assign({},Ht,Gt),ne=function(t){return ee[t]},re=function(t){return Gt[t]},ie=function(t){return Ht[t]},oe=function(t){return o.a.component(t)};function ae(t){return te(re,t)}function ue(t){return te(ie,t)}function le(t){return te(ne,t)}function se(t){return te(oe,t)}function ce(){for(var t=arguments.length,e=new Array(t),n=0;n"})).join("\n "):""}var e},mounted:function(){this.currentMetaTags=Object(Wt.a)(document.querySelectorAll("meta")),this.updateMeta()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=ge(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return ve()([{name:"description",content:this.$description}],t,this.siteMeta,me)}},watch:{$page:function(){this.updateMeta()}},beforeDestroy:function(){ge(null,this.currentMetaTags)}}],be={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return fe("layout",t),o.a.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},_e=n(46),we=Object(_e.a)(be,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){var r;switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),(r=t[e]).push.apply(r,Object(Wt.a)(n));break;default:throw new Error("Unknown option name.")}}(we,"mixins",ye);var xe=[{name:"v-680eebc3",path:"/404.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-680eebc3").then(n)}},{name:"v-4e72e1d8",path:"/",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-7d127123",path:"/community/about.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7d127123").then(n)}},{name:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4a1e6e3a").then(n)}},{name:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-10fe793a").then(n)}},{name:"v-622f23e3",path:"/community/config/nodes/add_node.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-622f23e3").then(n)}},{name:"v-ef34fffa",path:"/community/customization/panel.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-ef34fffa").then(n)}},{name:"v-090070fa",path:"/community/customization/wings.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-090070fa").then(n)}},{name:"v-67c3f2ba",path:"/community/games/minecraft.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-67c3f2ba").then(n)}},{name:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-0af75f63").then(n)}},{name:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-cc322cfa").then(n)}},{name:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4d5d0f9b").then(n)}},{name:"v-22a01883",path:"/community/installation-guides/panel/debian9.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-22a01883").then(n)}},{name:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-047b1c1f").then(n)}},{name:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-030337f1").then(n)}},{name:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-26037fe3").then(n)}},{name:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-9619ebfa").then(n)}},{name:"v-432db923",path:"/community/installation-guides/wings/debian10.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-432db923").then(n)}},{name:"v-3dac3903",path:"/community/installation-guides/wings/debian9.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-3dac3903").then(n)}},{name:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-e046bab2").then(n)}},{name:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-e336830e").then(n)}},{name:"v-7c7b3203",path:"/community/tutorials/artisan.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7c7b3203").then(n)}},{name:"v-439f9686",path:"/community/tutorials/custom_theme_setup.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-439f9686").then(n)}},{name:"v-07a77f72",path:"/daemon/0.6/configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-07a77f72").then(n)}},{name:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-00d38f11").then(n)}},{name:"v-d39223ba",path:"/daemon/0.6/installing.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-d39223ba").then(n)}},{name:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-a31c3dba").then(n)}},{name:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6f0eac21").then(n)}},{name:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-481dea23").then(n)}},{name:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-15b388aa").then(n)}},{name:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-8a6363ba").then(n)}},{name:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7f0b5429").then(n)}},{name:"v-29055241",path:"/daemon/0.6/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-29055241").then(n)}},{name:"v-c0e60bfa",path:"/guides/mounts.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-c0e60bfa").then(n)}},{name:"v-2339aa03",path:"/ops/publish_release.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-2339aa03").then(n)}},{name:"v-019cb63a",path:"/panel/0.7/configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-019cb63a").then(n)}},{name:"v-7ffeb723",path:"/panel/0.7/getting_started.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7ffeb723").then(n)}},{name:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-9478f2ba").then(n)}},{name:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-4f03fe0f").then(n)}},{name:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-5baa92ba").then(n)}},{name:"v-c249e07a",path:"/panel/0.7/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-c249e07a").then(n)}},{name:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-27941b23").then(n)}},{name:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6f4baca5").then(n)}},{name:"v-fa75e63a",path:"/panel/1.0/getting_started.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-fa75e63a").then(n)}},{name:"v-f0c998de",path:"/panel/1.0/upgrade/0.7_to_1.0.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-f0c998de").then(n)}},{name:"v-11e0c7ba",path:"/panel/1.0/upgrade/1.0.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-11e0c7ba").then(n)}},{name:"v-46094903",path:"/panel/1.0/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-46094903").then(n)}},{name:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-cbda523a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-a75af93a").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-22ba6d3a").then(n)}},{name:"v-d6319362",path:"/project/introduction.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-d6319362").then(n)}},{name:"v-7b99cfba",path:"/project/terms.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-7b99cfba").then(n)}},{name:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6ec4d123").then(n)}},{name:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-5c5d50fa").then(n)}},{name:"v-6cd19ba3",path:"/wings/1.0/configuration.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-6cd19ba3").then(n)}},{name:"v-55eb8eca",path:"/wings/1.0/installing.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-55eb8eca").then(n)}},{name:"v-1ec46263",path:"/wings/1.0/migrating.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-1ec46263").then(n)}},{name:"v-9213d4fa",path:"/wings/1.0/upgrading.html",component:we,beforeEnter:function(t,e,n){ce("Layout","v-9213d4fa").then(n)}},{path:"*",component:we}],Se={title:"Pterodactyl",description:"The open-source server management solution.",base:"/",headTags:[["link",{rel:"apple-touch-icon",sizes:"180x180",href:"/favicons/apple-touch-icon.png"}],["link",{rel:"icon",type:"image/png",href:"/favicons/favicon-32x32.png",sizes:"32x32"}],["link",{rel:"icon",type:"image/png",href:"/favicons/favicon-16x16.png",sizes:"16x16"}],["link",{rel:"mask-icon",href:"/favicons/safari-pinned-tab.svg",color:"#0e4688"}],["link",{rel:"manifest",href:"/favicons/manifest.json"}],["link",{rel:"shortcut icon",href:"/favicons/favicon.ico"}],["meta",{name:"msapplication-config",content:"/favicons/browserconfig.xml"}],["meta",{name:"theme-color",content:"#0e4688"}]],pages:[{frontmatter:{},regularPath:"/404.html",relativePath:"404.md",key:"v-680eebc3",path:"/404.html"},{title:"Home",frontmatter:{home:!0,heroImage:"/doc_pterry.png",actionText:"Get Started →",actionLink:"/project/introduction",features:[{title:"Security First",details:"Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box."},{title:"Modern Tooling",details:"Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications."},{title:"Docker to the Core",details:"All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game."}],footer:"MIT Licensed | Copyright © 2015 - 2018 Dane Everitt & Contributors"},regularPath:"/",relativePath:"README.md",key:"v-4e72e1d8",path:"/"},{title:"Community Guides and Tutorials",frontmatter:{},regularPath:"/community/about.html",relativePath:"community/about.md",key:"v-7d127123",path:"/community/about.html",headers:[{level:2,title:"About",slug:"about"}]},{title:"Creating a Custom Egg",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_egg.html",relativePath:"community/config/eggs/creating_a_custom_egg.md",key:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",headers:[{level:2,title:"Create New Option",slug:"create-new-option"},{level:2,title:"Configure Process Management",slug:"configure-process-management"},{level:3,title:"Stop Command",slug:"stop-command"},{level:3,title:"Log Storage",slug:"log-storage"},{level:3,title:"Configuration Files",slug:"configuration-files"},{level:3,title:"Start Configuration",slug:"start-configuration"},{level:2,title:"Copy Settings From",slug:"copy-settings-from"},{level:2,title:"Egg Variables",slug:"egg-variables"}]},{title:"Creating a Custom Docker Image",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_image.html",relativePath:"community/config/eggs/creating_a_custom_image.md",key:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",headers:[{level:2,title:"Creating the Dockerfile",slug:"creating-the-dockerfile"},{level:2,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"Creating a Container User",slug:"creating-a-container-user"},{level:2,title:"Work Directory & Entrypoint",slug:"work-directory-entrypoint"},{level:2,title:"Entrypoint Script",slug:"entrypoint-script"},{level:2,title:"Modifying the Startup Command",slug:"modifying-the-startup-command"},{level:2,title:"Run the Command",slug:"run-the-command"},{level:3,title:"Note",slug:"note"}]},{title:"Creating a New Node",frontmatter:{},regularPath:"/community/config/nodes/add_node.html",relativePath:"community/config/nodes/add_node.md",key:"v-622f23e3",path:"/community/config/nodes/add_node.html",headers:[{level:2,title:"Location",slug:"location"},{level:2,title:"Information Required",slug:"information-required"},{level:2,title:"Install the Daemon",slug:"install-the-daemon"},{level:2,title:"Configuring the Node",slug:"configuring-the-node"},{level:3,title:"Auto-Deploy",slug:"auto-deploy"}]},{title:"Building Panel Assets",frontmatter:{},regularPath:"/community/customization/panel.html",relativePath:"community/customization/panel.md",key:"v-ef34fffa",path:"/community/customization/panel.html",headers:[{level:2,title:"Install Dependencies",slug:"install-dependencies"},{level:2,title:"Build Panel Assets",slug:"build-panel-assets"}]},{title:"Building Wings",frontmatter:{},regularPath:"/community/customization/wings.html",relativePath:"community/customization/wings.md",key:"v-090070fa",path:"/community/customization/wings.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Building",slug:"building"},{level:2,title:"Install the new binary",slug:"install-the-new-binary"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Minecraft",frontmatter:{},regularPath:"/community/games/minecraft.html",relativePath:"community/games/minecraft.md",key:"v-67c3f2ba",path:"/community/games/minecraft.html",headers:[{level:2,title:"Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)",slug:"configuring-a-server-network-bungeecord-waterfall-hexacord-etc"},{level:3,title:"Allocations in the Panel",slug:"allocations-in-the-panel"},{level:3,title:"proxy server settings",slug:"proxy-server-settings"},{level:3,title:"paper/spigot/bukkit settings",slug:"paper-spigot-bukkit-settings"},{level:3,title:"Firewalls",slug:"firewalls"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/panel/centos7.html",relativePath:"community/installation-guides/panel/centos7.md",key:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 8",frontmatter:{},regularPath:"/community/installation-guides/panel/centos8.html",relativePath:"community/installation-guides/panel/centos8.md",key:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/panel/debian10.html",relativePath:"community/installation-guides/panel/debian10.md",key:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 9",frontmatter:{},regularPath:"/community/installation-guides/panel/debian9.html",relativePath:"community/installation-guides/panel/debian9.md",key:"v-22a01883",path:"/community/installation-guides/panel/debian9.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu1804.html",relativePath:"community/installation-guides/panel/ubuntu1804.md",key:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu2004.html",relativePath:"community/installation-guides/panel/ubuntu2004.md",key:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/wings/centos7.html",relativePath:"community/installation-guides/wings/centos7.md",key:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"CentOS 8",frontmatter:{},regularPath:"/community/installation-guides/wings/centos8.html",relativePath:"community/installation-guides/wings/centos8.md",key:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/wings/debian10.html",relativePath:"community/installation-guides/wings/debian10.md",key:"v-432db923",path:"/community/installation-guides/wings/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 9",frontmatter:{},regularPath:"/community/installation-guides/wings/debian9.html",relativePath:"community/installation-guides/wings/debian9.md",key:"v-3dac3903",path:"/community/installation-guides/wings/debian9.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu1804.html",relativePath:"community/installation-guides/wings/ubuntu1804.md",key:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu2004.html",relativePath:"community/installation-guides/wings/ubuntu2004.md",key:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Artisan CLI",frontmatter:{},regularPath:"/community/tutorials/artisan.html",relativePath:"community/tutorials/artisan.md",key:"v-7c7b3203",path:"/community/tutorials/artisan.html",headers:[{level:2,title:"User Management",slug:"user-management"},{level:3,title:"Create User",slug:"create-user"},{level:3,title:"Delete User",slug:"delete-user"},{level:3,title:"Disable 2FA",slug:"disable-2fa"},{level:2,title:"Server & Node Management",slug:"server-node-management"},{level:3,title:"Create Location",slug:"create-location"},{level:3,title:"Delete Location",slug:"delete-location"},{level:3,title:"Server Bulk Power",slug:"server-bulk-power"},{level:3,title:"Server Rebuild",slug:"server-rebuild"},{level:2,title:"Panel Management",slug:"panel-management"},{level:3,title:"View Panel Info",slug:"view-panel-info"},{level:2,title:"Theme Management",slug:"theme-management"},{level:3,title:"List All Themes",slug:"list-all-themes"},{level:3,title:"Install a Theme",slug:"install-a-theme"},{level:3,title:"Create a Theme",slug:"create-a-theme"},{level:3,title:"Remove a Theme",slug:"remove-a-theme"}]},{title:"Creating a theme for Pterodactyl",frontmatter:{},regularPath:"/community/tutorials/custom_theme_setup.html",relativePath:"community/tutorials/custom_theme_setup.md",key:"v-439f9686",path:"/community/tutorials/custom_theme_setup.html",headers:[{level:2,title:"Using CLI",slug:"using-cli"},{level:3,title:"Set your newly created theme as default",slug:"set-your-newly-created-theme-as-default"},{level:3,title:"Setting your theme name in .env",slug:"setting-your-theme-name-in-env"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/daemon/0.6/configuration.html",relativePath:"daemon/0.6/configuration.md",key:"v-07a77f72",path:"/daemon/0.6/configuration.html",headers:[{level:2,title:"Output Throttles",slug:"output-throttles"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:2,title:"Private Registries",slug:"private-registries"},{level:2,title:"Security Policies",slug:"security-policies"},{level:2,title:"Container Policy",slug:"container-policy"},{level:3,title:"Default Security Opts Array",slug:"default-security-opts-array"},{level:3,title:"Default Capabilities Drop Array",slug:"default-capabilities-drop-array"},{level:2,title:"Enabling Cloudflare",slug:"enabling-cloudflare"}]},{title:"Docker on Debian 8",frontmatter:{},regularPath:"/daemon/0.6/debian_8_docker.html",relativePath:"daemon/0.6/debian_8_docker.md",key:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",headers:[{level:2,title:"Install Docker",slug:"install-docker"},{level:2,title:"Update GRUB Startup",slug:"update-grub-startup"},{level:2,title:"Add Backports Repo",slug:"add-backports-repo"},{level:2,title:"Update Software & Setup Docker",slug:"update-software-setup-docker"}]},{title:"Installation",frontmatter:{},regularPath:"/daemon/0.6/installing.html",relativePath:"daemon/0.6/installing.md",key:"v-d39223ba",path:"/daemon/0.6/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:3,title:"Installing Nodejs",slug:"installing-nodejs"},{level:2,title:"Installing Daemon Software",slug:"installing-daemon-software"},{level:2,title:"Configure Daemon",slug:"configure-daemon"},{level:2,title:"Starting the Daemon",slug:"starting-the-daemon"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"}]},{title:"Kernel Modifications",frontmatter:{},regularPath:"/daemon/0.6/kernel_modifications.html",relativePath:"daemon/0.6/kernel_modifications.md",key:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",headers:[{level:2,title:"Update Kernel",slug:"update-kernel"},{level:2,title:"Confirm Kernel",slug:"confirm-kernel"},{level:2,title:"Set Default Boot",slug:"set-default-boot"},{level:2,title:"Boot from hard disk",slug:"boot-from-hard-disk"}]},{title:"Standalone SFTP Server",frontmatter:{},regularPath:"/daemon/0.6/standalone_sftp.html",relativePath:"daemon/0.6/standalone_sftp.md",key:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",headers:[{level:2,title:"Disable Daemon's Server",slug:"disable-daemon-s-server"},{level:2,title:"Run the Standalone Server",slug:"run-the-standalone-server"},{level:3,title:"Start the Server",slug:"start-the-server"},{level:2,title:"Daemonize Server",slug:"daemonize-server"},{level:3,title:"Customizing Startup",slug:"customizing-startup"}]},{title:"Upgrading 0.4.X to 0.5.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.4_to_0.5.html",relativePath:"daemon/0.6/upgrade/0.4_to_0.5.md",key:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",headers:[{level:2,title:"Docker Adjustments",slug:"docker-adjustments"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"SFTP Cleanup",slug:"sftp-cleanup"},{level:2,title:"File Migration",slug:"file-migration"},{level:3,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.5 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5.html",relativePath:"daemon/0.6/upgrade/0.5.md",key:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading 0.5.X to 0.6.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5_to_0.6.html",relativePath:"daemon/0.6/upgrade/0.5_to_0.6.md",key:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",headers:[{level:2,title:"Breaking Changes",slug:"breaking-changes"},{level:2,title:"Download Files",slug:"download-files"},{level:3,title:"Start the Daemon",slug:"start-the-daemon"},{level:2,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.6 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.6.html",relativePath:"daemon/0.6/upgrade/0.6.md",key:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading",frontmatter:{},regularPath:"/daemon/0.6/upgrading.html",relativePath:"daemon/0.6/upgrading.md",key:"v-29055241",path:"/daemon/0.6/upgrading.html",headers:[{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Using Mounts",frontmatter:{},regularPath:"/guides/mounts.html",relativePath:"guides/mounts.md",key:"v-c0e60bfa",path:"/guides/mounts.html",headers:[{level:2,title:"Wings Configuration",slug:"wings-configuration"},{level:2,title:"Panel Configuration",slug:"panel-configuration"},{level:3,title:"Creating a Mount",slug:"creating-a-mount"},{level:3,title:"Assigning a Mount to a Server",slug:"assigning-a-mount-to-a-server"}]},{title:"Publishing a Release",frontmatter:{},regularPath:"/ops/publish_release.html",relativePath:"ops/publish_release.md",key:"v-2339aa03",path:"/ops/publish_release.html",headers:[{level:2,title:"Pick a Codename",slug:"pick-a-codename"},{level:2,title:"Create the Release Branch",slug:"create-the-release-branch"},{level:2,title:"Tag a Release",slug:"tag-a-release"},{level:3,title:"Update the Release on GitHub",slug:"update-the-release-on-github"},{level:2,title:"Generate Signatures & Hashes",slug:"generate-signatures-hashes"},{level:3,title:"Create Checksum",slug:"create-checksum"},{level:3,title:"GPG Sign Release",slug:"gpg-sign-release"},{level:3,title:"Attach to Release",slug:"attach-to-release"},{level:2,title:"Update Documentation",slug:"update-documentation"},{level:2,title:"Update CDN",slug:"update-cdn"},{level:2,title:"Make Discord Announcement",slug:"make-discord-announcement"},{level:2,title:"Example Process",slug:"example-process"}]},{title:"Environment Configuration",frontmatter:{},regularPath:"/panel/0.7/configuration.html",relativePath:"panel/0.7/configuration.md",key:"v-019cb63a",path:"/panel/0.7/configuration.html",headers:[{level:2,title:"Reporting All Exceptions",slug:"reporting-all-exceptions"},{level:2,title:"Client Databases",slug:"client-databases"},{level:2,title:"Reverse Proxy Setup",slug:"reverse-proxy-setup"},{level:3,title:"NGINX Specific Configuration",slug:"nginx-specific-configuration"},{level:3,title:"Cloudflare Specific Configuration",slug:"cloudflare-specific-configuration"},{level:2,title:"Increasing the Editable File Size",slug:"increasing-the-editable-file-size"},{level:2,title:"Disable or Modify ReCaptcha",slug:"disable-or-modify-recaptcha"},{level:3,title:"Using Your Own Keys",slug:"using-your-own-keys"}]},{title:"Getting Started",frontmatter:{},regularPath:"/panel/0.7/getting_started.html",relativePath:"panel/0.7/getting_started.md",key:"v-7ffeb723",path:"/panel/0.7/getting_started.html",headers:[{level:2,title:"Picking a Server OS",slug:"picking-a-server-os"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Example Dependency Installation",slug:"example-dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"Installation",slug:"installation"},{level:3,title:"Environment Configuration",slug:"environment-configuration"},{level:3,title:"Database Setup",slug:"database-setup"},{level:3,title:"Add The First User",slug:"add-the-first-user"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Queue Listeners",slug:"queue-listeners"},{level:3,title:"Crontab Configuration",slug:"crontab-configuration"},{level:3,title:"Create Queue Worker",slug:"create-queue-worker"}]},{title:"Troubleshooting",frontmatter:{},regularPath:"/panel/0.7/troubleshooting.html",relativePath:"panel/0.7/troubleshooting.md",key:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",headers:[{level:2,title:"Reading Error Logs",slug:"reading-error-logs"},{level:3,title:"Parsing the Error",slug:"parsing-the-error"},{level:3,title:"Understanding the Error",slug:"understanding-the-error"},{level:3,title:"Utilizing GREP",slug:"utilizing-grep"},{level:2,title:"Transfer Exceptions / XHR Poll Error",slug:"transfer-exceptions-xhr-poll-error"},{level:3,title:"Example Errors",slug:"example-errors"},{level:3,title:"Basic Debugging Steps",slug:"basic-debugging-steps"},{level:3,title:"More Advanced Debugging Steps",slug:"more-advanced-debugging-steps"},{level:2,title:"Invalid MAC Exception",slug:"invalid-mac-exception"},{level:2,title:"SELinux Issues",slug:"selinux-issues"},{level:3,title:"Redis Permissions Errors",slug:"redis-permissions-errors"},{level:3,title:"In case there is any weirdness with parts of the panel",slug:"in-case-there-is-any-weirdness-with-parts-of-the-panel"},{level:3,title:"Daemon Connection Errors",slug:"daemon-connection-errors"},{level:2,title:"FirewallD issues",slug:"firewalld-issues"},{level:2,title:"Database Errors",slug:"database-errors"},{level:3,title:"DatabaseController.php:142",slug:"databasecontroller-php-142"}]},{title:"Upgrading 0.6 to 0.7",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.6_to_0.7.html",relativePath:"panel/0.7/upgrade/0.6_to_0.7.md",key:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Clear Compiled Assets",slug:"clear-compiled-assets"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Update Environment",slug:"update-environment"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Cleanup API Keys",slug:"cleanup-api-keys"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading 0.7 Series",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.7.html",relativePath:"panel/0.7/upgrade/0.7.md",key:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading",frontmatter:{},regularPath:"/panel/0.7/upgrading.html",relativePath:"panel/0.7/upgrading.md",key:"v-c249e07a",path:"/panel/0.7/upgrading.html",headers:[{level:2,title:"Maintenance Mode",slug:"maintenance-mode"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Webserver Configuration",frontmatter:{},regularPath:"/panel/0.7/webserver_configuration.html",relativePath:"panel/0.7/webserver_configuration.md",key:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",headers:[{level:2,title:"NGINX",slug:"nginx"},{level:3,title:"NGINX With SSL",slug:"nginx-with-ssl"},{level:3,title:"NGINX Without SSL",slug:"nginx-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:2,title:"Apache",slug:"apache"},{level:3,title:"Apache With SSL",slug:"apache-with-ssl"},{level:3,title:"Apache Without SSL",slug:"apache-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/panel/1.0/additional_configuration.html",relativePath:"panel/1.0/additional_configuration.md",key:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",headers:[{level:2,title:"Backups",slug:"backups"},{level:3,title:"Using S3 Backups",slug:"using-s3-backups"},{level:2,title:"reCAPTCHA",slug:"recaptcha"},{level:3,title:"Configuring reCAPTCHA",slug:"configuring-recaptcha"},{level:3,title:"Disabling reCAPTCHA",slug:"disabling-recaptcha"}]},{title:"Getting Started",frontmatter:{},regularPath:"/panel/1.0/getting_started.html",relativePath:"panel/1.0/getting_started.md",key:"v-fa75e63a",path:"/panel/1.0/getting_started.html",headers:[{level:2,title:"Picking a Server OS",slug:"picking-a-server-os"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Example Dependency Installation",slug:"example-dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"Installation",slug:"installation"},{level:3,title:"Environment Configuration",slug:"environment-configuration"},{level:3,title:"Database Setup",slug:"database-setup"},{level:3,title:"Add The First User",slug:"add-the-first-user"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Queue Listeners",slug:"queue-listeners"},{level:3,title:"Crontab Configuration",slug:"crontab-configuration"},{level:3,title:"Create Queue Worker",slug:"create-queue-worker"}]},{title:"Upgrading 0.7 Series to 1.0 Series",frontmatter:{},regularPath:"/panel/1.0/upgrade/0.7_to_1.0.html",relativePath:"panel/1.0/upgrade/0.7_to_1.0.md",key:"v-f0c998de",path:"/panel/1.0/upgrade/0.7_to_1.0.html",headers:[{level:2,title:"Enter Maintenance Mode",slug:"enter-maintenance-mode"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies-2"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Exit Maintenance Mode",slug:"exit-maintenance-mode"},{level:2,title:"Switch to Wings",slug:"switch-to-wings"}]},{title:"Upgrading 1.0 Series",frontmatter:{},regularPath:"/panel/1.0/upgrade/1.0.html",relativePath:"panel/1.0/upgrade/1.0.md",key:"v-11e0c7ba",path:"/panel/1.0/upgrade/1.0.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"}]},{title:"Upgrading",frontmatter:{},regularPath:"/panel/1.0/upgrading.html",relativePath:"panel/1.0/upgrading.md",key:"v-46094903",path:"/panel/1.0/upgrading.html",headers:[{level:2,title:"Maintenance Mode",slug:"maintenance-mode"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Webserver Configuration",frontmatter:{},regularPath:"/panel/1.0/webserver_configuration.html",relativePath:"panel/1.0/webserver_configuration.md",key:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",headers:[{level:2,title:"NGINX",slug:"nginx"},{level:3,title:"NGINX With SSL",slug:"nginx-with-ssl"},{level:3,title:"NGINX Without SSL",slug:"nginx-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:2,title:"Apache",slug:"apache"},{level:3,title:"Apache With SSL",slug:"apache-with-ssl"},{level:3,title:"Apache Without SSL",slug:"apache-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"}]},{title:"About",frontmatter:{},regularPath:"/project/about.html",relativePath:"project/about.md",key:"v-a75af93a",path:"/project/about.html",headers:[{level:2,title:"Core Project Team",slug:"core-project-team"},{level:2,title:"Community Team",slug:"community-team"},{level:2,title:"License",slug:"license"},{level:2,title:"GPG Signature",slug:"gpg-signature"}]},{title:"Community Standards",frontmatter:{},regularPath:"/project/community.html",relativePath:"project/community.md",key:"v-22ba6d3a",path:"/project/community.html",headers:[{level:2,title:"Community Guidelines",slug:"community-guidelines"},{level:3,title:"Be Mature",slug:"be-mature"},{level:3,title:"Limit the Drama",slug:"limit-the-drama"},{level:3,title:"Be Patient",slug:"be-patient"},{level:3,title:"No Commercial Services",slug:"no-commercial-services"},{level:3,title:"No Mention or Ping Spam",slug:"no-mention-or-ping-spam"}]},{title:"Introduction",frontmatter:{},regularPath:"/project/introduction.html",relativePath:"project/introduction.md",key:"v-d6319362",path:"/project/introduction.html",headers:[{level:2,title:"Supported Games",slug:"supported-games"},{level:2,title:"Responsible Disclosure",slug:"responsible-disclosure"}]},{title:"Terminology",frontmatter:{},regularPath:"/project/terms.html",relativePath:"project/terms.md",key:"v-7b99cfba",path:"/project/terms.html",headers:[{level:2,title:"Example Setup Diagram",slug:"example-setup-diagram"}]},{title:"Creating SSL Certificates",frontmatter:{},regularPath:"/tutorials/creating_ssl_certificates.html",relativePath:"tutorials/creating_ssl_certificates.md",key:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",headers:[{level:2,title:"Method 1: Using Certbot",slug:"method-1-using-certbot"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate"},{level:3,title:"Auto Renewal",slug:"auto-renewal"},{level:3,title:"Troubleshooting",slug:"troubleshooting"},{level:2,title:"Method 2: Using acme.sh (Cloudflare)",slug:"method-2-using-acme-sh-cloudflare"},{level:3,title:"Obtaining CloudFlare API Key",slug:"obtaining-cloudflare-api-key"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-2"},{level:3,title:"Auto Renewal",slug:"auto-renewal-2"}]},{title:"Setting up MySQL",frontmatter:{},regularPath:"/tutorials/mysql_setup.html",relativePath:"tutorials/mysql_setup.md",key:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",headers:[{level:2,title:"Creating a database for Pterodactyl",slug:"creating-a-database-for-pterodactyl"},{level:3,title:"Logging In",slug:"logging-in"},{level:3,title:"Creating a user",slug:"creating-a-user"},{level:3,title:"Create a database",slug:"create-a-database"},{level:3,title:"Assigning permissions",slug:"assigning-permissions"},{level:2,title:"Creating a Database Host for Nodes",slug:"creating-a-database-host-for-nodes"},{level:3,title:"Creating a user",slug:"creating-a-user-2"},{level:3,title:"Assigning permissions",slug:"assigning-permissions-2"},{level:3,title:"Allowing external database access",slug:"allowing-external-database-access"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/wings/1.0/configuration.html",relativePath:"wings/1.0/configuration.md",key:"v-6cd19ba3",path:"/wings/1.0/configuration.html",headers:[{level:2,title:"Private Registries",slug:"private-registries"},{level:3,title:"Available Keys",slug:"available-keys"},{level:3,title:"Usage Example",slug:"usage-example"}]},{title:"Installing Wings",frontmatter:{},regularPath:"/wings/1.0/installing.html",relativePath:"wings/1.0/installing.md",key:"v-55eb8eca",path:"/wings/1.0/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:2,title:"Installing Wings",slug:"installing-wings-2"},{level:2,title:"Configure",slug:"configure"},{level:3,title:"Starting Wings",slug:"starting-wings"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"}]},{title:"Migrating to Wings",frontmatter:{},regularPath:"/wings/1.0/migrating.html",relativePath:"wings/1.0/migrating.md",key:"v-1ec46263",path:"/wings/1.0/migrating.html",headers:[{level:2,title:"Install Wings",slug:"install-wings"},{level:2,title:"Copy New Configuration File",slug:"copy-new-configuration-file"},{level:2,title:"Remove Old Daemon",slug:"remove-old-daemon"},{level:3,title:"Remove Standalone SFTP",slug:"remove-standalone-sftp"},{level:2,title:"Daemonize Wings",slug:"daemonize-wings"}]},{title:"Upgrading Wings",frontmatter:{},regularPath:"/wings/1.0/upgrading.html",relativePath:"wings/1.0/upgrading.md",key:"v-9213d4fa",path:"/wings/1.0/upgrading.html",headers:[{level:2,title:"Download Updated Binary",slug:"download-updated-binary"},{level:2,title:"Restart Process",slug:"restart-process"}]}],themeConfig:{repo:"pterodactyl/panel",docsRepo:"pterodactyl/documentation",repoLabel:"Contribute",editLinkText:"Help us improve this page.",editLinks:!0,logo:"/pterodactyl-flat.png",nav:[{text:"Documentation",link:"/project/introduction.md"},{text:"Community Guides",link:"/community/about.md"},{text:"Get Help",link:"https://pterodactyl.io/discord"},{text:"API",link:"https://dashflo.net/docs/api/pterodactyl/v1/"}],sidebar:{"/community/":[{title:"Community Guides",collapsable:!1,children:["/community/about.md"]},{title:"Panel Installation",collapsable:!1,children:["/community/installation-guides/panel/centos7.md","/community/installation-guides/panel/centos8.md","/community/installation-guides/panel/debian9.md","/community/installation-guides/panel/debian10.md","/community/installation-guides/panel/ubuntu1804.md","/community/installation-guides/panel/ubuntu2004.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian9.md","/community/installation-guides/wings/debian10.md","/community/installation-guides/wings/ubuntu1804.md","/community/installation-guides/wings/ubuntu2004.md"]},{title:"Creating Eggs",collapsable:!1,children:["/community/config/eggs/creating_a_custom_egg.md","/community/config/eggs/creating_a_custom_image.md"]},{title:"Game Configuration",collapsable:!1,children:["/community/games/minecraft.md"]},{title:"Tutorials",collapsable:!1,children:["/community/config/nodes/add_node.md","/community/tutorials/custom_theme_setup.md","/community/tutorials/artisan.md"]},{title:"Customization",collapsable:!1,children:["/community/customization/panel.md","/community/customization/wings.md"]}],"/":[{title:"Project Information",collapsable:!1,children:["/project/introduction.md","/project/about.md","/project/terms.md","/project/community.md"]},{title:"Panel",collapsable:!1,path:"/panel/",currentVersion:"1.0",versions:[{name:"0.7",status:"legacy",children:["/getting_started","/webserver_configuration","/upgrading","/configuration","/troubleshooting"]},{name:"1.0",status:"stable",children:["/getting_started","/webserver_configuration","/upgrading","/additional_configuration"]}]},{title:"Wings",collapsable:!1,path:"/wings/",currentVersion:"1.0",versions:[{name:"1.0",status:"stable",children:["/installing","/upgrading","/migrating","/configuration"]}]},{title:"Daemon",collapsable:!1,path:"/daemon/",versions:[{name:"0.6",status:"legacy",children:["/installing","/upgrading","/configuration","/kernel_modifications","/debian_8_docker","/standalone_sftp"]}]},{title:"Tutorials",collapsable:!1,children:["/tutorials/mysql_setup.md","/tutorials/creating_ssl_certificates.md"]},{title:"Guides",collapsable:!1,children:["/guides/mounts.md"]},{title:"Development & Ops",collapsable:!0,children:["/ops/publish_release.md"]}]}}},ke=(n(297),n(299),n(300),n(179),n(76),n(107));function Oe(){for(var t="/",e=new RegExp(t+"{1,}","g"),n=arguments.length,r=new Array(n),i=0;i0}var Ue={props:{pageKey:String,slotKey:{type:String,default:"default"}},render:function(t){var e=this.pageKey||this.$parent.$page.key;return fe("pageKey",e),o.a.component(e)||o.a.component(e,ae(e)),o.a.component(e)?t(e):t("")}},Fe={functional:!0,props:{slotKey:String,required:!0},render:function(t,e){var n=e.props,r=e.slots;return t("div",{class:["content__".concat(n.slotKey)]},r()[n.slotKey])}},ze=(n(306),Object(_e.a)({},(function(t,e){var n=e._c;return n("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[n("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),e._v(" "),n("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})])}),[],!0,null,null,null).exports);function Be(){return(Be=i(regeneratorRuntime.mark((function t(e){var n,r,i,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n="undefined"!=typeof window&&window.__VUEPRESS_ROUTER_BASE__?window.__VUEPRESS_ROUTER_BASE__:Se.routerBase||Se.base,Me(r=new Bt({base:n,mode:"history",fallback:!1,routes:xe,scrollBehavior:function(t,e,n){return n||(t.hash?!o.a.$vuepress.$get("disableScrollBehavior")&&{selector:t.hash}:{x:0,y:0})}})),i={},t.prev=4,t.next=7,Promise.all(Ce.filter((function(t){return"function"==typeof t})).map((function(t){return t({Vue:o.a,options:i,router:r,siteData:Se,isServer:e})})));case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(4),console.error(t.t0);case 12:return a=new o.a(Object.assign(i,{router:r,render:function(t){return t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},je.map((function(e){return t(e)})))])}})),t.abrupt("return",{app:a,router:r});case 14:case"end":return t.stop()}}),t,null,[[4,9]])})))).apply(this,arguments)}o.a.config.productionTip=!1,o.a.use(Bt),o.a.use(De),o.a.mixin(function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.a;qt(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),i=new r,a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(i)),u={};return Object.keys(a).reduce((function(t,e){return e.startsWith("$")&&(t[e]=a[e].get),t}),u),{computed:u}}((function(t){return function(){function e(){Pe(this,e)}return Ae(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var i in r)"/"===i?e=r[i]:0===this.$page.path.indexOf(i)&&(t=r[i]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n - + @@ -38,6 +38,6 @@ feel are important to share with the community, but do not fit into the theme of our core documentation.

    Here you'll find in-depth OS-specific installation guides, advanced network configurations, individual game setup instructions, and so much more.

    - + diff --git a/community/config/eggs/creating_a_custom_egg.html b/community/config/eggs/creating_a_custom_egg.html index 2327abc7..fdca0965 100644 --- a/community/config/eggs/creating_a_custom_egg.html +++ b/community/config/eggs/creating_a_custom_egg.html @@ -14,7 +14,7 @@ - + @@ -60,7 +60,7 @@ block prior to booting the server to ensure all of the required settings are def } }

    In this example, we are telling the Daemon to read server.properties in /home/container. Within this block, we -define a parser, in this case properties but the following are valid parsers:

    • file — This parser goes based on matching the beginning of lines, and not a specific property like the other four. +define a parser, in this case properties but the following are valid parsers:

      • file — This parser goes based on matching the beginning of lines, and not a specific property like the other four. Avoid using this parser if possible.
      • yaml (supports * notation)
      • properties
      • ini
      • json (supports * notation)
      • xml

      Once you have defined a parser, we then define a find block which tells the Daemon what specific elements to find and replace. In this example, we have provided four separate items within the server.properties file that we want to find and replace to the assigned values. You can use either an exact value, or define a specific server setting from @@ -124,6 +124,6 @@ regex as any letters or numbers (\w\d) including underscore (Ubuntu 20.04

      - + diff --git a/community/config/eggs/creating_a_custom_image.html b/community/config/eggs/creating_a_custom_image.html index e688ff71..7e0ddf1b 100644 --- a/community/config/eggs/creating_a_custom_image.html +++ b/community/config/eggs/creating_a_custom_image.html @@ -14,7 +14,7 @@ - + @@ -99,6 +99,6 @@ curly braces {{EXAMPLE}} with a matching environment variable (such ← Creating a Custom Egg
      - + diff --git a/community/config/nodes/add_node.html b/community/config/nodes/add_node.html index c2b52d84..a37cdf8d 100644 --- a/community/config/nodes/add_node.html +++ b/community/config/nodes/add_node.html @@ -14,7 +14,7 @@ - + @@ -47,6 +47,6 @@ for more information, or try one of the community guides for Minecraft
      - + diff --git a/community/customization/panel.html b/community/customization/panel.html index 954fb048..3c30d49b 100644 --- a/community/customization/panel.html +++ b/community/customization/panel.html @@ -14,7 +14,7 @@ - + @@ -51,6 +51,6 @@ This also applies to style sheets. The following sections explain how to do so.< ← Artisan CLI
      - + diff --git a/community/customization/wings.html b/community/customization/wings.html index 5e07a937..6da71cb8 100644 --- a/community/customization/wings.html +++ b/community/customization/wings.html @@ -14,7 +14,7 @@ - + @@ -46,6 +46,6 @@ systemctl start wings
      - + diff --git a/community/games/minecraft.html b/community/games/minecraft.html index 8f0d900e..86995380 100644 --- a/community/games/minecraft.html +++ b/community/games/minecraft.html @@ -14,7 +14,7 @@ - + @@ -40,6 +40,6 @@ ← Creating a Custom Docker Image
      - + diff --git a/community/installation-guides/panel/centos7.html b/community/installation-guides/panel/centos7.html index 14e1f238..61d91910 100644 --- a/community/installation-guides/panel/centos7.html +++ b/community/installation-guides/panel/centos7.html @@ -14,7 +14,7 @@ - + @@ -168,6 +168,6 @@ server { ← Community Guides and Tutorials
      - + diff --git a/community/installation-guides/panel/centos8.html b/community/installation-guides/panel/centos8.html index 55f01c18..53dced96 100644 --- a/community/installation-guides/panel/centos8.html +++ b/community/installation-guides/panel/centos8.html @@ -14,7 +14,7 @@ - + @@ -151,6 +151,6 @@ server { ← CentOS 7
      - + diff --git a/community/installation-guides/panel/debian10.html b/community/installation-guides/panel/debian10.html index c7fb9e87..7afac8b9 100644 --- a/community/installation-guides/panel/debian10.html +++ b/community/installation-guides/panel/debian10.html @@ -14,7 +14,7 @@ - + @@ -130,6 +130,6 @@ server { ← Debian 9
      - + diff --git a/community/installation-guides/panel/debian9.html b/community/installation-guides/panel/debian9.html index 2df210a0..d687dc90 100644 --- a/community/installation-guides/panel/debian9.html +++ b/community/installation-guides/panel/debian9.html @@ -14,7 +14,7 @@ - + @@ -137,6 +137,6 @@ server { ← CentOS 8
      - + diff --git a/community/installation-guides/panel/ubuntu1804.html b/community/installation-guides/panel/ubuntu1804.html index 6ba3a86d..0cc16116 100644 --- a/community/installation-guides/panel/ubuntu1804.html +++ b/community/installation-guides/panel/ubuntu1804.html @@ -14,7 +14,7 @@ - + @@ -130,6 +130,6 @@ server { ← Debian 10
      - + diff --git a/community/installation-guides/panel/ubuntu2004.html b/community/installation-guides/panel/ubuntu2004.html index 82bb907a..9e67f562 100644 --- a/community/installation-guides/panel/ubuntu2004.html +++ b/community/installation-guides/panel/ubuntu2004.html @@ -14,7 +14,7 @@ - + @@ -130,6 +130,6 @@ server { ← Ubuntu 18.04
      - + diff --git a/community/installation-guides/wings/centos7.html b/community/installation-guides/wings/centos7.html index e1a127d4..96ab264b 100644 --- a/community/installation-guides/wings/centos7.html +++ b/community/installation-guides/wings/centos7.html @@ -14,7 +14,7 @@ - + @@ -55,6 +55,6 @@ firewall-cmd --reload ← Ubuntu 20.04
      - + diff --git a/community/installation-guides/wings/centos8.html b/community/installation-guides/wings/centos8.html index f3ffb40e..adec340b 100644 --- a/community/installation-guides/wings/centos8.html +++ b/community/installation-guides/wings/centos8.html @@ -14,7 +14,7 @@ - + @@ -55,6 +55,6 @@ firewall-cmd --reload ← CentOS 7
      - + diff --git a/community/installation-guides/wings/debian10.html b/community/installation-guides/wings/debian10.html index 9d951053..f12a7d08 100644 --- a/community/installation-guides/wings/debian10.html +++ b/community/installation-guides/wings/debian10.html @@ -14,7 +14,7 @@ - + @@ -54,6 +54,6 @@ systemctl start docker ← Debian 9
      - + diff --git a/community/installation-guides/wings/debian9.html b/community/installation-guides/wings/debian9.html index 7560faf6..567e4316 100644 --- a/community/installation-guides/wings/debian9.html +++ b/community/installation-guides/wings/debian9.html @@ -14,7 +14,7 @@ - + @@ -54,6 +54,6 @@ systemctl start docker ← CentOS 8
      - + diff --git a/community/installation-guides/wings/ubuntu1804.html b/community/installation-guides/wings/ubuntu1804.html index 5b1e31e6..c9c6b136 100644 --- a/community/installation-guides/wings/ubuntu1804.html +++ b/community/installation-guides/wings/ubuntu1804.html @@ -14,7 +14,7 @@ - + @@ -44,6 +44,6 @@ systemctl start docker ← Debian 10
      - + diff --git a/community/installation-guides/wings/ubuntu2004.html b/community/installation-guides/wings/ubuntu2004.html index 16aadc5b..30bdf6f3 100644 --- a/community/installation-guides/wings/ubuntu2004.html +++ b/community/installation-guides/wings/ubuntu2004.html @@ -14,7 +14,7 @@ - + @@ -44,6 +44,6 @@ systemctl start docker ← Ubuntu 18.04
      - + diff --git a/community/tutorials/artisan.html b/community/tutorials/artisan.html index b4666db4..2b8a9586 100644 --- a/community/tutorials/artisan.html +++ b/community/tutorials/artisan.html @@ -14,7 +14,7 @@ - + @@ -61,6 +61,6 @@ ← Creating a theme for Pterodactyl
      - + diff --git a/community/tutorials/custom_theme_setup.html b/community/tutorials/custom_theme_setup.html index a62e774d..918c3222 100644 --- a/community/tutorials/custom_theme_setup.html +++ b/community/tutorials/custom_theme_setup.html @@ -14,7 +14,7 @@ - + @@ -57,6 +57,6 @@ Open up your .env file and locate APP_THEME=pterodactylCreating a New Node
      - + diff --git a/daemon/0.6/configuration.html b/daemon/0.6/configuration.html index 5047b8b6..778992d7 100644 --- a/daemon/0.6/configuration.html +++ b/daemon/0.6/configuration.html @@ -14,7 +14,7 @@ - + @@ -100,6 +100,6 @@ a private instance and are willing to decrease some of the security measures.

      , ]

      # Enabling Cloudflare

      Enabling Cloudflare on the daemon isn't particularly useful since users do not connect directly to the daemon port, and users need an unproxied hostname to access any servers on the node. As a result it's not possible to conceal the IP address of your node machine, but some people want to enable it regardless.

      Cloudflare only proxies the default daemon port (8080) when using HTTP. In order to get the daemon to work with Cloudflare when HTTPS is enabled you must change the daemon port to one that Cloudflare will proxy such as 8443. Since Cloudflare only proxies HTTP/HTTPS traffic for non-enterprise plans you cannot proxy the SFTP port.

      - + diff --git a/daemon/0.6/debian_8_docker.html b/daemon/0.6/debian_8_docker.html index 5d26446a..6b09dfe2 100644 --- a/daemon/0.6/debian_8_docker.html +++ b/daemon/0.6/debian_8_docker.html @@ -14,7 +14,7 @@ - + @@ -74,6 +74,6 @@ supported on this kernel currently. Run the command below to do so.

      Finally, update systemd and start docker using the following commands.

      systemctl daemon-reload
       service docker start
       

      Docker should now be running and reporting no errors if you run docker info!

      - + diff --git a/daemon/0.6/installing.html b/daemon/0.6/installing.html index 8e450c82..19a4d835 100644 --- a/daemon/0.6/installing.html +++ b/daemon/0.6/installing.html @@ -14,7 +14,7 @@ - + @@ -105,6 +105,6 @@ StartLimitInterval=600 WantedBy=multi-user.target

      Then, run the commands below to reload systemd and start the daemon.

      systemctl enable --now wings
       
      - + diff --git a/daemon/0.6/kernel_modifications.html b/daemon/0.6/kernel_modifications.html index 6f941aa5..58b721ca 100644 --- a/daemon/0.6/kernel_modifications.html +++ b/daemon/0.6/kernel_modifications.html @@ -14,7 +14,7 @@ - + @@ -74,6 +74,6 @@ command and also the version of the kernel that we installed above. Once you've update grub and reboot, and you should be set.

      sudo update-grub
       sudo reboot
       

      # Boot from hard disk

      It's possible that even after you modified the GRUB configuration the server's still booted into a OVH kernel. If this happens to you, go to the OVH control panel and check the server's booting settings and make sure it's booting from hard disk instead of network boot.

      - + diff --git a/daemon/0.6/standalone_sftp.html b/daemon/0.6/standalone_sftp.html index 59d8b4fe..2ac79a5c 100644 --- a/daemon/0.6/standalone_sftp.html +++ b/daemon/0.6/standalone_sftp.html @@ -14,7 +14,7 @@ - + @@ -87,6 +87,6 @@ WantedBy=multi-user.target

      Then, run the command below to enable it in systemd and start the SFTP server.

      systemctl enable --now pterosftp
       

      # Customizing Startup

      If you're trying to pass additional arguments to the server when starting it using SystemD you'll want to modify the ExecStart line. Something like ExecStart=/srv/daemon/sftp-server --port 2022 for example.

      - + diff --git a/daemon/0.6/upgrade/0.4_to_0.5.html b/daemon/0.6/upgrade/0.4_to_0.5.html index 93ea3c17..df555900 100644 --- a/daemon/0.6/upgrade/0.4_to_0.5.html +++ b/daemon/0.6/upgrade/0.4_to_0.5.html @@ -14,7 +14,7 @@ - + @@ -78,6 +78,6 @@ well as push the latest information to their configurations. Once this is done, and then boot it. If you have all daemons running and wish to update them all at once, remove the --node flag.

      Boot the Daemon one last time in the foreground, make sure it completes without errors, and then you can stop it and restart it using your service: sudo systemctl start wings.

      Thanks!

      You're all finished! Thanks for bearing with us, this update addresses a lot of flaws in the previous implementations of the software, and also prepares your data for the eventual migration to our new daemon — which is still in the works.

      - + diff --git a/daemon/0.6/upgrade/0.5.html b/daemon/0.6/upgrade/0.5.html index a38c51d9..1415c562 100644 --- a/daemon/0.6/upgrade/0.5.html +++ b/daemon/0.6/upgrade/0.5.html @@ -14,7 +14,7 @@ - + @@ -55,6 +55,6 @@ that, run the command below to pull down the latest files and unpack them in the components and then restart the daemon.

      npm update --only=production
       systemctl restart wings
       
      - + diff --git a/daemon/0.6/upgrade/0.5_to_0.6.html b/daemon/0.6/upgrade/0.5_to_0.6.html index 740cdb81..f885d45e 100644 --- a/daemon/0.6/upgrade/0.5_to_0.6.html +++ b/daemon/0.6/upgrade/0.5_to_0.6.html @@ -14,7 +14,7 @@ - + @@ -65,6 +65,6 @@ you will not be able to see any console output.

      Run the following command ID of the node you just upgraded, or remove the --node flag entirely to rebuild on all nodes.

      php artisan p:server:rebuild --node=###
       

      Then, restart all of the servers using the following command, or by manually restarting them one at a time in the Panel.

      php artisan p:server:bulk-power restart --nodes=###
       
      - + diff --git a/daemon/0.6/upgrade/0.6.html b/daemon/0.6/upgrade/0.6.html index 4e00d14d..236a096e 100644 --- a/daemon/0.6/upgrade/0.6.html +++ b/daemon/0.6/upgrade/0.6.html @@ -14,7 +14,7 @@ - + @@ -57,6 +57,6 @@ you are running at least version 10. You can run node -v to check, You can safely ignore this output. Do not run the audit fix command, you will break your Daemon.

      npm install --only=production --no-audit --unsafe-perm
       systemctl restart wings
       
      - + diff --git a/daemon/0.6/upgrading.html b/daemon/0.6/upgrading.html index b97d9626..de3e1cb4 100644 --- a/daemon/0.6/upgrading.html +++ b/daemon/0.6/upgrading.html @@ -14,7 +14,7 @@ - + @@ -49,6 +49,6 @@ legacy

    - + diff --git a/guides/mounts.html b/guides/mounts.html index 6dd06d76..e37fabb3 100644 --- a/guides/mounts.html +++ b/guides/mounts.html @@ -14,7 +14,7 @@ - + @@ -55,6 +55,6 @@ ← Creating SSL Certificates
    - + diff --git a/index.html b/index.html index 2803bf90..8b515419 100644 --- a/index.html +++ b/index.html @@ -14,7 +14,7 @@ - + @@ -59,6 +59,6 @@

    We're committed to building the best software that we can, and have been working with game management panels for almost five years now. We've seen games change, and are committed to making the most flexible, lightweight, and future proof panel that we can.

    - + diff --git a/ops/publish_release.html b/ops/publish_release.html index 263b5279..317f37cb 100644 --- a/ops/publish_release.html +++ b/ops/publish_release.html @@ -14,7 +14,7 @@ - + @@ -95,6 +95,6 @@ gpg --detach-sig --output panel.asc panel.tar.gz
    - + diff --git a/panel/0.7/configuration.html b/panel/0.7/configuration.html index e0cbd1bf..7ff69751 100644 --- a/panel/0.7/configuration.html +++ b/panel/0.7/configuration.html @@ -14,7 +14,7 @@ - + @@ -85,6 +85,6 @@ also be set using the .env file. The default value is 50,000<

    # Disable or Modify ReCaptcha

    To disable reCAPTCHA on login or password reset, simply set RECAPTCHA_ENABLED=false in the environment file. This change will take effect immediately.

    # Using Your Own Keys

    Pterodactyl comes preconfigured using a public set of reCAPTCHA keys but you may wish to use your own site specific keys. To do so, follow the instructions below.

    1. Visit Google's reCAPTCHA Admin Console.
    2. Click "Register New Site" and fill in a name for your keys.
    3. Choose reCAPTCHA v2 and ensure that the option for Invisible is selected.
    4. Include the domain that your panel is located on.
    5. On the next page displayed, locate the "Site Key" and "Secret Key". In Pterodactyl's control panel click on "Settings" and then the "Advanced" tab. Enter the keys in the boxes "Site Key" and "Secret Key", respectively.

    Disabling Domain Verification

    If you do not want reCAPTCHA to verify the domain making the validation request you can uncheck "Verify the origin of reCaptcha solution" under "Advanced Settings" after generating your key.

    - + diff --git a/panel/0.7/getting_started.html b/panel/0.7/getting_started.html index 1c6f1ad2..a5517ea9 100644 --- a/panel/0.7/getting_started.html +++ b/panel/0.7/getting_started.html @@ -14,7 +14,7 @@ - + @@ -144,6 +144,6 @@ WantedBy=multi-user.target when the service starts.

    If you are are using redis for your system, you will want to make sure to enable that it will start on boot. You can do that by running the following command:

    sudo systemctl enable --now redis-server
     

    Finally, enable the service and set it to boot on machine start.

    sudo systemctl enable --now pteroq.service
     

    # Next Step: Webserver Configuration

    - + diff --git a/panel/0.7/troubleshooting.html b/panel/0.7/troubleshooting.html index d24af089..62a006eb 100644 --- a/panel/0.7/troubleshooting.html +++ b/panel/0.7/troubleshooting.html @@ -14,7 +14,7 @@ - + @@ -99,6 +99,6 @@ semodule -i http_port_t.pp firewall-cmd --reload

    restart docker and wings after running these to be sure the rules are applied.

    # Database Errors

    # DatabaseController.php:142

    production.ERROR: ErrorException: Undefined variable: host in /var/www/pterodactyl/app/Http/Controllers/Admin/DatabaseController.php:142
     

    The database user you are trying to use doesn't have appropriate grants/has used incorrect password.

    - + diff --git a/panel/0.7/upgrade/0.6_to_0.7.html b/panel/0.7/upgrade/0.6_to_0.7.html index 61ba753d..b47512f9 100644 --- a/panel/0.7/upgrade/0.6_to_0.7.html +++ b/panel/0.7/upgrade/0.6_to_0.7.html @@ -14,7 +14,7 @@ - + @@ -85,6 +85,6 @@ is www-data but can vary from system to system — sometimes being # If using Apache on CentOS chown -R apache:apache *
    - + diff --git a/panel/0.7/upgrade/0.7.html b/panel/0.7/upgrade/0.7.html index b921d840..af9026a8 100644 --- a/panel/0.7/upgrade/0.7.html +++ b/panel/0.7/upgrade/0.7.html @@ -14,7 +14,7 @@ - + @@ -75,6 +75,6 @@ is www-data but can vary from system to system — sometimes being # If using Apache on CentOS chown -R apache:apache *
    - + diff --git a/panel/0.7/upgrading.html b/panel/0.7/upgrading.html index 0882eddc..f3db3819 100644 --- a/panel/0.7/upgrading.html +++ b/panel/0.7/upgrading.html @@ -14,7 +14,7 @@ - + @@ -57,6 +57,6 @@ php artisan down php artisan up

    # Restarting Queue Workers

    After every update, you should restart the queue worker to ensure that the new code is being loaded in and used.

    php artisan queue:restart
     

    # Version Specific Guides

    - + diff --git a/panel/0.7/webserver_configuration.html b/panel/0.7/webserver_configuration.html index 7c8b66bf..20c60d5b 100644 --- a/panel/0.7/webserver_configuration.html +++ b/panel/0.7/webserver_configuration.html @@ -14,7 +14,7 @@ - + @@ -203,6 +203,6 @@ below! You only need to run systemctl restart httpd.

    sudo a2enmod rewrite systemctl restart apache2
    - + diff --git a/panel/1.0/additional_configuration.html b/panel/1.0/additional_configuration.html index 66c35671..7e5b8a44 100644 --- a/panel/1.0/additional_configuration.html +++ b/panel/1.0/additional_configuration.html @@ -14,7 +14,7 @@ - + @@ -60,6 +60,6 @@

    # reCAPTCHA

    The Panel uses invisible reCAPTCHA to secure the login page from brute-force attacks. If the login attempt is considered suspicious, users may be required to perform a reCAPTCHA challenge.

    # Configuring reCAPTCHA

    While we provide a global Site Key and Secret Key by default, we highly recommend changing it for your own setup.

    You can generate your own keys in the reCAPTCHA Admin Console.

    The keys can then be applied using the Settings in the admin panel. The reCAPTCHA settings can be found on the Advanced

    # Disabling reCAPTCHA

    SECURITY WARNING

    We do not recommend disabling reCAPTCHA. It is a security mechanism that makes it harder to perform brute-force attacks on user accounts.

    If users have trouble logging in, or your Panel isn't exposed to the internet, in can make sense to disable reCAPTCHA.

    reCAPTCHA can easily be disabled using the admin panel. In the Settings, select the Advanced tab and set the Status of reCAPTCHA to disabled.

    # Editing your database

    If you cannot access your panel, you can modify the database directly using the following commands.

    mysql -u root -p
     UPDATE panel.settings SET value = 'false' WHERE `key` = 'settings::recaptcha:enabled';
     
    - + diff --git a/panel/1.0/getting_started.html b/panel/1.0/getting_started.html index 18795538..c542256a 100644 --- a/panel/1.0/getting_started.html +++ b/panel/1.0/getting_started.html @@ -14,7 +14,7 @@ - + @@ -137,6 +137,6 @@ WantedBy=multi-user.target when the service starts.

    If you are are using redis for your system, you will want to make sure to enable that it will start on boot. You can do that by running the following command:

    sudo systemctl enable --now redis-server
     

    Finally, enable the service and set it to boot on machine start.

    sudo systemctl enable --now pteroq.service
     

    # Next Step: Webserver Configuration

    - + diff --git a/panel/1.0/upgrade/0.7_to_1.0.html b/panel/1.0/upgrade/0.7_to_1.0.html index b5c0b632..d80b6a6f 100644 --- a/panel/1.0/upgrade/0.7_to_1.0.html +++ b/panel/1.0/upgrade/0.7_to_1.0.html @@ -14,7 +14,7 @@ - + @@ -95,6 +95,6 @@ php artisan up

    # Switch to Wings

    We've deprecated the old Node.js daemon in favor of Wings, our new server control plane written in Go. This new system is significantly faster, easier to install, and much smaller. All you need to do is install a single binary on your system and configure it to run on boot.

    You cannot use the old daemon to run servers with Pterodactyl Panel 1.0.

    Please see Migrating to Wings for instructions.

    - + diff --git a/panel/1.0/upgrade/1.0.html b/panel/1.0/upgrade/1.0.html index c2715079..891222af 100644 --- a/panel/1.0/upgrade/1.0.html +++ b/panel/1.0/upgrade/1.0.html @@ -14,7 +14,7 @@ - + @@ -75,6 +75,6 @@ is www-data but can vary from system to system — sometimes being chown -R apache:apache *

    # Restarting Queue Workers

    After every update you should restart the queue worker to ensure that the new code is loaded in and used.

    php artisan queue:restart
     
    - + diff --git a/panel/1.0/upgrading.html b/panel/1.0/upgrading.html index 9858eeb1..345b26cd 100644 --- a/panel/1.0/upgrading.html +++ b/panel/1.0/upgrading.html @@ -14,7 +14,7 @@ - + @@ -58,6 +58,6 @@ php artisan down php artisan up

    # Restarting Queue Workers

    After every update you should restart the queue worker to ensure that the new code is loaded in and used.

    php artisan queue:restart
     

    # Version Specific Guides

    - + diff --git a/panel/1.0/webserver_configuration.html b/panel/1.0/webserver_configuration.html index 5cf3e20f..72697817 100644 --- a/panel/1.0/webserver_configuration.html +++ b/panel/1.0/webserver_configuration.html @@ -14,7 +14,7 @@ - + @@ -203,6 +203,6 @@ below! You only need to run systemctl restart httpd.

    sudo a2enmod rewrite systemctl restart apache2
    - + diff --git a/project/about.html b/project/about.html index ab67d6bb..e48c640d 100644 --- a/project/about.html +++ b/project/about.html @@ -14,7 +14,7 @@ - + @@ -123,6 +123,6 @@ gkSI5o2kam0QGYUhqg== ← Introduction
    - + diff --git a/project/community.html b/project/community.html index 0e8bb4c6..c4af32e3 100644 --- a/project/community.html +++ b/project/community.html @@ -14,7 +14,7 @@ - + @@ -73,6 +73,6 @@ directly if they're not already involved in a discussion with you.

    Terminology
    - + diff --git a/project/introduction.html b/project/introduction.html index a97013af..e8171229 100644 --- a/project/introduction.html +++ b/project/introduction.html @@ -14,7 +14,7 @@ - + @@ -58,6 +58,6 @@ code base and hunt for security issues. If you come across anything that raises hesitate to reach out directly to support@pterodactyl.io. We ask that you please be responsible when disclosing any security concerns and do not report them on our public facing bug tracker.

    - + diff --git a/project/terms.html b/project/terms.html index 0a9aa34f..c42f3284 100644 --- a/project/terms.html +++ b/project/terms.html @@ -14,7 +14,7 @@ - + @@ -57,6 +57,6 @@ created on nodes, and you can have multiple servers per node.

    Con ← About

    - + diff --git a/tutorials/creating_ssl_certificates.html b/tutorials/creating_ssl_certificates.html index c5c65dbe..ab3ca2e8 100644 --- a/tutorials/creating_ssl_certificates.html +++ b/tutorials/creating_ssl_certificates.html @@ -14,7 +14,7 @@ - + @@ -87,6 +87,6 @@ This will happen especially if you're running NGINX instead of Apache. The solut ← Setting up MySQL
    - + diff --git a/tutorials/mysql_setup.html b/tutorials/mysql_setup.html index 48134a9e..209102cd 100644 --- a/tutorials/mysql_setup.html +++ b/tutorials/mysql_setup.html @@ -14,7 +14,7 @@ - + @@ -79,6 +79,6 @@ bind-address=0.0.0.0 ← Community Standards
    - + diff --git a/wings/1.0/configuration.html b/wings/1.0/configuration.html index 59f593d7..f31694e5 100644 --- a/wings/1.0/configuration.html +++ b/wings/1.0/configuration.html @@ -14,7 +14,7 @@ - + @@ -55,6 +55,6 @@ you configure something incorrectly. Proceed only if you know what each configur username: "registryusername" password: "registrypassword"
    - + diff --git a/wings/1.0/installing.html b/wings/1.0/installing.html index f22bb62c..2ba54bee 100644 --- a/wings/1.0/installing.html +++ b/wings/1.0/installing.html @@ -14,7 +14,7 @@ - + @@ -100,6 +100,6 @@ StartLimitInterval=600 WantedBy=multi-user.target

    Then, run the commands below to reload systemd and start Wings.

    systemctl enable --now wings
     
    - + diff --git a/wings/1.0/migrating.html b/wings/1.0/migrating.html index fe274329..cc46bfa6 100644 --- a/wings/1.0/migrating.html +++ b/wings/1.0/migrating.html @@ -14,7 +14,7 @@ - + @@ -98,6 +98,6 @@ systemctl enable --now wings

    What if Wings doesn't start?

    If you encounter issues starting Wings at this point, run the following command to start Wings directly and check for any specific error output.

    sudo wings --debug
     
    - + diff --git a/wings/1.0/upgrading.html b/wings/1.0/upgrading.html index 3223cbb4..f910a1e9 100644 --- a/wings/1.0/upgrading.html +++ b/wings/1.0/upgrading.html @@ -14,7 +14,7 @@ - + @@ -53,6 +53,6 @@

    # Restart Process

    Finally, restart the wings process. Your running servers will not be affected and any open connections to the instance will re-connect automatically.

    systemctl restart wings
     
    - +