From 3b178b6dad20686dadd9d40f895d1962260768f2 Mon Sep 17 00:00:00 2001 From: rowansc1 Date: Fri, 29 Nov 2024 19:03:21 +0000 Subject: [PATCH] deploy: 31d3cec45032a94fb6ee04092b7cedac872e8c5b --- 404.html | 4 ++-- assets/js/{10.0c82a32f.js => 10.08b9c98e.js} | 2 +- assets/js/{11.d107c8b2.js => 11.e264572d.js} | 2 +- assets/js/{21.d99db7fa.js => 21.aecdb4c4.js} | 2 +- assets/js/{30.9c360be1.js => 29.173d87c8.js} | 2 +- assets/js/{29.26f1f5b0.js => 30.2d8ee53c.js} | 2 +- assets/js/{31.bbfc69d7.js => 31.1a5025b8.js} | 2 +- assets/js/{33.7c770712.js => 33.d38817c1.js} | 2 +- assets/js/{34.4bfbb308.js => 34.49d78ff7.js} | 2 +- assets/js/{35.28ffe57a.js => 35.a04be06d.js} | 2 +- assets/js/{4.0da8214b.js => 4.1c05de3a.js} | 2 +- assets/js/{40.8da7d440.js => 40.34edc760.js} | 2 +- assets/js/{41.24a4fd9a.js => 41.368a213d.js} | 2 +- assets/js/{48.07ebc20a.js => 48.c19ab66e.js} | 2 +- assets/js/{49.342049a1.js => 49.69c43084.js} | 2 +- assets/js/{55.b1c9bca1.js => 55.a226dbb6.js} | 2 +- assets/js/{56.d3abdaf4.js => 56.f682278e.js} | 2 +- assets/js/{57.f50380a8.js => 57.5d950550.js} | 2 +- assets/js/{67.1e397491.js => 67.275f5b02.js} | 2 +- assets/js/{69.d04c26ab.js => 69.3809eab0.js} | 2 +- assets/js/{70.20bc2184.js => 70.cbd191fe.js} | 2 +- assets/js/{9.90f962cd.js => 9.3e9e31a6.js} | 2 +- assets/js/app.109f38d9.js | 19 ------------------- assets/js/app.747e3783.js | 19 +++++++++++++++++++ community/about.html | 4 ++-- .../config/eggs/creating_a_custom_egg.html | 4 ++-- .../config/eggs/creating_a_custom_image.html | 4 ++-- community/config/nodes/add_node.html | 4 ++-- community/customization/panel.html | 4 ++-- community/customization/wings.html | 4 ++-- community/games/minecraft.html | 4 ++-- .../installation-guides/panel/centos7.html | 4 ++-- .../installation-guides/panel/centos8.html | 4 ++-- .../installation-guides/panel/debian.html | 4 ++-- .../installation-guides/wings/centos7.html | 4 ++-- .../installation-guides/wings/centos8.html | 4 ++-- .../installation-guides/wings/debian.html | 4 ++-- community/tutorials/artisan.html | 4 ++-- daemon/0.6/configuration.html | 4 ++-- daemon/0.6/debian_8_docker.html | 4 ++-- daemon/0.6/installing.html | 4 ++-- daemon/0.6/kernel_modifications.html | 4 ++-- daemon/0.6/standalone_sftp.html | 4 ++-- daemon/0.6/upgrade/0.4_to_0.5.html | 4 ++-- daemon/0.6/upgrade/0.5.html | 4 ++-- daemon/0.6/upgrade/0.5_to_0.6.html | 4 ++-- daemon/0.6/upgrade/0.6.html | 4 ++-- daemon/0.6/upgrading.html | 4 ++-- guides/mounts.html | 4 ++-- guides/php_upgrade.html | 4 ++-- index.html | 6 +++--- panel/0.7/configuration.html | 4 ++-- panel/0.7/getting_started.html | 4 ++-- panel/0.7/troubleshooting.html | 4 ++-- panel/0.7/upgrade/0.6_to_0.7.html | 4 ++-- panel/0.7/upgrade/0.7.html | 4 ++-- panel/0.7/upgrading.html | 4 ++-- panel/0.7/webserver_configuration.html | 4 ++-- panel/1.0/additional_configuration.html | 4 ++-- panel/1.0/getting_started.html | 4 ++-- panel/1.0/legacy_upgrade.html | 4 ++-- panel/1.0/troubleshooting.html | 4 ++-- panel/1.0/updating.html | 4 ++-- panel/1.0/webserver_configuration.html | 4 ++-- project/about.html | 4 ++-- project/community.html | 4 ++-- project/introduction.html | 6 +++--- project/terms.html | 4 ++-- tutorials/creating_ssl_certificates.html | 4 ++-- tutorials/mysql_setup.html | 4 ++-- wings/1.0/configuration.html | 4 ++-- wings/1.0/installing.html | 4 ++-- wings/1.0/migrating.html | 4 ++-- wings/1.0/upgrading.html | 4 ++-- 74 files changed, 144 insertions(+), 144 deletions(-) rename assets/js/{10.0c82a32f.js => 10.08b9c98e.js} (99%) rename assets/js/{11.d107c8b2.js => 11.e264572d.js} (97%) rename assets/js/{21.d99db7fa.js => 21.aecdb4c4.js} (98%) rename assets/js/{30.9c360be1.js => 29.173d87c8.js} (68%) rename assets/js/{29.26f1f5b0.js => 30.2d8ee53c.js} (68%) rename assets/js/{31.bbfc69d7.js => 31.1a5025b8.js} (88%) rename assets/js/{33.7c770712.js => 33.d38817c1.js} (98%) rename assets/js/{34.4bfbb308.js => 34.49d78ff7.js} (98%) rename assets/js/{35.28ffe57a.js => 35.a04be06d.js} (99%) rename assets/js/{4.0da8214b.js => 4.1c05de3a.js} (83%) rename assets/js/{40.8da7d440.js => 40.34edc760.js} (90%) rename assets/js/{41.24a4fd9a.js => 41.368a213d.js} (99%) rename assets/js/{48.07ebc20a.js => 48.c19ab66e.js} (98%) rename assets/js/{49.342049a1.js => 49.69c43084.js} (97%) rename assets/js/{55.b1c9bca1.js => 55.a226dbb6.js} (99%) rename assets/js/{56.d3abdaf4.js => 56.f682278e.js} (98%) rename assets/js/{57.f50380a8.js => 57.5d950550.js} (96%) rename assets/js/{67.1e397491.js => 67.275f5b02.js} (71%) rename assets/js/{69.d04c26ab.js => 69.3809eab0.js} (98%) rename assets/js/{70.20bc2184.js => 70.cbd191fe.js} (99%) rename assets/js/{9.90f962cd.js => 9.3e9e31a6.js} (99%) delete mode 100644 assets/js/app.109f38d9.js create mode 100644 assets/js/app.747e3783.js diff --git a/404.html b/404.html index 700597df..0ae5978c 100644 --- a/404.html +++ b/404.html @@ -15,7 +15,7 @@ - + @@ -44,6 +44,6 @@ current

  • - + diff --git a/assets/js/10.0c82a32f.js b/assets/js/10.08b9c98e.js similarity index 99% rename from assets/js/10.0c82a32f.js rename to assets/js/10.08b9c98e.js index a206e733..97122020 100644 --- a/assets/js/10.0c82a32f.js +++ b/assets/js/10.08b9c98e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{272:function(A,e){A.exports="data:image/png;base64,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"},273:function(A,e){A.exports="data:image/png;base64,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"},274:function(A,e){A.exports="data:image/png;base64,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"},275:function(A,e){A.exports="data:image/png;base64,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"},291:function(A,e,t){"use strict";t.r(e);var a=t(15),s=Object(a.a)({},(function(){var A=this,e=A._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":A.$parent.slotKey}},[e("h1",{attrs:{id:"minecraft"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#minecraft"}},[A._v("#")]),A._v(" Minecraft")]),A._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#configuring-a-server-network-bungeecord-waterfall-hexacord-etc"}},[A._v("Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)")]),e("ul",[e("li",[e("a",{attrs:{href:"#allocations-in-the-panel"}},[A._v("Allocations in the Panel")])]),e("li",[e("a",{attrs:{href:"#proxy-server-settings"}},[A._v("proxy server settings")])]),e("li",[e("a",{attrs:{href:"#paper-spigot-bukkit-settings"}},[A._v("paper/spigot/bukkit settings")])]),e("li",[e("a",{attrs:{href:"#firewalls"}},[A._v("Firewalls")])])])])])]),e("p"),A._v(" "),e("h2",{attrs:{id:"configuring-a-server-network-bungeecord-waterfall-hexacord-etc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuring-a-server-network-bungeecord-waterfall-hexacord-etc"}},[A._v("#")]),A._v(" Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)")]),A._v(" "),e("p",[A._v("If you want to operate Minecraft proxy servers like BungeeCord, Waterfall, HexaCord, etc. securely, you can do so with pterodactyl alone as long as you stay on the same node. It differs from a traditional setup in a few ways and might require additonal firewall rules, which is what this guide is for.")]),A._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[A._v("WARNING")]),A._v(" "),e("p",[A._v("For the setup described below, it is necessary that all servers are on the same node.")])]),A._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[A._v("DANGER")]),A._v(" "),e("p",[A._v("If you are a hosting provider, you should only allow a single proxy network per node, if you are selling them to customers.")])]),A._v(" "),e("h3",{attrs:{id:"allocations-in-the-panel"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allocations-in-the-panel"}},[A._v("#")]),A._v(" Allocations in the Panel")]),A._v(" "),e("p",[A._v("Create a regular allocation for the proxy server which uses the external IP of the node, so users can reach it.")]),A._v(" "),e("p",[A._v("The actual game servers behind the proxy should use allocations with "),e("code",[A._v("127.0.0.1")]),A._v(" as the address, so they are only reachable on the node, and not from the public.")]),A._v(" "),e("h4",{attrs:{id:"example"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[A._v("#")]),A._v(" Example")]),A._v(" "),e("p",[e("img",{attrs:{src:t(272),alt:""}})]),A._v(" "),e("p",[e("code",[A._v("10.1.70.62")]),A._v(" is an example, replace it with your own public IP address.")]),A._v(" "),e("h3",{attrs:{id:"proxy-server-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#proxy-server-settings"}},[A._v("#")]),A._v(" proxy server settings")]),A._v(" "),e("p",[A._v("As the proxy server, like all servers, is running in a docker container with network isolation, "),e("code",[A._v("localhost")]),A._v("/"),e("code",[A._v("127.0.0.1")]),A._v(" doesn't refer to the node, but to the container. The node can be reached from within the container using "),e("code",[A._v("172.18.0.1")]),A._v(" (unless the pterodactyl network is configured differently) instead. You therefore need to use this IP in your proxy server configuration.")]),A._v(" "),e("h4",{attrs:{id:"bungeecord-waterfall-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bungeecord-waterfall-configuration"}},[A._v("#")]),A._v(" bungeecord/waterfall configuration")]),A._v(" "),e("p",[A._v("This will be different for other proxy servers, please refer to their documentation.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(273),alt:""}})]),A._v(" "),e("h3",{attrs:{id:"paper-spigot-bukkit-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#paper-spigot-bukkit-settings"}},[A._v("#")]),A._v(" paper/spigot/bukkit settings")]),A._v(" "),e("p",[A._v("The servers itself require the regular config options required by server proxies, which usually comes down to disabling online mode. This will differ for other server software, please refer to their documentation.")]),A._v(" "),e("h4",{attrs:{id:"server-properties"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-properties"}},[A._v("#")]),A._v(" server.properties")]),A._v(" "),e("p",[A._v("set online-mode "),e("code",[A._v("false")]),A._v(" "),e("img",{attrs:{src:t(274),alt:""}})]),A._v(" "),e("h4",{attrs:{id:"spigot-yml"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#spigot-yml"}},[A._v("#")]),A._v(" spigot.yml")]),A._v(" "),e("p",[A._v("set bungeecord to "),e("code",[A._v("true")]),A._v(" "),e("img",{attrs:{src:t(275),alt:""}})]),A._v(" "),e("h3",{attrs:{id:"firewalls"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#firewalls"}},[A._v("#")]),A._v(" Firewalls")]),A._v(" "),e("p",[A._v("If you are using a firewall, additional rules might be required to allow servers to reach each other on the node. In this case the proxy server needs to reach all of the game servers behind it. Therefore we need to allow traffic from the pterodactyl network to the server ports on localhost.")]),A._v(" "),e("p",[A._v("You can use the following commands as an example. "),e("code",[A._v("172.18.0.1")]),A._v(" is the default address referring to the node within the pterodactyl network. Replace "),e("code",[A._v("")]),A._v(" with the allocated localhost ports of the game servers.")]),A._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[A._v("WARNING")]),A._v(" "),e("p",[A._v("The following commands will allow any server on the node to access the opened ports.")])]),A._v(" "),e("h4",{attrs:{id:"ufw-ubuntu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ufw-ubuntu"}},[A._v("#")]),A._v(" UFW (Ubuntu)")]),A._v(" "),e("p",[A._v("Allow access to the pterodactyl pterodactyl0 network on a specific port.")]),A._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[A._v("ufw allow "),e("span",{pre:!0,attrs:{class:"token keyword"}},[A._v("in")]),A._v(" on pterodactyl0 to "),e("span",{pre:!0,attrs:{class:"token number"}},[A._v("172.18")]),A._v(".0.1 port "),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v("<")]),A._v("LOCALHOST_PORT"),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v(">")]),A._v(" proto tcp\n")])])]),e("h4",{attrs:{id:"firewalld-centos"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-centos"}},[A._v("#")]),A._v(" Firewalld (CentOS)")]),A._v(" "),e("p",[A._v("Allow access to pterodactyl0 from the pterodactyl0 network.")]),A._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[A._v("WARNING")]),A._v(" "),e("p",[A._v("This command will allow any server to access all other servers as well as all ports on the node.")])]),A._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[A._v("firewall-cmd "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[A._v("--permanent")]),A._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[A._v("--zone")]),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v("=")]),A._v("public --add-source"),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[A._v("172.18")]),A._v(".0.1\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{272:function(A,e){A.exports="data:image/png;base64,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"},273:function(A,e){A.exports="data:image/png;base64,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"},274:function(A,e){A.exports="data:image/png;base64,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"},275:function(A,e){A.exports="data:image/png;base64,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"},292:function(A,e,t){"use strict";t.r(e);var a=t(15),s=Object(a.a)({},(function(){var A=this,e=A._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":A.$parent.slotKey}},[e("h1",{attrs:{id:"minecraft"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#minecraft"}},[A._v("#")]),A._v(" Minecraft")]),A._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#configuring-a-server-network-bungeecord-waterfall-hexacord-etc"}},[A._v("Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)")]),e("ul",[e("li",[e("a",{attrs:{href:"#allocations-in-the-panel"}},[A._v("Allocations in the Panel")])]),e("li",[e("a",{attrs:{href:"#proxy-server-settings"}},[A._v("proxy server settings")])]),e("li",[e("a",{attrs:{href:"#paper-spigot-bukkit-settings"}},[A._v("paper/spigot/bukkit settings")])]),e("li",[e("a",{attrs:{href:"#firewalls"}},[A._v("Firewalls")])])])])])]),e("p"),A._v(" "),e("h2",{attrs:{id:"configuring-a-server-network-bungeecord-waterfall-hexacord-etc"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuring-a-server-network-bungeecord-waterfall-hexacord-etc"}},[A._v("#")]),A._v(" Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)")]),A._v(" "),e("p",[A._v("If you want to operate Minecraft proxy servers like BungeeCord, Waterfall, HexaCord, etc. securely, you can do so with pterodactyl alone as long as you stay on the same node. It differs from a traditional setup in a few ways and might require additonal firewall rules, which is what this guide is for.")]),A._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[A._v("WARNING")]),A._v(" "),e("p",[A._v("For the setup described below, it is necessary that all servers are on the same node.")])]),A._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[A._v("DANGER")]),A._v(" "),e("p",[A._v("If you are a hosting provider, you should only allow a single proxy network per node, if you are selling them to customers.")])]),A._v(" "),e("h3",{attrs:{id:"allocations-in-the-panel"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allocations-in-the-panel"}},[A._v("#")]),A._v(" Allocations in the Panel")]),A._v(" "),e("p",[A._v("Create a regular allocation for the proxy server which uses the external IP of the node, so users can reach it.")]),A._v(" "),e("p",[A._v("The actual game servers behind the proxy should use allocations with "),e("code",[A._v("127.0.0.1")]),A._v(" as the address, so they are only reachable on the node, and not from the public.")]),A._v(" "),e("h4",{attrs:{id:"example"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example"}},[A._v("#")]),A._v(" Example")]),A._v(" "),e("p",[e("img",{attrs:{src:t(272),alt:""}})]),A._v(" "),e("p",[e("code",[A._v("10.1.70.62")]),A._v(" is an example, replace it with your own public IP address.")]),A._v(" "),e("h3",{attrs:{id:"proxy-server-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#proxy-server-settings"}},[A._v("#")]),A._v(" proxy server settings")]),A._v(" "),e("p",[A._v("As the proxy server, like all servers, is running in a docker container with network isolation, "),e("code",[A._v("localhost")]),A._v("/"),e("code",[A._v("127.0.0.1")]),A._v(" doesn't refer to the node, but to the container. The node can be reached from within the container using "),e("code",[A._v("172.18.0.1")]),A._v(" (unless the pterodactyl network is configured differently) instead. You therefore need to use this IP in your proxy server configuration.")]),A._v(" "),e("h4",{attrs:{id:"bungeecord-waterfall-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bungeecord-waterfall-configuration"}},[A._v("#")]),A._v(" bungeecord/waterfall configuration")]),A._v(" "),e("p",[A._v("This will be different for other proxy servers, please refer to their documentation.")]),A._v(" "),e("p",[e("img",{attrs:{src:t(273),alt:""}})]),A._v(" "),e("h3",{attrs:{id:"paper-spigot-bukkit-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#paper-spigot-bukkit-settings"}},[A._v("#")]),A._v(" paper/spigot/bukkit settings")]),A._v(" "),e("p",[A._v("The servers itself require the regular config options required by server proxies, which usually comes down to disabling online mode. This will differ for other server software, please refer to their documentation.")]),A._v(" "),e("h4",{attrs:{id:"server-properties"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-properties"}},[A._v("#")]),A._v(" server.properties")]),A._v(" "),e("p",[A._v("set online-mode "),e("code",[A._v("false")]),A._v(" "),e("img",{attrs:{src:t(274),alt:""}})]),A._v(" "),e("h4",{attrs:{id:"spigot-yml"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#spigot-yml"}},[A._v("#")]),A._v(" spigot.yml")]),A._v(" "),e("p",[A._v("set bungeecord to "),e("code",[A._v("true")]),A._v(" "),e("img",{attrs:{src:t(275),alt:""}})]),A._v(" "),e("h3",{attrs:{id:"firewalls"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#firewalls"}},[A._v("#")]),A._v(" Firewalls")]),A._v(" "),e("p",[A._v("If you are using a firewall, additional rules might be required to allow servers to reach each other on the node. In this case the proxy server needs to reach all of the game servers behind it. Therefore we need to allow traffic from the pterodactyl network to the server ports on localhost.")]),A._v(" "),e("p",[A._v("You can use the following commands as an example. "),e("code",[A._v("172.18.0.1")]),A._v(" is the default address referring to the node within the pterodactyl network. Replace "),e("code",[A._v("")]),A._v(" with the allocated localhost ports of the game servers.")]),A._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[A._v("WARNING")]),A._v(" "),e("p",[A._v("The following commands will allow any server on the node to access the opened ports.")])]),A._v(" "),e("h4",{attrs:{id:"ufw-ubuntu"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ufw-ubuntu"}},[A._v("#")]),A._v(" UFW (Ubuntu)")]),A._v(" "),e("p",[A._v("Allow access to the pterodactyl pterodactyl0 network on a specific port.")]),A._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[A._v("ufw allow "),e("span",{pre:!0,attrs:{class:"token keyword"}},[A._v("in")]),A._v(" on pterodactyl0 to "),e("span",{pre:!0,attrs:{class:"token number"}},[A._v("172.18")]),A._v(".0.1 port "),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v("<")]),A._v("LOCALHOST_PORT"),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v(">")]),A._v(" proto tcp\n")])])]),e("h4",{attrs:{id:"firewalld-centos"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-centos"}},[A._v("#")]),A._v(" Firewalld (CentOS)")]),A._v(" "),e("p",[A._v("Allow access to pterodactyl0 from the pterodactyl0 network.")]),A._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[A._v("WARNING")]),A._v(" "),e("p",[A._v("This command will allow any server to access all other servers as well as all ports on the node.")])]),A._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[A._v("firewall-cmd "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[A._v("--permanent")]),A._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[A._v("--zone")]),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v("=")]),A._v("public --add-source"),e("span",{pre:!0,attrs:{class:"token operator"}},[A._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[A._v("172.18")]),A._v(".0.1\n")])])])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/11.d107c8b2.js b/assets/js/11.e264572d.js similarity index 97% rename from assets/js/11.d107c8b2.js rename to assets/js/11.e264572d.js index 6f00d17a..cd4dc1c9 100644 --- a/assets/js/11.d107c8b2.js +++ b/assets/js/11.e264572d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11,16,27],{239:function(t,e,s){"use strict";s.d(e,"d",(function(){return i})),s.d(e,"a",(function(){return r})),s.d(e,"j",(function(){return o})),s.d(e,"i",(function(){return a})),s.d(e,"f",(function(){return c})),s.d(e,"g",(function(){return l})),s.d(e,"h",(function(){return d})),s.d(e,"b",(function(){return h})),s.d(e,"e",(function(){return u})),s.d(e,"l",(function(){return p})),s.d(e,"m",(function(){return f})),s.d(e,"c",(function(){return g})),s.d(e,"k",(function(){return v}));s(90);const i=/#.*$/,n=/\.(md|html)$/,r=/\/$/,o=/^(https?:|mailto:|tel:)/;function a(t){return decodeURI(t).replace(i,"").replace(n,"")}function c(t){return o.test(t)}function l(t){return/^mailto:/.test(t)}function d(t){return/^tel:/.test(t)}function h(t){if(c(t))return t;const e=t.match(i),s=e?e[0]:"",n=a(t);return r.test(n)?t:n+".html"+s}function u(t,e){const s=t.hash,n=function(t){const e=t.match(i);if(e)return e[0]}(e);if(n&&s!==n)return!1;return a(t.path)===a(e)}function p(t,e,s){s&&(e=function(t,e,s){const i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;const n=e.split("/");s&&n[n.length-1]||n.pop();const r=t.replace(/^\//,"").split("/");for(let t=0;t({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const a=o.sidebar||r.sidebar;if(a){const{base:t,config:s}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const i in e)if(0===(s=t.path,/(\.html|\/)$/.test(s)?s:s+"/").indexOf(i))return{base:i,config:e[i]};var s;return{}}(e,a);return s?s.map(e=>function t(e,s,i,n){if("string"==typeof e)return p(s,e,i);if(Array.isArray(e))return Object.assign(p(s,e[0],i),{title:e[1]});{n&&console.error("[vuepress] Nested sidebar groups are not supported. Consider using navbar + categories instead.");const r=e.children||[],o=e.versions||[];return{type:"group",...e,children:r.map(e=>t(e,s,i,!0)),collapsable:!1!==e.collapsable,versions:o.map(n=>({...n,status:n.name===e.currentVersion?"current":n.status,children:n.children.map(r=>t(e.path+n.name+r,s,i,!0))}))}}}(e,n,t)):[]}return[]}function g(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function v(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},241:function(t,e,s){"use strict";s.r(e);var i=s(239),n={props:{item:{required:!0}},computed:{link(){return Object(i.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:i.f,isMailto:i.g,isTel:i.h}},r=s(15),o=Object(r.a)(n,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact}},[t._v(t._s(t.item.text)+"\n")])}),[],!1,null,null,null);e.default=o.exports},249:function(t,e,s){"use strict";s.r(e);var i=s(248),n=s.n(i);if("undefined"!=typeof window){s(253)}var r={props:{options:{type:Object,default:function(){return{}}}},mounted:function(){this.create()},destroyed:function(){n()(this.$el).slick("unslick")},methods:{create:function(){const t=n()(this.$el);t.on("afterChange",this.onAfterChange),t.on("beforeChange",this.onBeforeChange),t.on("breakpoint",this.onBreakpoint),t.on("destroy",this.onDestroy),t.on("edge",this.onEdge),t.on("init",this.onInit),t.on("reInit",this.onReInit),t.on("setPosition",this.onSetPosition),t.on("swipe",this.onSwipe),t.on("lazyLoaded",this.onLazyLoaded),t.on("lazyLoadError",this.onLazyLoadError),t.slick(this.options)},destroy:function(){const t=n()(this.$el);t.off("afterChange",this.onAfterChange),t.off("beforeChange",this.onBeforeChange),t.off("breakpoint",this.onBreakpoint),t.off("destroy",this.onDestroy),t.off("edge",this.onEdge),t.off("init",this.onInit),t.off("reInit",this.onReInit),t.off("setPosition",this.onSetPosition),t.off("swipe",this.onSwipe),t.off("lazyLoaded",this.onLazyLoaded),t.off("lazyLoadError",this.onLazyLoadError),n()(this.$el).slick("unslick")},reSlick:function(){this.destroy(),this.create()},next:function(){n()(this.$el).slick("slickNext")},prev:function(){n()(this.$el).slick("slickPrev")},pause:function(){n()(this.$el).slick("slickPause")},play:function(){n()(this.$el).slick("slickPlay")},goTo:function(t,e){n()(this.$el).slick("slickGoTo",t,e)},currentSlide:function(){return n()(this.$el).slick("slickCurrentSlide")},add:function(t,e,s){n()(this.$el).slick("slickAdd",t,e,s)},remove:function(t,e){n()(this.$el).slick("slickRemove",t,e)},filter:function(t){n()(this.$el).slick("slickFilter",t)},unfilter:function(){n()(this.$el).slick("slickUnfilter")},getOption:function(t){n()(this.$el).slick("slickGetOption",t)},setOption:function(t,e,s){n()(this.$el).slick("slickSetOption",t,e,s)},setPosition:function(){n()(this.$el).slick("setPosition")},onAfterChange:function(t,e,s){this.$emit("afterChange",t,e,s)},onBeforeChange:function(t,e,s,i){this.$emit("beforeChange",t,e,s,i)},onBreakpoint:function(t,e,s){this.$emit("breakpoint",t,e,s)},onDestroy:function(t,e){this.$emit("destroy",t,e)},onEdge:function(t,e,s){this.$emit("edge",t,e,s)},onInit:function(t,e){this.$emit("init",t,e)},onReInit:function(t,e){this.$emit("reInit",t,e)},onSetPosition:function(t,e){this.$emit("setPosition",t,e)},onSwipe:function(t,e,s){this.$emit("swipe",t,e,s)},onLazyLoaded:function(t,e,s,i){this.$emit("lazyLoaded",t,e,s,i)},onLazyLoadError:function(t,e,s,i){this.$emit("lazyLoadError",t,e,s,i)}}},o=s(15),a=Object(o.a)(r,(function(){return(0,this._self._c)("div",[this._t("default")],2)}),[],!1,null,null,null);e.default=a.exports},258:function(t,e,s){"use strict";s.r(e);var i=s(241),n=s(249),r={components:{NavLink:i.default,Slick:n.default},data:()=>({slickOptions:{slidesToShow:1,centerMode:!0,centerPadding:"0",speed:1e3,autoplay:!0,variableWidth:!0,arrows:!1,dots:!0,pauseOnHover:!1,pauseOnDotsHover:!0}}),computed:{data(){return this.$page.frontmatter},actionLink(){return{link:this.data.actionLink,text:this.data.actionText}}}},o=s(15),a=Object(o.a)(r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"home"},[e("div",{staticClass:"header section bg-blue text-grey-lightest less-padding emphasize"},[e("div",{staticClass:"container z-10"},[e("div",{staticClass:"text-center"},[t._m(0),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/panel/getting_started.html"}},[t._v("Let's Get Started!")])],1)])])]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),e("div",{staticClass:"section bg-white"},[e("div",{staticClass:"text-center"},[e("h1",[t._v("Screenshots")]),t._v(" "),e("div",{staticClass:"screenshots"},[e("slick",{ref:"slick",attrs:{options:t.slickOptions}},[e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}})])])],1)])]),t._v(" "),e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",[t._v("Get Started")]),t._v(" "),e("p",{staticClass:"m-4"},[t._v("Ready to fly on the Pterodactyl?")]),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/project/introduction.html"}},[t._v("About the project")]),t._v(" "),e("a",{staticClass:"btn inline-block",attrs:{href:"https://discord.gg/pterodactyl"}},[t._v("Discord")])],1)])]),t._v(" "),e("div",{staticClass:"section bg-black text-grey-lighter text-sm less-padding"},[e("div",{staticClass:"container text-center"},[e("div",[e("img",{staticClass:"h-20",attrs:{src:t.$withBase("logos/banner_logo.png"),alt:"pterodactyl banner logo"}})]),t._v(" "),t._m(3),t._v(" "),e("div",{staticClass:"footer"},[t._v("MIT Licensed | Pterodactyl® Copyright © Dane Everitt and contributors")])])])])}),[function(){var t=this._self._c;return t("div",[t("img",{staticClass:"max-w-xl w-full inline-block",attrs:{src:"https://cdn.pterodactyl.io/logos/new/pterodactyl_logo_transparent.png",alt:"Pterodactyl"}})])},function(){var t=this._self._c;return t("div",{staticClass:"section bg-white"},[t("div",{staticClass:"container text-center"},[t("h1",{staticClass:"text-blue mb-4"},[this._v("Pterodactyl Panel")]),this._v(" "),t("h3",{staticClass:"border-0 font-normal leading-normal mx-auto",staticStyle:{"max-width":"50rem"}},[this._v("\n Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go.\n Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers\n while exposing a beautiful and intuitive UI to end users.\n ")]),this._v(" "),t("h3",{staticClass:"border-0 leading-normal mx-auto mt-4",staticStyle:{"max-width":"50rem"}},[this._v("\n Stop settling for less. Make game servers a first class citizen on your platform.\n ")]),this._v(" "),t("img",{staticClass:"max-w-lg w-full m-4 inline-block",attrs:{src:"https://cdn.pterodactyl.io/site-assets/mockup-macbook-grey-1.0.png"}})])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",{staticClass:"mb-4"},[t._v("Why Pterodactyl®")]),t._v(" "),e("div",{staticClass:"flex flex-wrap"},[e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-lock"})]),t._v(" "),e("h3",[t._v("Security First")]),t._v(" "),e("p",[t._v("Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-beaker"})]),t._v(" "),e("h3",[t._v("Modern Tooling")]),t._v(" "),e("p",[t._v("Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-anchor"})]),t._v(" "),e("h3",[t._v("Docker to the Core")]),t._v(" "),e("p",[t._v("All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-wallet"})]),t._v(" "),e("h3",[t._v("Free & Open Source")]),t._v(" "),e("p",[t._v("Pterodactyl is 100% free and licensed under a MIT license. All of our code is completely open source as well.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-browser"})]),t._v(" "),e("h3",[t._v("User Friendly")]),t._v(" "),e("p",[t._v("Save the furious clicking and screaming for Overwatch. Pterodactyl's interface is designed so well even Hanzo can use it.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-expand"})]),t._v(" "),e("h3",[t._v("Scalable")]),t._v(" "),e("p",[t._v("Whether you're a hosting company, the next Hyplex, or just some dudes playing video games, we've got you covered.")])])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"text-left md:flex"},[e("div",{staticClass:"flex-none w-full md:w-1/2 md:pr-12"},[e("p",{staticClass:"my-4"},[t._v("\n Since 2015 Pterodactyl® has been delivering robust, performant, and secure software that allows\n individuals, networks, and hosting companies to run game servers at scale; easily. Best of all?\n No exorbitant monthly costs.\n ")]),t._v(" "),e("p",{staticClass:"my-4"},[t._v("\n Take the plunge today and discover why thousands of users trust Pterodactyl® to manage their\n game servers.\n ")])]),t._v(" "),e("div",{staticClass:"hidden md:block md:flex-1 md:pr-12"},[e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/pterodactyl"}},[t._v("GitHub")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/sponsors/matthewpi"}},[t._v("Sponsor")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://paypal.me/PterodactylSoftware"}},[t._v("Donate")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"/panel/troubleshooting.html"}},[t._v("Troubleshooting")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/parkervcp/eggs"}},[t._v("Additional Game Configurations")])])]),t._v(" "),e("div",{staticClass:"text-center mt-8 md:flex-1 md:mt-0"},[e("a",{attrs:{href:"https://discord.gg/pterodactyl",target:"_blank",rel:"nofollow noopener"}},[e("img",{staticClass:"w-3/4",attrs:{src:"https://cdn.pterodactyl.io/site-assets/discord.png"}})])])])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11,16,27],{239:function(t,e,s){"use strict";s.d(e,"d",(function(){return i})),s.d(e,"a",(function(){return r})),s.d(e,"j",(function(){return o})),s.d(e,"i",(function(){return a})),s.d(e,"f",(function(){return c})),s.d(e,"g",(function(){return l})),s.d(e,"h",(function(){return d})),s.d(e,"b",(function(){return h})),s.d(e,"e",(function(){return u})),s.d(e,"l",(function(){return p})),s.d(e,"m",(function(){return f})),s.d(e,"c",(function(){return g})),s.d(e,"k",(function(){return v}));s(90);const i=/#.*$/,n=/\.(md|html)$/,r=/\/$/,o=/^(https?:|mailto:|tel:)/;function a(t){return decodeURI(t).replace(i,"").replace(n,"")}function c(t){return o.test(t)}function l(t){return/^mailto:/.test(t)}function d(t){return/^tel:/.test(t)}function h(t){if(c(t))return t;const e=t.match(i),s=e?e[0]:"",n=a(t);return r.test(n)?t:n+".html"+s}function u(t,e){const s=t.hash,n=function(t){const e=t.match(i);if(e)return e[0]}(e);if(n&&s!==n)return!1;return a(t.path)===a(e)}function p(t,e,s){s&&(e=function(t,e,s){const i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;const n=e.split("/");s&&n[n.length-1]||n.pop();const r=t.replace(/^\//,"").split("/");for(let t=0;t({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const a=o.sidebar||r.sidebar;if(a){const{base:t,config:s}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const i in e)if(0===(s=t.path,/(\.html|\/)$/.test(s)?s:s+"/").indexOf(i))return{base:i,config:e[i]};var s;return{}}(e,a);return s?s.map(e=>function t(e,s,i,n){if("string"==typeof e)return p(s,e,i);if(Array.isArray(e))return Object.assign(p(s,e[0],i),{title:e[1]});{n&&console.error("[vuepress] Nested sidebar groups are not supported. Consider using navbar + categories instead.");const r=e.children||[],o=e.versions||[];return{type:"group",...e,children:r.map(e=>t(e,s,i,!0)),collapsable:!1!==e.collapsable,versions:o.map(n=>({...n,status:n.name===e.currentVersion?"current":n.status,children:n.children.map(r=>t(e.path+n.name+r,s,i,!0))}))}}}(e,n,t)):[]}return[]}function g(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function v(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},241:function(t,e,s){"use strict";s.r(e);var i=s(239),n={props:{item:{required:!0}},computed:{link(){return Object(i.b)(this.item.link)},exact(){return this.$site.locales?Object.keys(this.$site.locales).some(t=>t===this.link):"/"===this.link}},methods:{isExternal:i.f,isMailto:i.g,isTel:i.h}},r=s(15),o=Object(r.a)(n,(function(){var t=this,e=t._self._c;return t.isExternal(t.link)?e("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"}},[t._v("\n "+t._s(t.item.text)+"\n "),e("OutboundLink")],1):e("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact}},[t._v(t._s(t.item.text)+"\n")])}),[],!1,null,null,null);e.default=o.exports},249:function(t,e,s){"use strict";s.r(e);var i=s(248),n=s.n(i);if("undefined"!=typeof window){s(253)}var r={props:{options:{type:Object,default:function(){return{}}}},mounted:function(){this.create()},destroyed:function(){n()(this.$el).slick("unslick")},methods:{create:function(){const t=n()(this.$el);t.on("afterChange",this.onAfterChange),t.on("beforeChange",this.onBeforeChange),t.on("breakpoint",this.onBreakpoint),t.on("destroy",this.onDestroy),t.on("edge",this.onEdge),t.on("init",this.onInit),t.on("reInit",this.onReInit),t.on("setPosition",this.onSetPosition),t.on("swipe",this.onSwipe),t.on("lazyLoaded",this.onLazyLoaded),t.on("lazyLoadError",this.onLazyLoadError),t.slick(this.options)},destroy:function(){const t=n()(this.$el);t.off("afterChange",this.onAfterChange),t.off("beforeChange",this.onBeforeChange),t.off("breakpoint",this.onBreakpoint),t.off("destroy",this.onDestroy),t.off("edge",this.onEdge),t.off("init",this.onInit),t.off("reInit",this.onReInit),t.off("setPosition",this.onSetPosition),t.off("swipe",this.onSwipe),t.off("lazyLoaded",this.onLazyLoaded),t.off("lazyLoadError",this.onLazyLoadError),n()(this.$el).slick("unslick")},reSlick:function(){this.destroy(),this.create()},next:function(){n()(this.$el).slick("slickNext")},prev:function(){n()(this.$el).slick("slickPrev")},pause:function(){n()(this.$el).slick("slickPause")},play:function(){n()(this.$el).slick("slickPlay")},goTo:function(t,e){n()(this.$el).slick("slickGoTo",t,e)},currentSlide:function(){return n()(this.$el).slick("slickCurrentSlide")},add:function(t,e,s){n()(this.$el).slick("slickAdd",t,e,s)},remove:function(t,e){n()(this.$el).slick("slickRemove",t,e)},filter:function(t){n()(this.$el).slick("slickFilter",t)},unfilter:function(){n()(this.$el).slick("slickUnfilter")},getOption:function(t){n()(this.$el).slick("slickGetOption",t)},setOption:function(t,e,s){n()(this.$el).slick("slickSetOption",t,e,s)},setPosition:function(){n()(this.$el).slick("setPosition")},onAfterChange:function(t,e,s){this.$emit("afterChange",t,e,s)},onBeforeChange:function(t,e,s,i){this.$emit("beforeChange",t,e,s,i)},onBreakpoint:function(t,e,s){this.$emit("breakpoint",t,e,s)},onDestroy:function(t,e){this.$emit("destroy",t,e)},onEdge:function(t,e,s){this.$emit("edge",t,e,s)},onInit:function(t,e){this.$emit("init",t,e)},onReInit:function(t,e){this.$emit("reInit",t,e)},onSetPosition:function(t,e){this.$emit("setPosition",t,e)},onSwipe:function(t,e,s){this.$emit("swipe",t,e,s)},onLazyLoaded:function(t,e,s,i){this.$emit("lazyLoaded",t,e,s,i)},onLazyLoadError:function(t,e,s,i){this.$emit("lazyLoadError",t,e,s,i)}}},o=s(15),a=Object(o.a)(r,(function(){return(0,this._self._c)("div",[this._t("default")],2)}),[],!1,null,null,null);e.default=a.exports},258:function(t,e,s){"use strict";s.r(e);var i=s(241),n=s(249),r={components:{NavLink:i.default,Slick:n.default},data:()=>({slickOptions:{slidesToShow:1,centerMode:!0,centerPadding:"0",speed:1e3,autoplay:!0,variableWidth:!0,arrows:!1,dots:!0,pauseOnHover:!1,pauseOnDotsHover:!0}}),computed:{data(){return this.$page.frontmatter},actionLink(){return{link:this.data.actionLink,text:this.data.actionText}}}},o=s(15),a=Object(o.a)(r,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"home"},[e("div",{staticClass:"header section bg-blue text-grey-lightest less-padding emphasize"},[e("div",{staticClass:"container z-10"},[e("div",{staticClass:"text-center"},[t._m(0),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/panel/getting_started.html"}},[t._v("Let's Get Started!")])],1)])])]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),e("div",{staticClass:"section bg-white"},[e("div",{staticClass:"text-center"},[e("h1",[t._v("Screenshots")]),t._v(" "),e("div",{staticClass:"screenshots"},[e("slick",{ref:"slick",attrs:{options:t.slickOptions}},[e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}})])])],1)])]),t._v(" "),e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",[t._v("Get Started")]),t._v(" "),e("p",{staticClass:"m-4"},[t._v("Ready to fly on the Pterodactyl?")]),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/project/introduction.html"}},[t._v("About the project")]),t._v(" "),e("a",{staticClass:"btn inline-block",attrs:{href:"https://discord.gg/pterodactyl"}},[t._v("Discord")])],1)])]),t._v(" "),e("div",{staticClass:"section bg-black text-grey-lighter text-sm less-padding"},[e("div",{staticClass:"container text-center"},[e("div",[e("img",{staticClass:"h-20",attrs:{src:t.$withBase("logos/banner_logo.png"),alt:"pterodactyl banner logo"}})]),t._v(" "),t._m(3),t._v(" "),e("div",{staticClass:"footer"},[t._v("MIT Licensed | Pterodactyl® Copyright © Dane Everitt and contributors")])])])])}),[function(){var t=this._self._c;return t("div",[t("img",{staticClass:"max-w-xl w-full inline-block",attrs:{src:"https://cdn.pterodactyl.io/logos/new/pterodactyl_logo_transparent.png",alt:"Pterodactyl"}})])},function(){var t=this._self._c;return t("div",{staticClass:"section bg-white"},[t("div",{staticClass:"container text-center"},[t("h1",{staticClass:"text-blue mb-4"},[this._v("Pterodactyl Panel")]),this._v(" "),t("h3",{staticClass:"border-0 font-normal leading-normal mx-auto",staticStyle:{"max-width":"50rem"}},[this._v("\n Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go.\n Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers\n while exposing a beautiful and intuitive UI to end users.\n ")]),this._v(" "),t("h3",{staticClass:"border-0 leading-normal mx-auto mt-4",staticStyle:{"max-width":"50rem"}},[this._v("\n Stop settling for less. Make game servers a first class citizen on your platform.\n ")]),this._v(" "),t("img",{staticClass:"max-w-lg w-full m-4 inline-block",attrs:{src:"https://cdn.pterodactyl.io/site-assets/mockup-macbook-grey-1.0.png"}})])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",{staticClass:"mb-4"},[t._v("Why Pterodactyl®")]),t._v(" "),e("div",{staticClass:"flex flex-wrap"},[e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-lock"})]),t._v(" "),e("h3",[t._v("Security First")]),t._v(" "),e("p",[t._v("Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-beaker"})]),t._v(" "),e("h3",[t._v("Modern Tooling")]),t._v(" "),e("p",[t._v("Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-anchor"})]),t._v(" "),e("h3",[t._v("Docker to the Core")]),t._v(" "),e("p",[t._v("All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-wallet"})]),t._v(" "),e("h3",[t._v("Free & Open Source")]),t._v(" "),e("p",[t._v("Pterodactyl is 100% free and licensed under a MIT license. All of our code is completely open source as well.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-browser"})]),t._v(" "),e("h3",[t._v("User Friendly")]),t._v(" "),e("p",[t._v("Save the furious clicking and screaming for Overwatch. Pterodactyl's interface is designed so well even Hanzo can use it.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-expand"})]),t._v(" "),e("h3",[t._v("Scalable")]),t._v(" "),e("p",[t._v("Whether you're a hosting company, the next Hyplex, or just some dudes playing video games, we've got you covered.")])])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"text-left md:flex"},[e("div",{staticClass:"flex-none w-full md:w-1/2 md:pr-12"},[e("p",{staticClass:"my-4"},[t._v("\n Since 2015 Pterodactyl® has been delivering robust, performant, and secure software that allows\n individuals, networks, and hosting companies to run game servers at scale; easily. Best of all?\n No exorbitant monthly costs.\n ")]),t._v(" "),e("p",{staticClass:"my-4"},[t._v("\n Take the plunge today and discover why thousands of users trust Pterodactyl® to manage their\n game servers.\n ")])]),t._v(" "),e("div",{staticClass:"hidden md:block md:flex-1 md:pr-12"},[e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/pterodactyl"}},[t._v("GitHub")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/sponsors/matthewpi"}},[t._v("Sponsor")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://paypal.me/PterodactylSoftware"}},[t._v("Donate")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"/panel/troubleshooting.html"}},[t._v("Troubleshooting")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://pterodactyleggs.com"}},[t._v("Additional Game Configurations")])])]),t._v(" "),e("div",{staticClass:"text-center mt-8 md:flex-1 md:mt-0"},[e("a",{attrs:{href:"https://discord.gg/pterodactyl",target:"_blank",rel:"nofollow noopener"}},[e("img",{staticClass:"w-3/4",attrs:{src:"https://cdn.pterodactyl.io/site-assets/discord.png"}})])])])}],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/21.d99db7fa.js b/assets/js/21.aecdb4c4.js similarity index 98% rename from assets/js/21.d99db7fa.js rename to assets/js/21.aecdb4c4.js index 69dceca2..92e039b8 100644 --- a/assets/js/21.d99db7fa.js +++ b/assets/js/21.aecdb4c4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{277:function(t,e,o){t.exports=o.p+"assets/img/gmod_mount_example.16b990a7.png"},310:function(t,e,o){"use strict";o.r(e);var n=o(15),s=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"using-mounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#using-mounts"}},[t._v("#")]),t._v(" Using Mounts")]),t._v(" "),e("p",[t._v("Mounts is a feature that allows administrators to mount other directories from the host file-system into a Server's container.")]),t._v(" "),e("h2",{attrs:{id:"wings-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#wings-configuration"}},[t._v("#")]),t._v(" Wings Configuration")]),t._v(" "),e("p",[t._v("For security reasons it is not possible to mount directories on a node by default. Directories that should be mountable have to be specified explicitly in the Wings configuration.")]),t._v(" "),e("p",[t._v("In the Wings configuration file ("),e("code",[t._v("/etc/pterodactyl/config.yml")]),t._v(") the "),e("code",[t._v("allowed_mounts")]),t._v(" field is used to list mountable directories. The listed directories and all their subdirectories can be mounted.")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("allowed_mounts")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" /example\n")])])]),e("p",[t._v("You have to restart Wings to apply new changes to your Wings config.")]),t._v(" "),e("h2",{attrs:{id:"panel-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#panel-configuration"}},[t._v("#")]),t._v(" Panel Configuration")]),t._v(" "),e("p",[t._v("You have to configure mounts in admin Panel in order to use them with your servers. They consist of a source pad on the node and a target path where it will be mounted in the container.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Path in the container")]),t._v(" "),e("p",[t._v("Mounts can be mounted to or inside of "),e("code",[t._v("/home/container")]),t._v(" or any subdirectory of it. You can cross-mount servers such as Server A's directory into Server B.\nKeep in mind that the folder you want to mount into needs to exist for the mount to work.")])]),t._v(" "),e("h3",{attrs:{id:"creating-a-mount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-mount"}},[t._v("#")]),t._v(" Creating a Mount")]),t._v(" "),e("ol",[e("li",[t._v("In the admin Panel go to "),e("strong",[t._v("Mounts")]),t._v(".")]),t._v(" "),e("li",[t._v("Create a new mount.")]),t._v(" "),e("li",[t._v("Fill in the details as required.\n"),e("ul",[e("li",[e("strong",[t._v("Name")]),t._v(": Name for your mount.")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(": Description for your mount.")]),t._v(" "),e("li",[e("strong",[t._v("Source")]),t._v(": The absolute path to the folder or files on the Node machine.")]),t._v(" "),e("li",[e("strong",[t._v("Target")]),t._v(": The absolute path where the mount will be placed inside of your server, can "),e("strong",[t._v("not")]),t._v(" include "),e("code",[t._v("/home/container")]),t._v(" in the path.")]),t._v(" "),e("li",[e("strong",[t._v("Read Only")]),t._v(": Whether the mount will be read-only for the servers using it.")]),t._v(" "),e("li",[e("strong",[t._v("User Mountable")]),t._v(": Whether to allow users to self mount this mount.")])])]),t._v(" "),e("li",[t._v("After creating the mount, you are required to add both "),e("strong",[t._v("Eggs")]),t._v(" and "),e("strong",[t._v("Nodes")]),t._v(" that this mount may be used on.")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Mounts used by multiple servers")]),t._v(" "),e("p",[t._v("All servers using the same mounts will "),e("strong",[t._v("only")]),t._v(" share their contents when they are on the same node. Mounts are not synchronized between nodes.")])]),t._v(" "),e("h3",{attrs:{id:"assigning-a-mount-to-a-server"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assigning-a-mount-to-a-server"}},[t._v("#")]),t._v(" Assigning a Mount to a Server")]),t._v(" "),e("ol",[e("li",[t._v("In the admin Panel navigate to the server you would like to use a mount with")]),t._v(" "),e("li",[t._v("Go to the mounts page")]),t._v(" "),e("li",[t._v("Click the "),e("strong",[t._v("+")]),t._v(" button")]),t._v(" "),e("li",[t._v("Restart the server")])]),t._v(" "),e("p",[t._v("The files of the mount should become available in the target path in the container. You can temporarily change your server startup command to "),e("code",[t._v("ls ")]),t._v(", which should output the contents of the mount if configured correctly.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Mounts cannot be accessed")]),t._v(" "),e("p",[t._v("Mounts do not appear in the Panel's file manager, nor are they accessible via SFTP. However, the server itself will be able to see and use the mounts.")])]),t._v(" "),e("h3",{attrs:{id:"example-mount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-mount"}},[t._v("#")]),t._v(" Example Mount")]),t._v(" "),e("p",[t._v("The example mount below is stored in the path "),e("code",[t._v("/var/lib/pterodactyl/mounts")]),t._v(", which we add to the Wings "),e("code",[t._v("config.yml")])]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("allowed_mounts")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" /var/lib/pterodactyl/mounts\n")])])]),e("p",[e("img",{attrs:{src:o(277),alt:""}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{277:function(t,e,o){t.exports=o.p+"assets/img/gmod_mount_example.16b990a7.png"},308:function(t,e,o){"use strict";o.r(e);var n=o(15),s=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"using-mounts"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#using-mounts"}},[t._v("#")]),t._v(" Using Mounts")]),t._v(" "),e("p",[t._v("Mounts is a feature that allows administrators to mount other directories from the host file-system into a Server's container.")]),t._v(" "),e("h2",{attrs:{id:"wings-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#wings-configuration"}},[t._v("#")]),t._v(" Wings Configuration")]),t._v(" "),e("p",[t._v("For security reasons it is not possible to mount directories on a node by default. Directories that should be mountable have to be specified explicitly in the Wings configuration.")]),t._v(" "),e("p",[t._v("In the Wings configuration file ("),e("code",[t._v("/etc/pterodactyl/config.yml")]),t._v(") the "),e("code",[t._v("allowed_mounts")]),t._v(" field is used to list mountable directories. The listed directories and all their subdirectories can be mounted.")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("allowed_mounts")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" /example\n")])])]),e("p",[t._v("You have to restart Wings to apply new changes to your Wings config.")]),t._v(" "),e("h2",{attrs:{id:"panel-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#panel-configuration"}},[t._v("#")]),t._v(" Panel Configuration")]),t._v(" "),e("p",[t._v("You have to configure mounts in admin Panel in order to use them with your servers. They consist of a source pad on the node and a target path where it will be mounted in the container.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("Path in the container")]),t._v(" "),e("p",[t._v("Mounts can be mounted to or inside of "),e("code",[t._v("/home/container")]),t._v(" or any subdirectory of it. You can cross-mount servers such as Server A's directory into Server B.\nKeep in mind that the folder you want to mount into needs to exist for the mount to work.")])]),t._v(" "),e("h3",{attrs:{id:"creating-a-mount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-mount"}},[t._v("#")]),t._v(" Creating a Mount")]),t._v(" "),e("ol",[e("li",[t._v("In the admin Panel go to "),e("strong",[t._v("Mounts")]),t._v(".")]),t._v(" "),e("li",[t._v("Create a new mount.")]),t._v(" "),e("li",[t._v("Fill in the details as required.\n"),e("ul",[e("li",[e("strong",[t._v("Name")]),t._v(": Name for your mount.")]),t._v(" "),e("li",[e("strong",[t._v("Description")]),t._v(": Description for your mount.")]),t._v(" "),e("li",[e("strong",[t._v("Source")]),t._v(": The absolute path to the folder or files on the Node machine.")]),t._v(" "),e("li",[e("strong",[t._v("Target")]),t._v(": The absolute path where the mount will be placed inside of your server, can "),e("strong",[t._v("not")]),t._v(" include "),e("code",[t._v("/home/container")]),t._v(" in the path.")]),t._v(" "),e("li",[e("strong",[t._v("Read Only")]),t._v(": Whether the mount will be read-only for the servers using it.")]),t._v(" "),e("li",[e("strong",[t._v("User Mountable")]),t._v(": Whether to allow users to self mount this mount.")])])]),t._v(" "),e("li",[t._v("After creating the mount, you are required to add both "),e("strong",[t._v("Eggs")]),t._v(" and "),e("strong",[t._v("Nodes")]),t._v(" that this mount may be used on.")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Mounts used by multiple servers")]),t._v(" "),e("p",[t._v("All servers using the same mounts will "),e("strong",[t._v("only")]),t._v(" share their contents when they are on the same node. Mounts are not synchronized between nodes.")])]),t._v(" "),e("h3",{attrs:{id:"assigning-a-mount-to-a-server"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assigning-a-mount-to-a-server"}},[t._v("#")]),t._v(" Assigning a Mount to a Server")]),t._v(" "),e("ol",[e("li",[t._v("In the admin Panel navigate to the server you would like to use a mount with")]),t._v(" "),e("li",[t._v("Go to the mounts page")]),t._v(" "),e("li",[t._v("Click the "),e("strong",[t._v("+")]),t._v(" button")]),t._v(" "),e("li",[t._v("Restart the server")])]),t._v(" "),e("p",[t._v("The files of the mount should become available in the target path in the container. You can temporarily change your server startup command to "),e("code",[t._v("ls ")]),t._v(", which should output the contents of the mount if configured correctly.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Mounts cannot be accessed")]),t._v(" "),e("p",[t._v("Mounts do not appear in the Panel's file manager, nor are they accessible via SFTP. However, the server itself will be able to see and use the mounts.")])]),t._v(" "),e("h3",{attrs:{id:"example-mount"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-mount"}},[t._v("#")]),t._v(" Example Mount")]),t._v(" "),e("p",[t._v("The example mount below is stored in the path "),e("code",[t._v("/var/lib/pterodactyl/mounts")]),t._v(", which we add to the Wings "),e("code",[t._v("config.yml")])]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("allowed_mounts")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("-")]),t._v(" /var/lib/pterodactyl/mounts\n")])])]),e("p",[e("img",{attrs:{src:o(277),alt:""}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/30.9c360be1.js b/assets/js/29.173d87c8.js similarity index 68% rename from assets/js/30.9c360be1.js rename to assets/js/29.173d87c8.js index 7c833e3f..4aad7ef2 100644 --- a/assets/js/30.9c360be1.js +++ b/assets/js/29.173d87c8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{284:function(t,n,s){"use strict";s.r(n);var e=s(15),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{284:function(t,n,s){"use strict";s.r(n);var e=s(15),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/29.26f1f5b0.js b/assets/js/30.2d8ee53c.js similarity index 68% rename from assets/js/29.26f1f5b0.js rename to assets/js/30.2d8ee53c.js index af9082e8..547970f4 100644 --- a/assets/js/29.26f1f5b0.js +++ b/assets/js/30.2d8ee53c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{285:function(t,n,s){"use strict";s.r(n);var e=s(15),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{287:function(t,n,s){"use strict";s.r(n);var e=s(15),o=Object(e.a)({},(function(){return(0,this._self._c)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);n.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/31.bbfc69d7.js b/assets/js/31.1a5025b8.js similarity index 88% rename from assets/js/31.bbfc69d7.js rename to assets/js/31.1a5025b8.js index 1501a8d2..44c07f54 100644 --- a/assets/js/31.bbfc69d7.js +++ b/assets/js/31.1a5025b8.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{286:function(t,e,o){"use strict";o.r(e);var a=o(15),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"community-guides-and-tutorials"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-guides-and-tutorials"}},[t._v("#")]),t._v(" Community Guides and Tutorials")]),t._v(" "),e("h2",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("This section of Pterodactyl's site is dedicated to more complex topics, tutorials, and features that we\nfeel are important to share with the community, but do not fit into the theme of our core documentation.")]),t._v(" "),e("p",[t._v("Here you'll find in-depth OS-specific installation guides, advanced network configurations, individual game\nsetup instructions, and so much more.")])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{285:function(t,e,o){"use strict";o.r(e);var a=o(15),i=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"community-guides-and-tutorials"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#community-guides-and-tutorials"}},[t._v("#")]),t._v(" Community Guides and Tutorials")]),t._v(" "),e("h2",{attrs:{id:"about"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),e("p",[t._v("This section of Pterodactyl's site is dedicated to more complex topics, tutorials, and features that we\nfeel are important to share with the community, but do not fit into the theme of our core documentation.")]),t._v(" "),e("p",[t._v("Here you'll find in-depth OS-specific installation guides, advanced network configurations, individual game\nsetup instructions, and so much more.")])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/33.7c770712.js b/assets/js/33.d38817c1.js similarity index 98% rename from assets/js/33.7c770712.js rename to assets/js/33.d38817c1.js index 0e874f12..8494e60b 100644 --- a/assets/js/33.7c770712.js +++ b/assets/js/33.d38817c1.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{290:function(s,a,e){"use strict";e.r(a);var t=e(15),n=Object(t.a)({},(function(){var s=this,a=s._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"building-panel-assets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#building-panel-assets"}},[s._v("#")]),s._v(" Building Panel Assets")]),s._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[s._v("WARNING")]),s._v(" "),a("p",[s._v("Do "),a("strong",[s._v("not")]),s._v(" run the following steps on your production nodes.")])]),s._v(" "),a("p",[s._v("Instructions on how to build the panel are also available in the "),a("a",{attrs:{href:"https://github.com/pterodactyl/panel/blob/1.0-develop/BUILDING.md",target:"_blank",rel:"noopener noreferrer"}},[s._v("BUILDING.md"),a("OutboundLink")],1),s._v(" file.")]),s._v(" "),a("p",[s._v("The frontend of the Panel is built with React. Any changes to the source files require to recompile it.\nThis also applies to style sheets. The following sections explain how to do so.")]),s._v(" "),a("h2",{attrs:{id:"install-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-dependencies"}},[s._v("#")]),s._v(" Install Dependencies")]),s._v(" "),a("p",[s._v("The following commands will install the necessary dependencies for building the Panel assets.")]),s._v(" "),a("p",[s._v("The build tools require NodeJS, yarn is used as the package manager.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Ubuntu/Debian")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-sL")]),s._v(" https://deb.nodesource.com/setup_16.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-E")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" -\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-y")]),s._v(" nodejs\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# CentOS")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-sL")]),s._v(" https://rpm.nodesource.com/setup_16.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-E")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" -\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-y")]),s._v(" nodejs "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# CentOS 7")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-y")]),s._v(" nodejs "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# CentOS 8, Rocky Linux 8, AlmaLinux 8")]),s._v("\n")])])]),a("p",[s._v("Install required javascript packages.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v(" i "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-g")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install Yarn")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Installs panel build dependencies")]),s._v("\n")])])]),a("h2",{attrs:{id:"build-panel-assets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-panel-assets"}},[s._v("#")]),s._v(" Build Panel Assets")]),s._v(" "),a("p",[s._v("The following command will rebuild the Panel frontend. For NodeJS version 17 and above, you must enable the "),a("code",[s._v("--openssl-legacy-provider")]),s._v(" option before building.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("export")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NODE_OPTIONS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("--openssl-legacy-provider "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# for NodeJS v17+")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" build:production "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Build panel")]),s._v("\n")])])]),a("p",[s._v("You can use command "),a("code",[s._v("yarn run watch")]),s._v(" to view the progress of your changes in almost real-time for easier development. Once you're satisfied with your changes build the panel using the previously mentioned "),a("code",[s._v("yarn build:production")]),s._v(" command.")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{291:function(s,a,e){"use strict";e.r(a);var t=e(15),n=Object(t.a)({},(function(){var s=this,a=s._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"building-panel-assets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#building-panel-assets"}},[s._v("#")]),s._v(" Building Panel Assets")]),s._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[s._v("WARNING")]),s._v(" "),a("p",[s._v("Do "),a("strong",[s._v("not")]),s._v(" run the following steps on your production nodes.")])]),s._v(" "),a("p",[s._v("Instructions on how to build the panel are also available in the "),a("a",{attrs:{href:"https://github.com/pterodactyl/panel/blob/1.0-develop/BUILDING.md",target:"_blank",rel:"noopener noreferrer"}},[s._v("BUILDING.md"),a("OutboundLink")],1),s._v(" file.")]),s._v(" "),a("p",[s._v("The frontend of the Panel is built with React. Any changes to the source files require to recompile it.\nThis also applies to style sheets. The following sections explain how to do so.")]),s._v(" "),a("h2",{attrs:{id:"install-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-dependencies"}},[s._v("#")]),s._v(" Install Dependencies")]),s._v(" "),a("p",[s._v("The following commands will install the necessary dependencies for building the Panel assets.")]),s._v(" "),a("p",[s._v("The build tools require NodeJS, yarn is used as the package manager.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Ubuntu/Debian")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-sL")]),s._v(" https://deb.nodesource.com/setup_16.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-E")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" -\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-y")]),s._v(" nodejs\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# CentOS")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-sL")]),s._v(" https://rpm.nodesource.com/setup_16.x "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-E")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v(" -\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-y")]),s._v(" nodejs "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# CentOS 7")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-y")]),s._v(" nodejs "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# CentOS 8, Rocky Linux 8, AlmaLinux 8")]),s._v("\n")])])]),a("p",[s._v("Install required javascript packages.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("npm")]),s._v(" i "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[s._v("-g")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install Yarn")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Installs panel build dependencies")]),s._v("\n")])])]),a("h2",{attrs:{id:"build-panel-assets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#build-panel-assets"}},[s._v("#")]),s._v(" Build Panel Assets")]),s._v(" "),a("p",[s._v("The following command will rebuild the Panel frontend. For NodeJS version 17 and above, you must enable the "),a("code",[s._v("--openssl-legacy-provider")]),s._v(" option before building.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("cd")]),s._v(" /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("export")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("NODE_OPTIONS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("--openssl-legacy-provider "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# for NodeJS v17+")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yarn")]),s._v(" build:production "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Build panel")]),s._v("\n")])])]),a("p",[s._v("You can use command "),a("code",[s._v("yarn run watch")]),s._v(" to view the progress of your changes in almost real-time for easier development. Once you're satisfied with your changes build the panel using the previously mentioned "),a("code",[s._v("yarn build:production")]),s._v(" command.")])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/34.4bfbb308.js b/assets/js/34.49d78ff7.js similarity index 98% rename from assets/js/34.4bfbb308.js rename to assets/js/34.49d78ff7.js index 0be0ac60..2983d6f6 100644 --- a/assets/js/34.4bfbb308.js +++ b/assets/js/34.49d78ff7.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{293:function(t,s,e){"use strict";e.r(s);var a=e(15),i=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"building-wings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#building-wings"}},[t._v("#")]),t._v(" Building Wings")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),s("p",[t._v("Do "),s("strong",[t._v("not")]),t._v(" run the following steps on your production nodes.")])]),t._v(" "),s("p",[t._v("Wings is written in Go. This makes it very easy to modify and compile it on your own, and distribute your own binaries.\nThis guide will cover the steps necessary to build it yourself.")]),t._v(" "),s("p",[t._v("It will not, however, explain where to look for certain aspects of Wings and which changes are necessary to achieve specific results. Knowledge of the Go language is required if you want to modify it.")]),t._v(" "),s("p",[t._v("Building Go programs is very easy, and the same also applies to Wings. Go is cross-platform, but Wings only supports Linux at the moment. The easiest way to compile it for Linux is to run the commands on a Linux machine.")]),t._v(" "),s("h2",{attrs:{id:"build-requirements"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-requirements"}},[t._v("#")]),t._v(" Build Requirements")]),t._v(" "),s("p",[t._v("An up to date version of Go is required to compile Wings. The minimum version can be found at the top of the "),s("a",{attrs:{href:"https://github.com/pterodactyl/wings/blob/develop/go.mod",target:"_blank",rel:"noopener noreferrer"}},[t._v("go.mod"),s("OutboundLink")],1),t._v(" file. See the "),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("official instructions"),s("OutboundLink")],1),t._v(" for help with installing Go.")]),t._v(" "),s("h2",{attrs:{id:"building"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#building"}},[t._v("#")]),t._v(" Building")]),t._v(" "),s("p",[t._v("Execute the following command in your local clone of the repository to compile Wings into a binary.")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("go build\n")])])]),s("p",[t._v("You should now have a "),s("code",[t._v("wings")]),t._v(" binary file in your wings directory.")]),t._v(" "),s("h2",{attrs:{id:"install-the-new-binary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-the-new-binary"}},[t._v("#")]),t._v(" Install the new binary")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Root required")]),t._v(" "),s("p",[t._v("Some the following commands require root permissions. Prepend them with "),s("code",[t._v("sudo")]),t._v(" if you are not logged in as root.")])]),t._v(" "),s("ol",[s("li",[t._v("Backup the current installation of wings")])]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mv")]),t._v(" /usr/local/bin/wings /usr/local/bin/wings-backup\n")])])]),s("ol",{attrs:{start:"2"}},[s("li",[t._v("Place the new binary in "),s("code",[t._v("/usr/local/bin")])])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("cp ./wings /usr/local/bin\n")])])]),s("ol",{attrs:{start:"3"}},[s("li",[t._v("Restart wings")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl restart wings\n")])])]),s("h2",{attrs:{id:"troubleshooting"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[t._v("#")]),t._v(" Troubleshooting")]),t._v(" "),s("p",[t._v("If the wings service does not start properly, you can try to start Wings in a console window.")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("wings --debug\n")])])]),s("p",[t._v("Remember to stop the system service before, and re-enable it afterwards.")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl stop wings\n\nsystemctl start wings\n")])])])])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{290:function(t,s,e){"use strict";e.r(s);var a=e(15),i=Object(a.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"building-wings"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#building-wings"}},[t._v("#")]),t._v(" Building Wings")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),s("p",[t._v("Do "),s("strong",[t._v("not")]),t._v(" run the following steps on your production nodes.")])]),t._v(" "),s("p",[t._v("Wings is written in Go. This makes it very easy to modify and compile it on your own, and distribute your own binaries.\nThis guide will cover the steps necessary to build it yourself.")]),t._v(" "),s("p",[t._v("It will not, however, explain where to look for certain aspects of Wings and which changes are necessary to achieve specific results. Knowledge of the Go language is required if you want to modify it.")]),t._v(" "),s("p",[t._v("Building Go programs is very easy, and the same also applies to Wings. Go is cross-platform, but Wings only supports Linux at the moment. The easiest way to compile it for Linux is to run the commands on a Linux machine.")]),t._v(" "),s("h2",{attrs:{id:"build-requirements"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#build-requirements"}},[t._v("#")]),t._v(" Build Requirements")]),t._v(" "),s("p",[t._v("An up to date version of Go is required to compile Wings. The minimum version can be found at the top of the "),s("a",{attrs:{href:"https://github.com/pterodactyl/wings/blob/develop/go.mod",target:"_blank",rel:"noopener noreferrer"}},[t._v("go.mod"),s("OutboundLink")],1),t._v(" file. See the "),s("a",{attrs:{href:"https://golang.org/doc/install",target:"_blank",rel:"noopener noreferrer"}},[t._v("official instructions"),s("OutboundLink")],1),t._v(" for help with installing Go.")]),t._v(" "),s("h2",{attrs:{id:"building"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#building"}},[t._v("#")]),t._v(" Building")]),t._v(" "),s("p",[t._v("Execute the following command in your local clone of the repository to compile Wings into a binary.")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("go build\n")])])]),s("p",[t._v("You should now have a "),s("code",[t._v("wings")]),t._v(" binary file in your wings directory.")]),t._v(" "),s("h2",{attrs:{id:"install-the-new-binary"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-the-new-binary"}},[t._v("#")]),t._v(" Install the new binary")]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("Root required")]),t._v(" "),s("p",[t._v("Some the following commands require root permissions. Prepend them with "),s("code",[t._v("sudo")]),t._v(" if you are not logged in as root.")])]),t._v(" "),s("ol",[s("li",[t._v("Backup the current installation of wings")])]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("mv")]),t._v(" /usr/local/bin/wings /usr/local/bin/wings-backup\n")])])]),s("ol",{attrs:{start:"2"}},[s("li",[t._v("Place the new binary in "),s("code",[t._v("/usr/local/bin")])])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("cp ./wings /usr/local/bin\n")])])]),s("ol",{attrs:{start:"3"}},[s("li",[t._v("Restart wings")])]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl restart wings\n")])])]),s("h2",{attrs:{id:"troubleshooting"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[t._v("#")]),t._v(" Troubleshooting")]),t._v(" "),s("p",[t._v("If the wings service does not start properly, you can try to start Wings in a console window.")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("wings --debug\n")])])]),s("p",[t._v("Remember to stop the system service before, and re-enable it afterwards.")]),t._v(" "),s("div",{staticClass:"language- extra-class"},[s("pre",{pre:!0,attrs:{class:"language-text"}},[s("code",[t._v("systemctl stop wings\n\nsystemctl start wings\n")])])])])}),[],!1,null,null,null);s.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/35.28ffe57a.js b/assets/js/35.a04be06d.js similarity index 99% rename from assets/js/35.28ffe57a.js rename to assets/js/35.a04be06d.js index a52aa73f..255c4708 100644 --- a/assets/js/35.28ffe57a.js +++ b/assets/js/35.a04be06d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{292:function(a,t,s){"use strict";s.r(t);var e=s(15),n=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"centos-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#centos-7"}},[a._v("#")]),a._v(" CentOS 7")]),a._v(" "),t("p",[a._v("This guide provides comprehensive instructions for installing Pterodactyl v1.X on CentOS 7, including all dependencies and SSL configuration.")]),a._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#install-dependencies"}},[a._v("Install Dependencies")]),t("ul",[t("li",[t("a",{attrs:{href:"#selinux-configuration"}},[a._v("SELinux Configuration")])]),t("li",[t("a",{attrs:{href:"#installing-dependencies"}},[a._v("Installing Dependencies")])])])]),t("li",[t("a",{attrs:{href:"#server-configuration"}},[a._v("Server Configuration")]),t("ul",[t("li",[t("a",{attrs:{href:"#php-configuration"}},[a._v("PHP Configuration")])]),t("li",[t("a",{attrs:{href:"#selinux-configuration"}},[a._v("SELinux configuration")])])])]),t("li",[t("a",{attrs:{href:"#installing-the-panel"}},[a._v("Installing the Panel")])])])]),t("p"),a._v(" "),t("h2",{attrs:{id:"install-dependencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#install-dependencies"}},[a._v("#")]),a._v(" Install Dependencies")]),a._v(" "),t("h3",{attrs:{id:"selinux-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#selinux-configuration"}},[a._v("#")]),a._v(" SELinux Configuration")]),a._v(" "),t("p",[a._v("If SELinux is enabled (check with "),t("code",[a._v("sestatus")]),a._v("), install the following packages:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans\n")])])]),t("h3",{attrs:{id:"installing-dependencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installing-dependencies"}},[a._v("#")]),a._v(" Installing Dependencies")]),a._v(" "),t("p",[a._v("Run the following commands to install all necessary dependencies:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Add MariaDB repository")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("tee")]),a._v(" /etc/yum.repos.d/mariadb.repo "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<<")]),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("EOF\n[mariadb]\nname = MariaDB\nbaseurl = http://yum.mariadb.org/10.5/centos7-amd64\ngpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB\ngpgcheck = 1\nEOF")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install EPEL and Remi repositories")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" https://rpms.remirepo.net/enterprise/remi-release-7.rpm\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Enable PHP 8.3 from Remi")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" yum-utils\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum-config-manager "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--disable")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'remi-php*'")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum-config-manager "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--enable")]),a._v(" remi-php83\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum update "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install dependencies")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" MariaDB-common MariaDB-server php php-"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("common,fpm,cli,json,mysqlnd,mcrypt,gd,mbstring,pdo,zip,bcmath,dom,opcache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v(" nginx "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("zip")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("unzip")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install Redis")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--enablerepo")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("remi redis\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Start and enable services")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" systemctl "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("enable")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--now")]),a._v(" mariadb nginx redis\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Configure firewall")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" firewall-cmd --add-service"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--permanent")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" firewall-cmd --add-service"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("https "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--permanent")]),a._v(" \n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" firewall-cmd "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--reload")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install Composer")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("curl")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-sS")]),a._v(" https://getcomposer.org/installer "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" php -- --install-dir"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/usr/local/bin "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--filename")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("composer\n")])])]),t("h2",{attrs:{id:"server-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[a._v("#")]),a._v(" Server Configuration")]),a._v(" "),t("h3",{attrs:{id:"php-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#php-configuration"}},[a._v("#")]),a._v(" PHP Configuration")]),a._v(" "),t("p",[a._v("Create a new PHP-FPM configuration file in /etc/php-fpm.d/www-pterodactyl.conf:")]),a._v(" "),t("div",{staticClass:"language-conf extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("[pterodactyl]\n\nuser = nginx\ngroup = nginx\n\nlisten = /var/run/php-fpm/pterodactyl.sock\nlisten.owner = nginx\nlisten.group = nginx\nlisten.mode = 0750\n\npm = ondemand\npm.max_children = 9\npm.process_idle_timeout = 10s\npm.max_requests = 200\n")])])]),t("p",[a._v("Start and enable PHP-FPM:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" systemctl "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("enable")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--now")]),a._v(" php-fpm\n")])])]),t("h3",{attrs:{id:"selinux-configuration-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#selinux-configuration-2"}},[a._v("#")]),a._v(" SELinux configuration")]),a._v(" "),t("p",[a._v("The following command will allow nginx to work with redis.")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("setsebool "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-P")]),a._v(" httpd_can_network_connect "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\nsetsebool "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-P")]),a._v(" httpd_execmem "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\nsetsebool "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-P")]),a._v(" httpd_unified "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n")])])]),t("h2",{attrs:{id:"installing-the-panel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[a._v("#")]),a._v(" Installing the Panel")]),a._v(" "),t("p",[a._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[a._v("official Panel installation documentation")]),a._v(".")],1),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("You will need to change the fastcgi_pass path in the Nginx configuration to "),t("code",[a._v("/var/run/php-fpm/pterodactyl.sock")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{293:function(a,t,s){"use strict";s.r(t);var e=s(15),n=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"centos-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#centos-7"}},[a._v("#")]),a._v(" CentOS 7")]),a._v(" "),t("p",[a._v("This guide provides comprehensive instructions for installing Pterodactyl v1.X on CentOS 7, including all dependencies and SSL configuration.")]),a._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#install-dependencies"}},[a._v("Install Dependencies")]),t("ul",[t("li",[t("a",{attrs:{href:"#selinux-configuration"}},[a._v("SELinux Configuration")])]),t("li",[t("a",{attrs:{href:"#installing-dependencies"}},[a._v("Installing Dependencies")])])])]),t("li",[t("a",{attrs:{href:"#server-configuration"}},[a._v("Server Configuration")]),t("ul",[t("li",[t("a",{attrs:{href:"#php-configuration"}},[a._v("PHP Configuration")])]),t("li",[t("a",{attrs:{href:"#selinux-configuration"}},[a._v("SELinux configuration")])])])]),t("li",[t("a",{attrs:{href:"#installing-the-panel"}},[a._v("Installing the Panel")])])])]),t("p"),a._v(" "),t("h2",{attrs:{id:"install-dependencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#install-dependencies"}},[a._v("#")]),a._v(" Install Dependencies")]),a._v(" "),t("h3",{attrs:{id:"selinux-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#selinux-configuration"}},[a._v("#")]),a._v(" SELinux Configuration")]),a._v(" "),t("p",[a._v("If SELinux is enabled (check with "),t("code",[a._v("sestatus")]),a._v("), install the following packages:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans\n")])])]),t("h3",{attrs:{id:"installing-dependencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installing-dependencies"}},[a._v("#")]),a._v(" Installing Dependencies")]),a._v(" "),t("p",[a._v("Run the following commands to install all necessary dependencies:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Add MariaDB repository")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("tee")]),a._v(" /etc/yum.repos.d/mariadb.repo "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<<")]),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("EOF\n[mariadb]\nname = MariaDB\nbaseurl = http://yum.mariadb.org/10.5/centos7-amd64\ngpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB\ngpgcheck = 1\nEOF")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install EPEL and Remi repositories")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" https://rpms.remirepo.net/enterprise/remi-release-7.rpm\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Enable PHP 8.3 from Remi")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" yum-utils\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum-config-manager "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--disable")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[a._v("'remi-php*'")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum-config-manager "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--enable")]),a._v(" remi-php83\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum update "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install dependencies")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" MariaDB-common MariaDB-server php php-"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("common,fpm,cli,json,mysqlnd,mcrypt,gd,mbstring,pdo,zip,bcmath,dom,opcache"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v(" nginx "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("zip")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("unzip")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install Redis")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" yum "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("install")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-y")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--enablerepo")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("remi redis\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Start and enable services")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" systemctl "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("enable")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--now")]),a._v(" mariadb nginx redis\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Configure firewall")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" firewall-cmd --add-service"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("http "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--permanent")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" firewall-cmd --add-service"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("https "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--permanent")]),a._v(" \n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" firewall-cmd "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--reload")]),a._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Install Composer")]),a._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("curl")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-sS")]),a._v(" https://getcomposer.org/installer "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" php -- --install-dir"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("/usr/local/bin "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--filename")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("composer\n")])])]),t("h2",{attrs:{id:"server-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[a._v("#")]),a._v(" Server Configuration")]),a._v(" "),t("h3",{attrs:{id:"php-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#php-configuration"}},[a._v("#")]),a._v(" PHP Configuration")]),a._v(" "),t("p",[a._v("Create a new PHP-FPM configuration file in /etc/php-fpm.d/www-pterodactyl.conf:")]),a._v(" "),t("div",{staticClass:"language-conf extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[a._v("[pterodactyl]\n\nuser = nginx\ngroup = nginx\n\nlisten = /var/run/php-fpm/pterodactyl.sock\nlisten.owner = nginx\nlisten.group = nginx\nlisten.mode = 0750\n\npm = ondemand\npm.max_children = 9\npm.process_idle_timeout = 10s\npm.max_requests = 200\n")])])]),t("p",[a._v("Start and enable PHP-FPM:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[a._v("sudo")]),a._v(" systemctl "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("enable")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("--now")]),a._v(" php-fpm\n")])])]),t("h3",{attrs:{id:"selinux-configuration-2"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#selinux-configuration-2"}},[a._v("#")]),a._v(" SELinux configuration")]),a._v(" "),t("p",[a._v("The following command will allow nginx to work with redis.")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("setsebool "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-P")]),a._v(" httpd_can_network_connect "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\nsetsebool "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-P")]),a._v(" httpd_execmem "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\nsetsebool "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[a._v("-P")]),a._v(" httpd_unified "),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),a._v("\n")])])]),t("h2",{attrs:{id:"installing-the-panel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[a._v("#")]),a._v(" Installing the Panel")]),a._v(" "),t("p",[a._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[a._v("official Panel installation documentation")]),a._v(".")],1),a._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("You will need to change the fastcgi_pass path in the Nginx configuration to "),t("code",[a._v("/var/run/php-fpm/pterodactyl.sock")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/4.0da8214b.js b/assets/js/4.1c05de3a.js similarity index 83% rename from assets/js/4.0da8214b.js rename to assets/js/4.1c05de3a.js index 450e7e0e..2ded9a4f 100644 --- a/assets/js/4.0da8214b.js +++ b/assets/js/4.1c05de3a.js @@ -1,3 +1,3 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4,25,26,27],{249:function(t,e,s){"use strict";s.r(e);var i=s(248),n=s.n(i);if("undefined"!=typeof window){s(253)}var a={props:{options:{type:Object,default:function(){return{}}}},mounted:function(){this.create()},destroyed:function(){n()(this.$el).slick("unslick")},methods:{create:function(){const t=n()(this.$el);t.on("afterChange",this.onAfterChange),t.on("beforeChange",this.onBeforeChange),t.on("breakpoint",this.onBreakpoint),t.on("destroy",this.onDestroy),t.on("edge",this.onEdge),t.on("init",this.onInit),t.on("reInit",this.onReInit),t.on("setPosition",this.onSetPosition),t.on("swipe",this.onSwipe),t.on("lazyLoaded",this.onLazyLoaded),t.on("lazyLoadError",this.onLazyLoadError),t.slick(this.options)},destroy:function(){const t=n()(this.$el);t.off("afterChange",this.onAfterChange),t.off("beforeChange",this.onBeforeChange),t.off("breakpoint",this.onBreakpoint),t.off("destroy",this.onDestroy),t.off("edge",this.onEdge),t.off("init",this.onInit),t.off("reInit",this.onReInit),t.off("setPosition",this.onSetPosition),t.off("swipe",this.onSwipe),t.off("lazyLoaded",this.onLazyLoaded),t.off("lazyLoadError",this.onLazyLoadError),n()(this.$el).slick("unslick")},reSlick:function(){this.destroy(),this.create()},next:function(){n()(this.$el).slick("slickNext")},prev:function(){n()(this.$el).slick("slickPrev")},pause:function(){n()(this.$el).slick("slickPause")},play:function(){n()(this.$el).slick("slickPlay")},goTo:function(t,e){n()(this.$el).slick("slickGoTo",t,e)},currentSlide:function(){return n()(this.$el).slick("slickCurrentSlide")},add:function(t,e,s){n()(this.$el).slick("slickAdd",t,e,s)},remove:function(t,e){n()(this.$el).slick("slickRemove",t,e)},filter:function(t){n()(this.$el).slick("slickFilter",t)},unfilter:function(){n()(this.$el).slick("slickUnfilter")},getOption:function(t){n()(this.$el).slick("slickGetOption",t)},setOption:function(t,e,s){n()(this.$el).slick("slickSetOption",t,e,s)},setPosition:function(){n()(this.$el).slick("setPosition")},onAfterChange:function(t,e,s){this.$emit("afterChange",t,e,s)},onBeforeChange:function(t,e,s,i){this.$emit("beforeChange",t,e,s,i)},onBreakpoint:function(t,e,s){this.$emit("breakpoint",t,e,s)},onDestroy:function(t,e){this.$emit("destroy",t,e)},onEdge:function(t,e,s){this.$emit("edge",t,e,s)},onInit:function(t,e){this.$emit("init",t,e)},onReInit:function(t,e){this.$emit("reInit",t,e)},onSetPosition:function(t,e){this.$emit("setPosition",t,e)},onSwipe:function(t,e,s){this.$emit("swipe",t,e,s)},onLazyLoaded:function(t,e,s,i){this.$emit("lazyLoaded",t,e,s,i)},onLazyLoadError:function(t,e,s,i){this.$emit("lazyLoadError",t,e,s,i)}}},o=s(15),r=Object(o.a)(a,(function(){return(0,this._self._c)("div",[this._t("default")],2)}),[],!1,null,null,null);e.default=r.exports},250:function(t,e,s){"use strict";s.r(e);s(90);var i={data:()=>({query:"",focused:!1,focusIndex:0}),computed:{showSuggestions(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions(){const t=this.query.trim().toLowerCase();if(!t)return;const{pages:e,themeConfig:s}=this.$site,i=s.searchMaxSuggestions||5,n=this.$localePath,a=e=>e.title&&e.title.toLowerCase().indexOf(t)>-1,o=[];for(let t=0;t=i);t++){const s=e[t];if(this.getPageLocalePath(s)===n)if(a(s))o.push(s);else if(s.headers)for(let t=0;t=i);t++){const e=s.headers[t];a(e)&&o.push(Object.assign({},s,{path:s.path+"#"+e.slug,header:e}))}}return o},alignRight(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},methods:{getPageLocalePath(t){for(const e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},onUp(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown(){this.showSuggestions&&(this.focusIndex "+t._s(s.header.title))]):t._e()])])})),0)]):t._e()])}),[],!1,null,null,null);e.default=a.exports},252:function(t,e,s){"use strict";s.r(e);var i=s(15),n=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sidebar-button",on:{click:function(e){return t.$emit("toggle-sidebar")}}},[e("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[e("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null);e.default=n.exports},255:function(t,e,s){},256:function(t,e,s){},258:function(t,e,s){"use strict";s.r(e);var i=s(241),n=s(249),a={components:{NavLink:i.default,Slick:n.default},data:()=>({slickOptions:{slidesToShow:1,centerMode:!0,centerPadding:"0",speed:1e3,autoplay:!0,variableWidth:!0,arrows:!1,dots:!0,pauseOnHover:!1,pauseOnDotsHover:!0}}),computed:{data(){return this.$page.frontmatter},actionLink(){return{link:this.data.actionLink,text:this.data.actionText}}}},o=s(15),r=Object(o.a)(a,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"home"},[e("div",{staticClass:"header section bg-blue text-grey-lightest less-padding emphasize"},[e("div",{staticClass:"container z-10"},[e("div",{staticClass:"text-center"},[t._m(0),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/panel/getting_started.html"}},[t._v("Let's Get Started!")])],1)])])]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),e("div",{staticClass:"section bg-white"},[e("div",{staticClass:"text-center"},[e("h1",[t._v("Screenshots")]),t._v(" "),e("div",{staticClass:"screenshots"},[e("slick",{ref:"slick",attrs:{options:t.slickOptions}},[e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}})])])],1)])]),t._v(" "),e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",[t._v("Get Started")]),t._v(" "),e("p",{staticClass:"m-4"},[t._v("Ready to fly on the Pterodactyl?")]),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/project/introduction.html"}},[t._v("About the project")]),t._v(" "),e("a",{staticClass:"btn inline-block",attrs:{href:"https://discord.gg/pterodactyl"}},[t._v("Discord")])],1)])]),t._v(" "),e("div",{staticClass:"section bg-black text-grey-lighter text-sm less-padding"},[e("div",{staticClass:"container text-center"},[e("div",[e("img",{staticClass:"h-20",attrs:{src:t.$withBase("logos/banner_logo.png"),alt:"pterodactyl banner logo"}})]),t._v(" "),t._m(3),t._v(" "),e("div",{staticClass:"footer"},[t._v("MIT Licensed | Pterodactyl® Copyright © Dane Everitt and contributors")])])])])}),[function(){var t=this._self._c;return t("div",[t("img",{staticClass:"max-w-xl w-full inline-block",attrs:{src:"https://cdn.pterodactyl.io/logos/new/pterodactyl_logo_transparent.png",alt:"Pterodactyl"}})])},function(){var t=this._self._c;return t("div",{staticClass:"section bg-white"},[t("div",{staticClass:"container text-center"},[t("h1",{staticClass:"text-blue mb-4"},[this._v("Pterodactyl Panel")]),this._v(" "),t("h3",{staticClass:"border-0 font-normal leading-normal mx-auto",staticStyle:{"max-width":"50rem"}},[this._v("\n Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go.\n Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers\n while exposing a beautiful and intuitive UI to end users.\n ")]),this._v(" "),t("h3",{staticClass:"border-0 leading-normal mx-auto mt-4",staticStyle:{"max-width":"50rem"}},[this._v("\n Stop settling for less. Make game servers a first class citizen on your platform.\n ")]),this._v(" "),t("img",{staticClass:"max-w-lg w-full m-4 inline-block",attrs:{src:"https://cdn.pterodactyl.io/site-assets/mockup-macbook-grey-1.0.png"}})])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",{staticClass:"mb-4"},[t._v("Why Pterodactyl®")]),t._v(" "),e("div",{staticClass:"flex flex-wrap"},[e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-lock"})]),t._v(" "),e("h3",[t._v("Security First")]),t._v(" "),e("p",[t._v("Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-beaker"})]),t._v(" "),e("h3",[t._v("Modern Tooling")]),t._v(" "),e("p",[t._v("Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-anchor"})]),t._v(" "),e("h3",[t._v("Docker to the Core")]),t._v(" "),e("p",[t._v("All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-wallet"})]),t._v(" "),e("h3",[t._v("Free & Open Source")]),t._v(" "),e("p",[t._v("Pterodactyl is 100% free and licensed under a MIT license. All of our code is completely open source as well.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-browser"})]),t._v(" "),e("h3",[t._v("User Friendly")]),t._v(" "),e("p",[t._v("Save the furious clicking and screaming for Overwatch. Pterodactyl's interface is designed so well even Hanzo can use it.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-expand"})]),t._v(" "),e("h3",[t._v("Scalable")]),t._v(" "),e("p",[t._v("Whether you're a hosting company, the next Hyplex, or just some dudes playing video games, we've got you covered.")])])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"text-left md:flex"},[e("div",{staticClass:"flex-none w-full md:w-1/2 md:pr-12"},[e("p",{staticClass:"my-4"},[t._v("\n Since 2015 Pterodactyl® has been delivering robust, performant, and secure software that allows\n individuals, networks, and hosting companies to run game servers at scale; easily. Best of all?\n No exorbitant monthly costs.\n ")]),t._v(" "),e("p",{staticClass:"my-4"},[t._v("\n Take the plunge today and discover why thousands of users trust Pterodactyl® to manage their\n game servers.\n ")])]),t._v(" "),e("div",{staticClass:"hidden md:block md:flex-1 md:pr-12"},[e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/pterodactyl"}},[t._v("GitHub")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/sponsors/matthewpi"}},[t._v("Sponsor")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://paypal.me/PterodactylSoftware"}},[t._v("Donate")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"/panel/troubleshooting.html"}},[t._v("Troubleshooting")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/parkervcp/eggs"}},[t._v("Additional Game Configurations")])])]),t._v(" "),e("div",{staticClass:"text-center mt-8 md:flex-1 md:mt-0"},[e("a",{attrs:{href:"https://discord.gg/pterodactyl",target:"_blank",rel:"nofollow noopener"}},[e("img",{staticClass:"w-3/4",attrs:{src:"https://cdn.pterodactyl.io/site-assets/discord.png"}})])])])}],!1,null,null,null);e.default=r.exports},259:function(t,e,s){"use strict";s.r(e);var i=s(252),n=s(250),a=s(246),o={components:{SidebarButton:i.default,NavLinks:a.default,SearchBox:n.default},computed:{}},r=s(15),c=Object(r.a)(o,(function(){var t=this,e=t._self._c;return e("header",{staticClass:"nav"},[e("SidebarButton",{staticClass:"block md:hidden flex-no-shrink",on:{"toggle-sidebar":function(e){return t.$emit("toggle-sidebar")}}}),t._v(" "),e("div",{staticClass:"logo-container"},[e("router-link",{staticClass:"home-link",attrs:{to:t.$localePath}},[t.$site.themeConfig.logo?e("img",{staticClass:"logo",attrs:{src:t.$withBase(t.$site.themeConfig.logo)}}):t._e(),t._v(" "),t.$siteTitle?e("span",{staticClass:"site-name hidden md:inline",class:{"can-hide":t.$site.themeConfig.logo}},[t._v(t._s(t.$siteTitle))]):t._e()])],1),t._v(" "),e("div",{staticClass:"w-full"},[e("div",{staticClass:"flex"},[e("SearchBox"),t._v(" "),e("NavLinks",{staticClass:"hidden md:flex"})],1)])],1)}),[],!1,null,null,null);e.default=c.exports},260:function(t,e,s){"use strict";s.r(e);s(90);var i=s(239);function n(t,e,s){const i=[];e.forEach(t=>{"group"===t.type?i.push(...t.children||[]):i.push(t)});for(let e=0;e({query:"",focused:!1,focusIndex:0}),computed:{showSuggestions(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions(){const t=this.query.trim().toLowerCase();if(!t)return;const{pages:e,themeConfig:s}=this.$site,i=s.searchMaxSuggestions||5,n=this.$localePath,a=e=>e.title&&e.title.toLowerCase().indexOf(t)>-1,o=[];for(let t=0;t=i);t++){const s=e[t];if(this.getPageLocalePath(s)===n)if(a(s))o.push(s);else if(s.headers)for(let t=0;t=i);t++){const e=s.headers[t];a(e)&&o.push(Object.assign({},s,{path:s.path+"#"+e.slug,header:e}))}}return o},alignRight(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},methods:{getPageLocalePath(t){for(const e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},onUp(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown(){this.showSuggestions&&(this.focusIndex "+t._s(s.header.title))]):t._e()])])})),0)]):t._e()])}),[],!1,null,null,null);e.default=a.exports},252:function(t,e,s){"use strict";s.r(e);var i=s(15),n=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("div",{staticClass:"sidebar-button",on:{click:function(e){return t.$emit("toggle-sidebar")}}},[e("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[e("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null);e.default=n.exports},255:function(t,e,s){},256:function(t,e,s){},258:function(t,e,s){"use strict";s.r(e);var i=s(241),n=s(249),a={components:{NavLink:i.default,Slick:n.default},data:()=>({slickOptions:{slidesToShow:1,centerMode:!0,centerPadding:"0",speed:1e3,autoplay:!0,variableWidth:!0,arrows:!1,dots:!0,pauseOnHover:!1,pauseOnDotsHover:!0}}),computed:{data(){return this.$page.frontmatter},actionLink(){return{link:this.data.actionLink,text:this.data.actionText}}}},o=s(15),r=Object(o.a)(a,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"home"},[e("div",{staticClass:"header section bg-blue text-grey-lightest less-padding emphasize"},[e("div",{staticClass:"container z-10"},[e("div",{staticClass:"text-center"},[t._m(0),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/panel/getting_started.html"}},[t._v("Let's Get Started!")])],1)])])]),t._v(" "),t._m(1),t._v(" "),t._m(2),t._v(" "),e("div",{staticClass:"section bg-white"},[e("div",{staticClass:"text-center"},[e("h1",[t._v("Screenshots")]),t._v(" "),e("div",{staticClass:"screenshots"},[e("slick",{ref:"slick",attrs:{options:t.slickOptions}},[e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-1.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-2.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-3.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-4.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-5.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-6.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-7.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-8.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-9.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-10.png"}})]),t._v(" "),e("a",{attrs:{href:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}},[e("img",{attrs:{src:"https://cdn.pterodactyl.io/site-assets/carousel/screenshot-11.png"}})])])],1)])]),t._v(" "),e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",[t._v("Get Started")]),t._v(" "),e("p",{staticClass:"m-4"},[t._v("Ready to fly on the Pterodactyl?")]),t._v(" "),e("div",{staticClass:"mt-4"},[e("router-link",{staticClass:"btn inline-block",attrs:{to:"/project/introduction.html"}},[t._v("About the project")]),t._v(" "),e("a",{staticClass:"btn inline-block",attrs:{href:"https://discord.gg/pterodactyl"}},[t._v("Discord")])],1)])]),t._v(" "),e("div",{staticClass:"section bg-black text-grey-lighter text-sm less-padding"},[e("div",{staticClass:"container text-center"},[e("div",[e("img",{staticClass:"h-20",attrs:{src:t.$withBase("logos/banner_logo.png"),alt:"pterodactyl banner logo"}})]),t._v(" "),t._m(3),t._v(" "),e("div",{staticClass:"footer"},[t._v("MIT Licensed | Pterodactyl® Copyright © Dane Everitt and contributors")])])])])}),[function(){var t=this._self._c;return t("div",[t("img",{staticClass:"max-w-xl w-full inline-block",attrs:{src:"https://cdn.pterodactyl.io/logos/new/pterodactyl_logo_transparent.png",alt:"Pterodactyl"}})])},function(){var t=this._self._c;return t("div",{staticClass:"section bg-white"},[t("div",{staticClass:"container text-center"},[t("h1",{staticClass:"text-blue mb-4"},[this._v("Pterodactyl Panel")]),this._v(" "),t("h3",{staticClass:"border-0 font-normal leading-normal mx-auto",staticStyle:{"max-width":"50rem"}},[this._v("\n Pterodactyl® is a free, open-source game server management panel built with PHP, React, and Go.\n Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers\n while exposing a beautiful and intuitive UI to end users.\n ")]),this._v(" "),t("h3",{staticClass:"border-0 leading-normal mx-auto mt-4",staticStyle:{"max-width":"50rem"}},[this._v("\n Stop settling for less. Make game servers a first class citizen on your platform.\n ")]),this._v(" "),t("img",{staticClass:"max-w-lg w-full m-4 inline-block",attrs:{src:"https://cdn.pterodactyl.io/site-assets/mockup-macbook-grey-1.0.png"}})])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"section bg-blue text-grey-lightest"},[e("div",{staticClass:"container text-center"},[e("h1",{staticClass:"mb-4"},[t._v("Why Pterodactyl®")]),t._v(" "),e("div",{staticClass:"flex flex-wrap"},[e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-lock"})]),t._v(" "),e("h3",[t._v("Security First")]),t._v(" "),e("p",[t._v("Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-beaker"})]),t._v(" "),e("h3",[t._v("Modern Tooling")]),t._v(" "),e("p",[t._v("Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-anchor"})]),t._v(" "),e("h3",[t._v("Docker to the Core")]),t._v(" "),e("p",[t._v("All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-wallet"})]),t._v(" "),e("h3",[t._v("Free & Open Source")]),t._v(" "),e("p",[t._v("Pterodactyl is 100% free and licensed under a MIT license. All of our code is completely open source as well.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-browser"})]),t._v(" "),e("h3",[t._v("User Friendly")]),t._v(" "),e("p",[t._v("Save the furious clicking and screaming for Overwatch. Pterodactyl's interface is designed so well even Hanzo can use it.")])]),t._v(" "),e("div",{staticClass:"feature"},[e("span",[e("i",{staticClass:"icon icon-expand"})]),t._v(" "),e("h3",[t._v("Scalable")]),t._v(" "),e("p",[t._v("Whether you're a hosting company, the next Hyplex, or just some dudes playing video games, we've got you covered.")])])])])])},function(){var t=this,e=t._self._c;return e("div",{staticClass:"text-left md:flex"},[e("div",{staticClass:"flex-none w-full md:w-1/2 md:pr-12"},[e("p",{staticClass:"my-4"},[t._v("\n Since 2015 Pterodactyl® has been delivering robust, performant, and secure software that allows\n individuals, networks, and hosting companies to run game servers at scale; easily. Best of all?\n No exorbitant monthly costs.\n ")]),t._v(" "),e("p",{staticClass:"my-4"},[t._v("\n Take the plunge today and discover why thousands of users trust Pterodactyl® to manage their\n game servers.\n ")])]),t._v(" "),e("div",{staticClass:"hidden md:block md:flex-1 md:pr-12"},[e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/pterodactyl"}},[t._v("GitHub")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://github.com/sponsors/matthewpi"}},[t._v("Sponsor")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://paypal.me/PterodactylSoftware"}},[t._v("Donate")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"/panel/troubleshooting.html"}},[t._v("Troubleshooting")])]),t._v(" "),e("p",[e("a",{staticClass:"text-grey-lightest",attrs:{href:"https://pterodactyleggs.com"}},[t._v("Additional Game Configurations")])])]),t._v(" "),e("div",{staticClass:"text-center mt-8 md:flex-1 md:mt-0"},[e("a",{attrs:{href:"https://discord.gg/pterodactyl",target:"_blank",rel:"nofollow noopener"}},[e("img",{staticClass:"w-3/4",attrs:{src:"https://cdn.pterodactyl.io/site-assets/discord.png"}})])])])}],!1,null,null,null);e.default=r.exports},259:function(t,e,s){"use strict";s.r(e);var i=s(252),n=s(250),a=s(246),o={components:{SidebarButton:i.default,NavLinks:a.default,SearchBox:n.default},computed:{}},r=s(15),c=Object(r.a)(o,(function(){var t=this,e=t._self._c;return e("header",{staticClass:"nav"},[e("SidebarButton",{staticClass:"block md:hidden flex-no-shrink",on:{"toggle-sidebar":function(e){return t.$emit("toggle-sidebar")}}}),t._v(" "),e("div",{staticClass:"logo-container"},[e("router-link",{staticClass:"home-link",attrs:{to:t.$localePath}},[t.$site.themeConfig.logo?e("img",{staticClass:"logo",attrs:{src:t.$withBase(t.$site.themeConfig.logo)}}):t._e(),t._v(" "),t.$siteTitle?e("span",{staticClass:"site-name hidden md:inline",class:{"can-hide":t.$site.themeConfig.logo}},[t._v(t._s(t.$siteTitle))]):t._e()])],1),t._v(" "),e("div",{staticClass:"w-full"},[e("div",{staticClass:"flex"},[e("SearchBox"),t._v(" "),e("NavLinks",{staticClass:"hidden md:flex"})],1)])],1)}),[],!1,null,null,null);e.default=c.exports},260:function(t,e,s){"use strict";s.r(e);s(90);var i=s(239);function n(t,e,s){const i=[];e.forEach(t=>{"group"===t.type?i.push(...t.children||[]):i.push(t)});for(let e=0;e
    '};function n(t,e,s){return ts?s:t}function a(t){return 100*(-1+t)}s.configure=function(t){var e,s;for(e in t)void 0!==(s=t[e])&&t.hasOwnProperty(e)&&(i[e]=s);return this},s.status=null,s.set=function(t){var e=s.isStarted();t=n(t,i.minimum,1),s.status=1===t?null:t;var c=s.render(!e),l=c.querySelector(i.barSelector),d=i.speed,u=i.easing;return c.offsetWidth,o((function(e){""===i.positionUsing&&(i.positionUsing=s.getPositioningCSS()),r(l,function(t,e,s){var n;return(n="translate3d"===i.positionUsing?{transform:"translate3d("+a(t)+"%,0,0)"}:"translate"===i.positionUsing?{transform:"translate("+a(t)+"%,0)"}:{"margin-left":a(t)+"%"}).transition="all "+e+"ms "+s,n}(t,d,u)),1===t?(r(c,{transition:"none",opacity:1}),c.offsetWidth,setTimeout((function(){r(c,{transition:"all "+d+"ms linear",opacity:0}),setTimeout((function(){s.remove(),e()}),d)}),d)):setTimeout(e,d)})),this},s.isStarted=function(){return"number"==typeof s.status},s.start=function(){s.status||s.set(0);var t=function(){setTimeout((function(){s.status&&(s.trickle(),t())}),i.trickleSpeed)};return i.trickle&&t(),this},s.done=function(t){return t||s.status?s.inc(.3+.5*Math.random()).set(1):this},s.inc=function(t){var e=s.status;return e?("number"!=typeof t&&(t=(1-e)*n(Math.random()*e,.1,.95)),e=n(e+t,0,.994),s.set(e)):s.start()},s.trickle=function(){return s.inc(Math.random()*i.trickleRate)},t=0,e=0,s.promise=function(i){return i&&"resolved"!==i.state()?(0===e&&s.start(),t++,e++,i.always((function(){0==--e?(t=0,s.done()):s.set((t-e)/t)})),this):this},s.render=function(t){if(s.isRendered())return document.getElementById("nprogress");l(document.documentElement,"nprogress-busy");var e=document.createElement("div");e.id="nprogress",e.innerHTML=i.template;var n,o=e.querySelector(i.barSelector),c=t?"-100":a(s.status||0),d=document.querySelector(i.parent);return r(o,{transition:"all 0 linear",transform:"translate3d("+c+"%,0,0)"}),i.showSpinner||(n=e.querySelector(i.spinnerSelector))&&h(n),d!=document.body&&l(d,"nprogress-custom-parent"),d.appendChild(e),e},s.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(i.parent),"nprogress-custom-parent");var t=document.getElementById("nprogress");t&&h(t)},s.isRendered=function(){return!!document.getElementById("nprogress")},s.getPositioningCSS=function(){var t=document.body.style,e="WebkitTransform"in t?"Webkit":"MozTransform"in t?"Moz":"msTransform"in t?"ms":"OTransform"in t?"O":"";return e+"Perspective"in t?"translate3d":e+"Transform"in t?"translate":"margin"};var o=function(){var t=[];function e(){var s=t.shift();s&&s(e)}return function(s){t.push(s),1==t.length&&e()}}(),r=function(){var t=["Webkit","O","Moz","ms"],e={};function s(s){return s=s.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(t,e){return e.toUpperCase()})),e[s]||(e[s]=function(e){var s=document.body.style;if(e in s)return e;for(var i,n=t.length,a=e.charAt(0).toUpperCase()+e.slice(1);n--;)if((i=t[n]+a)in s)return i;return e}(s))}function i(t,e,i){e=s(e),t.style[e]=i}return function(t,e){var s,n,a=arguments;if(2==a.length)for(s in e)void 0!==(n=e[s])&&e.hasOwnProperty(s)&&i(t,s,n);else i(t,a[1],a[2])}}();function c(t,e){return("string"==typeof t?t:u(t)).indexOf(" "+e+" ")>=0}function l(t,e){var s=u(t),i=s+e;c(s,e)||(t.className=i.substring(1))}function d(t,e){var s,i=u(t);c(t,e)&&(s=i.replace(" "+e+" "," "),t.className=s.substring(1,s.length-1))}function u(t){return(" "+(t.className||"")+" ").replace(/\s+/gi," ")}function h(t){t&&t.parentNode&&t.parentNode.removeChild(t)}return s})?i.call(e,s,e,t):i)||(t.exports=n)},263:function(t,e,s){"use strict";s(255)},264:function(t,e,s){"use strict";s(256)},282:function(t,e,s){"use strict";s.r(e);var i=s(0),n=s(262),a=s.n(n),o=s(258),r=s(259),c=s(260),l=s(281),d=s(239),u={components:{Home:o.default,Page:c.default,Sidebar:l.default,Navbar:r.default},data:()=>({isSidebarOpen:!1}),computed:{shouldShowNavbar(){const{themeConfig:t}=this.$site,{frontmatter:e}=this.$page;return!1!==e.navbar&&!1!==t.navbar&&(this.$title||t.logo||t.repo||t.nav||this.$themeLocaleConfig.nav)},shouldShowSidebar(){const{frontmatter:t}=this.$page;return!t.layout&&!t.home&&!1!==t.sidebar&&this.sidebarItems.length},sidebarItems(){return Object(d.m)(this.$page,this.$route,this.$site,this.$localePath)},pageClasses(){const t=this.$page.frontmatter.pageClass;return[{"no-navbar":!this.shouldShowNavbar,"sidebar-open":this.isSidebarOpen,"no-sidebar":!this.shouldShowSidebar},t]}},mounted(){window.addEventListener("scroll",this.onScroll),a.a.configure({showSpinner:!1}),this.$router.beforeEach((t,e,s)=>{t.path===e.path||i.a.component(t.name)||a.a.start(),s()}),this.$router.afterEach(()=>{a.a.done(),this.isSidebarOpen=!1})},methods:{toggleSidebar(t){this.isSidebarOpen="boolean"==typeof t?t:!this.isSidebarOpen},onTouchStart(t){this.touchStart={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}},onTouchEnd(t){const e=t.changedTouches[0].clientX-this.touchStart.x,s=t.changedTouches[0].clientY-this.touchStart.y;Math.abs(e)>Math.abs(s)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}},h=(s(263),s(264),s(15)),p=Object(h.a)(u,(function(){var t=this,e=t._self._c;return e("div",[e("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?e("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),e("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),e("Sidebar",{attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar}},[t._t("sidebar-top",null,{slot:"top"}),t._v(" "),t._t("sidebar-bottom",null,{slot:"bottom"})],2),t._v(" "),t.$page.frontmatter.layout?e("div",{staticClass:"custom-layout"},[e(t.$page.frontmatter.layout,{tag:"component"})],1):t.$page.frontmatter.home?e("Home"):e("Page",{attrs:{"sidebar-items":t.sidebarItems}},[t._t("page-top",null,{slot:"top"}),t._v(" "),t._t("page-bottom",null,{slot:"bottom"})],2)],1)])}),[],!1,null,null,null);e.default=p.exports}}]); \ No newline at end of file diff --git a/assets/js/40.8da7d440.js b/assets/js/40.34edc760.js similarity index 90% rename from assets/js/40.8da7d440.js rename to assets/js/40.34edc760.js index efd8b0dd..9b2d9a5e 100644 --- a/assets/js/40.8da7d440.js +++ b/assets/js/40.34edc760.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{298:function(t,n,a){"use strict";a.r(n);var i=a(15),s=Object(i.a)({},(function(){var t=this,n=t._self._c;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"debian-11-12"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#debian-11-12"}},[t._v("#")]),t._v(" Debian 11 & 12")]),t._v(" "),n("h2",{attrs:{id:"install"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),n("p",[t._v("There is no additional configuration required for Wings on Debian 11 or 12. You can follow the "),n("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official Wings install documentation")]),t._v(", which covers Docker installation for Debian.")],1)])}),[],!1,null,null,null);n.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{299:function(t,n,a){"use strict";a.r(n);var i=a(15),s=Object(i.a)({},(function(){var t=this,n=t._self._c;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"debian-11-12"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#debian-11-12"}},[t._v("#")]),t._v(" Debian 11 & 12")]),t._v(" "),n("h2",{attrs:{id:"install"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),n("p",[t._v("There is no additional configuration required for Wings on Debian 11 or 12. You can follow the "),n("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official Wings install documentation")]),t._v(", which covers Docker installation for Debian.")],1)])}),[],!1,null,null,null);n.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/41.24a4fd9a.js b/assets/js/41.368a213d.js similarity index 99% rename from assets/js/41.24a4fd9a.js rename to assets/js/41.368a213d.js index 023a6934..94f6e11c 100644 --- a/assets/js/41.24a4fd9a.js +++ b/assets/js/41.368a213d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{299:function(a,t,s){"use strict";s.r(t);var e=s(15),n=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"artisan-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#artisan-cli"}},[a._v("#")]),a._v(" Artisan CLI")]),a._v(" "),t("p",[a._v("The Artisan CLI, command line interface, is part of the Laravel framework, which Pterodactyl is built on. The Artisan file is located in "),t("code",[a._v("/var/www/pterodactyl")]),a._v(" if you followed the official guide. This guide goes over some more Pterodactyl specific/related Artisan commands, which are all prefixed with the letter "),t("code",[a._v("p")]),a._v(" (e.g. "),t("code",[a._v("p:user:make")]),a._v("). If you'd like to view all commands, you can do so by running:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan list\n")])])]),t("p",[a._v("To get information regarding a specific command you can do so by running:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("help")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("command"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("To simplify this documentation, in command usage you'll see things like the following:")]),a._v(" "),t("p",[t("code",[a._v("")]),a._v(" - Required argument")]),a._v(" "),t("p",[t("code",[a._v("[hello-world]")]),a._v(" - Optional argument")]),a._v(" "),t("p",[t("code",[a._v("{--hello-world}")]),a._v(" - Option")])]),a._v(" "),t("h2",{attrs:{id:"user-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#user-management"}},[a._v("#")]),a._v(" User Management")]),a._v(" "),t("p",[a._v("When running any of the following commands, you can either use the options or don't pass through anything and use the interactive prompt. You can also do both passing through options and using interactive prompts as well.")]),a._v(" "),t("h3",{attrs:{id:"create-user"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-user"}},[a._v("#")]),a._v(" Create User")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:user:make "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--username"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("myusername"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-first"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("My"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-last"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("Name"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--password"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("supersecret"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--admin"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--no-password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"delete-user"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete-user"}},[a._v("#")]),a._v(" Delete User")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:user:delete "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("username/email/UUID"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"disable-2fa"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa"}},[a._v("#")]),a._v(" Disable 2FA")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Disabling 2-factor authentication should only be used as a last resort for user recovery. "),t("strong",[a._v("Please use this with caution.")])])]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:user:disable2fa "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h2",{attrs:{id:"server-node-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-node-management"}},[a._v("#")]),a._v(" Server & Node Management")]),a._v(" "),t("h3",{attrs:{id:"create-location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-location"}},[a._v("#")]),a._v(" Create Location")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:location:make "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--long"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"A description of this location."')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"delete-location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete-location"}},[a._v("#")]),a._v(" Delete Location")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:location:delete "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"server-bulk-power"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-bulk-power"}},[a._v("#")]),a._v(" Server Bulk Power")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:server:bulk-power "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("start, stop, kill, restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--servers"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--nodes"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h2",{attrs:{id:"panel-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#panel-management"}},[a._v("#")]),a._v(" Panel Management")]),a._v(" "),t("h3",{attrs:{id:"view-panel-info"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#view-panel-info"}},[a._v("#")]),a._v(" View Panel Info")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:info\n")])])]),t("p",[a._v("Displays a variety of panel information that can be used to check the configuration of things such as database and email.")]),a._v(" "),t("h3",{attrs:{id:"update-panel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-panel"}},[a._v("#")]),a._v(" Update Panel")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:upgrade "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--group"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--url"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("https://example.com/panel.tar.gz"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--release"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("latest"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--skip-download"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("p",[a._v("Downloads a new archive for Pterodactyl and executes the normal upgrade commands.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{298:function(a,t,s){"use strict";s.r(t);var e=s(15),n=Object(e.a)({},(function(){var a=this,t=a._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[t("h1",{attrs:{id:"artisan-cli"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#artisan-cli"}},[a._v("#")]),a._v(" Artisan CLI")]),a._v(" "),t("p",[a._v("The Artisan CLI, command line interface, is part of the Laravel framework, which Pterodactyl is built on. The Artisan file is located in "),t("code",[a._v("/var/www/pterodactyl")]),a._v(" if you followed the official guide. This guide goes over some more Pterodactyl specific/related Artisan commands, which are all prefixed with the letter "),t("code",[a._v("p")]),a._v(" (e.g. "),t("code",[a._v("p:user:make")]),a._v("). If you'd like to view all commands, you can do so by running:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan list\n")])])]),t("p",[a._v("To get information regarding a specific command you can do so by running:")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("help")]),a._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("command"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),t("p",[a._v("To simplify this documentation, in command usage you'll see things like the following:")]),a._v(" "),t("p",[t("code",[a._v("")]),a._v(" - Required argument")]),a._v(" "),t("p",[t("code",[a._v("[hello-world]")]),a._v(" - Optional argument")]),a._v(" "),t("p",[t("code",[a._v("{--hello-world}")]),a._v(" - Option")])]),a._v(" "),t("h2",{attrs:{id:"user-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#user-management"}},[a._v("#")]),a._v(" User Management")]),a._v(" "),t("p",[a._v("When running any of the following commands, you can either use the options or don't pass through anything and use the interactive prompt. You can also do both passing through options and using interactive prompts as well.")]),a._v(" "),t("h3",{attrs:{id:"create-user"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-user"}},[a._v("#")]),a._v(" Create User")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:user:make "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--username"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("myusername"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-first"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("My"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-last"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("Name"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--password"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("supersecret"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--admin"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--no-password"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"delete-user"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete-user"}},[a._v("#")]),a._v(" Delete User")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:user:delete "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("username/email/UUID"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"disable-2fa"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa"}},[a._v("#")]),a._v(" Disable 2FA")]),a._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),t("p",[a._v("Disabling 2-factor authentication should only be used as a last resort for user recovery. "),t("strong",[a._v("Please use this with caution.")])])]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:user:disable2fa "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h2",{attrs:{id:"server-node-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-node-management"}},[a._v("#")]),a._v(" Server & Node Management")]),a._v(" "),t("h3",{attrs:{id:"create-location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-location"}},[a._v("#")]),a._v(" Create Location")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:location:make "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--long"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[a._v('"A description of this location."')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"delete-location"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#delete-location"}},[a._v("#")]),a._v(" Delete Location")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:location:delete "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h3",{attrs:{id:"server-bulk-power"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#server-bulk-power"}},[a._v("#")]),a._v(" Server Bulk Power")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:server:bulk-power "),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("start, stop, kill, restart"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--servers"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--nodes"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("h2",{attrs:{id:"panel-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#panel-management"}},[a._v("#")]),a._v(" Panel Management")]),a._v(" "),t("h3",{attrs:{id:"view-panel-info"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#view-panel-info"}},[a._v("#")]),a._v(" View Panel Info")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:info\n")])])]),t("p",[a._v("Displays a variety of panel information that can be used to check the configuration of things such as database and email.")]),a._v(" "),t("h3",{attrs:{id:"update-panel"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-panel"}},[a._v("#")]),a._v(" Update Panel")]),a._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[a._v("php artisan p:upgrade "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--group"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--url"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("https://example.com/panel.tar.gz"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--release"),t("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("latest"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--skip-download"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),t("p",[a._v("Downloads a new archive for Pterodactyl and executes the normal upgrade commands.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/48.07ebc20a.js b/assets/js/48.c19ab66e.js similarity index 98% rename from assets/js/48.07ebc20a.js rename to assets/js/48.c19ab66e.js index 236d6421..61a449e4 100644 --- a/assets/js/48.07ebc20a.js +++ b/assets/js/48.c19ab66e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{308:function(e,t,a){"use strict";a.r(t);var s=a(15),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"upgrading-0-5-x-to-0-6-x"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-5-x-to-0-6-x"}},[e._v("#")]),e._v(" Upgrading 0.5.X to 0.6.X")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("This Software is Abandoned")]),e._v(" "),t("p",[e._v("This documentation is for "),t("strong",[e._v("abandoned software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),t("p",[e._v("You should be installing and using "),t("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[e._v("Wings")]),e._v(" in production environments with\n"),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(".")],1)]),e._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#breaking-changes"}},[e._v("Breaking Changes")])]),t("li",[t("a",{attrs:{href:"#download-files"}},[e._v("Download Files")]),t("ul",[t("li",[t("a",{attrs:{href:"#start-the-daemon"}},[e._v("Start the Daemon")])])])]),t("li",[t("a",{attrs:{href:"#rebuild-containers"}},[e._v("Rebuild Containers")])])])]),t("p"),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Server Restart Required")]),e._v(" "),t("p",[e._v("Your servers will need to be restarted after upgrading the daemon in order to see the expected log output in the Panel.")])]),e._v(" "),t("h2",{attrs:{id:"breaking-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#breaking-changes"}},[e._v("#")]),e._v(" Breaking Changes")]),e._v(" "),t("p",[e._v("This release introduces a few breaking changes to how the Daemon operates, but maintains compatibility with "),t("code",[e._v("v0.7.X")]),e._v(" of\nthe Panel, so you don't need to worry about updating the Panel.")]),e._v(" "),t("p",[e._v("Of notable change in this release is that we've switched from using custom logging functionality to using Docker logging\nfunctionality. This allows us to better output events that happen before we can attach to the container, centralizes logic,\nand allows Docker to manage the logs (which it does very well). Now, when your server refuses to boot, instead of seeing\nan unhelpful \"Server has crashed\" message with nothing before it, you'll see "),t("em",[e._v("everything")]),e._v(" that happened in the container\nleading up to that point, assuming things were output.")]),e._v(" "),t("h2",{attrs:{id:"download-files"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),t("p",[e._v("To upgrade from v0.5.X first switch the directory where you installed your Daemon. If you followed the installation\nguide your Daemon is most likely located in "),t("code",[e._v("/srv/daemon")]),e._v(". Then, download and unpack the archive using the\ncommand below.")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("Stop your Daemon process before continuing in order to avoid any issues and ensure everything updates as expected.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("systemctl stop wings\n")])])])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-L")]),e._v(" https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-xzv")]),e._v("\n")])])]),t("p",[e._v("Then, update the core dependencies for the Daemon with the following command.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("npm")]),e._v(" update "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--only")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("production\n")])])]),t("h3",{attrs:{id:"start-the-daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#start-the-daemon"}},[e._v("#")]),e._v(" Start the Daemon")]),e._v(" "),t("p",[e._v("Finally, start your daemon up, most likely with the command below.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("systemctl start wings\n")])])]),t("h2",{attrs:{id:"rebuild-containers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rebuild-containers"}},[e._v("#")]),e._v(" Rebuild Containers")]),e._v(" "),t("p",[e._v("Because of some changes we made behind the scenes when it comes to displaying server output you'll need to rebuild and\nrestart all of your servers. The rebuild step is required, the restart step is optional, but highly recommended otherwise\nyou will not be able to see any console output.")]),e._v(" "),t("p",[e._v("Run the following commands "),t("em",[e._v("from the Panel server")]),e._v(" in order to perform a mass rebuild and restart. Replace "),t("code",[e._v("###")]),e._v(" with the\nID of the node you just upgraded, or remove the "),t("code",[e._v("--node")]),e._v(" flag entirely to rebuild on all nodes.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:server:rebuild "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--node")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])]),t("p",[e._v("Then, restart all of the servers using the following command, or by manually restarting them one at a time in the Panel.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:server:bulk-power restart "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--nodes")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{307:function(e,t,a){"use strict";a.r(t);var s=a(15),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"upgrading-0-5-x-to-0-6-x"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-5-x-to-0-6-x"}},[e._v("#")]),e._v(" Upgrading 0.5.X to 0.6.X")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("This Software is Abandoned")]),e._v(" "),t("p",[e._v("This documentation is for "),t("strong",[e._v("abandoned software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),t("p",[e._v("You should be installing and using "),t("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[e._v("Wings")]),e._v(" in production environments with\n"),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(".")],1)]),e._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#breaking-changes"}},[e._v("Breaking Changes")])]),t("li",[t("a",{attrs:{href:"#download-files"}},[e._v("Download Files")]),t("ul",[t("li",[t("a",{attrs:{href:"#start-the-daemon"}},[e._v("Start the Daemon")])])])]),t("li",[t("a",{attrs:{href:"#rebuild-containers"}},[e._v("Rebuild Containers")])])])]),t("p"),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Server Restart Required")]),e._v(" "),t("p",[e._v("Your servers will need to be restarted after upgrading the daemon in order to see the expected log output in the Panel.")])]),e._v(" "),t("h2",{attrs:{id:"breaking-changes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#breaking-changes"}},[e._v("#")]),e._v(" Breaking Changes")]),e._v(" "),t("p",[e._v("This release introduces a few breaking changes to how the Daemon operates, but maintains compatibility with "),t("code",[e._v("v0.7.X")]),e._v(" of\nthe Panel, so you don't need to worry about updating the Panel.")]),e._v(" "),t("p",[e._v("Of notable change in this release is that we've switched from using custom logging functionality to using Docker logging\nfunctionality. This allows us to better output events that happen before we can attach to the container, centralizes logic,\nand allows Docker to manage the logs (which it does very well). Now, when your server refuses to boot, instead of seeing\nan unhelpful \"Server has crashed\" message with nothing before it, you'll see "),t("em",[e._v("everything")]),e._v(" that happened in the container\nleading up to that point, assuming things were output.")]),e._v(" "),t("h2",{attrs:{id:"download-files"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),t("p",[e._v("To upgrade from v0.5.X first switch the directory where you installed your Daemon. If you followed the installation\nguide your Daemon is most likely located in "),t("code",[e._v("/srv/daemon")]),e._v(". Then, download and unpack the archive using the\ncommand below.")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("Stop your Daemon process before continuing in order to avoid any issues and ensure everything updates as expected.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("systemctl stop wings\n")])])])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-L")]),e._v(" https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-xzv")]),e._v("\n")])])]),t("p",[e._v("Then, update the core dependencies for the Daemon with the following command.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("npm")]),e._v(" update "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--only")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("production\n")])])]),t("h3",{attrs:{id:"start-the-daemon"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#start-the-daemon"}},[e._v("#")]),e._v(" Start the Daemon")]),e._v(" "),t("p",[e._v("Finally, start your daemon up, most likely with the command below.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("systemctl start wings\n")])])]),t("h2",{attrs:{id:"rebuild-containers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#rebuild-containers"}},[e._v("#")]),e._v(" Rebuild Containers")]),e._v(" "),t("p",[e._v("Because of some changes we made behind the scenes when it comes to displaying server output you'll need to rebuild and\nrestart all of your servers. The rebuild step is required, the restart step is optional, but highly recommended otherwise\nyou will not be able to see any console output.")]),e._v(" "),t("p",[e._v("Run the following commands "),t("em",[e._v("from the Panel server")]),e._v(" in order to perform a mass rebuild and restart. Replace "),t("code",[e._v("###")]),e._v(" with the\nID of the node you just upgraded, or remove the "),t("code",[e._v("--node")]),e._v(" flag entirely to rebuild on all nodes.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:server:rebuild "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--node")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])]),t("p",[e._v("Then, restart all of the servers using the following command, or by manually restarting them one at a time in the Panel.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:server:bulk-power restart "),t("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--nodes")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/49.342049a1.js b/assets/js/49.69c43084.js similarity index 97% rename from assets/js/49.342049a1.js rename to assets/js/49.69c43084.js index 3cce5e03..05eb47df 100644 --- a/assets/js/49.342049a1.js +++ b/assets/js/49.69c43084.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{307:function(t,e,s){"use strict";s.r(e);var a=s(15),o=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"upgrading-0-6-series"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-series"}},[t._v("#")]),t._v(" Upgrading 0.6 Series")]),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("This Software is Abandoned")]),t._v(" "),e("p",[t._v("This documentation is for "),e("strong",[t._v("abandoned software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),e("p",[t._v("You should be installing and using "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("Wings")]),t._v(" in production environments with\n"),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(".")],1)]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Minor Versions Only")]),t._v(" "),e("p",[e("strong",[t._v("DO NOT")]),t._v(" use this guide to upgrade from "),e("code",[t._v("0.5.X")]),t._v(" to "),e("code",[t._v("0.6.X")]),t._v(", it will not work and you will encounter errors afterwards. Please check the "),e("RouterLink",{attrs:{to:"/daemon/upgrade/0.5_to_0.6.html"}},[t._v("0.5 to 0.6")]),t._v(" upgrade documentation to perform that update.")],1)]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Your servers will not go offline during this process thanks to Docker. Clients will briefly lose connection\nto the Daemon from the Panel, but only during the restart phase.")])]),t._v(" "),e("h2",{attrs:{id:"download-newest-release"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#download-newest-release"}},[t._v("#")]),t._v(" Download Newest Release")]),t._v(" "),e("p",[t._v("First, ensure you're in the Daemon directory, "),e("code",[t._v("/srv/daemon")]),t._v(", before continuing through this process. After you've done\nthat, run the command below to pull down the latest files and unpack them in the daemon directory.")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-L")]),t._v(" https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" --strip-components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-xzv")]),t._v("\n")])])]),e("h2",{attrs:{id:"update-components"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#update-components"}},[t._v("#")]),t._v(" Update Components")]),t._v(" "),e("p",[t._v("After you've pulled down the latest files the last thing you need to do is run the commands below to update the\ncomponents and then restart the daemon.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Nodejs 10 Required")]),t._v(" "),e("p",[t._v("Version "),e("code",[t._v("0.6.13")]),t._v(" requires Nodejs v10 or higher in order to compile the "),e("code",[t._v("mmmagic")]),t._v(" dependency. Please ensure\nyou are running at least version 10. You can run "),e("code",[t._v("node -v")]),t._v(" to check, upgrade if it is "),e("code",[t._v("v6")]),t._v(" or "),e("code",[t._v("v8")]),t._v(".")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Audit Results")]),t._v(" "),e("p",[t._v('You may see output along the lines of "found 14 vulnerabilities (6 low, 3 moderate, 5 high) in 927 scanned packages".\nYou can safely ignore this output. Do not run the audit fix command, you '),e("em",[t._v("will")]),t._v(" break your Daemon.")])]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("--only")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("production --no-audit --unsafe-perm\nsystemctl restart wings\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{310:function(t,e,s){"use strict";s.r(e);var a=s(15),o=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"upgrading-0-6-series"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-series"}},[t._v("#")]),t._v(" Upgrading 0.6 Series")]),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("This Software is Abandoned")]),t._v(" "),e("p",[t._v("This documentation is for "),e("strong",[t._v("abandoned software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),e("p",[t._v("You should be installing and using "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("Wings")]),t._v(" in production environments with\n"),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(".")],1)]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Minor Versions Only")]),t._v(" "),e("p",[e("strong",[t._v("DO NOT")]),t._v(" use this guide to upgrade from "),e("code",[t._v("0.5.X")]),t._v(" to "),e("code",[t._v("0.6.X")]),t._v(", it will not work and you will encounter errors afterwards. Please check the "),e("RouterLink",{attrs:{to:"/daemon/upgrade/0.5_to_0.6.html"}},[t._v("0.5 to 0.6")]),t._v(" upgrade documentation to perform that update.")],1)]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("Your servers will not go offline during this process thanks to Docker. Clients will briefly lose connection\nto the Daemon from the Panel, but only during the restart phase.")])]),t._v(" "),e("h2",{attrs:{id:"download-newest-release"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#download-newest-release"}},[t._v("#")]),t._v(" Download Newest Release")]),t._v(" "),e("p",[t._v("First, ensure you're in the Daemon directory, "),e("code",[t._v("/srv/daemon")]),t._v(", before continuing through this process. After you've done\nthat, run the command below to pull down the latest files and unpack them in the daemon directory.")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-L")]),t._v(" https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" --strip-components"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("-xzv")]),t._v("\n")])])]),e("h2",{attrs:{id:"update-components"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#update-components"}},[t._v("#")]),t._v(" Update Components")]),t._v(" "),e("p",[t._v("After you've pulled down the latest files the last thing you need to do is run the commands below to update the\ncomponents and then restart the daemon.")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Nodejs 10 Required")]),t._v(" "),e("p",[t._v("Version "),e("code",[t._v("0.6.13")]),t._v(" requires Nodejs v10 or higher in order to compile the "),e("code",[t._v("mmmagic")]),t._v(" dependency. Please ensure\nyou are running at least version 10. You can run "),e("code",[t._v("node -v")]),t._v(" to check, upgrade if it is "),e("code",[t._v("v6")]),t._v(" or "),e("code",[t._v("v8")]),t._v(".")])]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("Audit Results")]),t._v(" "),e("p",[t._v('You may see output along the lines of "found 14 vulnerabilities (6 low, 3 moderate, 5 high) in 927 scanned packages".\nYou can safely ignore this output. Do not run the audit fix command, you '),e("em",[t._v("will")]),t._v(" break your Daemon.")])]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token parameter variable"}},[t._v("--only")]),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("production --no-audit --unsafe-perm\nsystemctl restart wings\n")])])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/55.b1c9bca1.js b/assets/js/55.a226dbb6.js similarity index 99% rename from assets/js/55.b1c9bca1.js rename to assets/js/55.a226dbb6.js index 73fca399..36db1fa6 100644 --- a/assets/js/55.b1c9bca1.js +++ b/assets/js/55.a226dbb6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{317:function(e,a,t){"use strict";t.r(a);var s=t(15),n=Object(s.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"upgrading-0-6-to-0-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-to-0-7"}},[e._v("#")]),e._v(" Upgrading 0.6 to 0.7")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack in whatever\ndirectory you are currently in.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-L")]),e._v(" https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-xzv")]),e._v("\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"clear-compiled-assets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-assets"}},[e._v("#")]),e._v(" Clear Compiled Assets")]),e._v(" "),a("p",[e._v("Previous versions of Pterodactyl attempted to cache your configuration file for speed and performance enhancements. This\nended up just causing more headaches with minimal improvements in performance, so we decided to stop doing that. Running\nthe command below will clear the cached files for you so we can continue with upgrading.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("You probably only need to run this command once when upgrading from "),a("code",[e._v("0.6.X")]),e._v(". Once you're upgraded we don't cache the configuration\nfile so there is no reason to remove anything.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-rf")]),e._v(" bootstrap/cache/*\n")])])]),a("p",[e._v("Once the configuration cache is removed, you'll need to clear the template cache to ensure users get the most recent\ntemplates.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("composer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"update-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-environment"}},[e._v("#")]),e._v(" Update Environment")]),e._v(" "),a("p",[e._v("These scripts will display your current values in brackets. To keep the current values simply press enter and it will\ncontinue without making any modifications.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("We've changed our recommended cache driver to be Redis, rather than Memcached. If you're using Memcached you can\ncontinue doing so with no problems, however moving forward our installation documentation will only mention Redis.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:mail\nphp artisan p:environment:database\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Backup your databases")]),e._v(" "),a("p",[e._v("The upgrade from "),a("code",[e._v("0.6")]),e._v(" to "),a("code",[e._v("v0.7")]),e._v(" includes some rather significant database changes. While the migration utility is\nable to handle everything for you, we still suggest taking a backup of your database before proceeding — just incase.")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Running "),a("code",[e._v("db:seed")]),e._v(" below will overwrite any changes you made to core Pterodactyl Nests, Eggs, or Egg Variables! This is\nunavoidable, and this seeder must be run. To avoid this in the future, please create custom nests, or create custom\neggs for game variations.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\nphp artisan db:seed "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\n")])])]),a("h2",{attrs:{id:"cleanup-api-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup-api-keys"}},[e._v("#")]),e._v(" Cleanup API Keys")]),e._v(" "),a("p",[e._v("A significant change is introduced in 0.7.0 that changes how API keys are used, stored, and validated. Due to this\nchange, all previously created keys will no longer function. In order to keep things cleaned up you'll want to remove\nthese orphaned keys. To do so, run the command below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:migration:clean-orphaned-keys\n")])])]),a("p",[e._v("Don't forget to create new keys for yourself, as well as let all of your users know they'll need to do so as well.")]),e._v(" "),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" apache:apache *\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{315:function(e,a,t){"use strict";t.r(a);var s=t(15),n=Object(s.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"upgrading-0-6-to-0-7"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-to-0-7"}},[e._v("#")]),e._v(" Upgrading 0.6 to 0.7")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack in whatever\ndirectory you are currently in.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-L")]),e._v(" https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-xzv")]),e._v("\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"clear-compiled-assets"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-assets"}},[e._v("#")]),e._v(" Clear Compiled Assets")]),e._v(" "),a("p",[e._v("Previous versions of Pterodactyl attempted to cache your configuration file for speed and performance enhancements. This\nended up just causing more headaches with minimal improvements in performance, so we decided to stop doing that. Running\nthe command below will clear the cached files for you so we can continue with upgrading.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("You probably only need to run this command once when upgrading from "),a("code",[e._v("0.6.X")]),e._v(". Once you're upgraded we don't cache the configuration\nfile so there is no reason to remove anything.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-rf")]),e._v(" bootstrap/cache/*\n")])])]),a("p",[e._v("Once the configuration cache is removed, you'll need to clear the template cache to ensure users get the most recent\ntemplates.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("composer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"update-environment"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-environment"}},[e._v("#")]),e._v(" Update Environment")]),e._v(" "),a("p",[e._v("These scripts will display your current values in brackets. To keep the current values simply press enter and it will\ncontinue without making any modifications.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("We've changed our recommended cache driver to be Redis, rather than Memcached. If you're using Memcached you can\ncontinue doing so with no problems, however moving forward our installation documentation will only mention Redis.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:mail\nphp artisan p:environment:database\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Backup your databases")]),e._v(" "),a("p",[e._v("The upgrade from "),a("code",[e._v("0.6")]),e._v(" to "),a("code",[e._v("v0.7")]),e._v(" includes some rather significant database changes. While the migration utility is\nable to handle everything for you, we still suggest taking a backup of your database before proceeding — just incase.")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Running "),a("code",[e._v("db:seed")]),e._v(" below will overwrite any changes you made to core Pterodactyl Nests, Eggs, or Egg Variables! This is\nunavoidable, and this seeder must be run. To avoid this in the future, please create custom nests, or create custom\neggs for game variations.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\nphp artisan db:seed "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\n")])])]),a("h2",{attrs:{id:"cleanup-api-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cleanup-api-keys"}},[e._v("#")]),e._v(" Cleanup API Keys")]),e._v(" "),a("p",[e._v("A significant change is introduced in 0.7.0 that changes how API keys are used, stored, and validated. Due to this\nchange, all previously created keys will no longer function. In order to keep things cleaned up you'll want to remove\nthese orphaned keys. To do so, run the command below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:migration:clean-orphaned-keys\n")])])]),a("p",[e._v("Don't forget to create new keys for yourself, as well as let all of your users know they'll need to do so as well.")]),e._v(" "),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" apache:apache *\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/56.d3abdaf4.js b/assets/js/56.f682278e.js similarity index 98% rename from assets/js/56.d3abdaf4.js rename to assets/js/56.f682278e.js index 8fec8910..eed10ae4 100644 --- a/assets/js/56.d3abdaf4.js +++ b/assets/js/56.f682278e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{315:function(e,a,t){"use strict";t.r(a);var s=t(15),r=Object(s.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"upgrading-0-7-series"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-7-series"}},[e._v("#")]),e._v(" Upgrading 0.7 Series")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("This documentation covers the process for upgrading within the "),a("code",[e._v("0.7.X")]),e._v(" series of releases. This means upgrading from\n— for example — "),a("code",[e._v("0.7.3")]),e._v(" to "),a("code",[e._v("0.7.11")]),e._v(". "),a("strong",[e._v("Do not use this guide for upgrading from "),a("code",[e._v("0.6")]),e._v(" or upgrading to "),a("code",[e._v("1.0")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("If you are using a custom theme please be aware that upgrading will remove those files. You will need to re-upload\nyour theme once the upgrade is complete or you will end up with server errors.")])]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack the archive\ninto your current folder.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-L")]),e._v(" https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-xzv")]),e._v("\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("composer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"clear-compiled-template-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-template-cache"}},[e._v("#")]),e._v(" Clear Compiled Template Cache")]),e._v(" "),a("p",[e._v("You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for\nusers.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\nphp artisan config:clear\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("p",[e._v("You'll also need to update your database schema for the newest version of Pterodactyl. Running the two commands below\nwill update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just\nremember, "),a("em",[e._v("never edit core eggs we ship")]),e._v("! They will be overwritten by this update process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\nphp artisan db:seed "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\n")])])]),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" apache:apache *\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{316:function(e,a,t){"use strict";t.r(a);var s=t(15),r=Object(s.a)({},(function(){var e=this,a=e._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"upgrading-0-7-series"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-7-series"}},[e._v("#")]),e._v(" Upgrading 0.7 Series")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("This documentation covers the process for upgrading within the "),a("code",[e._v("0.7.X")]),e._v(" series of releases. This means upgrading from\n— for example — "),a("code",[e._v("0.7.3")]),e._v(" to "),a("code",[e._v("0.7.11")]),e._v(". "),a("strong",[e._v("Do not use this guide for upgrading from "),a("code",[e._v("0.6")]),e._v(" or upgrading to "),a("code",[e._v("1.0")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("If you are using a custom theme please be aware that upgrading will remove those files. You will need to re-upload\nyour theme once the upgrade is complete or you will end up with server errors.")])]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack the archive\ninto your current folder.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-L")]),e._v(" https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-xzv")]),e._v("\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("composer")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"clear-compiled-template-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-template-cache"}},[e._v("#")]),e._v(" Clear Compiled Template Cache")]),e._v(" "),a("p",[e._v("You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for\nusers.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\nphp artisan config:clear\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("p",[e._v("You'll also need to update your database schema for the newest version of Pterodactyl. Running the two commands below\nwill update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just\nremember, "),a("em",[e._v("never edit core eggs we ship")]),e._v("! They will be overwritten by this update process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\nphp artisan db:seed "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("--force")]),e._v("\n")])])]),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token parameter variable"}},[e._v("-R")]),e._v(" apache:apache *\n")])])])])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/57.f50380a8.js b/assets/js/57.5d950550.js similarity index 96% rename from assets/js/57.f50380a8.js rename to assets/js/57.5d950550.js index 52ffcc40..3788ea33 100644 --- a/assets/js/57.f50380a8.js +++ b/assets/js/57.5d950550.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{316:function(e,t,a){"use strict";a.r(t);var s=a(15),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"upgrading"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrading"}},[e._v("#")]),e._v(" Upgrading")]),e._v(" "),t("p",[e._v("Upgrading the Panel is a relatively simple process. Below you will find a list of articles that will walk you through\nthe upgrade process for each version of the software.")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),t("p",[e._v("This documentation is for "),t("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),t("p",[e._v("You should be installing and using "),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),t("h2",{attrs:{id:"maintenance-mode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maintenance-mode"}},[e._v("#")]),e._v(" Maintenance Mode")]),e._v(" "),t("p",[e._v('Whenever you are performing an upgrade, you should be sure to place your Panel into "maintenance mode". This will prevent\nusers from encountering unexpected errors, and ensure everything can be upgraded before users encounter potentially new features.')]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Put the Panel into maintenance mode and deny user access")]),e._v("\nphp artisan down\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Bring the Panel back up to receive connections.")]),e._v("\nphp artisan up\n")])])]),t("h2",{attrs:{id:"restarting-queue-workers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restarting-queue-workers"}},[e._v("#")]),e._v(" Restarting Queue Workers")]),e._v(" "),t("p",[e._v("After "),t("em",[e._v("every")]),e._v(" update, you should restart the queue worker to ensure that the new code is being loaded in and used.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan queue:restart\n")])])]),t("h2",{attrs:{id:"version-specific-guides"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#version-specific-guides"}},[e._v("#")]),e._v(" Version Specific Guides")]),e._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.6_to_0.7.html"}},[e._v("0.6.X to 0.7.19")])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.7.html"}},[e._v("0.7.X series")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"/panel/1.0/upgrade/0.7_to_1.0"}},[e._v("0.7.19 to 1.X.X")]),e._v(" "),t("Badge",{attrs:{text:"current",vertical:"middle"}})],1)])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{317:function(e,t,a){"use strict";a.r(t);var s=a(15),r=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"upgrading"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrading"}},[e._v("#")]),e._v(" Upgrading")]),e._v(" "),t("p",[e._v("Upgrading the Panel is a relatively simple process. Below you will find a list of articles that will walk you through\nthe upgrade process for each version of the software.")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),t("p",[e._v("This documentation is for "),t("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),t("p",[e._v("You should be installing and using "),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),t("h2",{attrs:{id:"maintenance-mode"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#maintenance-mode"}},[e._v("#")]),e._v(" Maintenance Mode")]),e._v(" "),t("p",[e._v('Whenever you are performing an upgrade, you should be sure to place your Panel into "maintenance mode". This will prevent\nusers from encountering unexpected errors, and ensure everything can be upgraded before users encounter potentially new features.')]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Put the Panel into maintenance mode and deny user access")]),e._v("\nphp artisan down\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Bring the Panel back up to receive connections.")]),e._v("\nphp artisan up\n")])])]),t("h2",{attrs:{id:"restarting-queue-workers"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#restarting-queue-workers"}},[e._v("#")]),e._v(" Restarting Queue Workers")]),e._v(" "),t("p",[e._v("After "),t("em",[e._v("every")]),e._v(" update, you should restart the queue worker to ensure that the new code is being loaded in and used.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan queue:restart\n")])])]),t("h2",{attrs:{id:"version-specific-guides"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#version-specific-guides"}},[e._v("#")]),e._v(" Version Specific Guides")]),e._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.6_to_0.7.html"}},[e._v("0.6.X to 0.7.19")])],1),e._v(" "),t("li",[t("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.7.html"}},[e._v("0.7.X series")])],1),e._v(" "),t("li",[t("a",{attrs:{href:"/panel/1.0/upgrade/0.7_to_1.0"}},[e._v("0.7.19 to 1.X.X")]),e._v(" "),t("Badge",{attrs:{text:"current",vertical:"middle"}})],1)])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/67.1e397491.js b/assets/js/67.275f5b02.js similarity index 71% rename from assets/js/67.1e397491.js rename to assets/js/67.275f5b02.js index c3f0cef2..538aa4b8 100644 --- a/assets/js/67.1e397491.js +++ b/assets/js/67.275f5b02.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{327:function(e,t,o){"use strict";o.r(t);var a=o(15),r=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("Pterodactyl is the open-source game server management panel built with PHP, React, and Go. Designed with\nsecurity in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful\nand intuitive UI to administrators and users. What more are you waiting for? Make game servers a first-class\ncitizen on your platform today.")]),e._v(" "),t("h2",{attrs:{id:"supported-games"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-games"}},[e._v("#")]),e._v(" Supported Games")]),e._v(" "),t("p",[e._v("We support a huge variety of games by utilizing Docker containers to isolate each instance, giving you the power\nto host your games across the world without having to bloat each physical machine with additional dependencies.")]),e._v(" "),t("p",[e._v("Some of our core supported games include:")]),e._v(" "),t("ul",[t("li",[e._v("Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more")]),e._v(" "),t("li",[e._v("Rust")]),e._v(" "),t("li",[e._v("Terraria")]),e._v(" "),t("li",[e._v("Teamspeak")]),e._v(" "),t("li",[e._v("Mumble")]),e._v(" "),t("li",[e._v("Team Fortress 2")]),e._v(" "),t("li",[e._v("Counter Strike: Global Offensive")]),e._v(" "),t("li",[e._v("Garry's Mod")]),e._v(" "),t("li",[e._v("ARK: Survival Evolved")])]),e._v(" "),t("p",[e._v("In addition to our standard nest of supported games, our community is constantly pushing the limits of this software\nand there are plenty more games available provided by the community. Some of these games include:")]),e._v(" "),t("ul",[t("li",[e._v("Factorio")]),e._v(" "),t("li",[e._v("San Andreas: MP")]),e._v(" "),t("li",[e._v("Pocketmine MP")]),e._v(" "),t("li",[e._v("Squad")]),e._v(" "),t("li",[e._v("FiveM")]),e._v(" "),t("li",[e._v("Xonotic")]),e._v(" "),t("li",[e._v("Discord ATLBot")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/parkervcp/eggs",target:"_blank",rel:"noopener noreferrer"}},[e._v("and many more..."),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"responsible-disclosure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#responsible-disclosure"}},[e._v("#")]),e._v(" Responsible Disclosure")]),e._v(" "),t("p",[e._v("Pterodactyl is completely open-source, and as such completely open to independent users and auditors to browse our\ncode base and hunt for security issues. If you come across anything that raises red flags for you, please do not\nhesitate to reach out directly to "),t("code",[e._v("support@pterodactyl.io")]),e._v(". We ask that you please be responsible when disclosing\nany security concerns and "),t("em",[e._v("do not")]),e._v(" report them on our public facing bug tracker.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{327:function(e,t,o){"use strict";o.r(t);var a=o(15),r=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("Pterodactyl is the open-source game server management panel built with PHP, React, and Go. Designed with\nsecurity in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful\nand intuitive UI to administrators and users. What more are you waiting for? Make game servers a first-class\ncitizen on your platform today.")]),e._v(" "),t("h2",{attrs:{id:"supported-games"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#supported-games"}},[e._v("#")]),e._v(" Supported Games")]),e._v(" "),t("p",[e._v("We support a huge variety of games by utilizing Docker containers to isolate each instance, giving you the power\nto host your games across the world without having to bloat each physical machine with additional dependencies.")]),e._v(" "),t("p",[e._v("Some of our core supported games include:")]),e._v(" "),t("ul",[t("li",[e._v("Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more")]),e._v(" "),t("li",[e._v("Rust")]),e._v(" "),t("li",[e._v("Terraria")]),e._v(" "),t("li",[e._v("Teamspeak")]),e._v(" "),t("li",[e._v("Mumble")]),e._v(" "),t("li",[e._v("Team Fortress 2")]),e._v(" "),t("li",[e._v("Counter Strike: Global Offensive")]),e._v(" "),t("li",[e._v("Garry's Mod")]),e._v(" "),t("li",[e._v("ARK: Survival Evolved")])]),e._v(" "),t("p",[e._v("In addition to our standard nest of supported games, our community is constantly pushing the limits of this software\nand there are plenty more games available provided by the community. Some of these games include:")]),e._v(" "),t("ul",[t("li",[e._v("Factorio")]),e._v(" "),t("li",[e._v("San Andreas: MP")]),e._v(" "),t("li",[e._v("Pocketmine MP")]),e._v(" "),t("li",[e._v("Squad")]),e._v(" "),t("li",[e._v("FiveM")]),e._v(" "),t("li",[e._v("Xonotic")]),e._v(" "),t("li",[e._v("Discord ATLBot")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://pterodactyleggs.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("and many more..."),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"responsible-disclosure"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#responsible-disclosure"}},[e._v("#")]),e._v(" Responsible Disclosure")]),e._v(" "),t("p",[e._v("Pterodactyl is completely open-source, and as such completely open to independent users and auditors to browse our\ncode base and hunt for security issues. If you come across anything that raises red flags for you, please do not\nhesitate to reach out directly to "),t("code",[e._v("support@pterodactyl.io")]),e._v(". We ask that you please be responsible when disclosing\nany security concerns and "),t("em",[e._v("do not")]),e._v(" report them on our public facing bug tracker.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/69.d04c26ab.js b/assets/js/69.3809eab0.js similarity index 98% rename from assets/js/69.d04c26ab.js rename to assets/js/69.3809eab0.js index 6f001a6c..7752e96b 100644 --- a/assets/js/69.d04c26ab.js +++ b/assets/js/69.3809eab0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{331:function(a,e,s){"use strict";s.r(e);var t=s(15),r=Object(t.a)({},(function(){var a=this,e=a._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"setting-up-mysql"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-mysql"}},[a._v("#")]),a._v(" Setting up MySQL")]),a._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#creating-a-database-for-pterodactyl"}},[a._v("Creating a database for Pterodactyl")]),e("ul",[e("li",[e("a",{attrs:{href:"#logging-in"}},[a._v("Logging In")])]),e("li",[e("a",{attrs:{href:"#creating-a-user"}},[a._v("Creating a user")])]),e("li",[e("a",{attrs:{href:"#create-a-database"}},[a._v("Create a database")])]),e("li",[e("a",{attrs:{href:"#assigning-permissions"}},[a._v("Assigning permissions")])])])]),e("li",[e("a",{attrs:{href:"#creating-a-database-host-for-nodes"}},[a._v("Creating a Database Host for Nodes")]),e("ul",[e("li",[e("a",{attrs:{href:"#creating-a-user"}},[a._v("Creating a user")])]),e("li",[e("a",{attrs:{href:"#assigning-permissions"}},[a._v("Assigning permissions")])]),e("li",[e("a",{attrs:{href:"#allowing-external-database-access"}},[a._v("Allowing external database access")])])])])])]),e("p"),a._v(" "),e("h2",{attrs:{id:"creating-a-database-for-pterodactyl"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-database-for-pterodactyl"}},[a._v("#")]),a._v(" Creating a database for Pterodactyl")]),a._v(" "),e("p",[a._v("MySQL is a core component of Pterodactyl Panel but it can be confusing to setup and use if you've never done so before.\nThis is a very basic tutorial that skims just enough of the surface to set MySQL up and running with the panel.\nIf you're interested in learning more, there are some great tutorials available on the Internet.")]),a._v(" "),e("h3",{attrs:{id:"logging-in"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logging-in"}},[a._v("#")]),a._v(" Logging In")]),a._v(" "),e("p",[a._v("The first step in this process is to login to the MySQL command line where we will be executing some statements to get\nthings setup. To do so, simply run the command below and provide the Root MySQL account's password that you setup when\ninstalling MySQL. If you do not remember doing this, chances are you can just hit enter as no password is set.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# If using MariaDB (v11.0.0+)")]),a._v("\nmariadb "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("u root "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("p\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# If using MySQL")]),a._v("\nmysql "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("u root "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("p\n")])])]),e("h3",{attrs:{id:"creating-a-user"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-user"}},[a._v("#")]),a._v(" Creating a user")]),a._v(" "),e("p",[a._v("For security sake, and due to changes in MySQL 5.7, you'll need to create a new user for the panel. To do so, we want\nto first tell MySQL to use the mysql database, which stores such information.")]),a._v(" "),e("p",[a._v("Next, we will create a user called "),e("code",[a._v("pterodactyl")]),a._v(" and allow logins from localhost which prevents any external connections\nto our database. You can also use "),e("code",[a._v("%")]),a._v(" as a wildcard or enter a numeric IP. We will also set the account password\nto "),e("code",[a._v("somePassword")]),a._v(".")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Remember to change 'somePassword' below to be a unique password specific to this account.")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("CREATE")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("USER")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyl'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),a._v(" IDENTIFIED "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("BY")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'somePassword'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"create-a-database"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-a-database"}},[a._v("#")]),a._v(" Create a database")]),a._v(" "),e("p",[a._v("Next, we need to create a database for the panel. In this tutorial we will be naming the database "),e("code",[a._v("panel")]),a._v(", but you can\nsubstitute that for whatever name you wish.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("CREATE")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("DATABASE")]),a._v(" panel"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"assigning-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assigning-permissions"}},[a._v("#")]),a._v(" Assigning permissions")]),a._v(" "),e("p",[a._v("Finally, we need to tell MySQL that our pterodactyl user should have access to the panel database. To do this, simply\nrun the command below.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("GRANT")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ALL")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("PRIVILEGES")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ON")]),a._v(" panel"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("TO")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyl'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h2",{attrs:{id:"creating-a-database-host-for-nodes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-database-host-for-nodes"}},[a._v("#")]),a._v(" Creating a Database Host for Nodes")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),e("p",[a._v("This section covers creating a MySQL user that has permission to create and modify users. This allows the Panel to create per-server databases on the given host.")])]),a._v(" "),e("h3",{attrs:{id:"creating-a-user-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-user-2"}},[a._v("#")]),a._v(" Creating a user")]),a._v(" "),e("p",[a._v("If your database is on a different host than the one where your Panel or Daemon is installed make sure to use the IP address of the machine the Panel is running on. If you use "),e("code",[a._v("127.0.0.1")]),a._v(" and try to connect externally, you will receive a connection refused error.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# You should change the username and password below to something unique.")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("CREATE")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("USER")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyluser'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),a._v(" IDENTIFIED "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("BY")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'somepassword'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"assigning-permissions-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assigning-permissions-2"}},[a._v("#")]),a._v(" Assigning permissions")]),a._v(" "),e("p",[a._v("The command below will give your newly created user the ability to create additional users, as well as create and destroy databases. As above, ensure "),e("code",[a._v("127.0.0.1")]),a._v(" matches the IP address you used in the previous command.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("GRANT")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ALL")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("PRIVILEGES")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ON")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("TO")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyluser'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("WITH")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("GRANT")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("OPTION")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"allowing-external-database-access"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allowing-external-database-access"}},[a._v("#")]),a._v(" Allowing external database access")]),a._v(" "),e("p",[a._v("Chances are you'll need to allow external access to this MySQL instance in order to allow servers to connect to it. To do this, open "),e("code",[a._v("my.cnf")]),a._v(", which varies in location depending on your OS and how MySQL was installed. You can type "),e("code",[a._v("find /etc -iname my.cnf")]),a._v(" to locate it.")]),a._v(" "),e("p",[a._v("Open "),e("code",[a._v("my.cnf")]),a._v(", add text below to the bottom of the file and save it:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("[mysqld]\nbind-address=0.0.0.0\n")])])]),e("p",[a._v("Restart MySQL/MariaDB to apply these changes. This will override the default MySQL configuration, which by default will only accept requests from localhost. Updating this will allow connections on all interfaces, and thus, external connections. Make sure to allow the MySQL port (default 3306) in your firewall.")]),a._v(" "),e("p",[a._v("If your Database and Wings are on the same machine and won't need external access, you can also use the "),e("code",[a._v("docker0")]),a._v(" interface IP address rather than "),e("code",[a._v("127.0.0.1")]),a._v(". This IP address can be found by running "),e("code",[a._v("ip addr | grep docker0")]),a._v(", and it likely looks like "),e("code",[a._v("172.x.x.x")]),a._v(".")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{330:function(a,e,s){"use strict";s.r(e);var t=s(15),r=Object(t.a)({},(function(){var a=this,e=a._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"setting-up-mysql"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setting-up-mysql"}},[a._v("#")]),a._v(" Setting up MySQL")]),a._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#creating-a-database-for-pterodactyl"}},[a._v("Creating a database for Pterodactyl")]),e("ul",[e("li",[e("a",{attrs:{href:"#logging-in"}},[a._v("Logging In")])]),e("li",[e("a",{attrs:{href:"#creating-a-user"}},[a._v("Creating a user")])]),e("li",[e("a",{attrs:{href:"#create-a-database"}},[a._v("Create a database")])]),e("li",[e("a",{attrs:{href:"#assigning-permissions"}},[a._v("Assigning permissions")])])])]),e("li",[e("a",{attrs:{href:"#creating-a-database-host-for-nodes"}},[a._v("Creating a Database Host for Nodes")]),e("ul",[e("li",[e("a",{attrs:{href:"#creating-a-user"}},[a._v("Creating a user")])]),e("li",[e("a",{attrs:{href:"#assigning-permissions"}},[a._v("Assigning permissions")])]),e("li",[e("a",{attrs:{href:"#allowing-external-database-access"}},[a._v("Allowing external database access")])])])])])]),e("p"),a._v(" "),e("h2",{attrs:{id:"creating-a-database-for-pterodactyl"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-database-for-pterodactyl"}},[a._v("#")]),a._v(" Creating a database for Pterodactyl")]),a._v(" "),e("p",[a._v("MySQL is a core component of Pterodactyl Panel but it can be confusing to setup and use if you've never done so before.\nThis is a very basic tutorial that skims just enough of the surface to set MySQL up and running with the panel.\nIf you're interested in learning more, there are some great tutorials available on the Internet.")]),a._v(" "),e("h3",{attrs:{id:"logging-in"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#logging-in"}},[a._v("#")]),a._v(" Logging In")]),a._v(" "),e("p",[a._v("The first step in this process is to login to the MySQL command line where we will be executing some statements to get\nthings setup. To do so, simply run the command below and provide the Root MySQL account's password that you setup when\ninstalling MySQL. If you do not remember doing this, chances are you can just hit enter as no password is set.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# If using MariaDB (v11.0.0+)")]),a._v("\nmariadb "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("u root "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("p\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# If using MySQL")]),a._v("\nmysql "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("u root "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("p\n")])])]),e("h3",{attrs:{id:"creating-a-user"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-user"}},[a._v("#")]),a._v(" Creating a user")]),a._v(" "),e("p",[a._v("For security sake, and due to changes in MySQL 5.7, you'll need to create a new user for the panel. To do so, we want\nto first tell MySQL to use the mysql database, which stores such information.")]),a._v(" "),e("p",[a._v("Next, we will create a user called "),e("code",[a._v("pterodactyl")]),a._v(" and allow logins from localhost which prevents any external connections\nto our database. You can also use "),e("code",[a._v("%")]),a._v(" as a wildcard or enter a numeric IP. We will also set the account password\nto "),e("code",[a._v("somePassword")]),a._v(".")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# Remember to change 'somePassword' below to be a unique password specific to this account.")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("CREATE")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("USER")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyl'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),a._v(" IDENTIFIED "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("BY")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'somePassword'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"create-a-database"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-a-database"}},[a._v("#")]),a._v(" Create a database")]),a._v(" "),e("p",[a._v("Next, we need to create a database for the panel. In this tutorial we will be naming the database "),e("code",[a._v("panel")]),a._v(", but you can\nsubstitute that for whatever name you wish.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("CREATE")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("DATABASE")]),a._v(" panel"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"assigning-permissions"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assigning-permissions"}},[a._v("#")]),a._v(" Assigning permissions")]),a._v(" "),e("p",[a._v("Finally, we need to tell MySQL that our pterodactyl user should have access to the panel database. To do this, simply\nrun the command below.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("GRANT")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ALL")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("PRIVILEGES")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ON")]),a._v(" panel"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("TO")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyl'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h2",{attrs:{id:"creating-a-database-host-for-nodes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-database-host-for-nodes"}},[a._v("#")]),a._v(" Creating a Database Host for Nodes")]),a._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),e("p",[a._v("This section covers creating a MySQL user that has permission to create and modify users. This allows the Panel to create per-server databases on the given host.")])]),a._v(" "),e("h3",{attrs:{id:"creating-a-user-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-user-2"}},[a._v("#")]),a._v(" Creating a user")]),a._v(" "),e("p",[a._v("If your database is on a different host than the one where your Panel or Daemon is installed make sure to use the IP address of the machine the Panel is running on. If you use "),e("code",[a._v("127.0.0.1")]),a._v(" and try to connect externally, you will receive a connection refused error.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[a._v("# You should change the username and password below to something unique.")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("CREATE")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("USER")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyluser'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),a._v(" IDENTIFIED "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("BY")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'somepassword'")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"assigning-permissions-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#assigning-permissions-2"}},[a._v("#")]),a._v(" Assigning permissions")]),a._v(" "),e("p",[a._v("The command below will give your newly created user the ability to create additional users, as well as create and destroy databases. As above, ensure "),e("code",[a._v("127.0.0.1")]),a._v(" matches the IP address you used in the previous command.")]),a._v(" "),e("div",{staticClass:"language-sql extra-class"},[e("pre",{pre:!0,attrs:{class:"language-sql"}},[e("code",[e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("GRANT")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ALL")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("PRIVILEGES")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("ON")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("*")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("TO")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'pterodactyluser'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("@'127.0.0.1'")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("WITH")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("GRANT")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token keyword"}},[a._v("OPTION")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(";")]),a._v("\n")])])]),e("h3",{attrs:{id:"allowing-external-database-access"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#allowing-external-database-access"}},[a._v("#")]),a._v(" Allowing external database access")]),a._v(" "),e("p",[a._v("Chances are you'll need to allow external access to this MySQL instance in order to allow servers to connect to it. To do this, open "),e("code",[a._v("my.cnf")]),a._v(", which varies in location depending on your OS and how MySQL was installed. You can type "),e("code",[a._v("find /etc -iname my.cnf")]),a._v(" to locate it.")]),a._v(" "),e("p",[a._v("Open "),e("code",[a._v("my.cnf")]),a._v(", add text below to the bottom of the file and save it:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("[mysqld]\nbind-address=0.0.0.0\n")])])]),e("p",[a._v("Restart MySQL/MariaDB to apply these changes. This will override the default MySQL configuration, which by default will only accept requests from localhost. Updating this will allow connections on all interfaces, and thus, external connections. Make sure to allow the MySQL port (default 3306) in your firewall.")]),a._v(" "),e("p",[a._v("If your Database and Wings are on the same machine and won't need external access, you can also use the "),e("code",[a._v("docker0")]),a._v(" interface IP address rather than "),e("code",[a._v("127.0.0.1")]),a._v(". This IP address can be found by running "),e("code",[a._v("ip addr | grep docker0")]),a._v(", and it likely looks like "),e("code",[a._v("172.x.x.x")]),a._v(".")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/70.20bc2184.js b/assets/js/70.cbd191fe.js similarity index 99% rename from assets/js/70.20bc2184.js rename to assets/js/70.cbd191fe.js index 6214b153..83b8d13f 100644 --- a/assets/js/70.20bc2184.js +++ b/assets/js/70.cbd191fe.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{330:function(t,e,a){"use strict";a.r(e);var s=a(15),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"additional-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#additional-configuration"}},[t._v("#")]),t._v(" Additional Configuration")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#private-registries"}},[t._v("Private Registries")]),e("ul",[e("li",[e("a",{attrs:{href:"#available-keys"}},[t._v("Available Keys")])]),e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#custom-network-interfaces"}},[t._v("Custom Network Interfaces")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#enabling-cloudflare-proxy"}},[t._v("Enabling Cloudflare proxy")])]),e("li",[e("a",{attrs:{href:"#container-pid-limit"}},[t._v("Container PID Limit")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#throttles-limits"}},[t._v("Throttles Limits")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#installer-limits"}},[t._v("Installer Limits")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#other-values"}},[t._v("Other values")])])])]),e("p"),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("These are advanced configurations for Wings. You risk breaking Wings and making containers unusable if\nyou misconfigure something. Proceed only if you know what each configuration value does.")])]),t._v(" "),e("p",[t._v("You must apply all changes to your Wings "),e("code",[t._v("config.yml")]),t._v(" file located at "),e("code",[t._v("/etc/pterodactyl")]),t._v(" and restart wings. Verify your config file using "),e("a",{attrs:{href:"http://www.yamllint.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Yaml Lint"),e("OutboundLink")],1),t._v(" should you receive errors related to YAML parsing.")]),t._v(" "),e("h2",{attrs:{id:"private-registries"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#private-registries"}},[t._v("#")]),t._v(" Private Registries")]),t._v(" "),e("p",[t._v("You can use these settings to authenticate against (private) docker registries when pulling images.")]),t._v(" "),e("h3",{attrs:{id:"available-keys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#available-keys"}},[t._v("#")]),t._v(" Available Keys")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("name")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("null")]),t._v(" "),e("td",[t._v("Registry address")])]),t._v(" "),e("tr",[e("td",[t._v("username")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("null")]),t._v(" "),e("td",[t._v("Registry username")])]),t._v(" "),e("tr",[e("td",[t._v("password")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("null")]),t._v(" "),e("td",[t._v("Registry password")])])])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("docker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("registries")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("registry.example.com")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"registryusername"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"registrypassword"')]),t._v("\n")])])]),e("h2",{attrs:{id:"custom-network-interfaces"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#custom-network-interfaces"}},[t._v("#")]),t._v(" Custom Network Interfaces")]),t._v(" "),e("p",[t._v("You can change the network interface that Wings uses for all containers by editing the network name; it is by default set to "),e("code",[t._v("pterodactyl_nw")]),t._v(". For example, to enable Docker host mode change the network name to "),e("code",[t._v("host")]),t._v(".")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("Changing network mode to "),e("code",[t._v("host")]),t._v(" grants Pterodactyl direct access to all machine interfaces and Panel users can bind to any IP or Port even if it's not allocated to their container. You will lose all benefits of Docker network isolation. It is not recommended for public installations that are hosting other users' servers.")])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-2"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("docker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("network")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" host\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("network_mode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" host\n")])])]),e("p",[t._v("After making changes, the following commands will stop the Wings, remove the Pterodactyl network, and start the Wings again. Run at your own risk.\n"),e("code",[t._v("systemctl stop wings && docker network rm pterodactyl_nw && systemctl start wings")])]),t._v(" "),e("h2",{attrs:{id:"enabling-cloudflare-proxy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enabling-cloudflare-proxy"}},[t._v("#")]),t._v(" Enabling Cloudflare proxy")]),t._v(" "),e("p",[t._v("Cloudflare proxying of the Wings isn't beneficial since users will be connecting to the machine directly and bypassing any Cloudflare protection. As such, your Node machine IP will still be exposed.")]),t._v(" "),e("p",[t._v("To enable Cloudflare proxy, you must change the Wings port to one of the Cloudflare HTTPS ports with caching enabled (more info "),e("a",{attrs:{href:"https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v('), such as 8443, because Cloudflare only supports HTTP on port 8080. Select your Node in the Admin Panel, and on the settings tab, change the port. Make sure that you set "Not Behind Proxy" when using Full SSL settings in Cloudflare. Then on Cloudflare dashboard, your FQDN must have an orange cloud enabled beside it.')]),t._v(" "),e("p",[t._v("You are unable to proxy the SFTP port through Cloudflare unless you have their enterprise plan.")]),t._v(" "),e("h2",{attrs:{id:"container-pid-limit"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#container-pid-limit"}},[t._v("#")]),t._v(" Container PID Limit")]),t._v(" "),e("p",[t._v("You can change the total number of processes that can be active in a container at any given moment by changing the "),e("code",[t._v("container_pid_limit")]),t._v(" value. The default value is "),e("code",[t._v("512")]),t._v(".\nYou can set it to "),e("code",[t._v("0")]),t._v(" to disable the limit completely. However, this is "),e("em",[t._v("not")]),t._v(" recommended as the limit prevents malicious overloading of the node.\nRestart wings and your game server to apply the new limit.")]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-3"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("docker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("...")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("container_pid_limit")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("512")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("...")]),t._v("\n")])])]),e("h2",{attrs:{id:"throttles-limits"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throttles-limits"}},[t._v("#")]),t._v(" Throttles Limits")]),t._v(" "),e("p",[t._v("You can use these settings to adjust or completely disable throttling.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("enabled")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("true")]),t._v(" "),e("td",[t._v("Whether or not the throttler is enabled")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("lines")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("2000")]),t._v(" "),e("td",[t._v("Total lines that can be output in a given line_reset_interval period")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("maximum_trigger_count")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("5")]),t._v(" "),e("td",[t._v("Amount of times throttle limit can be triggered before the server will be stopped")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("line_reset_interval")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("100")]),t._v(" "),e("td",[t._v("The amount of time after which the number of lines processed is reset to 0")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("decay_interval")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("10000")]),t._v(" "),e("td",[t._v("Time in milliseconds that must pass without triggering throttle limit before trigger count is decremented")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("stop_grace_period")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("15")]),t._v(" "),e("td",[t._v("Time that a server is allowed to be stopping for before it is terminated forcefully if it triggers output throttle")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("write_limit")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("0")]),t._v(" "),e("td",[t._v("Impose I/O write limit for backups to the disk, 0 = unlimited. Value greater than 0 throttles write speed to the set value in MiB/s")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("download_limit")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("0")]),t._v(" "),e("td",[t._v("Impose a Network I/O read limit for archives, 0 = unlimited. Value greater than 0 throttles read speed to the set value in MiB/s")])])])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-4"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("throttles")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("enabled")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("lines")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("maximum_trigger_count")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("line_reset_interval")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("decay_interval")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10000")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("stop_grace_period")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),t._v("\n")])])]),e("h2",{attrs:{id:"installer-limits"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installer-limits"}},[t._v("#")]),t._v(" Installer Limits")]),t._v(" "),e("p",[t._v("Defines the limits on the installer containers that prevents a server's installation process from unintentionally consuming more resources than expected. This is used in conjunction with the server's defined limits. Whichever value is higher will take precedence in the install containers.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("memory")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("1024")]),t._v(" "),e("td",[t._v("The maximum amount of memory install container can use unless server memory limit is higher than this value")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("cpu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("100")]),t._v(" "),e("td",[t._v("The maximum amount of cpu install container can use unless server cpu limit is higher than this value")])])])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-5"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("installer_limits")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("memory")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("cpu")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v("\n")])])]),e("h2",{attrs:{id:"other-values"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#other-values"}},[t._v("#")]),t._v(" Other values")]),t._v(" "),e("p",[t._v("More commonly discussed values. View all Wings config values and explanations in "),e("a",{attrs:{href:"https://github.com/pterodactyl/wings/tree/develop/config",target:"_blank",rel:"noopener noreferrer"}},[t._v("these two files."),e("OutboundLink")],1)]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("debug")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("false")]),t._v(" "),e("td",[t._v("Force Wings to run in debug mode")])]),t._v(" "),e("tr",[e("td",[t._v("tmpfs_size")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("100")]),t._v(" "),e("td",[t._v("The size of the /tmp directory in MB when mounted into a container")])]),t._v(" "),e("tr",[e("td",[t._v("websocket_log_count")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("150")]),t._v(" "),e("td",[t._v("The number of lines to display in the console")])]),t._v(" "),e("tr",[e("td",[t._v("detect_clean_exit_as_crash")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("true")]),t._v(" "),e("td",[t._v("Mark server as crashed if it's stopped without user interaction, e.g., not pressing stop button")])]),t._v(" "),e("tr",[e("td",[t._v("(crash detection) timeout")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("60")]),t._v(" "),e("td",[t._v("Timeout between server crashes that will not cause the server to be automatically restarted")])]),t._v(" "),e("tr",[e("td",[t._v("app_name")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v('"Pterodactyl"')]),t._v(" "),e("td",[t._v("Changes the name of the daemon, shown in the panel's game console")])]),t._v(" "),e("tr",[e("td",[t._v("check_permissions_on_boot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("true")]),t._v(" "),e("td",[t._v("Check all file permissions on each boot. Disable this when you have a very large amount of files and the server startup is hanging on checking permissions")])])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{331:function(t,e,a){"use strict";a.r(e);var s=a(15),r=Object(s.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"additional-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#additional-configuration"}},[t._v("#")]),t._v(" Additional Configuration")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#private-registries"}},[t._v("Private Registries")]),e("ul",[e("li",[e("a",{attrs:{href:"#available-keys"}},[t._v("Available Keys")])]),e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#custom-network-interfaces"}},[t._v("Custom Network Interfaces")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#enabling-cloudflare-proxy"}},[t._v("Enabling Cloudflare proxy")])]),e("li",[e("a",{attrs:{href:"#container-pid-limit"}},[t._v("Container PID Limit")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#throttles-limits"}},[t._v("Throttles Limits")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#installer-limits"}},[t._v("Installer Limits")]),e("ul",[e("li",[e("a",{attrs:{href:"#example-of-usage"}},[t._v("Example of usage")])])])]),e("li",[e("a",{attrs:{href:"#other-values"}},[t._v("Other values")])])])]),e("p"),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("These are advanced configurations for Wings. You risk breaking Wings and making containers unusable if\nyou misconfigure something. Proceed only if you know what each configuration value does.")])]),t._v(" "),e("p",[t._v("You must apply all changes to your Wings "),e("code",[t._v("config.yml")]),t._v(" file located at "),e("code",[t._v("/etc/pterodactyl")]),t._v(" and restart wings. Verify your config file using "),e("a",{attrs:{href:"http://www.yamllint.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Yaml Lint"),e("OutboundLink")],1),t._v(" should you receive errors related to YAML parsing.")]),t._v(" "),e("h2",{attrs:{id:"private-registries"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#private-registries"}},[t._v("#")]),t._v(" Private Registries")]),t._v(" "),e("p",[t._v("You can use these settings to authenticate against (private) docker registries when pulling images.")]),t._v(" "),e("h3",{attrs:{id:"available-keys"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#available-keys"}},[t._v("#")]),t._v(" Available Keys")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("name")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("null")]),t._v(" "),e("td",[t._v("Registry address")])]),t._v(" "),e("tr",[e("td",[t._v("username")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("null")]),t._v(" "),e("td",[t._v("Registry username")])]),t._v(" "),e("tr",[e("td",[t._v("password")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("null")]),t._v(" "),e("td",[t._v("Registry password")])])])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("docker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("registries")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("registry.example.com")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("username")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"registryusername"')]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("password")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[t._v('"registrypassword"')]),t._v("\n")])])]),e("h2",{attrs:{id:"custom-network-interfaces"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#custom-network-interfaces"}},[t._v("#")]),t._v(" Custom Network Interfaces")]),t._v(" "),e("p",[t._v("You can change the network interface that Wings uses for all containers by editing the network name; it is by default set to "),e("code",[t._v("pterodactyl_nw")]),t._v(". For example, to enable Docker host mode change the network name to "),e("code",[t._v("host")]),t._v(".")]),t._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("Changing network mode to "),e("code",[t._v("host")]),t._v(" grants Pterodactyl direct access to all machine interfaces and Panel users can bind to any IP or Port even if it's not allocated to their container. You will lose all benefits of Docker network isolation. It is not recommended for public installations that are hosting other users' servers.")])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-2"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("docker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("network")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" host\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("network_mode")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" host\n")])])]),e("p",[t._v("After making changes, the following commands will stop the Wings, remove the Pterodactyl network, and start the Wings again. Run at your own risk.\n"),e("code",[t._v("systemctl stop wings && docker network rm pterodactyl_nw && systemctl start wings")])]),t._v(" "),e("h2",{attrs:{id:"enabling-cloudflare-proxy"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#enabling-cloudflare-proxy"}},[t._v("#")]),t._v(" Enabling Cloudflare proxy")]),t._v(" "),e("p",[t._v("Cloudflare proxying of the Wings isn't beneficial since users will be connecting to the machine directly and bypassing any Cloudflare protection. As such, your Node machine IP will still be exposed.")]),t._v(" "),e("p",[t._v("To enable Cloudflare proxy, you must change the Wings port to one of the Cloudflare HTTPS ports with caching enabled (more info "),e("a",{attrs:{href:"https://developers.cloudflare.com/fundamentals/get-started/reference/network-ports/",target:"_blank",rel:"noopener noreferrer"}},[t._v("here"),e("OutboundLink")],1),t._v('), such as 8443, because Cloudflare only supports HTTP on port 8080. Select your Node in the Admin Panel, and on the settings tab, change the port. Make sure that you set "Not Behind Proxy" when using Full SSL settings in Cloudflare. Then on Cloudflare dashboard, your FQDN must have an orange cloud enabled beside it.')]),t._v(" "),e("p",[t._v("You are unable to proxy the SFTP port through Cloudflare unless you have their enterprise plan.")]),t._v(" "),e("h2",{attrs:{id:"container-pid-limit"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#container-pid-limit"}},[t._v("#")]),t._v(" Container PID Limit")]),t._v(" "),e("p",[t._v("You can change the total number of processes that can be active in a container at any given moment by changing the "),e("code",[t._v("container_pid_limit")]),t._v(" value. The default value is "),e("code",[t._v("512")]),t._v(".\nYou can set it to "),e("code",[t._v("0")]),t._v(" to disable the limit completely. However, this is "),e("em",[t._v("not")]),t._v(" recommended as the limit prevents malicious overloading of the node.\nRestart wings and your game server to apply the new limit.")]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-3"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("docker")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("...")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("container_pid_limit")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("512")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("...")]),t._v("\n")])])]),e("h2",{attrs:{id:"throttles-limits"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#throttles-limits"}},[t._v("#")]),t._v(" Throttles Limits")]),t._v(" "),e("p",[t._v("You can use these settings to adjust or completely disable throttling.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("enabled")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("true")]),t._v(" "),e("td",[t._v("Whether or not the throttler is enabled")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("lines")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("2000")]),t._v(" "),e("td",[t._v("Total lines that can be output in a given line_reset_interval period")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("maximum_trigger_count")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("5")]),t._v(" "),e("td",[t._v("Amount of times throttle limit can be triggered before the server will be stopped")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("line_reset_interval")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("100")]),t._v(" "),e("td",[t._v("The amount of time after which the number of lines processed is reset to 0")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("decay_interval")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("10000")]),t._v(" "),e("td",[t._v("Time in milliseconds that must pass without triggering throttle limit before trigger count is decremented")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("stop_grace_period")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("15")]),t._v(" "),e("td",[t._v("Time that a server is allowed to be stopping for before it is terminated forcefully if it triggers output throttle")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("write_limit")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("0")]),t._v(" "),e("td",[t._v("Impose I/O write limit for backups to the disk, 0 = unlimited. Value greater than 0 throttles write speed to the set value in MiB/s")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("download_limit")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("0")]),t._v(" "),e("td",[t._v("Impose a Network I/O read limit for archives, 0 = unlimited. Value greater than 0 throttles read speed to the set value in MiB/s")])])])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-4"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("throttles")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("enabled")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token boolean important"}},[t._v("true")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("lines")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("2000")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("maximum_trigger_count")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("5")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("line_reset_interval")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("decay_interval")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("10000")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("stop_grace_period")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("15")]),t._v("\n")])])]),e("h2",{attrs:{id:"installer-limits"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installer-limits"}},[t._v("#")]),t._v(" Installer Limits")]),t._v(" "),e("p",[t._v("Defines the limits on the installer containers that prevents a server's installation process from unintentionally consuming more resources than expected. This is used in conjunction with the server's defined limits. Whichever value is higher will take precedence in the install containers.")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",{staticStyle:{"text-align":"left"}},[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("memory")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("1024")]),t._v(" "),e("td",[t._v("The maximum amount of memory install container can use unless server memory limit is higher than this value")])]),t._v(" "),e("tr",[e("td",{staticStyle:{"text-align":"left"}},[t._v("cpu")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("100")]),t._v(" "),e("td",[t._v("The maximum amount of cpu install container can use unless server cpu limit is higher than this value")])])])]),t._v(" "),e("h3",{attrs:{id:"example-of-usage-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#example-of-usage-5"}},[t._v("#")]),t._v(" Example of usage")]),t._v(" "),e("div",{staticClass:"language-yml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("installer_limits")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("memory")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("1024")]),t._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[t._v("cpu")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(":")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token number"}},[t._v("100")]),t._v("\n")])])]),e("h2",{attrs:{id:"other-values"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#other-values"}},[t._v("#")]),t._v(" Other values")]),t._v(" "),e("p",[t._v("More commonly discussed values. View all Wings config values and explanations in "),e("a",{attrs:{href:"https://github.com/pterodactyl/wings/tree/develop/config",target:"_blank",rel:"noopener noreferrer"}},[t._v("these two files."),e("OutboundLink")],1)]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("Setting Key")]),t._v(" "),e("th",{staticStyle:{"text-align":"center"}},[t._v("Default Value")]),t._v(" "),e("th",[t._v("Notes")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[t._v("debug")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("false")]),t._v(" "),e("td",[t._v("Force Wings to run in debug mode")])]),t._v(" "),e("tr",[e("td",[t._v("tmpfs_size")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("100")]),t._v(" "),e("td",[t._v("The size of the /tmp directory in MB when mounted into a container")])]),t._v(" "),e("tr",[e("td",[t._v("websocket_log_count")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("150")]),t._v(" "),e("td",[t._v("The number of lines to display in the console")])]),t._v(" "),e("tr",[e("td",[t._v("detect_clean_exit_as_crash")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("true")]),t._v(" "),e("td",[t._v("Mark server as crashed if it's stopped without user interaction, e.g., not pressing stop button")])]),t._v(" "),e("tr",[e("td",[t._v("(crash detection) timeout")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("60")]),t._v(" "),e("td",[t._v("Timeout between server crashes that will not cause the server to be automatically restarted")])]),t._v(" "),e("tr",[e("td",[t._v("app_name")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v('"Pterodactyl"')]),t._v(" "),e("td",[t._v("Changes the name of the daemon, shown in the panel's game console")])]),t._v(" "),e("tr",[e("td",[t._v("check_permissions_on_boot")]),t._v(" "),e("td",{staticStyle:{"text-align":"center"}},[t._v("true")]),t._v(" "),e("td",[t._v("Check all file permissions on each boot. Disable this when you have a very large amount of files and the server startup is hanging on checking permissions")])])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/9.90f962cd.js b/assets/js/9.3e9e31a6.js similarity index 99% rename from assets/js/9.90f962cd.js rename to assets/js/9.3e9e31a6.js index b0032e75..dea25ca2 100644 --- a/assets/js/9.90f962cd.js +++ b/assets/js/9.3e9e31a6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{257:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Process_Management.516b5b6f.png"},265:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Select.5a2867ee.png"},266:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Copy_Settings_From.e3102cdd.png"},267:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Variables.3962b264.png"},268:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Startup.b6e22637.png"},287:function(e,t,a){"use strict";a.r(t);var s=a(15),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"creating-a-custom-egg"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-custom-egg"}},[e._v("#")]),e._v(" Creating a Custom Egg")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("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(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#create-new-option"}},[e._v("Create New Option")])]),t("li",[t("a",{attrs:{href:"#configure-process-management"}},[e._v("Configure Process Management")]),t("ul",[t("li",[t("a",{attrs:{href:"#stop-command"}},[e._v("Stop Command")])]),t("li",[t("a",{attrs:{href:"#log-storage"}},[e._v("Log Storage")])]),t("li",[t("a",{attrs:{href:"#configuration-files"}},[e._v("Configuration Files")])]),t("li",[t("a",{attrs:{href:"#start-configuration"}},[e._v("Start Configuration")])])])]),t("li",[t("a",{attrs:{href:"#copy-settings-from"}},[e._v("Copy Settings From")])]),t("li",[t("a",{attrs:{href:"#egg-variables"}},[e._v("Egg Variables")])]),t("li",[t("a",{attrs:{href:"#list-of-default-variables"}},[e._v("List of default variables")])])])]),t("p"),e._v(" "),t("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.\nThe "),t("code",[e._v("Folder Name")]),e._v(" "),t("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(" "),t("p",[e._v("The default start command is also required, however it can be changed per-option.")]),e._v(" "),t("h2",{attrs:{id:"create-new-option"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-new-option"}},[e._v("#")]),e._v(" Create New Option")]),e._v(" "),t("p",[e._v("After creating the service, in the bottom right of the page you should see a button titled "),t("code",[e._v("New Egg")]),e._v(", press it.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(265),alt:""}})]),e._v(" "),t("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 "),t("code",[e._v("Associated Nest")]),e._v(" dropdown.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(257),alt:""}})]),e._v(" "),t("p",[e._v("After that, enter an Option Name to describe it, in this case I am using "),t("code",[e._v("Widget")]),e._v(". You will also need to provide a\n"),t("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(" "),t("p",[t("em",[e._v("Docker images must be specifically designed to work with Pterodactyl Panel.")]),e._v(" You should read more about that in\nour "),t("RouterLink",{attrs:{to:"/community/config/eggs/creating_a_custom_image.html"}},[e._v("Creating a Docker Image")]),e._v(" guide.")],1),e._v(" "),t("h2",{attrs:{id:"configure-process-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-process-management"}},[e._v("#")]),e._v(" Configure Process Management")]),e._v(" "),t("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(" "),t("p",[t("img",{attrs:{src:a(257),alt:""}})]),e._v(" "),t("p",[e._v("The first field you'll encounter is "),t("code",[e._v("Copy Settings From")]),e._v(". The default selection is "),t("code",[e._v("None")]),e._v(". That is expected, and okay.\nThis dropdown is discussed at the end of this article.")]),e._v(" "),t("h3",{attrs:{id:"stop-command"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stop-command"}},[e._v("#")]),e._v(" Stop Command")]),e._v(" "),t("p",[e._v("Next, you'll encounter "),t("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 "),t("code",[e._v("stop")]),e._v(" or "),t("code",[e._v("end")]),e._v(". Certain programs and games don't have a specified stop command, so\nyou can enter "),t("code",[e._v("^C")]),e._v(" to have the daemon execute a "),t("code",[e._v("SIGINT")]),e._v(" to end the process.")]),e._v(" "),t("h3",{attrs:{id:"log-storage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#log-storage"}},[e._v("#")]),e._v(" Log Storage")]),e._v(" "),t("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(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("h3",{attrs:{id:"configuration-files"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration-files"}},[e._v("#")]),e._v(" Configuration Files")]),e._v(" "),t("p",[e._v("The next block is one of the most complex blocks, the "),t("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(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server.properties"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"properties"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-ip"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enable-query"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"true"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"query.port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("In this example, we are telling the Daemon to read "),t("code",[e._v("server.properties")]),e._v(" in "),t("code",[e._v("/home/container")]),e._v(". Within this block, we\ndefine a "),t("code",[e._v("parser")]),e._v(", in this case "),t("code",[e._v("properties")]),e._v(" but the following are "),t("a",{attrs:{href:"https://github.com/pterodactyl/wings/blob/develop/parser/parser.go#L25-L30",target:"_blank",rel:"noopener noreferrer"}},[e._v("valid parsers"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("file")]),e._v(" — This parser goes based on matching the beginning of lines, and not a specific property like the other five.\nAvoid using this parser if possible.")]),e._v(" "),t("li",[t("code",[e._v("yaml")]),e._v(" (supports "),t("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),t("li",[t("code",[e._v("properties")])]),e._v(" "),t("li",[t("code",[e._v("ini")])]),e._v(" "),t("li",[t("code",[e._v("json")]),e._v(" (supports "),t("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),t("li",[t("code",[e._v("xml")])])]),e._v(" "),t("p",[e._v("Once you have defined a parser, we then define a "),t("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 "),t("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 "),t("code",[e._v("server.json")]),e._v(" file. In this case, we're assigning the default server port to be used as the "),t("code",[e._v("server-port")]),e._v(" and\n"),t("code",[e._v("query.port")]),e._v(". "),t("strong",[e._v("These placeholders are case sensitive, and should have no spaces in them.")])]),e._v(" "),t("p",[e._v("You can have multiple files listed here, the Daemon will process them in parallel before starting the server. When\nusing "),t("code",[e._v("yaml")]),e._v(" or "),t("code",[e._v("json")]),e._v(" you can use more advanced searching for elements.")]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"config.yml"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"yaml"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_enabled"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].host"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0:{{server.build.default.port}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"servers.*.address"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"127.0.0.1"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"localhost"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("In this example, we are parsing "),t("code",[e._v("config.yml")]),e._v(" using the "),t("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, "),t("code",[e._v("servers.*.address")]),e._v(" uses wildcard matching to match any items\nwithin the "),t("code",[e._v("servers")]),e._v(" block, and then finding each "),t("code",[e._v("address")]),e._v(" block for those items.")]),e._v(" "),t("div",{pre:!0},[t("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 "),t("code",[e._v("127.0.0.1")]),e._v(" or "),t("code",[e._v("localhost")]),e._v(" and replacing them with the\ndocker interface defined in the configuration file using "),t("code",[e._v("{{config.docker.interface}}")]),e._v(".")])]),t("h3",{attrs:{id:"start-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#start-configuration"}},[e._v("#")]),e._v(" Start Configuration")]),e._v(" "),t("p",[e._v("The last block to configure is the "),t("code",[e._v("Start Configuration")]),e._v(" for servers running using this service option.")]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"done"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('")! For help, type "')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("In the example block above, we define "),t("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 "),t("code",[e._v("ON")]),e._v(" rather\nthan "),t("code",[e._v("STARTING")]),e._v(".")]),e._v(" "),t("p",[e._v("That concludes basic service option configuration.")]),e._v(" "),t("h2",{attrs:{id:"copy-settings-from"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#copy-settings-from"}},[e._v("#")]),e._v(" Copy Settings From")]),e._v(" "),t("p",[e._v("As mentioned above, there is a unique "),t("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(" "),t("p",[t("img",{attrs:{src:a(266),alt:""}})]),e._v(" "),t("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(" "),t("p",[e._v("For example, lets look at the "),t("code",[e._v("Sponge (SpongeVanilla)")]),e._v(" service option.")]),e._v(" "),t("p",[e._v("As you can see, it as been told to copy settings from "),t("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 "),t("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(" "),t("p",[t("em",[e._v("Please note that "),t("code",[e._v("Copy Settings From")]),e._v(" does not support nested copies, you can only copy from a single parent,\nand that parent "),t("strong",[e._v("must not be copying from another option.")])])]),e._v(" "),t("h2",{attrs:{id:"egg-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#egg-variables"}},[e._v("#")]),e._v(" Egg Variables")]),e._v(" "),t("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 "),t("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(" "),t("p",[t("img",{attrs:{src:a(267),alt:""}})]),e._v(" "),t("div",{pre:!0},[t("p",[e._v("The name and description are rather self-explanitory, so I'll skip down to the "),t("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 "),t("code",[e._v("{{WOOZLE_WOO}}")]),e._v(", within file modifications as "),t("code",[e._v("{{env.WOOZLE_WOO}}")]),e._v(", or\njust "),t("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.")])]),t("p",[e._v("The next section is "),t("code",[e._v("Permissions")]),e._v(", which is a dropdown with two options: "),t("code",[e._v("Users Can View")]),e._v(" and "),t("code",[e._v("Users Can Edit")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("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(" "),t("li",[t("code",[e._v("Users Can Edit")]),e._v(" — allows a user to edit the value of the variable, for example the name of their "),t("code",[e._v("server.jar")]),e._v(" file\nif running Minecraft.")])]),e._v(" "),t("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(" "),t("p",[e._v("Finally, you will need to define some input rules to validate the value against. In this example, we use\n"),t("code",[e._v("required|string|between:1,10")]),e._v(", which means the field is "),t("code",[e._v("required")]),e._v(", must be a "),t("code",[e._v("string")]),e._v(", and must be between "),t("code",[e._v("1")]),e._v(" and\n"),t("code",[e._v("10")]),e._v(" characters in length. You can find "),t("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"),t("OutboundLink")],1),e._v("\non the Laravel website. You can also use ReGEX based validation by using the "),t("code",[e._v("regex:")]),e._v(" rule flag. For example,\n"),t("a",{attrs:{href:"https://regex101.com/r/k4oEOn/1",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("required|regex:/^([\\w\\d._-]+)(\\.jar)$/")]),t("OutboundLink")],1),e._v(" will require the field, and will match the\nregex as any letters or numbers ("),t("code",[e._v("\\w\\d")]),e._v(") including underscore ("),t("code",[e._v("_")]),e._v("), periods ("),t("code",[e._v(".")]),e._v("), and dashes ("),t("code",[e._v("-")]),e._v(") ending in "),t("code",[e._v(".jar")]),e._v(".")]),e._v(" "),t("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(" "),t("p",[t("img",{attrs:{src:a(268),alt:""}})]),e._v(" "),t("h2",{attrs:{id:"list-of-default-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#list-of-default-variables"}},[e._v("#")]),e._v(" List of default variables")]),e._v(" "),t("p",[e._v("The default variables are always accessible to all eggs and don't have to be created separately. They can be used in the egg startup, install script, or the configuration file parser.")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Variable")]),e._v(" "),t("th",[e._v("Description")]),e._v(" "),t("th",[e._v("Example")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("TZ")]),e._v(" "),t("td",[e._v("Time Zone")]),e._v(" "),t("td",[t("code",[e._v("Etc/UTC")])])]),e._v(" "),t("tr",[t("td",[e._v("STARTUP")]),e._v(" "),t("td",[e._v("Startup command of the egg")]),e._v(" "),t("td",[t("code",[e._v("java -Xms128M -Xmx"+e._s(e.SERVER_MEMORY)+"M -jar "+e._s(e.SERVER_JARFILE))])])]),e._v(" "),t("tr",[t("td",[e._v("SERVER_MEMORY")]),e._v(" "),t("td",[e._v("Memory available for the server in MB")]),e._v(" "),t("td",[t("code",[e._v("512")])])]),e._v(" "),t("tr",[t("td",[e._v("SERVER_IP")]),e._v(" "),t("td",[e._v("Default ip of the server")]),e._v(" "),t("td",[t("code",[e._v("127.0.0.1")])])]),e._v(" "),t("tr",[t("td",[e._v("SERVER_PORT")]),e._v(" "),t("td",[e._v("Primary Server Port")]),e._v(" "),t("td",[t("code",[e._v("27015")])])]),e._v(" "),t("tr",[t("td",[e._v("P_SERVER_LOCATION")]),e._v(" "),t("td",[e._v("Location of the server")]),e._v(" "),t("td",[t("code",[e._v("Example City")])])]),e._v(" "),t("tr",[t("td",[e._v("P_SERVER_UUID")]),e._v(" "),t("td",[e._v("UUID of the server")]),e._v(" "),t("td",[t("code",[e._v("539fdca8-4a08-4551-a8d2-8ee5475b50d9")])])]),e._v(" "),t("tr",[t("td",[e._v("P_SERVER_ALLOCATION_LIMIT")]),e._v(" "),t("td",[e._v("Limit of allocations allowed for the server")]),e._v(" "),t("td",[t("code",[e._v("0")])])])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{257:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Process_Management.516b5b6f.png"},265:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Select.5a2867ee.png"},266:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Copy_Settings_From.e3102cdd.png"},267:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Variables.3962b264.png"},268:function(e,t,a){e.exports=a.p+"assets/img/Pterodactyl_Create_New_Egg_Startup.b6e22637.png"},286:function(e,t,a){"use strict";a.r(t);var s=a(15),n=Object(s.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"creating-a-custom-egg"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-custom-egg"}},[e._v("#")]),e._v(" Creating a Custom Egg")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("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(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#create-new-option"}},[e._v("Create New Option")])]),t("li",[t("a",{attrs:{href:"#configure-process-management"}},[e._v("Configure Process Management")]),t("ul",[t("li",[t("a",{attrs:{href:"#stop-command"}},[e._v("Stop Command")])]),t("li",[t("a",{attrs:{href:"#log-storage"}},[e._v("Log Storage")])]),t("li",[t("a",{attrs:{href:"#configuration-files"}},[e._v("Configuration Files")])]),t("li",[t("a",{attrs:{href:"#start-configuration"}},[e._v("Start Configuration")])])])]),t("li",[t("a",{attrs:{href:"#copy-settings-from"}},[e._v("Copy Settings From")])]),t("li",[t("a",{attrs:{href:"#egg-variables"}},[e._v("Egg Variables")])]),t("li",[t("a",{attrs:{href:"#list-of-default-variables"}},[e._v("List of default variables")])])])]),t("p"),e._v(" "),t("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.\nThe "),t("code",[e._v("Folder Name")]),e._v(" "),t("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(" "),t("p",[e._v("The default start command is also required, however it can be changed per-option.")]),e._v(" "),t("h2",{attrs:{id:"create-new-option"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-new-option"}},[e._v("#")]),e._v(" Create New Option")]),e._v(" "),t("p",[e._v("After creating the service, in the bottom right of the page you should see a button titled "),t("code",[e._v("New Egg")]),e._v(", press it.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(265),alt:""}})]),e._v(" "),t("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 "),t("code",[e._v("Associated Nest")]),e._v(" dropdown.")]),e._v(" "),t("p",[t("img",{attrs:{src:a(257),alt:""}})]),e._v(" "),t("p",[e._v("After that, enter an Option Name to describe it, in this case I am using "),t("code",[e._v("Widget")]),e._v(". You will also need to provide a\n"),t("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(" "),t("p",[t("em",[e._v("Docker images must be specifically designed to work with Pterodactyl Panel.")]),e._v(" You should read more about that in\nour "),t("RouterLink",{attrs:{to:"/community/config/eggs/creating_a_custom_image.html"}},[e._v("Creating a Docker Image")]),e._v(" guide.")],1),e._v(" "),t("h2",{attrs:{id:"configure-process-management"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configure-process-management"}},[e._v("#")]),e._v(" Configure Process Management")]),e._v(" "),t("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(" "),t("p",[t("img",{attrs:{src:a(257),alt:""}})]),e._v(" "),t("p",[e._v("The first field you'll encounter is "),t("code",[e._v("Copy Settings From")]),e._v(". The default selection is "),t("code",[e._v("None")]),e._v(". That is expected, and okay.\nThis dropdown is discussed at the end of this article.")]),e._v(" "),t("h3",{attrs:{id:"stop-command"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stop-command"}},[e._v("#")]),e._v(" Stop Command")]),e._v(" "),t("p",[e._v("Next, you'll encounter "),t("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 "),t("code",[e._v("stop")]),e._v(" or "),t("code",[e._v("end")]),e._v(". Certain programs and games don't have a specified stop command, so\nyou can enter "),t("code",[e._v("^C")]),e._v(" to have the daemon execute a "),t("code",[e._v("SIGINT")]),e._v(" to end the process.")]),e._v(" "),t("h3",{attrs:{id:"log-storage"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#log-storage"}},[e._v("#")]),e._v(" Log Storage")]),e._v(" "),t("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(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("h3",{attrs:{id:"configuration-files"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#configuration-files"}},[e._v("#")]),e._v(" Configuration Files")]),e._v(" "),t("p",[e._v("The next block is one of the most complex blocks, the "),t("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(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server.properties"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"properties"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-ip"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"enable-query"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"true"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"server-port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"query.port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("In this example, we are telling the Daemon to read "),t("code",[e._v("server.properties")]),e._v(" in "),t("code",[e._v("/home/container")]),e._v(". Within this block, we\ndefine a "),t("code",[e._v("parser")]),e._v(", in this case "),t("code",[e._v("properties")]),e._v(" but the following are "),t("a",{attrs:{href:"https://github.com/pterodactyl/wings/blob/develop/parser/parser.go#L25-L30",target:"_blank",rel:"noopener noreferrer"}},[e._v("valid parsers"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("file")]),e._v(" — This parser goes based on matching the beginning of lines, and not a specific property like the other five.\nAvoid using this parser if possible.")]),e._v(" "),t("li",[t("code",[e._v("yaml")]),e._v(" (supports "),t("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),t("li",[t("code",[e._v("properties")])]),e._v(" "),t("li",[t("code",[e._v("ini")])]),e._v(" "),t("li",[t("code",[e._v("json")]),e._v(" (supports "),t("code",[e._v("*")]),e._v(" notation)")]),e._v(" "),t("li",[t("code",[e._v("xml")])])]),e._v(" "),t("p",[e._v("Once you have defined a parser, we then define a "),t("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 "),t("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 "),t("code",[e._v("server.json")]),e._v(" file. In this case, we're assigning the default server port to be used as the "),t("code",[e._v("server-port")]),e._v(" and\n"),t("code",[e._v("query.port")]),e._v(". "),t("strong",[e._v("These placeholders are case sensitive, and should have no spaces in them.")])]),e._v(" "),t("p",[e._v("You can have multiple files listed here, the Daemon will process them in parallel before starting the server. When\nusing "),t("code",[e._v("yaml")]),e._v(" or "),t("code",[e._v("json")]),e._v(" you can use more advanced searching for elements.")]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"config.yml"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"parser"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"yaml"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"find"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_enabled"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token boolean"}},[e._v("true")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].query_port"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{server.build.default.port}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"listeners[0].host"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"0.0.0.0:{{server.build.default.port}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"servers.*.address"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"127.0.0.1"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(",")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"localhost"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"{{config.docker.interface}}"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("In this example, we are parsing "),t("code",[e._v("config.yml")]),e._v(" using the "),t("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, "),t("code",[e._v("servers.*.address")]),e._v(" uses wildcard matching to match any items\nwithin the "),t("code",[e._v("servers")]),e._v(" block, and then finding each "),t("code",[e._v("address")]),e._v(" block for those items.")]),e._v(" "),t("div",{pre:!0},[t("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 "),t("code",[e._v("127.0.0.1")]),e._v(" or "),t("code",[e._v("localhost")]),e._v(" and replacing them with the\ndocker interface defined in the configuration file using "),t("code",[e._v("{{config.docker.interface}}")]),e._v(".")])]),t("h3",{attrs:{id:"start-configuration"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#start-configuration"}},[e._v("#")]),e._v(" Start Configuration")]),e._v(" "),t("p",[e._v("The last block to configure is the "),t("code",[e._v("Start Configuration")]),e._v(" for servers running using this service option.")]),e._v(" "),t("div",{staticClass:"language-json extra-class"},[t("pre",{pre:!0,attrs:{class:"language-json"}},[t("code",[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token property"}},[e._v('"done"')]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(":")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('")! For help, type "')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("In the example block above, we define "),t("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 "),t("code",[e._v("ON")]),e._v(" rather\nthan "),t("code",[e._v("STARTING")]),e._v(".")]),e._v(" "),t("p",[e._v("That concludes basic service option configuration.")]),e._v(" "),t("h2",{attrs:{id:"copy-settings-from"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#copy-settings-from"}},[e._v("#")]),e._v(" Copy Settings From")]),e._v(" "),t("p",[e._v("As mentioned above, there is a unique "),t("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(" "),t("p",[t("img",{attrs:{src:a(266),alt:""}})]),e._v(" "),t("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(" "),t("p",[e._v("For example, lets look at the "),t("code",[e._v("Sponge (SpongeVanilla)")]),e._v(" service option.")]),e._v(" "),t("p",[e._v("As you can see, it as been told to copy settings from "),t("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 "),t("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(" "),t("p",[t("em",[e._v("Please note that "),t("code",[e._v("Copy Settings From")]),e._v(" does not support nested copies, you can only copy from a single parent,\nand that parent "),t("strong",[e._v("must not be copying from another option.")])])]),e._v(" "),t("h2",{attrs:{id:"egg-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#egg-variables"}},[e._v("#")]),e._v(" Egg Variables")]),e._v(" "),t("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 "),t("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(" "),t("p",[t("img",{attrs:{src:a(267),alt:""}})]),e._v(" "),t("div",{pre:!0},[t("p",[e._v("The name and description are rather self-explanitory, so I'll skip down to the "),t("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 "),t("code",[e._v("{{WOOZLE_WOO}}")]),e._v(", within file modifications as "),t("code",[e._v("{{env.WOOZLE_WOO}}")]),e._v(", or\njust "),t("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.")])]),t("p",[e._v("The next section is "),t("code",[e._v("Permissions")]),e._v(", which is a dropdown with two options: "),t("code",[e._v("Users Can View")]),e._v(" and "),t("code",[e._v("Users Can Edit")]),e._v(".")]),e._v(" "),t("ul",[t("li",[t("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(" "),t("li",[t("code",[e._v("Users Can Edit")]),e._v(" — allows a user to edit the value of the variable, for example the name of their "),t("code",[e._v("server.jar")]),e._v(" file\nif running Minecraft.")])]),e._v(" "),t("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(" "),t("p",[e._v("Finally, you will need to define some input rules to validate the value against. In this example, we use\n"),t("code",[e._v("required|string|between:1,10")]),e._v(", which means the field is "),t("code",[e._v("required")]),e._v(", must be a "),t("code",[e._v("string")]),e._v(", and must be between "),t("code",[e._v("1")]),e._v(" and\n"),t("code",[e._v("10")]),e._v(" characters in length. You can find "),t("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"),t("OutboundLink")],1),e._v("\non the Laravel website. You can also use ReGEX based validation by using the "),t("code",[e._v("regex:")]),e._v(" rule flag. For example,\n"),t("a",{attrs:{href:"https://regex101.com/r/k4oEOn/1",target:"_blank",rel:"noopener noreferrer"}},[t("code",[e._v("required|regex:/^([\\w\\d._-]+)(\\.jar)$/")]),t("OutboundLink")],1),e._v(" will require the field, and will match the\nregex as any letters or numbers ("),t("code",[e._v("\\w\\d")]),e._v(") including underscore ("),t("code",[e._v("_")]),e._v("), periods ("),t("code",[e._v(".")]),e._v("), and dashes ("),t("code",[e._v("-")]),e._v(") ending in "),t("code",[e._v(".jar")]),e._v(".")]),e._v(" "),t("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(" "),t("p",[t("img",{attrs:{src:a(268),alt:""}})]),e._v(" "),t("h2",{attrs:{id:"list-of-default-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#list-of-default-variables"}},[e._v("#")]),e._v(" List of default variables")]),e._v(" "),t("p",[e._v("The default variables are always accessible to all eggs and don't have to be created separately. They can be used in the egg startup, install script, or the configuration file parser.")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Variable")]),e._v(" "),t("th",[e._v("Description")]),e._v(" "),t("th",[e._v("Example")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("TZ")]),e._v(" "),t("td",[e._v("Time Zone")]),e._v(" "),t("td",[t("code",[e._v("Etc/UTC")])])]),e._v(" "),t("tr",[t("td",[e._v("STARTUP")]),e._v(" "),t("td",[e._v("Startup command of the egg")]),e._v(" "),t("td",[t("code",[e._v("java -Xms128M -Xmx"+e._s(e.SERVER_MEMORY)+"M -jar "+e._s(e.SERVER_JARFILE))])])]),e._v(" "),t("tr",[t("td",[e._v("SERVER_MEMORY")]),e._v(" "),t("td",[e._v("Memory available for the server in MB")]),e._v(" "),t("td",[t("code",[e._v("512")])])]),e._v(" "),t("tr",[t("td",[e._v("SERVER_IP")]),e._v(" "),t("td",[e._v("Default ip of the server")]),e._v(" "),t("td",[t("code",[e._v("127.0.0.1")])])]),e._v(" "),t("tr",[t("td",[e._v("SERVER_PORT")]),e._v(" "),t("td",[e._v("Primary Server Port")]),e._v(" "),t("td",[t("code",[e._v("27015")])])]),e._v(" "),t("tr",[t("td",[e._v("P_SERVER_LOCATION")]),e._v(" "),t("td",[e._v("Location of the server")]),e._v(" "),t("td",[t("code",[e._v("Example City")])])]),e._v(" "),t("tr",[t("td",[e._v("P_SERVER_UUID")]),e._v(" "),t("td",[e._v("UUID of the server")]),e._v(" "),t("td",[t("code",[e._v("539fdca8-4a08-4551-a8d2-8ee5475b50d9")])])]),e._v(" "),t("tr",[t("td",[e._v("P_SERVER_ALLOCATION_LIMIT")]),e._v(" "),t("td",[e._v("Limit of allocations allowed for the server")]),e._v(" "),t("td",[t("code",[e._v("0")])])])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.109f38d9.js b/assets/js/app.109f38d9.js deleted file mode 100644 index 4c292ea8..00000000 --- a/assets/js/app.109f38d9.js +++ /dev/null @@ -1,19 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],l=e[1],u=e[2],f=0,p=[];f=0&&Math.floor(e)===e&&isFinite(t)}function v(t){return a(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function g(t){return null==t?"":Array.isArray(t)||p(t)&&t.toString===f?JSON.stringify(t,m,2):String(t)}function m(t,e){return e&&e.__v_isRef?e.value:e}function y(t){var e=parseFloat(t);return isNaN(e)?t:e}function b(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o-1)return t.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function C(t,e){return x.call(t,e)}function k(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var S=/-(\w)/g,P=k((function(t){return t.replace(S,(function(t,e){return e?e.toUpperCase():""}))})),O=k((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),E=/\B([A-Z])/g,j=k((function(t){return t.replace(E,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function T(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function A(t,e){for(var n in e)t[n]=e[n];return t}function L(t){for(var e={},n=0;n0,Z=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");var tt=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);var et,nt=Q&&Q.match(/firefox\/(\d+)/),rt={}.watch,ot=!1;if(X)try{var it={};Object.defineProperty(it,"passive",{get:function(){ot=!0}}),window.addEventListener("test-passive",null,it)}catch(t){}var at=function(){return void 0===et&&(et=!X&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),et},st=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function lt(t){return"function"==typeof t&&/native code/.test(t.toString())}var ut,ct="undefined"!=typeof Symbol&<(Symbol)&&"undefined"!=typeof Reflect&<(Reflect.ownKeys);ut="undefined"!=typeof Set&<(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ft=null;function pt(t){void 0===t&&(t=null),t||ft&&ft._scope.off(),ft=t,t&&t._scope.on()}var dt=function(){function t(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),ht=function(t){void 0===t&&(t="");var e=new dt;return e.text=t,e.isComment=!0,e};function vt(t){return new dt(void 0,void 0,void 0,String(t))}function gt(t){var e=new dt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}"function"==typeof SuppressedError&&SuppressedError;var mt=0,yt=[],bt=function(){function t(){this._pending=!1,this.id=mt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,yt.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var n=0,r=e.length;n0&&(Qt((u=t(u,"".concat(n||"","_").concat(r)))[0])&&Qt(f)&&(p[c]=vt(f.text+u[0].text),u.shift()),p.push.apply(p,u)):l(u)?Qt(f)?p[c]=vt(f.text+u):""!==u&&p.push(vt(u)):Qt(u)&&Qt(f)?p[c]=vt(f.text+u.text):(s(e._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));return p}(t):void 0}function Qt(t){return a(t)&&a(t.text)&&!1===t.isComment}function Jt(t,e){var n,r,i,s,l=null;if(o(t)||"string"==typeof t)for(l=new Array(t.length),n=0,r=t.length;n0,s=e?!!e.$stable:!a,l=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(s&&o&&o!==r&&l===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},e)e[u]&&"$"!==u[0]&&(i[u]=ge(t,n,u,e[u]))}else i={};for(var c in n)c in i||(i[c]=me(n,c));return e&&Object.isExtensible(e)&&(e._normalized=i),W(i,"$stable",s),W(i,"$key",l),W(i,"$hasNormal",a),i}function ge(t,e,n,r){var i=function(){var e=ft;pt(t);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Xt(n))&&n[0];return pt(e),n&&(!i||1===n.length&&i.isComment&&!he(i))?void 0:n};return r.proxy&&Object.defineProperty(e,n,{get:i,enumerable:!0,configurable:!0}),i}function me(t,e){return function(){return t[e]}}function ye(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};W(e,"_v_attr_proxy",!0),be(e,t.$attrs,r,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||be(t._listenersProxy={},t.$listeners,r,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||we(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:$(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(n){return Ft(t,e,n)}))}}}function be(t,e,n,r,o){var i=!1;for(var a in e)a in t?e[a]!==n[a]&&(i=!0):(i=!0,_e(t,a,r,o));for(var a in t)a in e||(i=!0,delete t[a]);return i}function _e(t,e,n,r){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return n[r][e]}})}function we(t,e){for(var n in e)t[n]=e[n];for(var n in t)n in e||delete t[n]}var xe=null;function Ce(t,e){return(t.__esModule||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function ke(t){if(o(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(un=function(){return cn.now()})}var fn=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function pn(){var t,e;for(ln=un(),an=!0,en.sort(fn),sn=0;snsn&&en[n].id>t.id;)n--;en.splice(n+1,0,t)}else en.push(t);on||(on=!0,Ue(pn))}}function hn(t,e){if(t){for(var n=Object.create(null),r=ct?Reflect.ownKeys(t):Object.keys(t),o=0;o-1)if(i&&!C(o,"default"))a=!1;else if(""===a||a===j(t)){var l=Rn(String,o.type);(l<0||s-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!d(t)&&t.test(e)}function Jn(t,e){var n=t.cache,r=t.keys,o=t._vnode,i=t.$vnode;for(var a in n){var s=n[a];if(s){var l=s.name;l&&!e(l)&&Yn(n,a,r,o)}}i.componentOptions.children=void 0}function Yn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,w(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=qn++,e._isVue=!0,e.__v_skip=!0,e._scope=new Bt(!0),e._scope.parent=void 0,e._scope._vm=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=$n(Wn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._provided=n?n._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Xe(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=pe(e._renderChildren,o),t.$scopedSlots=n?ve(t.$parent,n.data.scopedSlots,t.$slots):r,t._c=function(e,n,r,o){return Se(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Se(t,e,n,r,o,!0)};var i=n&&n.data;At(t,"$attrs",i&&i.attrs||r,null,!0),At(t,"$listeners",e._parentListeners||r,null,!0)}(e),tn(e,"beforeCreate",void 0,!1),function(t){var e=hn(t.$options.inject,t);e&&(Et(!1),Object.keys(e).forEach((function(n){At(t,n,e[n])})),Et(!0))}(e),Un(e),function(t){var e=t.$options.provide;if(e){var n=u(e)?e.call(t):e;if(!c(n))return;for(var r=Vt(t),o=ct?Reflect.ownKeys(n):Object.keys(n),i=0;i1?T(n):n;for(var r=T(arguments,1),o='event handler for "'.concat(t,'"'),i=0,a=n.length;iparseInt(this.max)&&Yn(t,e[0],e,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Yn(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){Jn(t,(function(t){return Qn(e,t)}))})),this.$watch("exclude",(function(e){Jn(t,(function(t){return!Qn(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=ke(t),n=e&&e.componentOptions;if(n){var r=Xn(n),o=this.include,i=this.exclude;if(o&&(!r||!Qn(o,r))||i&&r&&Qn(i,r))return e;var a=this.cache,s=this.keys,l=null==e.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):e.key;a[l]?(e.componentInstance=a[l].componentInstance,w(s,l),s.push(l)):(this.vnodeToCache=e,this.keyToCache=l),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return V}};Object.defineProperty(t,"config",e),t.util={warn:Cn,extend:A,mergeOptions:$n,defineReactive:At},t.set=Lt,t.delete=Dt,t.nextTick=Ue,t.observable=function(t){return Tt(t),t},t.options=Object.create(null),z.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,A(t.options.components,tr),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=T(arguments,1);return n.unshift(this),u(t.install)?t.install.apply(t,n):u(t)&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=$n(this.options,t),this}}(t),Kn(t),function(t){z.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&p(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&u(n)&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Gn),Object.defineProperty(Gn.prototype,"$isServer",{get:at}),Object.defineProperty(Gn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Gn,"FunctionalRenderContext",{value:vn}),Gn.version="2.7.16";var er=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),or=b("events,caret,typing,plaintext-only"),ir=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},lr=function(t){return sr(t)?t.slice(6,t.length):""},ur=function(t){return null==t||!1===t};function cr(t){for(var e=t.data,n=t,r=t;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=fr(r.data,e));for(;a(n=n.parent);)n&&n.data&&(e=fr(e,n.data));return function(t,e){if(a(t)||a(e))return pr(t,dr(e));return""}(e.staticClass,e.class)}function fr(t,e){return{staticClass:pr(t.staticClass,e.staticClass),class:a(t.class)?[t.class,e.class]:e.class}}function pr(t,e){return t?e?t+" "+e:t:e||""}function dr(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r-1?Mr(t,e,n):ir(e)?ur(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):rr(e)?t.setAttribute(e,function(t,e){return ur(e)||"false"===e?"false":"contenteditable"===t&&or(e)?e:"true"}(e,n)):sr(e)?ur(n)?t.removeAttributeNS(ar,lr(e)):t.setAttributeNS(ar,e,n):Mr(t,e,n)}function Mr(t,e,n){if(ur(n))t.removeAttribute(e);else{if(J&&!Y&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var Nr={create:Ir,update:Ir};function Ur(t,e){var n=e.elm,r=e.data,o=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=cr(e),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Fr,zr={create:Ur,update:Ur};function Br(t,e,n){var r=Fr;return function o(){var i=e.apply(null,arguments);null!==i&&qr(t,o,n,r)}}var Vr=Te&&!(nt&&Number(nt[1])<=53);function Hr(t,e,n,r){if(Vr){var o=ln,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Fr.addEventListener(t,e,ot?{capture:n,passive:r}:n)}function qr(t,e,n,r){(r||Fr).removeEventListener(t,e._wrapper||e,n)}function Wr(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Fr=e.elm||t.elm,function(t){if(a(t.__r)){var e=J?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}a(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),Wt(n,r,Hr,qr,Br,e.context),Fr=void 0}}var Gr,Kr={create:Wr,update:Wr,destroy:function(t){return Wr(t,kr)}};function Xr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,o=e.elm,l=t.data.domProps||{},u=e.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=e.data.domProps=A({},u)),l)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===l[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var c=i(r)?"":String(r);Qr(o,c)&&(o.value=c)}else if("innerHTML"===n&&gr(o.tagName)&&i(o.innerHTML)){(Gr=Gr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Gr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==l[n])try{o[n]=r}catch(t){}}}}function Qr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(a(r)){if(r.number)return y(n)!==y(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var Jr={create:Xr,update:Xr},Yr=k((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function Zr(t){var e=to(t.style);return t.staticStyle?A(t.staticStyle,e):e}function to(t){return Array.isArray(t)?L(t):"string"==typeof t?Yr(t):t}var eo,no=/^--/,ro=/\s*!important$/,oo=function(t,e,n){if(no.test(e))t.style.setProperty(e,n);else if(ro.test(n))t.style.setProperty(j(e),n.replace(ro,""),"important");else{var r=ao(e);if(Array.isArray(n))for(var o=0,i=n.length;o-1?e.split(uo).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" ".concat(t.getAttribute("class")||""," ");n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function fo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(uo).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" ".concat(t.getAttribute("class")||""," "),r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function po(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&A(e,ho(t.name||"v")),A(e,t),e}return"string"==typeof t?ho(t):void 0}}var ho=k((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),vo=X&&!Y,go="transition",mo="transitionend",yo="animation",bo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(go="WebkitTransition",mo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(yo="WebkitAnimation",bo="webkitAnimationEnd"));var _o=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function wo(t){_o((function(){_o(t)}))}function xo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),co(t,e))}function Co(t,e){t._transitionClasses&&w(t._transitionClasses,e),fo(t,e)}function ko(t,e,n){var r=Po(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?mo:bo,l=0,u=function(){t.removeEventListener(s,c),n()},c=function(e){e.target===t&&++l>=a&&u()};setTimeout((function(){l0&&(n="transition",c=a,f=i.length):"animation"===e?u>0&&(n="animation",c=u,f=l.length):f=(n=(c=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:c,propCount:f,hasTransform:"transition"===n&&So.test(r[go+"Property"])}}function Oo(t,e){for(;t.length1}function Lo(t,e){!0!==e.data.show&&jo(e)}var Do=function(t){var e,n,r={},u=t.modules,c=t.nodeOps;for(e=0;eh?_(t,i(n[m+1])?null:n[m+1].elm,n,d,m,r):d>m&&x(e,f,h)}(f,v,m,n,u):a(m)?(a(t.text)&&c.setTextContent(f,""),_(f,null,m,0,m.length-1,n)):a(v)?x(v,0,v.length-1):a(t.text)&&c.setTextContent(f,""):t.text!==e.text&&c.setTextContent(f,e.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(t,e)}}}function P(t,e,n){if(s(n)&&a(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(Uo(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function No(t,e){return e.every((function(e){return!M(e,t)}))}function Uo(t){return"_value"in t?t._value:t.value}function Fo(t){t.target.composing=!0}function zo(t){t.target.composing&&(t.target.composing=!1,Bo(t.target,"input"))}function Bo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Vo(t){return!t.componentInstance||t.data&&t.data.transition?t:Vo(t.componentInstance._vnode)}var Ho={model:Io,show:{bind:function(t,e,n){var r=e.value,o=(n=Vo(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,jo(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Vo(n)).data&&n.data.transition?(n.data.show=!0,r?jo(n,(function(){t.style.display=t.__vOriginalDisplay})):$o(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},qo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Wo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Wo(ke(e.children)):t}function Go(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var r in o)e[P(r)]=o[r];return e}function Ko(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Xo=function(t){return t.tag||he(t)},Qo=function(t){return"show"===t.name},Jo={name:"transition",props:qo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(Xo)).length){0;var r=this.mode;0;var o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Wo(o);if(!i)return o;if(this._leaving)return Ko(t,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:l(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Go(this),u=this._vnode,c=Wo(u);if(i.data.directives&&i.data.directives.some(Qo)&&(i.data.show=!0),c&&c.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,c)&&!he(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var f=c.data.transition=A({},s);if("out-in"===r)return this._leaving=!0,Gt(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Ko(t,o);if("in-out"===r){if(he(i))return u;var p,d=function(){p()};Gt(s,"afterEnter",d),Gt(s,"enterCancelled",d),Gt(f,"delayLeave",(function(t){p=t}))}}return o}}},Yo=A({tag:String,moveClass:String},qo);function Zo(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ti(t){t.data.newPos=t.elm.getBoundingClientRect()}function ei(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Yo.mode;var ni={Transition:Jo,TransitionGroup:{props:Yo,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Je(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Go(this),s=0;s-1?yr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:yr[t]=/HTMLUnknownElement/.test(e.toString())},A(Gn.options.directives,Ho),A(Gn.options.components,ni),Gn.prototype.__patch__=X?Do:D,Gn.prototype.$mount=function(t,e){return function(t,e,n){var r;t.$el=e,t.$options.render||(t.$options.render=ht),tn(t,"beforeMount"),r=function(){t._update(t._render(),n)},new qe(t,r,D,{before:function(){t._isMounted&&!t._isDestroyed&&tn(t,"beforeUpdate")}},!0),n=!1;var o=t._preWatchers;if(o)for(var i=0;i-1&&t%1==0&&t<=9007199254740991}},function(t,e,n){var r=n(8),o=n(43),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=function(t,e){if(r(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!o(t))||(a.test(t)||!i.test(t)||null!=e&&t in Object(e))}},function(t,e,n){var r=n(14),o=n(11);t.exports=function(t){return"symbol"==typeof t||o(t)&&"[object Symbol]"==r(t)}},function(t,e){t.exports=function(t){return t}},function(t,e,n){"use strict";var r=n(5),o=n(24),i=n(93),a=n(26),s=n(27),l=n(48),u=n(9),c=n(58),f=Object.getOwnPropertyDescriptor;e.f=r?f:function(t,e){if(t=s(t),e=l(e),c)try{return f(t,e)}catch(t){}if(u(t,e))return a(!o(i.f,t,e),t[e])}},function(t,e,n){"use strict";var r=n(4),o=n(3),i=n(16),a=Object,s=r("".split);t.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(t){return"String"===i(t)?s(t,""):a(t)}:a},function(t,e,n){"use strict";t.exports=function(t){return null==t}},function(t,e,n){"use strict";var r=n(94),o=n(49);t.exports=function(t){var e=r(t,"string");return o(e)?e:e+""}},function(t,e,n){"use strict";var r=n(29),o=n(2),i=n(50),a=n(51),s=Object;t.exports=a?function(t){return"symbol"==typeof t}:function(t){var e=r("Symbol");return o(e)&&i(e.prototype,s(t))}},function(t,e,n){"use strict";var r=n(4);t.exports=r({}.isPrototypeOf)},function(t,e,n){"use strict";var r=n(52);t.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(t,e,n){"use strict";var r=n(53),o=n(3),i=n(1).String;t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol("symbol detection");return!i(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(t,e,n){"use strict";var r,o,i=n(1),a=n(54),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(r=c.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),t.exports=o},function(t,e,n){"use strict";var r=n(1).navigator,o=r&&r.userAgent;t.exports=o?String(o):""},function(t,e,n){"use strict";var r=n(32);t.exports=function(t,e){return r[t]||(r[t]=e||{})}},function(t,e,n){"use strict";t.exports=!1},function(t,e,n){"use strict";var r=n(4),o=0,i=Math.random(),a=r(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+a(++o+i,36)}},function(t,e,n){"use strict";var r=n(5),o=n(3),i=n(98);t.exports=!r&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){"use strict";var r=n(6),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw new i(o(t)+" is not an object")}},function(t,e,n){"use strict";t.exports={}},function(t,e,n){"use strict";var r=n(9),o=n(107),i=n(45),a=n(17);t.exports=function(t,e,n){for(var s=o(e),l=a.f,u=i.f,c=0;cc))return!1;var p=l.get(t),d=l.get(e);if(p&&d)return p==e&&d==t;var h=-1,v=!0,g=2&n?new r:void 0;for(l.set(t,e),l.set(e,t);++h-1&&t%1==0&&t]/;t.exports=function(t){var e,n=""+t,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a79&&a<83||!i("reduce")},{reduce:function(t){var e=arguments.length;return o(this,t,e,e>1?arguments[1]:void 0)}})},function(t,e,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);e.f=i?function(t){var e=o(this,t);return!!e&&e.enumerable}:r},function(t,e,n){"use strict";var r=n(24),o=n(6),i=n(49),a=n(95),s=n(97),l=n(31),u=TypeError,c=l("toPrimitive");t.exports=function(t,e){if(!o(t)||i(t))return t;var n,l=a(t,c);if(l){if(void 0===e&&(e="default"),n=r(l,t,e),!o(n)||i(n))return n;throw new u("Can't convert object to primitive value")}return void 0===e&&(e="number"),s(t,e)}},function(t,e,n){"use strict";var r=n(30),o=n(47);t.exports=function(t,e){var n=t[e];return o(n)?void 0:r(n)}},function(t,e,n){"use strict";var r=String;t.exports=function(t){try{return r(t)}catch(t){return"Object"}}},function(t,e,n){"use strict";var r=n(24),o=n(2),i=n(6),a=TypeError;t.exports=function(t,e){var n,s;if("string"===e&&o(n=t.toString)&&!i(s=r(n,t)))return s;if(o(n=t.valueOf)&&!i(s=r(n,t)))return s;if("string"!==e&&o(n=t.toString)&&!i(s=r(n,t)))return s;throw new a("Can't convert object to primitive value")}},function(t,e,n){"use strict";var r=n(1),o=n(6),i=r.document,a=o(i)&&o(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},function(t,e,n){"use strict";var r=n(5),o=n(3);t.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(t,e,n){"use strict";var r=n(2),o=n(17),i=n(101),a=n(33);t.exports=function(t,e,n,s){s||(s={});var l=s.enumerable,u=void 0!==s.name?s.name:e;if(r(n)&&i(n,u,s),s.global)l?t[e]=n:a(e,n);else{try{s.unsafe?t[e]&&(l=!0):delete t[e]}catch(t){}l?t[e]=n:o.f(t,e,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},function(t,e,n){"use strict";var r=n(4),o=n(3),i=n(2),a=n(9),s=n(5),l=n(102).CONFIGURABLE,u=n(103),c=n(104),f=c.enforce,p=c.get,d=String,h=Object.defineProperty,v=r("".slice),g=r("".replace),m=r([].join),y=s&&!o((function(){return 8!==h((function(){}),"length",{value:8}).length})),b=String(String).split("String"),_=t.exports=function(t,e,n){"Symbol("===v(d(e),0,7)&&(e="["+g(d(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!a(t,"name")||l&&t.name!==e)&&(s?h(t,"name",{value:e,configurable:!0}):t.name=e),y&&n&&a(n,"arity")&&t.length!==n.arity&&h(t,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?s&&h(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var r=f(t);return a(r,"source")||(r.source=m(b,"string"==typeof e?e:"")),t};Function.prototype.toString=_((function(){return i(this)&&p(this).source||u(this)}),"toString")},function(t,e,n){"use strict";var r=n(5),o=n(9),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);t.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},function(t,e,n){"use strict";var r=n(4),o=n(2),i=n(32),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},function(t,e,n){"use strict";var r,o,i,a=n(105),s=n(1),l=n(6),u=n(12),c=n(9),f=n(32),p=n(106),d=n(60),h=s.TypeError,v=s.WeakMap;if(a||f.state){var g=f.state||(f.state=new v);g.get=g.get,g.has=g.has,g.set=g.set,r=function(t,e){if(g.has(t))throw new h("Object already initialized");return e.facade=t,g.set(t,e),e},o=function(t){return g.get(t)||{}},i=function(t){return g.has(t)}}else{var m=p("state");d[m]=!0,r=function(t,e){if(c(t,m))throw new h("Object already initialized");return e.facade=t,u(t,m,e),e},o=function(t){return c(t,m)?t[m]:{}},i=function(t){return c(t,m)}}t.exports={set:r,get:o,has:i,enforce:function(t){return i(t)?o(t):r(t,{})},getterFor:function(t){return function(e){var n;if(!l(e)||(n=o(e)).type!==t)throw new h("Incompatible receiver, "+t+" required");return n}}}},function(t,e,n){"use strict";var r=n(1),o=n(2),i=r.WeakMap;t.exports=o(i)&&/native code/.test(String(i))},function(t,e,n){"use strict";var r=n(55),o=n(57),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,e,n){"use strict";var r=n(29),o=n(4),i=n(108),a=n(115),s=n(59),l=o([].concat);t.exports=r("Reflect","ownKeys")||function(t){var e=i.f(s(t)),n=a.f;return n?l(e,n(t)):e}},function(t,e,n){"use strict";var r=n(109),o=n(114).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e,n){"use strict";var r=n(4),o=n(9),i=n(27),a=n(110).indexOf,s=n(60),l=r([].push);t.exports=function(t,e){var n,r=i(t),u=0,c=[];for(n in r)!o(s,n)&&o(r,n)&&l(c,n);for(;e.length>u;)o(r,n=e[u++])&&(~a(c,n)||l(c,n));return c}},function(t,e,n){"use strict";var r=n(27),o=n(111),i=n(35),a=function(t){return function(e,n,a){var s=r(e),l=i(s);if(0===l)return!t&&-1;var u,c=o(a,l);if(t&&n!=n){for(;l>c;)if((u=s[c++])!=u)return!0}else for(;l>c;c++)if((t||c in s)&&s[c]===n)return t||c||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},function(t,e,n){"use strict";var r=n(62),o=Math.max,i=Math.min;t.exports=function(t,e){var n=r(t);return n<0?o(n+e,0):i(n,e)}},function(t,e,n){"use strict";var r=Math.ceil,o=Math.floor;t.exports=Math.trunc||function(t){var e=+t;return(e>0?o:r)(e)}},function(t,e,n){"use strict";var r=n(62),o=Math.min;t.exports=function(t){var e=r(t);return e>0?o(e,9007199254740991):0}},function(t,e,n){"use strict";t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,n){"use strict";e.f=Object.getOwnPropertySymbols},function(t,e,n){"use strict";var r=n(3),o=n(2),i=/#|\.prototype\./,a=function(t,e){var n=l[s(t)];return n===c||n!==u&&(o(e)?r(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,".").toLowerCase()},l=a.data={},u=a.NATIVE="N",c=a.POLYFILL="P";t.exports=a},function(t,e,n){"use strict";var r=n(30),o=n(34),i=n(46),a=n(35),s=TypeError,l="Reduce of empty array with no initial value",u=function(t){return function(e,n,u,c){var f=o(e),p=i(f),d=a(f);if(r(n),0===d&&u<2)throw new s(l);var h=t?d-1:0,v=t?-1:1;if(u<2)for(;;){if(h in p){c=p[h],h+=v;break}if(h+=v,t?h<0:d<=h)throw new s(l)}for(;t?h>=0:d>h;h+=v)h in p&&(c=n(c,p[h],h,f));return c}};t.exports={left:u(!1),right:u(!0)}},function(t,e,n){"use strict";var r=n(3);t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){return 1},1)}))}},function(t,e,n){"use strict";var r=n(120);t.exports="NODE"===r},function(t,e,n){"use strict";var r=n(1),o=n(54),i=n(16),a=function(t){return o.slice(0,t.length)===t};t.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":r.Bun&&"string"==typeof Bun.version?"BUN":r.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(r.process)?"NODE":r.window&&r.document?"BROWSER":"REST"},function(t,e,n){"use strict";var r=n(23),o=n(1),i=n(122),a=n(123),s=o.WebAssembly,l=7!==new Error("e",{cause:7}).cause,u=function(t,e){var n={};n[t]=a(t,e,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},c=function(t,e){if(s&&s[t]){var n={};n[t]=a("WebAssembly."+t,e,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(t){return function(e){return i(t,this,arguments)}})),u("EvalError",(function(t){return function(e){return i(t,this,arguments)}})),u("RangeError",(function(t){return function(e){return i(t,this,arguments)}})),u("ReferenceError",(function(t){return function(e){return i(t,this,arguments)}})),u("SyntaxError",(function(t){return function(e){return i(t,this,arguments)}})),u("TypeError",(function(t){return function(e){return i(t,this,arguments)}})),u("URIError",(function(t){return function(e){return i(t,this,arguments)}})),c("CompileError",(function(t){return function(e){return i(t,this,arguments)}})),c("LinkError",(function(t){return function(e){return i(t,this,arguments)}})),c("RuntimeError",(function(t){return function(e){return i(t,this,arguments)}}))},function(t,e,n){"use strict";var r=n(25),o=Function.prototype,i=o.apply,a=o.call;t.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},function(t,e,n){"use strict";var r=n(29),o=n(9),i=n(12),a=n(50),s=n(63),l=n(61),u=n(127),c=n(128),f=n(129),p=n(133),d=n(134),h=n(5),v=n(56);t.exports=function(t,e,n,g){var m=g?2:1,y=t.split("."),b=y[y.length-1],_=r.apply(null,y);if(_){var w=_.prototype;if(!v&&o(w,"cause")&&delete w.cause,!n)return _;var x=r("Error"),C=e((function(t,e){var n=f(g?e:t,void 0),r=g?new _(t):new _;return void 0!==n&&i(r,"message",n),d(r,C,r.stack,2),this&&a(w,this)&&c(r,this,C),arguments.length>m&&p(r,arguments[m]),r}));if(C.prototype=w,"Error"!==b?s?s(C,x):l(C,x,{name:!0}):h&&"stackTraceLimit"in _&&(u(C,_,"stackTraceLimit"),u(C,_,"prepareStackTrace")),l(C,_),!v)try{w.name!==b&&i(w,"name",b),w.constructor=C}catch(t){}return C}}},function(t,e,n){"use strict";var r=n(4),o=n(30);t.exports=function(t,e,n){try{return r(o(Object.getOwnPropertyDescriptor(t,e)[n]))}catch(t){}}},function(t,e,n){"use strict";var r=n(126),o=String,i=TypeError;t.exports=function(t){if(r(t))return t;throw new i("Can't set "+o(t)+" as a prototype")}},function(t,e,n){"use strict";var r=n(6);t.exports=function(t){return r(t)||null===t}},function(t,e,n){"use strict";var r=n(17).f;t.exports=function(t,e,n){n in t||r(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},function(t,e,n){"use strict";var r=n(2),o=n(6),i=n(63);t.exports=function(t,e,n){var a,s;return i&&r(a=e.constructor)&&a!==n&&o(s=a.prototype)&&s!==n.prototype&&i(t,s),t}},function(t,e,n){"use strict";var r=n(130);t.exports=function(t,e){return void 0===t?arguments.length<2?"":e:r(t)}},function(t,e,n){"use strict";var r=n(131),o=String;t.exports=function(t){if("Symbol"===r(t))throw new TypeError("Cannot convert a Symbol value to a string");return o(t)}},function(t,e,n){"use strict";var r=n(132),o=n(2),i=n(16),a=n(31)("toStringTag"),s=Object,l="Arguments"===i(function(){return arguments}());t.exports=r?i:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=s(t),a))?n:l?i(e):"Object"===(r=i(e))&&o(e.callee)?"Arguments":r}},function(t,e,n){"use strict";var r={};r[n(31)("toStringTag")]="z",t.exports="[object z]"===String(r)},function(t,e,n){"use strict";var r=n(6),o=n(12);t.exports=function(t,e){r(e)&&"cause"in e&&o(t,"cause",e.cause)}},function(t,e,n){"use strict";var r=n(12),o=n(135),i=n(136),a=Error.captureStackTrace;t.exports=function(t,e,n,s){i&&(a?a(t,e):r(t,"stack",o(n,s)))}},function(t,e,n){"use strict";var r=n(4),o=Error,i=r("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(a);t.exports=function(t,e){if(l&&"string"==typeof t&&!o.prepareStackTrace)for(;e--;)t=i(t,s,"");return t}},function(t,e,n){"use strict";var r=n(3),o=n(26);t.exports=!r((function(){var t=new Error("a");return!("stack"in t)||(Object.defineProperty(t,"stack",o(1,7)),7!==t.stack)}))},function(t,e,n){"use strict";var r=n(5),o=n(138),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();t.exports=s?function(t,e){if(o(t)&&!a(t,"length").writable)throw new i("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e}},function(t,e,n){"use strict";var r=n(16);t.exports=Array.isArray||function(t){return"Array"===r(t)}},function(t,e,n){"use strict";var r=TypeError;t.exports=function(t){if(t>9007199254740991)throw r("Maximum allowed index exceeded");return t}},function(t,e,n){var r=n(64),o=n(141);t.exports=function t(e,n,i,a,s){var l=-1,u=e.length;for(i||(i=o),s||(s=[]);++l0&&i(c)?n>1?t(c,n-1,i,a,s):r(s,c):a||(s[s.length]=c)}return s}},function(t,e,n){var r=n(13),o=n(36),i=n(8),a=r?r.isConcatSpreadable:void 0;t.exports=function(t){return i(t)||o(t)||!!(a&&t&&t[a])}},function(t,e,n){var r=n(14),o=n(11);t.exports=function(t){return o(t)&&"[object Arguments]"==r(t)}},function(t,e,n){var r=n(13),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;t.exports=function(t){var e=i.call(t,s),n=t[s];try{t[s]=void 0;var r=!0}catch(t){}var o=a.call(t);return r&&(e?t[s]=n:delete t[s]),o}},function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},function(t,e,n){var r=n(146),o=n(202),i=n(44),a=n(8),s=n(213);t.exports=function(t){return"function"==typeof t?t:null==t?i:"object"==typeof t?a(t)?o(t[0],t[1]):r(t):s(t)}},function(t,e,n){var r=n(147),o=n(201),i=n(82);t.exports=function(t){var e=o(t);return 1==e.length&&e[0][2]?i(e[0][0],e[0][1]):function(n){return n===t||r(n,t,e)}}},function(t,e,n){var r=n(66),o=n(70);t.exports=function(t,e,n,i){var a=n.length,s=a,l=!i;if(null==t)return!s;for(t=Object(t);a--;){var u=n[a];if(l&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++a-1}},function(t,e,n){var r=n(19);t.exports=function(t,e){var n=this.__data__,o=r(n,t);return o<0?(++this.size,n.push([t,e])):n[o][1]=e,this}},function(t,e,n){var r=n(18);t.exports=function(){this.__data__=new r,this.size=0}},function(t,e){t.exports=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}},function(t,e){t.exports=function(t){return this.__data__.get(t)}},function(t,e){t.exports=function(t){return this.__data__.has(t)}},function(t,e,n){var r=n(18),o=n(37),i=n(39);t.exports=function(t,e){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([t,e]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(t,e),this.size=n.size,this}},function(t,e,n){var r=n(68),o=n(159),i=n(38),a=n(69),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,p=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=function(t){return!(!i(t)||o(t))&&(r(t)?p:s).test(a(t))}},function(t,e,n){var r,o=n(160),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";t.exports=function(t){return!!i&&i in t}},function(t,e,n){var r=n(7)["__core-js_shared__"];t.exports=r},function(t,e){t.exports=function(t,e){return null==t?void 0:t[e]}},function(t,e,n){var r=n(163),o=n(18),i=n(37);t.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(t,e,n){var r=n(164),o=n(165),i=n(166),a=n(167),s=n(168);function l(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}},function(t,e,n){var r=n(72),o=n(225),i=n(230),a=n(73),s=n(231),l=n(40);t.exports=function(t,e,n){var u=-1,c=o,f=t.length,p=!0,d=[],h=d;if(n)p=!1,c=i;else if(f>=200){var v=e?null:s(t);if(v)return l(v);p=!1,c=a,h=new r}else h=e?[]:d;t:for(;++u-1}},function(t,e,n){var r=n(227),o=n(228),i=n(229);t.exports=function(t,e,n){return e==e?i(t,e,n):r(t,o,n)}},function(t,e){t.exports=function(t,e,n,r){for(var o=t.length,i=n+(r?1:-1);r?i--:++i=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}(i.path||""),p=e&&e.path||"/",d=u.path?k(u.path,p,n||i.append):p,h=function(t,e,n){void 0===e&&(e={});var r,o=n||f;try{r=o(t||"")}catch(t){r={}}for(var i in e){var a=e[i];r[i]=Array.isArray(a)?a.map(c):c(a)}return r}(u.query,i.query,r&&r.options.parseQuery),v=i.hash||u.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:d,query:h,hash:v}}var q,W=function(){},G={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},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),a=i.location,s=i.route,l=i.href,u={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,v=null==f?"router-link-exact-active":f,g=null==this.activeClass?p:this.activeClass,m=null==this.exactActiveClass?v:this.exactActiveClass,y=s.redirectedFrom?h(null,H(s.redirectedFrom),null,n):s;u[m]=b(r,y,this.exactPath),u[g]=this.exact||this.exactPath?u[m]:function(t,e){return 0===t.path.replace(d,"/").indexOf(e.path.replace(d,"/"))&&(!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,y);var _=u[m]?this.ariaCurrentValue:null,w=function(t){K(t)&&(e.replace?n.replace(a,W):n.push(a,W))},x={click:K};Array.isArray(this.event)?this.event.forEach((function(t){x[t]=w})):x[this.event]=w;var C={class:u},k=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:s,navigate:w,isActive:u[g],isExactActive:u[m]});if(k){if(1===k.length)return k[0];if(k.length>1||!k.length)return 0===k.length?t():t("span",{},k)}if("a"===this.tag)C.on=x,C.attrs={href:l,"aria-current":_};else{var S=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=V(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var d=0;d-1}function St(t,e){return kt(t)&&t._isRouter&&(null==e||t.type===e)}function Pt(t,e,n){var r=function(o){o>=t.length?n():t[o]?e(t[o],(function(){r(o+1)})):r(o+1)};r(0)}function Ot(t){return function(e,n,r){var o=!1,i=0,a=null;Et(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){o=!0,i++;var l,u=Tt((function(e){var o;((o=e).__esModule||$t&&"Module"===o[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:q.extend(e),n.components[s]=e,--i<=0&&r()})),c=Tt((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=kt(t)?t:new Error(e),r(a))}));try{l=t(u,c)}catch(t){c(t)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}})),o||r()}}function Et(t,e){return jt(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function jt(t){return Array.prototype.concat.apply([],t)}var $t="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Tt(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 At=function(t,e){this.router=t,this.base=function(t){if(!t)if(X){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=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Lt(t,e,n,r){var o=Et(t,(function(t,r,o,i){var a=function(t,e){"function"!=typeof t&&(t=q.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,o,i)})):n(a,r,o,i)}));return jt(r?o.reverse():o)}function Dt(t,e){if(e)return function(){return t.apply(e,arguments)}}At.prototype.listen=function(t){this.cb=t},At.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},At.prototype.onError=function(t){this.errorCbs.push(t)},At.prototype.transitionTo=function(t,e,n){var r,o=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),e&&e(r),o.ensureURL(),o.router.afterHooks.forEach((function(t){t&&t(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!o.ready&&(St(t,bt.redirected)&&i===g||(o.ready=!0,o.readyErrorCbs.forEach((function(e){e(t)}))))}))},At.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current;this.pending=t;var i,a,s=function(t){!St(t)&&kt(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},l=t.matched.length-1,u=o.matched.length-1;if(b(t,o)&&l===u&&t.matched[l]===o.matched[u])return this.ensureURL(),t.hash&&st(this.router,o,t,!1),s(((a=xt(i=o,t,bt.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n0)){var e=this.router,n=e.options.scrollBehavior,r=gt&&n;r&&this.listeners.push(at());var o=function(){var n=t.current,o=Rt(t.base);t.current===g&&o===t._startLocation||t.transitionTo(o,(function(t){r&&st(e,t,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){mt(S(r.base+t.fullPath)),st(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){yt(S(r.base+t.fullPath)),st(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Rt(this.base)!==this.current.fullPath){var e=S(this.base+this.current.fullPath);t?mt(e):yt(e)}},e.prototype.getCurrentLocation=function(){return Rt(this.base)},e}(At);function Rt(t){var e=window.location.pathname,n=e.toLowerCase(),r=t.toLowerCase();return!t||n!==r&&0!==n.indexOf(S(r+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Mt=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Rt(t);if(!/^\/#/.test(e))return window.location.replace(S(t+"/#"+e)),!0}(this.base)||Nt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,n=gt&&e;n&&this.listeners.push(at());var r=function(){var e=t.current;Nt()&&t.transitionTo(Ut(),(function(r){n&&st(t.router,r,e,!0),gt||Bt(r.fullPath)}))},o=gt?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},e.prototype.push=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){zt(t.fullPath),st(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,o=this.current;this.transitionTo(t,(function(t){Bt(t.fullPath),st(r.router,t,o,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Ut()!==e&&(t?zt(e):Bt(e))},e.prototype.getCurrentLocation=function(){return Ut()},e}(At);function Nt(){var t=Ut();return"/"===t.charAt(0)||(Bt("/"+t),!1)}function Ut(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Ft(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function zt(t){gt?mt(Ft(t)):window.location.hash=t}function Bt(t){gt?yt(Ft(t)):window.location.replace(Ft(t))}var Vt=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(){var t=e.current;e.index=n,e.updateRoute(r),e.router.afterHooks.forEach((function(e){e&&e(r,t)}))}),(function(t){St(t,bt.duplicated)&&(e.index=n)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(At),Ht=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Y(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!gt&&!1!==t.fallback,this.fallback&&(e="hash"),X||(e="abstract"),this.mode=e,e){case"history":this.history=new It(this,t.base);break;case"hash":this.history=new Mt(this,t.base,this.fallback);break;case"abstract":this.history=new Vt(this,t.base);break;default:0}},qt={currentRoute:{configurable:!0}};Ht.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},qt.currentRoute.get=function(){return this.history&&this.history.current},Ht.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),e.app||e.history.teardown()})),!this.app){this.app=t;var n=this.history;if(n instanceof It||n instanceof Mt){var r=function(t){n.setupListeners(),function(t){var r=n.current,o=e.options.scrollBehavior;gt&&o&&"fullPath"in t&&st(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Ht.prototype.beforeEach=function(t){return Gt(this.beforeHooks,t)},Ht.prototype.beforeResolve=function(t){return Gt(this.resolveHooks,t)},Ht.prototype.afterEach=function(t){return Gt(this.afterHooks,t)},Ht.prototype.onReady=function(t,e){this.history.onReady(t,e)},Ht.prototype.onError=function(t){this.history.onError(t)},Ht.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)},Ht.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)},Ht.prototype.go=function(t){this.history.go(t)},Ht.prototype.back=function(){this.go(-1)},Ht.prototype.forward=function(){this.go(1)},Ht.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]}))}))):[]},Ht.prototype.resolve=function(t,e,n){var r=H(t,e=e||this.history.current,n,this),o=this.match(r,e),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?S(t+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ht.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ht.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Ht.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ht.prototype,qt);var Wt=Ht;function Gt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Ht.install=function t(e){if(!t.installed||q!==e){t.installed=!0,q=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",x),e.component("RouterLink",G);var o=e.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ht.version="3.6.5",Ht.isNavigationFailure=St,Ht.NavigationFailureType=bt,Ht.START_LOCATION=g,X&&window.Vue&&window.Vue.use(Ht);n(92);n(121),n(90);var Kt={DropdownLink:()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,244)),DropdownTransition:()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,243)),Home:()=>Promise.all([n.e(1),n.e(11)]).then(n.bind(null,258)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(4)]).then(n.bind(null,282)),NavLink:()=>n.e(16).then(n.bind(null,241)),NavLinks:()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,246)),Navbar:()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,259)),NotFound:()=>n.e(24).then(n.bind(null,283)),Page:()=>n.e(17).then(n.bind(null,260)),SearchBox:()=>n.e(25).then(n.bind(null,250)),Sidebar:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,281)),SidebarButton:()=>n.e(26).then(n.bind(null,252)),SidebarGroup:()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,261)),SidebarLink:()=>n.e(18).then(n.bind(null,247)),SlickCarousel:()=>Promise.all([n.e(1),n.e(27)]).then(n.bind(null,249)),VersionSelect:()=>n.e(19).then(n.bind(null,251)),VersionSelectItem:()=>n.e(28).then(n.bind(null,245))},Xt={"v-4e72e1d8":()=>n.e(30).then(n.bind(null,284)),"v-680eebc3":()=>n.e(29).then(n.bind(null,285)),"v-7d127123":()=>n.e(31).then(n.bind(null,286)),"v-4a1e6e3a":()=>n.e(9).then(n.bind(null,287)),"v-10fe793a":()=>n.e(32).then(n.bind(null,288)),"v-622f23e3":()=>n.e(12).then(n.bind(null,289)),"v-ef34fffa":()=>n.e(33).then(n.bind(null,290)),"v-67c3f2ba":()=>n.e(10).then(n.bind(null,291)),"v-0af75f63":()=>n.e(35).then(n.bind(null,292)),"v-090070fa":()=>n.e(34).then(n.bind(null,293)),"v-cc322cfa":()=>n.e(36).then(n.bind(null,294)),"v-e4c1f74e":()=>n.e(37).then(n.bind(null,295)),"v-26037fe3":()=>n.e(38).then(n.bind(null,296)),"v-9619ebfa":()=>n.e(39).then(n.bind(null,297)),"v-37f7de3e":()=>n.e(40).then(n.bind(null,298)),"v-7c7b3203":()=>n.e(41).then(n.bind(null,299)),"v-07a77f72":()=>n.e(42).then(n.bind(null,300)),"v-00d38f11":()=>n.e(43).then(n.bind(null,301)),"v-d39223ba":()=>n.e(20).then(n.bind(null,302)),"v-a31c3dba":()=>n.e(44).then(n.bind(null,303)),"v-6f0eac21":()=>n.e(45).then(n.bind(null,304)),"v-481dea23":()=>n.e(46).then(n.bind(null,305)),"v-15b388aa":()=>n.e(47).then(n.bind(null,306)),"v-7f0b5429":()=>n.e(49).then(n.bind(null,307)),"v-8a6363ba":()=>n.e(48).then(n.bind(null,308)),"v-29055241":()=>n.e(50).then(n.bind(null,309)),"v-c0e60bfa":()=>n.e(21).then(n.bind(null,310)),"v-589003f5":()=>n.e(51).then(n.bind(null,311)),"v-019cb63a":()=>n.e(52).then(n.bind(null,312)),"v-7ffeb723":()=>n.e(53).then(n.bind(null,313)),"v-9478f2ba":()=>n.e(54).then(n.bind(null,314)),"v-5baa92ba":()=>n.e(56).then(n.bind(null,315)),"v-c249e07a":()=>n.e(57).then(n.bind(null,316)),"v-4f03fe0f":()=>n.e(55).then(n.bind(null,317)),"v-27941b23":()=>n.e(58).then(n.bind(null,318)),"v-6f4baca5":()=>n.e(59).then(n.bind(null,319)),"v-fa75e63a":()=>n.e(60).then(n.bind(null,320)),"v-dacf6e56":()=>n.e(61).then(n.bind(null,321)),"v-8eec473a":()=>n.e(62).then(n.bind(null,322)),"v-29d5bc56":()=>n.e(63).then(n.bind(null,323)),"v-cbda523a":()=>n.e(64).then(n.bind(null,324)),"v-a75af93a":()=>n.e(65).then(n.bind(null,325)),"v-22ba6d3a":()=>n.e(66).then(n.bind(null,326)),"v-d6319362":()=>n.e(67).then(n.bind(null,327)),"v-7b99cfba":()=>n.e(14).then(n.bind(null,328)),"v-6ec4d123":()=>n.e(68).then(n.bind(null,329)),"v-6cd19ba3":()=>n.e(70).then(n.bind(null,330)),"v-5c5d50fa":()=>n.e(69).then(n.bind(null,331)),"v-55eb8eca":()=>n.e(15).then(n.bind(null,332)),"v-1ec46263":()=>n.e(22).then(n.bind(null,333)),"v-9213d4fa":()=>n.e(71).then(n.bind(null,334))};function Qt(t){const e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}const Jt=/-(\w)/g,Yt=Qt(t=>t.replace(Jt,(t,e)=>e?e.toUpperCase():"")),Zt=/\B([A-Z])/g,te=Qt(t=>t.replace(Zt,"-$1").toLowerCase()),ee=Qt(t=>t.charAt(0).toUpperCase()+t.slice(1));function ne(t,e){if(!e)return;if(t(e))return t(e);return e.includes("-")?t(ee(Yt(e))):t(ee(e))||t(te(e))}const re=Object.assign({},Kt,Xt),oe=t=>re[t],ie=t=>Xt[t],ae=t=>Kt[t],se=t=>r.a.component(t);function le(t){return ne(ie,t)}function ue(t){return ne(ae,t)}function ce(t){return ne(oe,t)}function fe(t){return ne(se,t)}function pe(...t){return Promise.all(t.filter(t=>t).map(async t=>{if(!fe(t)&&ce(t)){const e=await ce(t)();r.a.component(t,e.default)}}))}function de(t,e){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[t]=e)}var he=n(87),ve=n.n(he),ge=n(88),me=n.n(ge);function ye(){const t=document.querySelector("link[rel='canonical']");t&&t.remove()}function be(t=""){return t?``:""}function _e(t,e){if(e&&[...e].filter(t=>t.parentNode===document.head).forEach(t=>document.head.removeChild(t)),t)return t.map(t=>{const e=document.createElement("meta");return Object.keys(t).forEach(n=>{e.setAttribute(n,t[n])}),document.head.appendChild(e),e})}function we(t){for(const e of["name","property","itemprop"])if(t.hasOwnProperty(e))return t[e]+e;return JSON.stringify(t)}var xe=[{created(){if(this.siteMeta=this.$site.headTags.filter(([t])=>"meta"===t).map(([t,e])=>e),this.$ssrContext){const e=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(t=e)?t.map(t=>{let e="{e+=` ${n}="${me()(t[n])}"`}),e+">"}).join("\n "):"",this.$ssrContext.canonicalLink=be(this.$canonicalUrl)}var t},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const t=this.getMergedMetaTags();this.currentMetaTags=_e(t,this.currentMetaTags)},getMergedMetaTags(){const t=this.$page.frontmatter.meta||[];return ve()([{name:"description",content:this.$description}],t,this.siteMeta,we)},updateCanonicalLink(){ye(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",be(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){_e(null,this.currentMetaTags),ye()}}],Ce={name:"GlobalLayout",computed:{layout(){const t=this.getLayout();return de("layout",t),r.a.component(t)}},methods:{getLayout(){if(this.$page.path){const t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},ke=n(15),Se=Object(ke.a)(Ce,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),t[e].push(...n);break;default:throw new Error("Unknown option name.")}}(Se,"mixins",xe);const Pe=[{name:"v-4e72e1d8",path:"/",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-680eebc3",path:"/404.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-680eebc3").then(n)}},{name:"v-7d127123",path:"/community/about.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-7d127123").then(n)}},{name:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-4a1e6e3a").then(n)}},{name:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-10fe793a").then(n)}},{name:"v-622f23e3",path:"/community/config/nodes/add_node.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-622f23e3").then(n)}},{name:"v-ef34fffa",path:"/community/customization/panel.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-ef34fffa").then(n)}},{name:"v-67c3f2ba",path:"/community/games/minecraft.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-67c3f2ba").then(n)}},{name:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-0af75f63").then(n)}},{name:"v-090070fa",path:"/community/customization/wings.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-090070fa").then(n)}},{name:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-cc322cfa").then(n)}},{name:"v-e4c1f74e",path:"/community/installation-guides/panel/debian.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-e4c1f74e").then(n)}},{name:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-26037fe3").then(n)}},{name:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-9619ebfa").then(n)}},{name:"v-37f7de3e",path:"/community/installation-guides/wings/debian.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-37f7de3e").then(n)}},{name:"v-7c7b3203",path:"/community/tutorials/artisan.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-7c7b3203").then(n)}},{name:"v-07a77f72",path:"/daemon/0.6/configuration.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-07a77f72").then(n)}},{name:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-00d38f11").then(n)}},{name:"v-d39223ba",path:"/daemon/0.6/installing.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-d39223ba").then(n)}},{name:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-a31c3dba").then(n)}},{name:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-6f0eac21").then(n)}},{name:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-481dea23").then(n)}},{name:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-15b388aa").then(n)}},{name:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-7f0b5429").then(n)}},{name:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-8a6363ba").then(n)}},{name:"v-29055241",path:"/daemon/0.6/upgrading.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-29055241").then(n)}},{name:"v-c0e60bfa",path:"/guides/mounts.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-c0e60bfa").then(n)}},{name:"v-589003f5",path:"/guides/php_upgrade.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-589003f5").then(n)}},{name:"v-019cb63a",path:"/panel/0.7/configuration.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-019cb63a").then(n)}},{name:"v-7ffeb723",path:"/panel/0.7/getting_started.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-7ffeb723").then(n)}},{name:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-9478f2ba").then(n)}},{name:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-5baa92ba").then(n)}},{name:"v-c249e07a",path:"/panel/0.7/upgrading.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-c249e07a").then(n)}},{name:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-4f03fe0f").then(n)}},{name:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-27941b23").then(n)}},{name:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-6f4baca5").then(n)}},{name:"v-fa75e63a",path:"/panel/1.0/getting_started.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-fa75e63a").then(n)}},{name:"v-dacf6e56",path:"/panel/1.0/legacy_upgrade.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-dacf6e56").then(n)}},{name:"v-8eec473a",path:"/panel/1.0/troubleshooting.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-8eec473a").then(n)}},{name:"v-29d5bc56",path:"/panel/1.0/updating.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-29d5bc56").then(n)}},{name:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-cbda523a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-a75af93a").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-22ba6d3a").then(n)}},{name:"v-d6319362",path:"/project/introduction.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-d6319362").then(n)}},{name:"v-7b99cfba",path:"/project/terms.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-7b99cfba").then(n)}},{name:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-6ec4d123").then(n)}},{name:"v-6cd19ba3",path:"/wings/1.0/configuration.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-6cd19ba3").then(n)}},{name:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-5c5d50fa").then(n)}},{name:"v-55eb8eca",path:"/wings/1.0/installing.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-55eb8eca").then(n)}},{name:"v-1ec46263",path:"/wings/1.0/migrating.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-1ec46263").then(n)}},{name:"v-9213d4fa",path:"/wings/1.0/upgrading.html",component:Se,beforeEnter:(t,e,n)=>{pe("Layout","v-9213d4fa").then(n)}},{path:"*",component:Se}],Oe={title:"Pterodactyl",description:"Pterodactyl is an open-source game server management panel built with PHP, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.",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/site.webmanifest"}],["link",{rel:"shortcut icon",href:"/favicons/favicon.ico"}],["meta",{name:"msapplication-config",content:"/favicons/browserconfig.xml"}],["meta",{name:"theme-color",content:"#0e4688"}]],pages:[{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 © Dane Everitt and contributors"},regularPath:"/",relativePath:"README.md",key:"v-4e72e1d8",path:"/"},{frontmatter:{},regularPath:"/404.html",relativePath:"404.md",key:"v-680eebc3",path:"/404.html"},{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"},{level:2,title:"List of default variables",slug:"list-of-default-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:"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 Dependencies",slug:"install-dependencies"},{level:3,title:"SELinux Configuration",slug:"selinux-configuration"},{level:3,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"PHP Configuration",slug:"php-configuration"},{level:3,title:"SELinux configuration",slug:"selinux-configuration-2"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{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:"Enterprise Linux 8 and Fedora Server 40",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 Dependencies",slug:"install-dependencies"},{level:3,title:"SELinux Configuration",slug:"selinux-configuration"},{level:3,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"PHP Configuration",slug:"php-configuration"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/panel/debian.html",relativePath:"community/installation-guides/panel/debian.md",key:"v-e4c1f74e",path:"/community/installation-guides/panel/debian.html",headers:[{level:2,title:"Dependency Installation",slug:"dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:3,title:"Download Files",slug:"download-files"}]},{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 Dependencies",slug:"install-dependencies"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Enterprise Linux 8 and Fedora Server 40",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 Dependencies",slug:"install-dependencies"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/wings/debian.html",relativePath:"community/installation-guides/wings/debian.md",key:"v-37f7de3e",path:"/community/installation-guides/wings/debian.html",headers:[{level:2,title:"Install",slug:"install"}]},{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:2,title:"Panel Management",slug:"panel-management"},{level:3,title:"View Panel Info",slug:"view-panel-info"},{level:3,title:"Update Panel",slug:"update-panel"}]},{title:"Additional Configuration",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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.6 Series",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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 0.5.X to 0.6.X",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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"},{level:3,title:"Example Mount",slug:"example-mount"}]},{title:"Upgrading PHP",frontmatter:{},regularPath:"/guides/php_upgrade.html",relativePath:"guides/php_upgrade.md",key:"v-589003f5",path:"/guides/php_upgrade.html",headers:[{level:2,title:"Install PHP",slug:"install-php"},{level:2,title:"Update Composer",slug:"update-composer"},{level:2,title:"Webserver Configuration",slug:"webserver-configuration"},{level:3,title:"Return to the 1.X.X Upgrade Guide",slug:"return-to-the-1-x-x-upgrade-guide"}]},{title:"Environment Configuration",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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.7 Series",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:"Upgrading 0.6 to 0.7",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:"Webserver Configuration",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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 Local Backups",slug:"using-local-backups"},{level:3,title:"Using S3 Backups",slug:"using-s3-backups"},{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:"reCAPTCHA",slug:"recaptcha"},{level:3,title:"Configuring reCAPTCHA",slug:"configuring-recaptcha"},{level:3,title:"Disabling reCAPTCHA",slug:"disabling-recaptcha"},{level:2,title:"2FA",slug:"_2fa"},{level:3,title:"Disable 2FA requirement",slug:"disable-2fa-requirement"},{level:3,title:"Disable 2FA for a specific user",slug:"disable-2fa-for-a-specific-user"},{level:2,title:"Telemetry",slug:"telemetry"},{level:3,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"What data is collected?",slug:"what-data-is-collected"},{level:3,title:"How is the data stored?",slug:"how-is-the-data-stored"},{level:3,title:"Why?",slug:"why"},{level:3,title:"Enabling Telemetry",slug:"enabling-telemetry"},{level:3,title:"Disabling Telemetry",slug:"disabling-telemetry"}]},{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"},{level:3,title:"Telemetry",slug:"telemetry"}]},{title:"Legacy Upgrades",frontmatter:{},regularPath:"/panel/1.0/legacy_upgrade.html",relativePath:"panel/1.0/legacy_upgrade.md",key:"v-dacf6e56",path:"/panel/1.0/legacy_upgrade.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:"Troubleshooting",frontmatter:{},regularPath:"/panel/1.0/troubleshooting.html",relativePath:"panel/1.0/troubleshooting.md",key:"v-8eec473a",path:"/panel/1.0/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:"Cannot Connect to Server Errors",slug:"cannot-connect-to-server-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:"Wings Connection Errors",slug:"wings-connection-errors"},{level:2,title:"Containers don't have internet? Probably a DNS issue!",slug:"containers-don-t-have-internet-probably-a-dns-issue"},{level:2,title:"Schedule Troubleshooting",slug:"schedule-troubleshooting"},{level:2,title:"FirewallD issues",slug:"firewalld-issues"}]},{title:"Updating the Panel",frontmatter:{},regularPath:"/panel/1.0/updating.html",relativePath:"panel/1.0/updating.md",key:"v-29d5bc56",path:"/panel/1.0/updating.html",headers:[{level:2,title:"Panel Version Requirements",slug:"panel-version-requirements"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Self Upgrade",slug:"self-upgrade"},{level:2,title:"Manual Upgrade",slug:"manual-upgrade"},{level:3,title:"Enter Maintenance Mode",slug:"enter-maintenance-mode"},{level:3,title:"Download the Update",slug:"download-the-update"},{level:3,title:"Update Dependencies",slug:"update-dependencies-2"},{level:3,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:3,title:"Database Updates",slug:"database-updates"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:3,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:3,title:"Exit Maintenance Mode",slug:"exit-maintenance-mode"},{level:3,title:"Telemetry",slug:"telemetry"}]},{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:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-3"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-4"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-5"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-6"}]},{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:"Sponsors",slug:"sponsors"},{level:2,title:"License",slug:"license"},{level:2,title:"Release Signing",slug:"release-signing"}]},{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:"Simple Setup Diagram",slug:"simple-setup-diagram"},{level:2,title:"Advanced Setup Diagram",slug:"advanced-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:"Creating a Certificate",slug:"creating-a-certificate"},{level:3,title:"HTTP challenge",slug:"http-challenge"},{level:3,title:"DNS challenge",slug:"dns-challenge"},{level:3,title:"Auto Renewal",slug:"auto-renewal"},{level:3,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Obtaining CloudFlare API Key (Legacy)",slug:"obtaining-cloudflare-api-key-legacy"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-2"},{level:3,title:"Obtaining CloudFlare API Key (Modern)",slug:"obtaining-cloudflare-api-key-modern"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-3"},{level:3,title:"Auto Renewal",slug:"auto-renewal-2"},{level:3,title:"Installing Caddy with Cloudflare DNS plugin",slug:"installing-caddy-with-cloudflare-dns-plugin"},{level:3,title:"Obtaining CloudFlare API Token",slug:"obtaining-cloudflare-api-token"},{level:3,title:"Reconfiguring Caddy to use Cloudflare DNS for obtaining certificates",slug:"reconfiguring-caddy-to-use-cloudflare-dns-for-obtaining-certificates"}]},{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:"Example of usage",slug:"example-of-usage"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:3,title:"Example of usage",slug:"example-of-usage-2"},{level:2,title:"Enabling Cloudflare proxy",slug:"enabling-cloudflare-proxy"},{level:2,title:"Container PID Limit",slug:"container-pid-limit"},{level:3,title:"Example of usage",slug:"example-of-usage-3"},{level:2,title:"Throttles Limits",slug:"throttles-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-4"},{level:2,title:"Installer Limits",slug:"installer-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-5"},{level:2,title:"Other values",slug:"other-values"}]},{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:"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"},{level:3,title:"Node Allocations",slug:"node-allocations"}]},{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:"Wings Version Requirements",slug:"wings-version-requirements"},{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:"GitHub",editLinkText:"Help us improve this page.",editLinks:!0,logo:"/logos/pterry.svg",nav:[{text:"Documentation",link:"/project/introduction.md"},{text:"Community Guides",link:"/community/about.md"},{text:"Get Help",link:"https://discord.gg/pterodactyl"},{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/debian.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian.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/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:[{title:"1.11",name:"1.0",status:"stable",children:["/getting_started","/webserver_configuration","/additional_configuration","/updating","/troubleshooting","/legacy_upgrade"]}]},{title:"Wings",collapsable:!1,path:"/wings/",currentVersion:"1.0",versions:[{title:"1.11",name:"1.0",status:"stable",children:["/installing","/upgrading","/migrating","/configuration"]}]},{title:"Tutorials",collapsable:!1,children:["/tutorials/mysql_setup.md","/tutorials/creating_ssl_certificates.md"]},{title:"Guides",collapsable:!1,children:["/guides/mounts.md"]}]}}};function Ee(...t){const e=new RegExp("/{1,}","g");return t.join("/").replace(e,"/")}n(235);r.a.component("Badge",()=>n.e(23).then(n.bind(null,335)));var je=n(89),$e=n.n(je),Te=[({Vue:t,options:e,router:n,siteData:r,isServer:o})=>{var i;(i=r.themeConfig.sidebar,Object.entries(i).map(([t,e])=>e.filter(t=>Array.isArray(t.versions)).map(e=>({...e,path:Ee(t,e.path)}))).flat()).forEach(t=>{n.addRoutes(n.options.routes.map(e=>{if(e.path.startsWith(t.path+t.currentVersion))return[{path:e.path.replace(t.currentVersion,"current"),redirect:e.path},{path:e.path.replace(t.currentVersion+"/",""),redirect:e.path}]}).filter(t=>t).flat().concat([{path:"/panel/1.0/upgrade/1.0.html",redirect:"/panel/1.0/updating.html"},{path:"/panel/1.0/upgrade/0.7_to_1.0.html",redirect:"/panel/1.0/legacy_upgrade.html"}]))})},{},({Vue:t})=>{t.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({Vue:t})=>t.use($e.a)],Ae=[];class Le extends class{constructor(){this.store=new r.a({data:{state:{}}})}$get(t){return this.store.state[t]}$set(t,e){r.a.set(this.store.state,t,e)}$emit(...t){this.store.$emit(...t)}$on(...t){this.store.$on(...t)}}{}Object.assign(Le.prototype,{getPageAsyncComponent:le,getLayoutAsyncComponent:ue,getAsyncComponent:ce,getVueComponent:fe});var De={install(t){const e=new Le;t.$vuepress=e,t.prototype.$vuepress=e}};function Ie(t,e){const n=e.toLowerCase();return t.options.routes.some(t=>t.path.toLowerCase()===n)}var Re={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(t){const e=this.pageKey||this.$parent.$page.key;return de("pageKey",e),r.a.component(e)||r.a.component(e,le(e)),r.a.component(e)?t(e):t("")}},Me={functional:!0,props:{slotKey:String,required:!0},render:(t,{props:e,slots:n})=>t("div",{class:["content__"+e.slotKey]},n()[e.slotKey])},Ne={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Ue=(n(236),n(237),Object(ke.a)(Ne,(function(){var t=this._self._c;return t("span",[t("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[t("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"}}),this._v(" "),t("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"}})]),this._v(" "),t("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Fe={functional:!0,render(t,{parent:e,children:n}){if(e._isMounted)return n;e.$once("hook:mounted",()=>{e.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(Wt),r.a.use(De),r.a.mixin(function(t,e,n=r.a){!function(t){t.locales&&Object.keys(t.locales).forEach(e=>{t.locales[e].path=e});Object.freeze(t)}(e),n.$vuepress.$set("siteData",e);const o=new(t(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((t,e)=>(e.startsWith("$")&&(t[e]=i[e].get),t),a),{computed:a}}(t=>class{setPage(t){this.__page=t}get $site(){return t}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:t={}}=this.$site;let e,n;for(const r in t)"/"===r?n=t[r]:0===this.$page.path.indexOf(r)&&(e=t[r]);return e||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:t}=this.$page.frontmatter;return"string"==typeof t&&t}get $title(){const t=this.$page,{metaTitle:e}=this.$page.frontmatter;if("string"==typeof e)return e;const n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const t=function(t){if(t){const e=t.filter(t=>"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||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(t,e){for(let n=0;nn||(t.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(t.hash)}:{x:0,y:0})});!function(t){t.beforeEach((e,n,r)=>{if(Ie(t,e.path))r();else if(/(\/|\.html)$/.test(e.path))if(/\/$/.test(e.path)){const n=e.path.replace(/\/$/,"")+".html";Ie(t,n)?r(n):r()}else r();else{const n=e.path+"/",o=e.path+".html";Ie(t,o)?r(o):Ie(t,n)?r(n):r()}})}(n);const o={};try{await Promise.all(Te.filter(t=>"function"==typeof t).map(e=>e({Vue:r.a,options:o,router:n,siteData:Oe,isServer:t})))}catch(t){console.error(t)}return{app:new r.a(Object.assign(o,{router:n,render:t=>t("div",{attrs:{id:"app"}},[t("RouterView",{ref:"layout"}),t("div",{class:"global-ui"},Ae.map(e=>t(e)))])})),router:n}}(!1).then(({app:t,router:e})=>{e.onReady(()=>{t.$mount("#app")})})}]); \ No newline at end of file diff --git a/assets/js/app.747e3783.js b/assets/js/app.747e3783.js new file mode 100644 index 00000000..c250d401 --- /dev/null +++ b/assets/js/app.747e3783.js @@ -0,0 +1,19 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,s=t[0],l=t[1],u=t[2],f=0,p=[];f=0&&Math.floor(t)===t&&isFinite(e)}function v(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function g(e){return null==e?"":Array.isArray(e)||p(e)&&e.toString===f?JSON.stringify(e,m,2):String(e)}function m(e,t){return t&&t.__v_isRef?t.value:t}function y(e){var t=parseFloat(e);return isNaN(t)?e:t}function b(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o-1)return e.splice(r,1)}}var x=Object.prototype.hasOwnProperty;function C(e,t){return x.call(e,t)}function k(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var S=/-(\w)/g,P=k((function(e){return e.replace(S,(function(e,t){return t?t.toUpperCase():""}))})),O=k((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),E=/\B([A-Z])/g,j=k((function(e){return e.replace(E,"-$1").toLowerCase()}));var $=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function T(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function A(e,t){for(var n in t)e[n]=t[n];return e}function L(e){for(var t={},n=0;n0,Z=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");var ee=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);var te,ne=Q&&Q.match(/firefox\/(\d+)/),re={}.watch,oe=!1;if(X)try{var ie={};Object.defineProperty(ie,"passive",{get:function(){oe=!0}}),window.addEventListener("test-passive",null,ie)}catch(e){}var ae=function(){return void 0===te&&(te=!X&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),te},se=X&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var ue,ce="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);ue="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var fe=null;function pe(e){void 0===e&&(e=null),e||fe&&fe._scope.off(),fe=e,e&&e._scope.on()}var de=function(){function e(e,t,n,r,o,i,a,s){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),he=function(e){void 0===e&&(e="");var t=new de;return t.text=e,t.isComment=!0,t};function ve(e){return new de(void 0,void 0,void 0,String(e))}function ge(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}"function"==typeof SuppressedError&&SuppressedError;var me=0,ye=[],be=function(){function e(){this._pending=!1,this.id=me++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ye.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Qe((u=e(u,"".concat(n||"","_").concat(r)))[0])&&Qe(f)&&(p[c]=ve(f.text+u[0].text),u.shift()),p.push.apply(p,u)):l(u)?Qe(f)?p[c]=ve(f.text+u):""!==u&&p.push(ve(u)):Qe(u)&&Qe(f)?p[c]=ve(f.text+u.text):(s(t._isVList)&&a(u.tag)&&i(u.key)&&a(n)&&(u.key="__vlist".concat(n,"_").concat(r,"__")),p.push(u)));return p}(e):void 0}function Qe(e){return a(e)&&a(e.text)&&!1===e.isComment}function Je(e,t){var n,r,i,s,l=null;if(o(e)||"string"==typeof e)for(l=new Array(e.length),n=0,r=e.length;n0,s=t?!!t.$stable:!a,l=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(s&&o&&o!==r&&l===o.$key&&!a&&!o.$hasNormal)return o;for(var u in i={},t)t[u]&&"$"!==u[0]&&(i[u]=gt(e,n,u,t[u]))}else i={};for(var c in n)c in i||(i[c]=mt(n,c));return t&&Object.isExtensible(t)&&(t._normalized=i),W(i,"$stable",s),W(i,"$key",l),W(i,"$hasNormal",a),i}function gt(e,t,n,r){var i=function(){var t=fe;pe(e);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Xe(n))&&n[0];return pe(t),n&&(!i||1===n.length&&i.isComment&&!ht(i))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:i,enumerable:!0,configurable:!0}),i}function mt(e,t){return function(){return e[t]}}function yt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};W(t,"_v_attr_proxy",!0),bt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||bt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||wt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:$(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return Fe(e,t,n)}))}}}function bt(e,t,n,r,o){var i=!1;for(var a in t)a in e?t[a]!==n[a]&&(i=!0):(i=!0,_t(e,a,r,o));for(var a in e)a in t||(i=!0,delete e[a]);return i}function _t(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function wt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var xt=null;function Ct(e,t){return(e.__esModule||ce&&"Module"===e[Symbol.toStringTag])&&(e=e.default),c(e)?t.extend(e):e}function kt(e){if(o(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(un=function(){return cn.now()})}var fn=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function pn(){var e,t;for(ln=un(),an=!0,tn.sort(fn),sn=0;snsn&&tn[n].id>e.id;)n--;tn.splice(n+1,0,e)}else tn.push(e);on||(on=!0,Ut(pn))}}function hn(e,t){if(e){for(var n=Object.create(null),r=ce?Reflect.ownKeys(e):Object.keys(e),o=0;o-1)if(i&&!C(o,"default"))a=!1;else if(""===a||a===j(e)){var l=Rn(String,o.type);(l<0||s-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!d(e)&&e.test(t)}function Jn(e,t){var n=e.cache,r=e.keys,o=e._vnode,i=e.$vnode;for(var a in n){var s=n[a];if(s){var l=s.name;l&&!t(l)&&Yn(n,a,r,o)}}i.componentOptions.children=void 0}function Yn(e,t,n,r){var o=e[t];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),e[t]=null,w(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=qn++,t._isVue=!0,t.__v_skip=!0,t._scope=new Be(!0),t._scope.parent=void 0,t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=$n(Wn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Xt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,o=n&&n.context;e.$slots=pt(t._renderChildren,o),e.$scopedSlots=n?vt(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,o){return St(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return St(e,t,n,r,o,!0)};var i=n&&n.data;Ae(e,"$attrs",i&&i.attrs||r,null,!0),Ae(e,"$listeners",t._parentListeners||r,null,!0)}(t),en(t,"beforeCreate",void 0,!1),function(e){var t=hn(e.$options.inject,e);t&&(Ee(!1),Object.keys(t).forEach((function(n){Ae(e,n,t[n])})),Ee(!0))}(t),Un(t),function(e){var t=e.$options.provide;if(t){var n=u(t)?t.call(e):t;if(!c(n))return;for(var r=Ve(e),o=ce?Reflect.ownKeys(n):Object.keys(n),i=0;i1?T(n):n;for(var r=T(arguments,1),o='event handler for "'.concat(e,'"'),i=0,a=n.length;iparseInt(this.max)&&Yn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Yn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Jn(e,(function(e){return Qn(t,e)}))})),this.$watch("exclude",(function(t){Jn(e,(function(e){return!Qn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=kt(e),n=t&&t.componentOptions;if(n){var r=Xn(n),o=this.include,i=this.exclude;if(o&&(!r||!Qn(o,r))||i&&r&&Qn(i,r))return t;var a=this.cache,s=this.keys,l=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;a[l]?(t.componentInstance=a[l].componentInstance,w(s,l),s.push(l)):(this.vnodeToCache=t,this.keyToCache=l),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return V}};Object.defineProperty(e,"config",t),e.util={warn:Cn,extend:A,mergeOptions:$n,defineReactive:Ae},e.set=Le,e.delete=De,e.nextTick=Ut,e.observable=function(e){return Te(e),e},e.options=Object.create(null),z.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,A(e.options.components,er),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=T(arguments,1);return n.unshift(this),u(e.install)?e.install.apply(e,n):u(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=$n(this.options,e),this}}(e),Kn(e),function(e){z.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&p(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&u(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Gn),Object.defineProperty(Gn.prototype,"$isServer",{get:ae}),Object.defineProperty(Gn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Gn,"FunctionalRenderContext",{value:vn}),Gn.version="2.7.16";var tr=b("style,class"),nr=b("input,textarea,option,select,progress"),rr=b("contenteditable,draggable,spellcheck"),or=b("events,caret,typing,plaintext-only"),ir=b("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ar="http://www.w3.org/1999/xlink",sr=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return sr(e)?e.slice(6,e.length):""},ur=function(e){return null==e||!1===e};function cr(e){for(var t=e.data,n=e,r=e;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=fr(r.data,t));for(;a(n=n.parent);)n&&n.data&&(t=fr(t,n.data));return function(e,t){if(a(e)||a(t))return pr(e,dr(t));return""}(t.staticClass,t.class)}function fr(e,t){return{staticClass:pr(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function pr(e,t){return e?t?e+" "+t:e:t||""}function dr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r-1?Mr(e,t,n):ir(t)?ur(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):rr(t)?e.setAttribute(t,function(e,t){return ur(t)||"false"===t?"false":"contenteditable"===e&&or(t)?t:"true"}(t,n)):sr(t)?ur(n)?e.removeAttributeNS(ar,lr(t)):e.setAttributeNS(ar,t,n):Mr(e,t,n)}function Mr(e,t,n){if(ur(n))e.removeAttribute(t);else{if(J&&!Y&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Nr={create:Ir,update:Ir};function Ur(e,t){var n=t.elm,r=t.data,o=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var s=cr(t),l=n._transitionClasses;a(l)&&(s=pr(s,dr(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var Fr,zr={create:Ur,update:Ur};function Br(e,t,n){var r=Fr;return function o(){var i=t.apply(null,arguments);null!==i&&qr(e,o,n,r)}}var Vr=Tt&&!(ne&&Number(ne[1])<=53);function Hr(e,t,n,r){if(Vr){var o=ln,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=o||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}Fr.addEventListener(e,t,oe?{capture:n,passive:r}:n)}function qr(e,t,n,r){(r||Fr).removeEventListener(e,t._wrapper||t,n)}function Wr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Fr=t.elm||e.elm,function(e){if(a(e.__r)){var t=J?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),We(n,r,Hr,qr,Br,t.context),Fr=void 0}}var Gr,Kr={create:Wr,update:Wr,destroy:function(e){return Wr(e,kr)}};function Xr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,o=t.elm,l=e.data.domProps||{},u=t.data.domProps||{};for(n in(a(u.__ob__)||s(u._v_attr_proxy))&&(u=t.data.domProps=A({},u)),l)n in u||(o[n]="");for(n in u){if(r=u[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===l[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var c=i(r)?"":String(r);Qr(o,c)&&(o.value=c)}else if("innerHTML"===n&&gr(o.tagName)&&i(o.innerHTML)){(Gr=Gr||document.createElement("div")).innerHTML="".concat(r,"");for(var f=Gr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;f.firstChild;)o.appendChild(f.firstChild)}else if(r!==l[n])try{o[n]=r}catch(e){}}}}function Qr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(a(r)){if(r.number)return y(n)!==y(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Jr={create:Xr,update:Xr},Yr=k((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Zr(e){var t=eo(e.style);return e.staticStyle?A(e.staticStyle,t):t}function eo(e){return Array.isArray(e)?L(e):"string"==typeof e?Yr(e):e}var to,no=/^--/,ro=/\s*!important$/,oo=function(e,t,n){if(no.test(t))e.style.setProperty(t,n);else if(ro.test(n))e.style.setProperty(j(t),n.replace(ro,""),"important");else{var r=ao(t);if(Array.isArray(n))for(var o=0,i=n.length;o-1?t.split(uo).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function fo(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(uo).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function po(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&A(t,ho(e.name||"v")),A(t,e),t}return"string"==typeof e?ho(e):void 0}}var ho=k((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),vo=X&&!Y,go="transition",mo="transitionend",yo="animation",bo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(go="WebkitTransition",mo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(yo="WebkitAnimation",bo="webkitAnimationEnd"));var _o=X?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function wo(e){_o((function(){_o(e)}))}function xo(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),co(e,t))}function Co(e,t){e._transitionClasses&&w(e._transitionClasses,t),fo(e,t)}function ko(e,t,n){var r=Po(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s="transition"===o?mo:bo,l=0,u=function(){e.removeEventListener(s,c),n()},c=function(t){t.target===e&&++l>=a&&u()};setTimeout((function(){l0&&(n="transition",c=a,f=i.length):"animation"===t?u>0&&(n="animation",c=u,f=l.length):f=(n=(c=Math.max(a,u))>0?a>u?"transition":"animation":null)?"transition"===n?i.length:l.length:0,{type:n,timeout:c,propCount:f,hasTransform:"transition"===n&&So.test(r[go+"Property"])}}function Oo(e,t){for(;e.length1}function Lo(e,t){!0!==t.data.show&&jo(t)}var Do=function(e){var t,n,r={},u=e.modules,c=e.nodeOps;for(t=0;th?_(e,i(n[m+1])?null:n[m+1].elm,n,d,m,r):d>m&&x(t,f,h)}(f,v,m,n,u):a(m)?(a(e.text)&&c.setTextContent(f,""),_(f,null,m,0,m.length-1,n)):a(v)?x(v,0,v.length-1):a(e.text)&&c.setTextContent(f,""):e.text!==t.text&&c.setTextContent(f,t.text),a(h)&&a(d=h.hook)&&a(d=d.postpatch)&&d(e,t)}}}function P(e,t,n){if(s(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(M(Uo(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));o||(e.selectedIndex=-1)}}function No(e,t){return t.every((function(t){return!M(t,e)}))}function Uo(e){return"_value"in e?e._value:e.value}function Fo(e){e.target.composing=!0}function zo(e){e.target.composing&&(e.target.composing=!1,Bo(e.target,"input"))}function Bo(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Vo(e){return!e.componentInstance||e.data&&e.data.transition?e:Vo(e.componentInstance._vnode)}var Ho={model:Io,show:{bind:function(e,t,n){var r=t.value,o=(n=Vo(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&o?(n.data.show=!0,jo(n,(function(){e.style.display=i}))):e.style.display=r?i:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Vo(n)).data&&n.data.transition?(n.data.show=!0,r?jo(n,(function(){e.style.display=e.__vOriginalDisplay})):$o(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,o){o||(e.style.display=e.__vOriginalDisplay)}}},qo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Wo(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Wo(kt(t.children)):e}function Go(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var r in o)t[P(r)]=o[r];return t}function Ko(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Xo=function(e){return e.tag||ht(e)},Qo=function(e){return"show"===e.name},Jo={name:"transition",props:qo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Xo)).length){0;var r=this.mode;0;var o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var i=Wo(o);if(!i)return o;if(this._leaving)return Ko(e,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:l(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var s=(i.data||(i.data={})).transition=Go(this),u=this._vnode,c=Wo(u);if(i.data.directives&&i.data.directives.some(Qo)&&(i.data.show=!0),c&&c.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,c)&&!ht(c)&&(!c.componentInstance||!c.componentInstance._vnode.isComment)){var f=c.data.transition=A({},s);if("out-in"===r)return this._leaving=!0,Ge(f,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Ko(e,o);if("in-out"===r){if(ht(i))return u;var p,d=function(){p()};Ge(s,"afterEnter",d),Ge(s,"enterCancelled",d),Ge(f,"delayLeave",(function(e){p=e}))}}return o}}},Yo=A({tag:String,moveClass:String},qo);function Zo(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function ei(e){e.data.newPos=e.elm.getBoundingClientRect()}function ti(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,o=t.top-n.top;if(r||o){e.data.moved=!0;var i=e.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Yo.mode;var ni={Transition:Jo,TransitionGroup:{props:Yo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var o=Jt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,o(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Go(this),s=0;s-1?yr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:yr[e]=/HTMLUnknownElement/.test(t.toString())},A(Gn.options.directives,Ho),A(Gn.options.components,ni),Gn.prototype.__patch__=X?Do:D,Gn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=he),en(e,"beforeMount"),r=function(){e._update(e._render(),n)},new qt(e,r,D,{before:function(){e._isMounted&&!e._isDestroyed&&en(e,"beforeUpdate")}},!0),n=!1;var o=e._preWatchers;if(o)for(var i=0;i-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(8),o=n(43),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(14),o=n(11);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";var r=n(5),o=n(24),i=n(93),a=n(26),s=n(27),l=n(48),u=n(9),c=n(58),f=Object.getOwnPropertyDescriptor;t.f=r?f:function(e,t){if(e=s(e),t=l(t),c)try{return f(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},function(e,t,n){"use strict";var r=n(4),o=n(3),i=n(16),a=Object,s=r("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},function(e,t,n){"use strict";e.exports=function(e){return null==e}},function(e,t,n){"use strict";var r=n(94),o=n(49);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},function(e,t,n){"use strict";var r=n(29),o=n(2),i=n(50),a=n(51),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=r("Symbol");return o(t)&&i(t.prototype,s(e))}},function(e,t,n){"use strict";var r=n(4);e.exports=r({}.isPrototypeOf)},function(e,t,n){"use strict";var r=n(52);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(53),o=n(3),i=n(1).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(e,t,n){"use strict";var r,o,i=n(1),a=n(54),s=i.process,l=i.Deno,u=s&&s.versions||l&&l.version,c=u&&u.v8;c&&(o=(r=c.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},function(e,t,n){"use strict";var r=n(1).navigator,o=r&&r.userAgent;e.exports=o?String(o):""},function(e,t,n){"use strict";var r=n(32);e.exports=function(e,t){return r[e]||(r[e]=t||{})}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(4),o=0,i=Math.random(),a=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},function(e,t,n){"use strict";var r=n(5),o=n(3),i=n(98);e.exports=!r&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(6),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw new i(o(e)+" is not an object")}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(9),o=n(107),i=n(45),a=n(17);e.exports=function(e,t,n){for(var s=o(t),l=a.f,u=i.f,c=0;cc))return!1;var p=l.get(e),d=l.get(t);if(p&&d)return p==t&&d==e;var h=-1,v=!0,g=2&n?new r:void 0;for(l.set(e,t),l.set(t,e);++h-1&&e%1==0&&e]/;e.exports=function(e){var t,n=""+e,o=r.exec(n);if(!o)return n;var i="",a=0,s=0;for(a=o.index;a79&&a<83||!i("reduce")},{reduce:function(e){var t=arguments.length;return o(this,e,t,t>1?arguments[1]:void 0)}})},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(24),o=n(6),i=n(49),a=n(95),s=n(97),l=n(31),u=TypeError,c=l("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var n,l=a(e,c);if(l){if(void 0===t&&(t="default"),n=r(l,e,t),!o(n)||i(n))return n;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},function(e,t,n){"use strict";var r=n(30),o=n(47);e.exports=function(e,t){var n=e[t];return o(n)?void 0:r(n)}},function(e,t,n){"use strict";var r=String;e.exports=function(e){try{return r(e)}catch(e){return"Object"}}},function(e,t,n){"use strict";var r=n(24),o=n(2),i=n(6),a=TypeError;e.exports=function(e,t){var n,s;if("string"===t&&o(n=e.toString)&&!i(s=r(n,e)))return s;if(o(n=e.valueOf)&&!i(s=r(n,e)))return s;if("string"!==t&&o(n=e.toString)&&!i(s=r(n,e)))return s;throw new a("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r=n(1),o=n(6),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(5),o=n(3);e.exports=r&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},function(e,t,n){"use strict";var r=n(2),o=n(17),i=n(101),a=n(33);e.exports=function(e,t,n,s){s||(s={});var l=s.enumerable,u=void 0!==s.name?s.name:t;if(r(n)&&i(n,u,s),s.global)l?e[t]=n:a(t,n);else{try{s.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=n:o.f(e,t,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},function(e,t,n){"use strict";var r=n(4),o=n(3),i=n(2),a=n(9),s=n(5),l=n(102).CONFIGURABLE,u=n(103),c=n(104),f=c.enforce,p=c.get,d=String,h=Object.defineProperty,v=r("".slice),g=r("".replace),m=r([].join),y=s&&!o((function(){return 8!==h((function(){}),"length",{value:8}).length})),b=String(String).split("String"),_=e.exports=function(e,t,n){"Symbol("===v(d(t),0,7)&&(t="["+g(d(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!a(e,"name")||l&&e.name!==t)&&(s?h(e,"name",{value:t,configurable:!0}):e.name=t),y&&n&&a(n,"arity")&&e.length!==n.arity&&h(e,"length",{value:n.arity});try{n&&a(n,"constructor")&&n.constructor?s&&h(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var r=f(e);return a(r,"source")||(r.source=m(b,"string"==typeof t?t:"")),e};Function.prototype.toString=_((function(){return i(this)&&p(this).source||u(this)}),"toString")},function(e,t,n){"use strict";var r=n(5),o=n(9),i=Function.prototype,a=r&&Object.getOwnPropertyDescriptor,s=o(i,"name"),l=s&&"something"===function(){}.name,u=s&&(!r||r&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:l,CONFIGURABLE:u}},function(e,t,n){"use strict";var r=n(4),o=n(2),i=n(32),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},function(e,t,n){"use strict";var r,o,i,a=n(105),s=n(1),l=n(6),u=n(12),c=n(9),f=n(32),p=n(106),d=n(60),h=s.TypeError,v=s.WeakMap;if(a||f.state){var g=f.state||(f.state=new v);g.get=g.get,g.has=g.has,g.set=g.set,r=function(e,t){if(g.has(e))throw new h("Object already initialized");return t.facade=e,g.set(e,t),t},o=function(e){return g.get(e)||{}},i=function(e){return g.has(e)}}else{var m=p("state");d[m]=!0,r=function(e,t){if(c(e,m))throw new h("Object already initialized");return t.facade=e,u(e,m,t),t},o=function(e){return c(e,m)?e[m]:{}},i=function(e){return c(e,m)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw new h("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(1),o=n(2),i=r.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},function(e,t,n){"use strict";var r=n(55),o=n(57),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(29),o=n(4),i=n(108),a=n(115),s=n(59),l=o([].concat);e.exports=r("Reflect","ownKeys")||function(e){var t=i.f(s(e)),n=a.f;return n?l(t,n(e)):t}},function(e,t,n){"use strict";var r=n(109),o=n(114).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(4),o=n(9),i=n(27),a=n(110).indexOf,s=n(60),l=r([].push);e.exports=function(e,t){var n,r=i(e),u=0,c=[];for(n in r)!o(s,n)&&o(r,n)&&l(c,n);for(;t.length>u;)o(r,n=t[u++])&&(~a(c,n)||l(c,n));return c}},function(e,t,n){"use strict";var r=n(27),o=n(111),i=n(35),a=function(e){return function(t,n,a){var s=r(t),l=i(s);if(0===l)return!e&&-1;var u,c=o(a,l);if(e&&n!=n){for(;l>c;)if((u=s[c++])!=u)return!0}else for(;l>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(62),o=Math.max,i=Math.min;e.exports=function(e,t){var n=r(e);return n<0?o(n+t,0):i(n,t)}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=Math.trunc||function(e){var t=+e;return(t>0?o:r)(t)}},function(e,t,n){"use strict";var r=n(62),o=Math.min;e.exports=function(e){var t=r(e);return t>0?o(t,9007199254740991):0}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(3),o=n(2),i=/#|\.prototype\./,a=function(e,t){var n=l[s(e)];return n===c||n!==u&&(o(t)?r(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},l=a.data={},u=a.NATIVE="N",c=a.POLYFILL="P";e.exports=a},function(e,t,n){"use strict";var r=n(30),o=n(34),i=n(46),a=n(35),s=TypeError,l="Reduce of empty array with no initial value",u=function(e){return function(t,n,u,c){var f=o(t),p=i(f),d=a(f);if(r(n),0===d&&u<2)throw new s(l);var h=e?d-1:0,v=e?-1:1;if(u<2)for(;;){if(h in p){c=p[h],h+=v;break}if(h+=v,e?h<0:d<=h)throw new s(l)}for(;e?h>=0:d>h;h+=v)h in p&&(c=n(c,p[h],h,f));return c}};e.exports={left:u(!1),right:u(!0)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){return 1},1)}))}},function(e,t,n){"use strict";var r=n(120);e.exports="NODE"===r},function(e,t,n){"use strict";var r=n(1),o=n(54),i=n(16),a=function(e){return o.slice(0,e.length)===e};e.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":r.Bun&&"string"==typeof Bun.version?"BUN":r.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(r.process)?"NODE":r.window&&r.document?"BROWSER":"REST"},function(e,t,n){"use strict";var r=n(23),o=n(1),i=n(122),a=n(123),s=o.WebAssembly,l=7!==new Error("e",{cause:7}).cause,u=function(e,t){var n={};n[e]=a(e,t,l),r({global:!0,constructor:!0,arity:1,forced:l},n)},c=function(e,t){if(s&&s[e]){var n={};n[e]=a("WebAssembly."+e,t,l),r({target:"WebAssembly",stat:!0,constructor:!0,arity:1,forced:l},n)}};u("Error",(function(e){return function(t){return i(e,this,arguments)}})),u("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),u("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),u("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),u("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),u("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),u("URIError",(function(e){return function(t){return i(e,this,arguments)}})),c("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),c("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),c("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))},function(e,t,n){"use strict";var r=n(25),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(r?a.bind(i):function(){return a.apply(i,arguments)})},function(e,t,n){"use strict";var r=n(29),o=n(9),i=n(12),a=n(50),s=n(63),l=n(61),u=n(127),c=n(128),f=n(129),p=n(133),d=n(134),h=n(5),v=n(56);e.exports=function(e,t,n,g){var m=g?2:1,y=e.split("."),b=y[y.length-1],_=r.apply(null,y);if(_){var w=_.prototype;if(!v&&o(w,"cause")&&delete w.cause,!n)return _;var x=r("Error"),C=t((function(e,t){var n=f(g?t:e,void 0),r=g?new _(e):new _;return void 0!==n&&i(r,"message",n),d(r,C,r.stack,2),this&&a(w,this)&&c(r,this,C),arguments.length>m&&p(r,arguments[m]),r}));if(C.prototype=w,"Error"!==b?s?s(C,x):l(C,x,{name:!0}):h&&"stackTraceLimit"in _&&(u(C,_,"stackTraceLimit"),u(C,_,"prepareStackTrace")),l(C,_),!v)try{w.name!==b&&i(w,"name",b),w.constructor=C}catch(e){}return C}}},function(e,t,n){"use strict";var r=n(4),o=n(30);e.exports=function(e,t,n){try{return r(o(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}},function(e,t,n){"use strict";var r=n(126),o=String,i=TypeError;e.exports=function(e){if(r(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e){return r(e)||null===e}},function(e,t,n){"use strict";var r=n(17).f;e.exports=function(e,t,n){n in e||r(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})}},function(e,t,n){"use strict";var r=n(2),o=n(6),i=n(63);e.exports=function(e,t,n){var a,s;return i&&r(a=t.constructor)&&a!==n&&o(s=a.prototype)&&s!==n.prototype&&i(e,s),e}},function(e,t,n){"use strict";var r=n(130);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:r(e)}},function(e,t,n){"use strict";var r=n(131),o=String;e.exports=function(e){if("Symbol"===r(e))throw new TypeError("Cannot convert a Symbol value to a string");return o(e)}},function(e,t,n){"use strict";var r=n(132),o=n(2),i=n(16),a=n(31)("toStringTag"),s=Object,l="Arguments"===i(function(){return arguments}());e.exports=r?i:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?n:l?i(t):"Object"===(r=i(t))&&o(t.callee)?"Arguments":r}},function(e,t,n){"use strict";var r={};r[n(31)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(6),o=n(12);e.exports=function(e,t){r(t)&&"cause"in t&&o(e,"cause",t.cause)}},function(e,t,n){"use strict";var r=n(12),o=n(135),i=n(136),a=Error.captureStackTrace;e.exports=function(e,t,n,s){i&&(a?a(e,t):r(e,"stack",o(n,s)))}},function(e,t,n){"use strict";var r=n(4),o=Error,i=r("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,l=s.test(a);e.exports=function(e,t){if(l&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},function(e,t,n){"use strict";var r=n(3),o=n(26);e.exports=!r((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},function(e,t,n){"use strict";var r=n(5),o=n(138),i=TypeError,a=Object.getOwnPropertyDescriptor,s=r&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=s?function(e,t){if(o(e)&&!a(e,"length").writable)throw new i("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},function(e,t,n){"use strict";var r=n(16);e.exports=Array.isArray||function(e){return"Array"===r(e)}},function(e,t,n){"use strict";var r=TypeError;e.exports=function(e){if(e>9007199254740991)throw r("Maximum allowed index exceeded");return e}},function(e,t,n){var r=n(64),o=n(141);e.exports=function e(t,n,i,a,s){var l=-1,u=t.length;for(i||(i=o),s||(s=[]);++l0&&i(c)?n>1?e(c,n-1,i,a,s):r(s,c):a||(s[s.length]=c)}return s}},function(e,t,n){var r=n(13),o=n(36),i=n(8),a=r?r.isConcatSpreadable:void 0;e.exports=function(e){return i(e)||o(e)||!!(a&&e&&e[a])}},function(e,t,n){var r=n(14),o=n(11);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},function(e,t,n){var r=n(13),o=Object.prototype,i=o.hasOwnProperty,a=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=i.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=a.call(e);return r&&(t?e[s]=n:delete e[s]),o}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(146),o=n(202),i=n(44),a=n(8),s=n(213);e.exports=function(e){return"function"==typeof e?e:null==e?i:"object"==typeof e?a(e)?o(e[0],e[1]):r(e):s(e)}},function(e,t,n){var r=n(147),o=n(201),i=n(82);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?i(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(66),o=n(70);e.exports=function(e,t,n,i){var a=n.length,s=a,l=!i;if(null==e)return!s;for(e=Object(e);a--;){var u=n[a];if(l&&u[2]?u[1]!==e[u[0]]:!(u[0]in e))return!1}for(;++a-1}},function(e,t,n){var r=n(19);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},function(e,t,n){var r=n(18);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(18),o=n(37),i=n(39);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var a=n.__data__;if(!o||a.length<199)return a.push([e,t]),this.size=++n.size,this;n=this.__data__=new i(a)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(68),o=n(159),i=n(38),a=n(69),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,f=u.hasOwnProperty,p=RegExp("^"+c.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!i(e)||o(e))&&(r(e)?p:s).test(a(e))}},function(e,t,n){var r,o=n(160),i=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!i&&i in e}},function(e,t,n){var r=n(7)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(163),o=n(18),i=n(37);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(i||o),string:new r}}},function(e,t,n){var r=n(164),o=n(165),i=n(166),a=n(167),s=n(168);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(72),o=n(225),i=n(230),a=n(73),s=n(231),l=n(40);e.exports=function(e,t,n){var u=-1,c=o,f=e.length,p=!0,d=[],h=d;if(n)p=!1,c=i;else if(f>=200){var v=t?null:s(e);if(v)return l(v);p=!1,c=a,h=new r}else h=t?[]:d;e:for(;++u-1}},function(e,t,n){var r=n(227),o=n(228),i=n(229);e.exports=function(e,t,n){return t==t?i(e,t,n):r(e,o,n)}},function(e,t){e.exports=function(e,t,n,r){for(var o=e.length,i=n+(r?1:-1);r?i--:++i=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(i.path||""),p=t&&t.path||"/",d=u.path?k(u.path,p,n||i.append):p,h=function(e,t,n){void 0===t&&(t={});var r,o=n||f;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(c):c(a)}return r}(u.query,i.query,r&&r.options.parseQuery),v=i.hash||u.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:d,query:h,hash:v}}var q,W=function(){},G={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,i=n.resolve(this.to,r,this.append),a=i.location,s=i.route,l=i.href,u={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,v=null==f?"router-link-exact-active":f,g=null==this.activeClass?p:this.activeClass,m=null==this.exactActiveClass?v:this.exactActiveClass,y=s.redirectedFrom?h(null,H(s.redirectedFrom),null,n):s;u[m]=b(r,y,this.exactPath),u[g]=this.exact||this.exactPath?u[m]:function(e,t){return 0===e.path.replace(d,"/").indexOf(t.path.replace(d,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,y);var _=u[m]?this.ariaCurrentValue:null,w=function(e){K(e)&&(t.replace?n.replace(a,W):n.push(a,W))},x={click:K};Array.isArray(this.event)?this.event.forEach((function(e){x[e]=w})):x[this.event]=w;var C={class:u},k=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:s,navigate:w,isActive:u[g],isExactActive:u[m]});if(k){if(1===k.length)return k[0];if(k.length>1||!k.length)return 0===k.length?e():e("span",{},k)}if("a"===this.tag)C.on=x,C.attrs={href:l,"aria-current":_};else{var S=function e(t){var n;if(t)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=V(c.path,s.params),l(c,s,a)}if(s.path){s.params={};for(var d=0;d-1}function Se(e,t){return ke(e)&&e._isRouter&&(null==t||e.type===t)}function Pe(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function Oe(e){return function(t,n,r){var o=!1,i=0,a=null;Ee(e,(function(e,t,n,s){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var l,u=Te((function(t){var o;((o=t).__esModule||$e&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:q.extend(t),n.components[s]=t,--i<=0&&r()})),c=Te((function(e){var t="Failed to resolve async component "+s+": "+e;a||(a=ke(e)?e:new Error(t),r(a))}));try{l=e(u,c)}catch(e){c(e)}if(l)if("function"==typeof l.then)l.then(u,c);else{var f=l.component;f&&"function"==typeof f.then&&f.then(u,c)}}})),o||r()}}function Ee(e,t){return je(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function je(e){return Array.prototype.concat.apply([],e)}var $e="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Te(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Ae=function(e,t){this.router=e,this.base=function(e){if(!e)if(X){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=g,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Le(e,t,n,r){var o=Ee(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=q.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return je(r?o.reverse():o)}function De(e,t){if(t)return function(){return e.apply(t,arguments)}}Ae.prototype.listen=function(e){this.cb=e},Ae.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Ae.prototype.onError=function(e){this.errorCbs.push(e)},Ae.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(Se(e,be.redirected)&&i===g||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},Ae.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,s=function(e){!Se(e)&&ke(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},l=e.matched.length-1,u=o.matched.length-1;if(b(e,o)&&l===u&&e.matched[l]===o.matched[u])return this.ensureURL(),e.hash&&se(this.router,o,e,!1),s(((a=xe(i=o,e,be.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var c=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=ge&&n;r&&this.listeners.push(ae());var o=function(){var n=e.current,o=Re(e.base);e.current===g&&o===e._startLocation||e.transitionTo(o,(function(e){r&&se(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){me(S(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ye(S(r.base+e.fullPath)),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Re(this.base)!==this.current.fullPath){var t=S(this.base+this.current.fullPath);e?me(t):ye(t)}},t.prototype.getCurrentLocation=function(){return Re(this.base)},t}(Ae);function Re(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(S(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Me=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Re(e);if(!/^\/#/.test(t))return window.location.replace(S(e+"/#"+t)),!0}(this.base)||Ne()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=ge&&t;n&&this.listeners.push(ae());var r=function(){var t=e.current;Ne()&&e.transitionTo(Ue(),(function(r){n&&se(e.router,r,t,!0),ge||Be(r.fullPath)}))},o=ge?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ze(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Be(e.fullPath),se(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Ue()!==t&&(e?ze(t):Be(t))},t.prototype.getCurrentLocation=function(){return Ue()},t}(Ae);function Ne(){var e=Ue();return"/"===e.charAt(0)||(Be("/"+e),!1)}function Ue(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Fe(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ze(e){ge?me(Fe(e)):window.location.hash=e}function Be(e){ge?ye(Fe(e)):window.location.replace(Fe(e))}var Ve=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){Se(e,be.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Ae),He=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Y(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!ge&&!1!==e.fallback,this.fallback&&(t="hash"),X||(t="abstract"),this.mode=t,t){case"history":this.history=new Ie(this,e.base);break;case"hash":this.history=new Me(this,e.base,this.fallback);break;case"abstract":this.history=new Ve(this,e.base);break;default:0}},qe={currentRoute:{configurable:!0}};He.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},qe.currentRoute.get=function(){return this.history&&this.history.current},He.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ie||n instanceof Me){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;ge&&o&&"fullPath"in e&&se(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},He.prototype.beforeEach=function(e){return Ge(this.beforeHooks,e)},He.prototype.beforeResolve=function(e){return Ge(this.resolveHooks,e)},He.prototype.afterEach=function(e){return Ge(this.afterHooks,e)},He.prototype.onReady=function(e,t){this.history.onReady(e,t)},He.prototype.onError=function(e){this.history.onError(e)},He.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},He.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},He.prototype.go=function(e){this.history.go(e)},He.prototype.back=function(){this.go(-1)},He.prototype.forward=function(){this.go(1)},He.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},He.prototype.resolve=function(e,t,n){var r=H(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?S(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},He.prototype.getRoutes=function(){return this.matcher.getRoutes()},He.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},He.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==g&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(He.prototype,qe);var We=He;function Ge(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}He.install=function e(t){if(!e.installed||q!==t){e.installed=!0,q=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.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(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",x),t.component("RouterLink",G);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},He.version="3.6.5",He.isNavigationFailure=Se,He.NavigationFailureType=be,He.START_LOCATION=g,X&&window.Vue&&window.Vue.use(He);n(92);n(121),n(90);var Ke={DropdownLink:()=>Promise.all([n.e(0),n.e(8)]).then(n.bind(null,244)),DropdownTransition:()=>Promise.all([n.e(0),n.e(13)]).then(n.bind(null,243)),Home:()=>Promise.all([n.e(1),n.e(11)]).then(n.bind(null,258)),Layout:()=>Promise.all([n.e(0),n.e(1),n.e(2),n.e(4)]).then(n.bind(null,282)),NavLink:()=>n.e(16).then(n.bind(null,241)),NavLinks:()=>Promise.all([n.e(0),n.e(7)]).then(n.bind(null,246)),Navbar:()=>Promise.all([n.e(0),n.e(5)]).then(n.bind(null,259)),NotFound:()=>n.e(24).then(n.bind(null,283)),Page:()=>n.e(17).then(n.bind(null,260)),SearchBox:()=>n.e(25).then(n.bind(null,250)),Sidebar:()=>Promise.all([n.e(0),n.e(2)]).then(n.bind(null,281)),SidebarButton:()=>n.e(26).then(n.bind(null,252)),SidebarGroup:()=>Promise.all([n.e(0),n.e(6)]).then(n.bind(null,261)),SidebarLink:()=>n.e(18).then(n.bind(null,247)),SlickCarousel:()=>Promise.all([n.e(1),n.e(27)]).then(n.bind(null,249)),VersionSelect:()=>n.e(19).then(n.bind(null,251)),VersionSelectItem:()=>n.e(28).then(n.bind(null,245))},Xe={"v-680eebc3":()=>n.e(29).then(n.bind(null,284)),"v-7d127123":()=>n.e(31).then(n.bind(null,285)),"v-4a1e6e3a":()=>n.e(9).then(n.bind(null,286)),"v-4e72e1d8":()=>n.e(30).then(n.bind(null,287)),"v-10fe793a":()=>n.e(32).then(n.bind(null,288)),"v-622f23e3":()=>n.e(12).then(n.bind(null,289)),"v-090070fa":()=>n.e(34).then(n.bind(null,290)),"v-ef34fffa":()=>n.e(33).then(n.bind(null,291)),"v-67c3f2ba":()=>n.e(10).then(n.bind(null,292)),"v-0af75f63":()=>n.e(35).then(n.bind(null,293)),"v-cc322cfa":()=>n.e(36).then(n.bind(null,294)),"v-e4c1f74e":()=>n.e(37).then(n.bind(null,295)),"v-26037fe3":()=>n.e(38).then(n.bind(null,296)),"v-9619ebfa":()=>n.e(39).then(n.bind(null,297)),"v-7c7b3203":()=>n.e(41).then(n.bind(null,298)),"v-37f7de3e":()=>n.e(40).then(n.bind(null,299)),"v-07a77f72":()=>n.e(42).then(n.bind(null,300)),"v-00d38f11":()=>n.e(43).then(n.bind(null,301)),"v-d39223ba":()=>n.e(20).then(n.bind(null,302)),"v-a31c3dba":()=>n.e(44).then(n.bind(null,303)),"v-6f0eac21":()=>n.e(45).then(n.bind(null,304)),"v-481dea23":()=>n.e(46).then(n.bind(null,305)),"v-15b388aa":()=>n.e(47).then(n.bind(null,306)),"v-8a6363ba":()=>n.e(48).then(n.bind(null,307)),"v-c0e60bfa":()=>n.e(21).then(n.bind(null,308)),"v-29055241":()=>n.e(50).then(n.bind(null,309)),"v-7f0b5429":()=>n.e(49).then(n.bind(null,310)),"v-589003f5":()=>n.e(51).then(n.bind(null,311)),"v-019cb63a":()=>n.e(52).then(n.bind(null,312)),"v-7ffeb723":()=>n.e(53).then(n.bind(null,313)),"v-9478f2ba":()=>n.e(54).then(n.bind(null,314)),"v-4f03fe0f":()=>n.e(55).then(n.bind(null,315)),"v-5baa92ba":()=>n.e(56).then(n.bind(null,316)),"v-c249e07a":()=>n.e(57).then(n.bind(null,317)),"v-27941b23":()=>n.e(58).then(n.bind(null,318)),"v-6f4baca5":()=>n.e(59).then(n.bind(null,319)),"v-fa75e63a":()=>n.e(60).then(n.bind(null,320)),"v-dacf6e56":()=>n.e(61).then(n.bind(null,321)),"v-8eec473a":()=>n.e(62).then(n.bind(null,322)),"v-29d5bc56":()=>n.e(63).then(n.bind(null,323)),"v-cbda523a":()=>n.e(64).then(n.bind(null,324)),"v-a75af93a":()=>n.e(65).then(n.bind(null,325)),"v-22ba6d3a":()=>n.e(66).then(n.bind(null,326)),"v-d6319362":()=>n.e(67).then(n.bind(null,327)),"v-7b99cfba":()=>n.e(14).then(n.bind(null,328)),"v-6ec4d123":()=>n.e(68).then(n.bind(null,329)),"v-5c5d50fa":()=>n.e(69).then(n.bind(null,330)),"v-6cd19ba3":()=>n.e(70).then(n.bind(null,331)),"v-55eb8eca":()=>n.e(15).then(n.bind(null,332)),"v-1ec46263":()=>n.e(22).then(n.bind(null,333)),"v-9213d4fa":()=>n.e(71).then(n.bind(null,334))};function Qe(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Je=/-(\w)/g,Ye=Qe(e=>e.replace(Je,(e,t)=>t?t.toUpperCase():"")),Ze=/\B([A-Z])/g,et=Qe(e=>e.replace(Ze,"-$1").toLowerCase()),tt=Qe(e=>e.charAt(0).toUpperCase()+e.slice(1));function nt(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(tt(Ye(t))):e(tt(t))||e(et(t))}const rt=Object.assign({},Ke,Xe),ot=e=>rt[e],it=e=>Xe[e],at=e=>Ke[e],st=e=>r.a.component(e);function lt(e){return nt(it,e)}function ut(e){return nt(at,e)}function ct(e){return nt(ot,e)}function ft(e){return nt(st,e)}function pt(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!ft(e)&&ct(e)){const t=await ct(e)();r.a.component(e,t.default)}}))}function dt(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var ht=n(87),vt=n.n(ht),gt=n(88),mt=n.n(gt);function yt(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function bt(e=""){return e?``:""}function _t(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function wt(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var xt=[{created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${mt()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=bt(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=_t(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return vt()([{name:"description",content:this.$description}],e,this.siteMeta,wt)},updateCanonicalLink(){yt(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",bt(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){_t(null,this.currentMetaTags),yt()}}],Ct={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return dt("layout",e),r.a.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},kt=n(15),St=Object(kt.a)(Ct,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}(St,"mixins",xt);const Pt=[{name:"v-680eebc3",path:"/404.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-680eebc3").then(n)}},{name:"v-7d127123",path:"/community/about.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-7d127123").then(n)}},{name:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-4a1e6e3a").then(n)}},{name:"v-4e72e1d8",path:"/",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-10fe793a").then(n)}},{name:"v-622f23e3",path:"/community/config/nodes/add_node.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-622f23e3").then(n)}},{name:"v-090070fa",path:"/community/customization/wings.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-090070fa").then(n)}},{name:"v-ef34fffa",path:"/community/customization/panel.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-ef34fffa").then(n)}},{name:"v-67c3f2ba",path:"/community/games/minecraft.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-67c3f2ba").then(n)}},{name:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-0af75f63").then(n)}},{name:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-cc322cfa").then(n)}},{name:"v-e4c1f74e",path:"/community/installation-guides/panel/debian.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-e4c1f74e").then(n)}},{name:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-26037fe3").then(n)}},{name:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-9619ebfa").then(n)}},{name:"v-7c7b3203",path:"/community/tutorials/artisan.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-7c7b3203").then(n)}},{name:"v-37f7de3e",path:"/community/installation-guides/wings/debian.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-37f7de3e").then(n)}},{name:"v-07a77f72",path:"/daemon/0.6/configuration.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-07a77f72").then(n)}},{name:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-00d38f11").then(n)}},{name:"v-d39223ba",path:"/daemon/0.6/installing.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-d39223ba").then(n)}},{name:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-a31c3dba").then(n)}},{name:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-6f0eac21").then(n)}},{name:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-481dea23").then(n)}},{name:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-15b388aa").then(n)}},{name:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-8a6363ba").then(n)}},{name:"v-c0e60bfa",path:"/guides/mounts.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-c0e60bfa").then(n)}},{name:"v-29055241",path:"/daemon/0.6/upgrading.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-29055241").then(n)}},{name:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-7f0b5429").then(n)}},{name:"v-589003f5",path:"/guides/php_upgrade.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-589003f5").then(n)}},{name:"v-019cb63a",path:"/panel/0.7/configuration.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-019cb63a").then(n)}},{name:"v-7ffeb723",path:"/panel/0.7/getting_started.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-7ffeb723").then(n)}},{name:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-9478f2ba").then(n)}},{name:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-4f03fe0f").then(n)}},{name:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-5baa92ba").then(n)}},{name:"v-c249e07a",path:"/panel/0.7/upgrading.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-c249e07a").then(n)}},{name:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-27941b23").then(n)}},{name:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-6f4baca5").then(n)}},{name:"v-fa75e63a",path:"/panel/1.0/getting_started.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-fa75e63a").then(n)}},{name:"v-dacf6e56",path:"/panel/1.0/legacy_upgrade.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-dacf6e56").then(n)}},{name:"v-8eec473a",path:"/panel/1.0/troubleshooting.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-8eec473a").then(n)}},{name:"v-29d5bc56",path:"/panel/1.0/updating.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-29d5bc56").then(n)}},{name:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-cbda523a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-a75af93a").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-22ba6d3a").then(n)}},{name:"v-d6319362",path:"/project/introduction.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-d6319362").then(n)}},{name:"v-7b99cfba",path:"/project/terms.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-7b99cfba").then(n)}},{name:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-6ec4d123").then(n)}},{name:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-5c5d50fa").then(n)}},{name:"v-6cd19ba3",path:"/wings/1.0/configuration.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-6cd19ba3").then(n)}},{name:"v-55eb8eca",path:"/wings/1.0/installing.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-55eb8eca").then(n)}},{name:"v-1ec46263",path:"/wings/1.0/migrating.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-1ec46263").then(n)}},{name:"v-9213d4fa",path:"/wings/1.0/upgrading.html",component:St,beforeEnter:(e,t,n)=>{pt("Layout","v-9213d4fa").then(n)}},{path:"*",component:St}],Ot={title:"Pterodactyl",description:"Pterodactyl is an open-source game server management panel built with PHP, React, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to end users.",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/site.webmanifest"}],["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:"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"},{level:2,title:"List of default variables",slug:"list-of-default-variables"}]},{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 © Dane Everitt and contributors"},regularPath:"/",relativePath:"README.md",key:"v-4e72e1d8",path:"/"},{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 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:"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:"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 Dependencies",slug:"install-dependencies"},{level:3,title:"SELinux Configuration",slug:"selinux-configuration"},{level:3,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"PHP Configuration",slug:"php-configuration"},{level:3,title:"SELinux configuration",slug:"selinux-configuration-2"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Enterprise Linux 8 and Fedora Server 40",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 Dependencies",slug:"install-dependencies"},{level:3,title:"SELinux Configuration",slug:"selinux-configuration"},{level:3,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"PHP Configuration",slug:"php-configuration"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/panel/debian.html",relativePath:"community/installation-guides/panel/debian.md",key:"v-e4c1f74e",path:"/community/installation-guides/panel/debian.html",headers:[{level:2,title:"Dependency Installation",slug:"dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:3,title:"Download Files",slug:"download-files"}]},{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 Dependencies",slug:"install-dependencies"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Enterprise Linux 8 and Fedora Server 40",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 Dependencies",slug:"install-dependencies"},{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:2,title:"Panel Management",slug:"panel-management"},{level:3,title:"View Panel Info",slug:"view-panel-info"},{level:3,title:"Update Panel",slug:"update-panel"}]},{title:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/wings/debian.html",relativePath:"community/installation-guides/wings/debian.md",key:"v-37f7de3e",path:"/community/installation-guides/wings/debian.html",headers:[{level:2,title:"Install",slug:"install"}]},{title:"Additional Configuration",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:"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"},{level:3,title:"Example Mount",slug:"example-mount"}]},{title:"Upgrading",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:"Upgrading 0.6 Series",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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 PHP",frontmatter:{},regularPath:"/guides/php_upgrade.html",relativePath:"guides/php_upgrade.md",key:"v-589003f5",path:"/guides/php_upgrade.html",headers:[{level:2,title:"Install PHP",slug:"install-php"},{level:2,title:"Update Composer",slug:"update-composer"},{level:2,title:"Webserver Configuration",slug:"webserver-configuration"},{level:3,title:"Return to the 1.X.X Upgrade Guide",slug:"return-to-the-1-x-x-upgrade-guide"}]},{title:"Environment Configuration",frontmatter:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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:{meta:[{name:"robots",content:"noindex"}]},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 Local Backups",slug:"using-local-backups"},{level:3,title:"Using S3 Backups",slug:"using-s3-backups"},{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:"reCAPTCHA",slug:"recaptcha"},{level:3,title:"Configuring reCAPTCHA",slug:"configuring-recaptcha"},{level:3,title:"Disabling reCAPTCHA",slug:"disabling-recaptcha"},{level:2,title:"2FA",slug:"_2fa"},{level:3,title:"Disable 2FA requirement",slug:"disable-2fa-requirement"},{level:3,title:"Disable 2FA for a specific user",slug:"disable-2fa-for-a-specific-user"},{level:2,title:"Telemetry",slug:"telemetry"},{level:3,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"What data is collected?",slug:"what-data-is-collected"},{level:3,title:"How is the data stored?",slug:"how-is-the-data-stored"},{level:3,title:"Why?",slug:"why"},{level:3,title:"Enabling Telemetry",slug:"enabling-telemetry"},{level:3,title:"Disabling Telemetry",slug:"disabling-telemetry"}]},{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"},{level:3,title:"Telemetry",slug:"telemetry"}]},{title:"Legacy Upgrades",frontmatter:{},regularPath:"/panel/1.0/legacy_upgrade.html",relativePath:"panel/1.0/legacy_upgrade.md",key:"v-dacf6e56",path:"/panel/1.0/legacy_upgrade.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:"Troubleshooting",frontmatter:{},regularPath:"/panel/1.0/troubleshooting.html",relativePath:"panel/1.0/troubleshooting.md",key:"v-8eec473a",path:"/panel/1.0/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:"Cannot Connect to Server Errors",slug:"cannot-connect-to-server-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:"Wings Connection Errors",slug:"wings-connection-errors"},{level:2,title:"Containers don't have internet? Probably a DNS issue!",slug:"containers-don-t-have-internet-probably-a-dns-issue"},{level:2,title:"Schedule Troubleshooting",slug:"schedule-troubleshooting"},{level:2,title:"FirewallD issues",slug:"firewalld-issues"}]},{title:"Updating the Panel",frontmatter:{},regularPath:"/panel/1.0/updating.html",relativePath:"panel/1.0/updating.md",key:"v-29d5bc56",path:"/panel/1.0/updating.html",headers:[{level:2,title:"Panel Version Requirements",slug:"panel-version-requirements"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Self Upgrade",slug:"self-upgrade"},{level:2,title:"Manual Upgrade",slug:"manual-upgrade"},{level:3,title:"Enter Maintenance Mode",slug:"enter-maintenance-mode"},{level:3,title:"Download the Update",slug:"download-the-update"},{level:3,title:"Update Dependencies",slug:"update-dependencies-2"},{level:3,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:3,title:"Database Updates",slug:"database-updates"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:3,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:3,title:"Exit Maintenance Mode",slug:"exit-maintenance-mode"},{level:3,title:"Telemetry",slug:"telemetry"}]},{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:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-3"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-4"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-5"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-6"}]},{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:"Sponsors",slug:"sponsors"},{level:2,title:"License",slug:"license"},{level:2,title:"Release Signing",slug:"release-signing"}]},{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:"Simple Setup Diagram",slug:"simple-setup-diagram"},{level:2,title:"Advanced Setup Diagram",slug:"advanced-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:"Creating a Certificate",slug:"creating-a-certificate"},{level:3,title:"HTTP challenge",slug:"http-challenge"},{level:3,title:"DNS challenge",slug:"dns-challenge"},{level:3,title:"Auto Renewal",slug:"auto-renewal"},{level:3,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Obtaining CloudFlare API Key (Legacy)",slug:"obtaining-cloudflare-api-key-legacy"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-2"},{level:3,title:"Obtaining CloudFlare API Key (Modern)",slug:"obtaining-cloudflare-api-key-modern"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-3"},{level:3,title:"Auto Renewal",slug:"auto-renewal-2"},{level:3,title:"Installing Caddy with Cloudflare DNS plugin",slug:"installing-caddy-with-cloudflare-dns-plugin"},{level:3,title:"Obtaining CloudFlare API Token",slug:"obtaining-cloudflare-api-token"},{level:3,title:"Reconfiguring Caddy to use Cloudflare DNS for obtaining certificates",slug:"reconfiguring-caddy-to-use-cloudflare-dns-for-obtaining-certificates"}]},{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:"Example of usage",slug:"example-of-usage"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:3,title:"Example of usage",slug:"example-of-usage-2"},{level:2,title:"Enabling Cloudflare proxy",slug:"enabling-cloudflare-proxy"},{level:2,title:"Container PID Limit",slug:"container-pid-limit"},{level:3,title:"Example of usage",slug:"example-of-usage-3"},{level:2,title:"Throttles Limits",slug:"throttles-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-4"},{level:2,title:"Installer Limits",slug:"installer-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-5"},{level:2,title:"Other values",slug:"other-values"}]},{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"},{level:3,title:"Node Allocations",slug:"node-allocations"}]},{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:"Wings Version Requirements",slug:"wings-version-requirements"},{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:"GitHub",editLinkText:"Help us improve this page.",editLinks:!0,logo:"/logos/pterry.svg",nav:[{text:"Documentation",link:"/project/introduction.md"},{text:"Community Guides",link:"/community/about.md"},{text:"Get Help",link:"https://discord.gg/pterodactyl"},{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/debian.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian.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/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:[{title:"1.11",name:"1.0",status:"stable",children:["/getting_started","/webserver_configuration","/additional_configuration","/updating","/troubleshooting","/legacy_upgrade"]}]},{title:"Wings",collapsable:!1,path:"/wings/",currentVersion:"1.0",versions:[{title:"1.11",name:"1.0",status:"stable",children:["/installing","/upgrading","/migrating","/configuration"]}]},{title:"Tutorials",collapsable:!1,children:["/tutorials/mysql_setup.md","/tutorials/creating_ssl_certificates.md"]},{title:"Guides",collapsable:!1,children:["/guides/mounts.md"]}]}}};function Et(...e){const t=new RegExp("/{1,}","g");return e.join("/").replace(t,"/")}n(235);r.a.component("Badge",()=>n.e(23).then(n.bind(null,335)));var jt=n(89),$t=n.n(jt),Tt=[({Vue:e,options:t,router:n,siteData:r,isServer:o})=>{var i;(i=r.themeConfig.sidebar,Object.entries(i).map(([e,t])=>t.filter(e=>Array.isArray(e.versions)).map(t=>({...t,path:Et(e,t.path)}))).flat()).forEach(e=>{n.addRoutes(n.options.routes.map(t=>{if(t.path.startsWith(e.path+e.currentVersion))return[{path:t.path.replace(e.currentVersion,"current"),redirect:t.path},{path:t.path.replace(e.currentVersion+"/",""),redirect:t.path}]}).filter(e=>e).flat().concat([{path:"/panel/1.0/upgrade/1.0.html",redirect:"/panel/1.0/updating.html"},{path:"/panel/1.0/upgrade/0.7_to_1.0.html",redirect:"/panel/1.0/legacy_upgrade.html"}]))})},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},({Vue:e})=>e.use($t.a)],At=[];class Lt extends class{constructor(){this.store=new r.a({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){r.a.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Lt.prototype,{getPageAsyncComponent:lt,getLayoutAsyncComponent:ut,getAsyncComponent:ct,getVueComponent:ft});var Dt={install(e){const t=new Lt;e.$vuepress=t,e.prototype.$vuepress=t}};function It(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var Rt={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return dt("pageKey",t),r.a.component(t)||r.a.component(t,lt(t)),r.a.component(t)?e(t):e("")}},Mt={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},Nt={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},Ut=(n(236),n(237),Object(kt.a)(Nt,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("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"}}),this._v(" "),e("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"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),Ft={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};r.a.config.productionTip=!1,r.a.use(We),r.a.use(Dt),r.a.mixin(function(e,t,n=r.a){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const o=new(e(n.$vuepress.$get("siteData"))),i=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(o)),a={};return Object.keys(i).reduce((e,t)=>(t.startsWith("$")&&(e[t]=i[t].get),e),a),{computed:a}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!r.a.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(It(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";It(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";It(e,o)?r(o):It(e,n)?r(n):r()}})}(n);const o={};try{await Promise.all(Tt.filter(e=>"function"==typeof e).map(t=>t({Vue:r.a,options:o,router:n,siteData:Ot,isServer:e})))}catch(e){console.error(e)}return{app:new r.a(Object.assign(o,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},At.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/community/about.html b/community/about.html index a0d93f5a..7460389e 100644 --- a/community/about.html +++ b/community/about.html @@ -15,7 +15,7 @@ - + @@ -39,6 +39,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 9757a25a..be2256bf 100644 --- a/community/config/eggs/creating_a_custom_egg.html +++ b/community/config/eggs/creating_a_custom_egg.html @@ -15,7 +15,7 @@ - + @@ -115,6 +115,6 @@ regex as any letters or numbers (\w\d) including underscore (Debian 11 & 12
    - + diff --git a/community/config/eggs/creating_a_custom_image.html b/community/config/eggs/creating_a_custom_image.html index b2c7a217..91f7f558 100644 --- a/community/config/eggs/creating_a_custom_image.html +++ b/community/config/eggs/creating_a_custom_image.html @@ -15,7 +15,7 @@ - + @@ -100,6 +100,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 cfdd40e8..59106c86 100644 --- a/community/config/nodes/add_node.html +++ b/community/config/nodes/add_node.html @@ -15,7 +15,7 @@ - + @@ -48,6 +48,6 @@ or Debian.

    Minecraft
    - + diff --git a/community/customization/panel.html b/community/customization/panel.html index 3f63f165..696fb779 100644 --- a/community/customization/panel.html +++ b/community/customization/panel.html @@ -15,7 +15,7 @@ - + @@ -55,6 +55,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 91c29aea..3e4217aa 100644 --- a/community/customization/wings.html +++ b/community/customization/wings.html @@ -15,7 +15,7 @@ - + @@ -47,6 +47,6 @@ systemctl start wings
    - + diff --git a/community/games/minecraft.html b/community/games/minecraft.html index cd6f8b94..a6f28dfb 100644 --- a/community/games/minecraft.html +++ b/community/games/minecraft.html @@ -15,7 +15,7 @@ - + @@ -41,6 +41,6 @@ ← Creating a Custom Docker Image
    - + diff --git a/community/installation-guides/panel/centos7.html b/community/installation-guides/panel/centos7.html index 20fb0ee5..da616afd 100644 --- a/community/installation-guides/panel/centos7.html +++ b/community/installation-guides/panel/centos7.html @@ -15,7 +15,7 @@ - + @@ -94,6 +94,6 @@ setsebool -P httpd_unified Community Guides and Tutorials
    - + diff --git a/community/installation-guides/panel/centos8.html b/community/installation-guides/panel/centos8.html index cbc8a532..8af6a0e3 100644 --- a/community/installation-guides/panel/centos8.html +++ b/community/installation-guides/panel/centos8.html @@ -15,7 +15,7 @@ - + @@ -82,6 +82,6 @@ pm.max_requests = 200 ← CentOS 7
    - + diff --git a/community/installation-guides/panel/debian.html b/community/installation-guides/panel/debian.html index 7b19e1d4..0ac1af1e 100644 --- a/community/installation-guides/panel/debian.html +++ b/community/installation-guides/panel/debian.html @@ -15,7 +15,7 @@ - + @@ -56,6 +56,6 @@ ← Enterprise Linux 8 and Fedora Server 40
    - + diff --git a/community/installation-guides/wings/centos7.html b/community/installation-guides/wings/centos7.html index 58cf72d1..567cf939 100644 --- a/community/installation-guides/wings/centos7.html +++ b/community/installation-guides/wings/centos7.html @@ -15,7 +15,7 @@ - + @@ -57,6 +57,6 @@ firewall-cmd --reloadDebian 11 & 12
    - + diff --git a/community/installation-guides/wings/centos8.html b/community/installation-guides/wings/centos8.html index 3ca45833..bff67373 100644 --- a/community/installation-guides/wings/centos8.html +++ b/community/installation-guides/wings/centos8.html @@ -15,7 +15,7 @@ - + @@ -59,6 +59,6 @@ firewall-cmd --reloadCentOS 7
    - + diff --git a/community/installation-guides/wings/debian.html b/community/installation-guides/wings/debian.html index 1906de40..5271021d 100644 --- a/community/installation-guides/wings/debian.html +++ b/community/installation-guides/wings/debian.html @@ -15,7 +15,7 @@ - + @@ -39,6 +39,6 @@ ← Enterprise Linux 8 and Fedora Server 40
    - + diff --git a/community/tutorials/artisan.html b/community/tutorials/artisan.html index fd9741aa..b896f8f5 100644 --- a/community/tutorials/artisan.html +++ b/community/tutorials/artisan.html @@ -15,7 +15,7 @@ - + @@ -62,6 +62,6 @@ ← Creating a New Node
    - + diff --git a/daemon/0.6/configuration.html b/daemon/0.6/configuration.html index f5d8c35d..524cc138 100644 --- a/daemon/0.6/configuration.html +++ b/daemon/0.6/configuration.html @@ -16,7 +16,7 @@ - + @@ -98,6 +98,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 06a70b38..3d5ffc90 100644 --- a/daemon/0.6/debian_8_docker.html +++ b/daemon/0.6/debian_8_docker.html @@ -16,7 +16,7 @@ - + @@ -70,6 +70,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 1bebd3d8..5bdadd19 100644 --- a/daemon/0.6/installing.html +++ b/daemon/0.6/installing.html @@ -16,7 +16,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 ea1b1822..97013594 100644 --- a/daemon/0.6/kernel_modifications.html +++ b/daemon/0.6/kernel_modifications.html @@ -16,7 +16,7 @@ - + @@ -70,6 +70,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 9aba672b..7b15da23 100644 --- a/daemon/0.6/standalone_sftp.html +++ b/daemon/0.6/standalone_sftp.html @@ -16,7 +16,7 @@ - + @@ -85,6 +85,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 94643140..d6c444d5 100644 --- a/daemon/0.6/upgrade/0.4_to_0.5.html +++ b/daemon/0.6/upgrade/0.4_to_0.5.html @@ -16,7 +16,7 @@ - + @@ -76,6 +76,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 f0a54c18..5ac83c80 100644 --- a/daemon/0.6/upgrade/0.5.html +++ b/daemon/0.6/upgrade/0.5.html @@ -16,7 +16,7 @@ - + @@ -53,6 +53,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 9b03d547..f49d8884 100644 --- a/daemon/0.6/upgrade/0.5_to_0.6.html +++ b/daemon/0.6/upgrade/0.5_to_0.6.html @@ -16,7 +16,7 @@ - + @@ -63,6 +63,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 d1549778..9f65fbdd 100644 --- a/daemon/0.6/upgrade/0.6.html +++ b/daemon/0.6/upgrade/0.6.html @@ -16,7 +16,7 @@ - + @@ -55,6 +55,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 53ee1f6c..e3a9a259 100644 --- a/daemon/0.6/upgrading.html +++ b/daemon/0.6/upgrading.html @@ -16,7 +16,7 @@ - + @@ -47,6 +47,6 @@ current

  • # Upgrading

    This Software is Abandoned

    This documentation is for abandoned software which does not recieve any security updates or support from the community. This documentation has been left accessible for historial reasons.

    You should be installing and using Wings in production environments with Pterodactyl Panel 1.0.

    # Version Specific Guides

    - + diff --git a/guides/mounts.html b/guides/mounts.html index f2367aa6..e4ec966a 100644 --- a/guides/mounts.html +++ b/guides/mounts.html @@ -15,7 +15,7 @@ - + @@ -52,6 +52,6 @@ Keep in mind that the folder you want to mount into needs to exist for the mount

    - + diff --git a/guides/php_upgrade.html b/guides/php_upgrade.html index 2ce7dd11..c8f694b9 100644 --- a/guides/php_upgrade.html +++ b/guides/php_upgrade.html @@ -15,7 +15,7 @@ - + @@ -62,6 +62,6 @@ a2dismod php* a2enmod php8.3

    # Return to the 1.X.X Upgrade Guide

    - + diff --git a/index.html b/index.html index 8c405b5d..be7e10c2 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ - + @@ -56,7 +56,7 @@

    Take the plunge today and discover why thousands of users trust Pterodactyl® to manage their game servers. -

    - +

    + diff --git a/panel/0.7/configuration.html b/panel/0.7/configuration.html index 962b6477..2fb996f4 100644 --- a/panel/0.7/configuration.html +++ b/panel/0.7/configuration.html @@ -16,7 +16,7 @@ - + @@ -81,6 +81,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 (opens new window).
    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 202072dc..183ba174 100644 --- a/panel/0.7/getting_started.html +++ b/panel/0.7/getting_started.html @@ -16,7 +16,7 @@ - + @@ -141,6 +141,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 6a37c52b..3edc8110 100644 --- a/panel/0.7/troubleshooting.html +++ b/panel/0.7/troubleshooting.html @@ -16,7 +16,7 @@ - + @@ -95,6 +95,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 6066fe52..e9114d9f 100644 --- a/panel/0.7/upgrade/0.6_to_0.7.html +++ b/panel/0.7/upgrade/0.6_to_0.7.html @@ -16,7 +16,7 @@ - + @@ -82,6 +82,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 c62a534c..128abede 100644 --- a/panel/0.7/upgrade/0.7.html +++ b/panel/0.7/upgrade/0.7.html @@ -16,7 +16,7 @@ - + @@ -72,6 +72,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 41caf950..b98b615f 100644 --- a/panel/0.7/upgrading.html +++ b/panel/0.7/upgrading.html @@ -16,7 +16,7 @@ - + @@ -54,6 +54,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 5526096c..0c814332 100644 --- a/panel/0.7/webserver_configuration.html +++ b/panel/0.7/webserver_configuration.html @@ -16,7 +16,7 @@ - + @@ -214,6 +214,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 55645317..0d15b211 100644 --- a/panel/1.0/additional_configuration.html +++ b/panel/1.0/additional_configuration.html @@ -15,7 +15,7 @@ - + @@ -140,6 +140,6 @@ and either remove the PTERODACTYL_TELEMETRY_ENABLED line, or set it the --telemetry flag for a non-interactive setup.

    # Disabling Telemetry

    To disable telemetry, edit your .env file and set PTERODACTYL_TELEMETRY_ENABLED to false.

    PTERODACTYL_TELEMETRY_ENABLED=false
     

    You may also use the php artisan p:environment:setup command to disable telemetry, optionally with the --telemetry=false flag for a non-interactive setup.

    - + diff --git a/panel/1.0/getting_started.html b/panel/1.0/getting_started.html index d7793f79..b6b17ab5 100644 --- a/panel/1.0/getting_started.html +++ b/panel/1.0/getting_started.html @@ -15,7 +15,7 @@ - + @@ -151,6 +151,6 @@ when the service starts.

    If you are using redis for your system, yo

    # Telemetry

    Since 1.11, Pterodactyl will collect anonymous telemetry to help us better understand how the software is being used. To learn more about this feature and to opt-out, please see our Telemetry documentation. Make sure to continue with the rest of the installation process.

    # Next Step: Webserver Configuration

    - + diff --git a/panel/1.0/legacy_upgrade.html b/panel/1.0/legacy_upgrade.html index 6d1ab164..e45fef10 100644 --- a/panel/1.0/legacy_upgrade.html +++ b/panel/1.0/legacy_upgrade.html @@ -15,7 +15,7 @@ - + @@ -93,6 +93,6 @@ php artisan up 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 Node.js Daemon to run servers with Pterodactyl Panel 1.0.

    Please see Migrating to Wings for instructions.

    - + diff --git a/panel/1.0/troubleshooting.html b/panel/1.0/troubleshooting.html index 1f180b2f..91893dd8 100644 --- a/panel/1.0/troubleshooting.html +++ b/panel/1.0/troubleshooting.html @@ -15,7 +15,7 @@ - + @@ -104,6 +104,6 @@ resolvectl status

    If this returns different DNS Servers than 1.1.1.1 and 1.0.0.1 you'll need to edit the wings 'config.yml' file to use the DNS servers that were returned from the command. If you see output that looks like an IPV6 address in addition to your IPV4 DNS Servers, make sure you put that in the IPV6 section and not the IPV4 section. To be clear, if you have to use different DNS Servers than the default, make sure to REMOVE 1.1.1.1 and 1.0.0.1 from the wings config; don't just add the new servers, replace the old servers.

    # Schedule Troubleshooting

    • Check logs from your queue manager journalctl -xeu pteroq
    • Restart pteroq systemctl restart pteroq
    • Clear schedule cache php /var/www/pterodactyl/artisan schedule:clear-cache
    • Check your php version - up to 8.3 is supported php -v
    • Check your crontab syntax using https://crontab.guru/ (opens new window) - make sure it's what you intended
    • Verify the problem is with the schedule and not with the tasks you have set up (Set the first task in your schedule to something you know prints a message in the console, ie. run say test in the console for a Minecraft server, if the text "test" shows up in the console successfully, set the first task to say test so you know if it runs
    • Are your tasks off by a bit? Make sure you on the latest version of the panel? In version 1.11.5 there was a fix for schedules running at the wrong time. Alternatively, you may have the wrong timezone set. Make sure your timezones all match.
    • System Timezone timedatectl
    • Panel Timezone nano /var/www/pterodactyl/.env
    • Wings Timezone (Passed to containers as the TZ environmental variable, unrelated to schedules but while you're checking timezones you may as well set this too) nano /etc/pterodactyl/config.yml
    • Check your database where schedules are stored - MariaDB by default
    • systemctl status mariadb - if it's not active, journalctl -xeu mariadb
    • Check queue handler - Redis by default
    • systemctl status redis - if it's not active, journalctl -xeu redis (On some distributions the service will be named redis-server instead)
    • Check for panel errors tail -n 150 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log | nc pteropaste.com 99

    # FirewallD issues

    If you are on a RHEL/CentOS server with firewalld installed you may have broken DNS.

    firewall-cmd --permanent --zone=trusted --change-interface=pterodactyl0
     firewall-cmd --reload
     

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

    - + diff --git a/panel/1.0/updating.html b/panel/1.0/updating.html index f5f9b04b..e5ac3f87 100644 --- a/panel/1.0/updating.html +++ b/panel/1.0/updating.html @@ -15,7 +15,7 @@ - + @@ -91,6 +91,6 @@ connections.

    # Telemetry 

    Since 1.11, Pterodactyl will collect anonymous telemetry to help us better understand how the software is being used. To learn more about this feature and to opt-out, please see our Telemetry documentation. Remember to continue with the rest of the upgrade.

    Final Step: Upgrade Wings

    - + diff --git a/panel/1.0/webserver_configuration.html b/panel/1.0/webserver_configuration.html index dee38708..c81dfd25 100644 --- a/panel/1.0/webserver_configuration.html +++ b/panel/1.0/webserver_configuration.html @@ -15,7 +15,7 @@ - + @@ -329,6 +329,6 @@ below! You only need to run systemctl restart httpd.

    # Enabling Configuration

    The final step is to restart Caddy.

    systemctl restart caddy
     

    # Next Step: Wings Installation

    - + diff --git a/project/about.html b/project/about.html index fc1f682b..ee022ebc 100644 --- a/project/about.html +++ b/project/about.html @@ -15,7 +15,7 @@ - + @@ -50,6 +50,6 @@ members can be found in our Discord server and are distinguished with a yellow u ← Introduction
    - + diff --git a/project/community.html b/project/community.html index 3406e778..00530946 100644 --- a/project/community.html +++ b/project/community.html @@ -15,7 +15,7 @@ - + @@ -69,6 +69,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 b27bbef6..4eab5d50 100644 --- a/project/introduction.html +++ b/project/introduction.html @@ -15,7 +15,7 @@ - + @@ -48,11 +48,11 @@ security in mind, Pterodactyl runs all game servers in isolated Docker container and intuitive UI to administrators and users. What more are you waiting for? Make game servers a first-class citizen on your platform today.

    # Supported Games

    We support a huge variety of games by utilizing Docker containers to isolate each instance, giving you the power to host your games across the world without having to bloat each physical machine with additional dependencies.

    Some of our core supported games include:

    • Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more
    • Rust
    • Terraria
    • Teamspeak
    • Mumble
    • Team Fortress 2
    • Counter Strike: Global Offensive
    • Garry's Mod
    • ARK: Survival Evolved

    In addition to our standard nest of supported games, our community is constantly pushing the limits of this software -and there are plenty more games available provided by the community. Some of these games include:

    # Responsible Disclosure

    Pterodactyl is completely open-source, and as such completely open to independent users and auditors to browse our +and there are plenty more games available provided by the community. Some of these games include:

    # Responsible Disclosure

    Pterodactyl is completely open-source, and as such completely open to independent users and auditors to browse our code base and hunt for security issues. If you come across anything that raises red flags for you, please do not 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 ca12f7ce..83348f98 100644 --- a/project/terms.html +++ b/project/terms.html @@ -15,7 +15,7 @@ - + @@ -51,6 +51,6 @@ created on nodes, and you can have multiple servers per node.

    Doc ← About

    - + diff --git a/tutorials/creating_ssl_certificates.html b/tutorials/creating_ssl_certificates.html index 2aef2e78..8faf86e4 100644 --- a/tutorials/creating_ssl_certificates.html +++ b/tutorials/creating_ssl_certificates.html @@ -15,7 +15,7 @@ - + @@ -121,6 +121,6 @@ WantedBy=multi-user.target ← Setting up MySQL
    - + diff --git a/tutorials/mysql_setup.html b/tutorials/mysql_setup.html index c4bc054a..925253ca 100644 --- a/tutorials/mysql_setup.html +++ b/tutorials/mysql_setup.html @@ -15,7 +15,7 @@ - + @@ -70,6 +70,6 @@ bind-address=0.0.0.0 ← Community Standards
    - + diff --git a/wings/1.0/configuration.html b/wings/1.0/configuration.html index 801737ae..7aa22d2e 100644 --- a/wings/1.0/configuration.html +++ b/wings/1.0/configuration.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,6 @@ Restart wings and your game server to apply the new limit.

    memory: 1024 cpu: 100

    # Other values

    More commonly discussed values. View all Wings config values and explanations in these two files. (opens new window)

    Setting Key Default Value Notes
    debug false Force Wings to run in debug mode
    tmpfs_size 100 The size of the /tmp directory in MB when mounted into a container
    websocket_log_count 150 The number of lines to display in the console
    detect_clean_exit_as_crash true Mark server as crashed if it's stopped without user interaction, e.g., not pressing stop button
    (crash detection) timeout 60 Timeout between server crashes that will not cause the server to be automatically restarted
    app_name "Pterodactyl" Changes the name of the daemon, shown in the panel's game console
    check_permissions_on_boot true Check all file permissions on each boot. Disable this when you have a very large amount of files and the server startup is hanging on checking permissions
    - + diff --git a/wings/1.0/installing.html b/wings/1.0/installing.html index 7a279c98..4473df78 100644 --- a/wings/1.0/installing.html +++ b/wings/1.0/installing.html @@ -15,7 +15,7 @@ - + @@ -90,6 +90,6 @@ RestartSec=5s WantedBy=multi-user.target

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

    sudo systemctl enable --now wings
     

    # Node Allocations

    Allocation is a combination of IP and Port that you can assign to a server. Each created server must have at least one allocation. The allocation would be the IP address of your network interface. In some cases, such as when behind NAT, it would be the internal IP. To create new allocations go to Nodes > your node > Allocation.

    example image of node allocations

    Type hostname -I | awk '{print $1}' to find the IP to be used for the allocation. Alternatively, you can type ip addr | grep "inet " to see all your available interfaces and IP addresses. Do not use 127.0.0.1 for allocations.

    - + diff --git a/wings/1.0/migrating.html b/wings/1.0/migrating.html index 03463be3..f9f875d3 100644 --- a/wings/1.0/migrating.html +++ b/wings/1.0/migrating.html @@ -15,7 +15,7 @@ - + @@ -93,6 +93,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 6d0b846d..3cc06507 100644 --- a/wings/1.0/upgrading.html +++ b/wings/1.0/upgrading.html @@ -15,7 +15,7 @@ - + @@ -52,6 +52,6 @@ servers will not be affected.

    # 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
     
    - +