From 2c9ec22258cf8e629b6c2ce0e9297741eb400e12 Mon Sep 17 00:00:00 2001 From: matthewpi Date: Mon, 12 Dec 2022 23:17:19 +0000 Subject: [PATCH] deploy: 411b5673e6b485ebe7d7e60319c01c13d31ad3c6 --- 404.html | 4 +-- assets/js/{65.c4ac4f66.js => 65.95e6b666.js} | 2 +- .../js/{app.07891aa8.js => app.31544372.js} | 4 +-- 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/debian10.html | 4 +-- .../installation-guides/panel/debian11.html | 4 +-- .../installation-guides/panel/ubuntu1804.html | 4 +-- .../installation-guides/panel/ubuntu2004.html | 4 +-- .../installation-guides/wings/centos7.html | 4 +-- .../installation-guides/wings/centos8.html | 4 +-- .../installation-guides/wings/debian10.html | 4 +-- .../installation-guides/wings/debian11.html | 4 +-- .../installation-guides/wings/ubuntu1804.html | 4 +-- .../installation-guides/wings/ubuntu2004.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 | 4 +-- 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 | 26 ++++++++++--------- 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 | 4 +-- 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 +-- 59 files changed, 129 insertions(+), 127 deletions(-) rename assets/js/{65.c4ac4f66.js => 65.95e6b666.js} (78%) rename assets/js/{app.07891aa8.js => app.31544372.js} (99%) diff --git a/404.html b/404.html index 2906ab60..1a02fdcd 100644 --- a/404.html +++ b/404.html @@ -15,7 +15,7 @@ - + @@ -46,6 +46,6 @@ current

  • - + diff --git a/assets/js/65.c4ac4f66.js b/assets/js/65.95e6b666.js similarity index 78% rename from assets/js/65.c4ac4f66.js rename to assets/js/65.95e6b666.js index 5081c3a5..bca43496 100644 --- a/assets/js/65.c4ac4f66.js +++ b/assets/js/65.95e6b666.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{410:function(e,t,a){"use strict";a.r(t);var s=a(48),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"additional-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-configuration"}},[e._v("#")]),e._v(" Additional Configuration")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")]),a("ul",[a("li",[a("a",{attrs:{href:"#using-local-backups"}},[e._v("Using Local Backups")])]),a("li",[a("a",{attrs:{href:"#using-s3-backups"}},[e._v("Using S3 Backups")])])])]),a("li",[a("a",{attrs:{href:"#reverse-proxy-setup"}},[e._v("Reverse Proxy Setup")]),a("ul",[a("li",[a("a",{attrs:{href:"#nginx-specific-configuration"}},[e._v("NGINX Specific Configuration")])]),a("li",[a("a",{attrs:{href:"#cloudflare-specific-configuration"}},[e._v("Cloudflare Specific Configuration")])])])]),a("li",[a("a",{attrs:{href:"#recaptcha"}},[e._v("reCAPTCHA")]),a("ul",[a("li",[a("a",{attrs:{href:"#configuring-recaptcha"}},[e._v("Configuring reCAPTCHA")])]),a("li",[a("a",{attrs:{href:"#disabling-recaptcha"}},[e._v("Disabling reCAPTCHA")])])])]),a("li",[a("a",{attrs:{href:"#_2fa"}},[e._v("2FA")]),a("ul",[a("li",[a("a",{attrs:{href:"#disable-2fa-requirement"}},[e._v("Disable 2FA requirement")])]),a("li",[a("a",{attrs:{href:"#disable-2fa-for-a-specific-user"}},[e._v("Disable 2FA for a specific user")])])])]),a("li",[a("a",{attrs:{href:"#telemetry"}},[e._v("Telemetry")]),a("ul",[a("li",[a("a",{attrs:{href:"#how-does-it-work"}},[e._v("How does it work?")])]),a("li",[a("a",{attrs:{href:"#what-data-is-collected"}},[e._v("What data is collected?")])]),a("li",[a("a",{attrs:{href:"#how-is-the-data-stored"}},[e._v("How is the data stored?")])]),a("li",[a("a",{attrs:{href:"#why"}},[e._v("Why?")])]),a("li",[a("a",{attrs:{href:"#enabling-telemetry"}},[e._v("Enabling Telemetry")])]),a("li",[a("a",{attrs:{href:"#disabling-telemetry"}},[e._v("Disabling Telemetry")])])])])])]),a("p"),e._v(" "),a("h2",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Pterodactyl Panel allows users to create backups of their servers. In order to create backups, a backup storage method has to be configured.")]),e._v(" "),a("p",[e._v("When changing Pterodactyl Panel's backup storage method, users may still download or delete existing backups from the prior storage driver. In the instance of migrating from S3 to local backups, S3 credentials must remain configured after switching to the local backup storage method.")]),e._v(" "),a("h3",{attrs:{id:"using-local-backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-local-backups"}},[e._v("#")]),e._v(" Using Local Backups")]),e._v(" "),a("p",[e._v("By default, Pterodactyl Panel uses local storage via Wings for backups. That said, this method of backup storage can be explicitly set with the following configuration in the "),a("code",[e._v(".env")]),e._v(" file:")]),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("# Sets your panel to use local storage via Wings for backups")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("APP_BACKUP_DRIVER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("wings\n")])])]),a("p",[e._v("Do note that, when using local storage via Wings, the destination for backups is set in Wings' "),a("code",[e._v("config.yml")]),e._v(" with the following setting key:")]),e._v(" "),a("div",{staticClass:"language-yml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[e._v("system")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[e._v("backup_directory")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" /path/to/backup/storage\n")])])]),a("h3",{attrs:{id:"using-s3-backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-s3-backups"}},[e._v("#")]),e._v(" Using S3 Backups")]),e._v(" "),a("p",[e._v("AWS S3 (or compatible storage) can be used to store remote or cloud-based backups. The following configuration options have to be set in the "),a("code",[e._v(".env")]),e._v(" file or as environment variables in order to enable it:")]),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("# Sets your panel to use s3 for backups")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("APP_BACKUP_DRIVER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("s3\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Info to actually use s3")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_DEFAULT_REGION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_ACCESS_KEY_ID")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_SECRET_ACCESS_KEY")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_BACKUPS_BUCKET")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n")])])]),a("p",[e._v("For some configurations, you might have to change your S3 URL from "),a("code",[e._v("bucket.domain.com")]),e._v(" to "),a("code",[e._v("domain.com/bucket")]),e._v(". To accomplish this, add "),a("code",[e._v("AWS_USE_PATH_STYLE_ENDPOINT=true")]),e._v(" to your "),a("code",[e._v(".env")]),e._v(" file.")]),e._v(" "),a("h4",{attrs:{id:"multipart-upload"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multipart-upload"}},[e._v("#")]),e._v(" Multipart Upload")]),e._v(" "),a("p",[e._v("The S3 backup is using the S3 multipart upload capabilities. In rare situations, you might want to adjust the size of a single part or the lifespan of the generated pre-signed URLs. The default part size is 5GB, and the default pre-signed URL lifespan is 60 minutes.")]),e._v(" "),a("p",[e._v("You can configure the maximal part size using the "),a("code",[e._v("BACKUP_MAX_PART_SIZE")]),e._v(" environment variable. You must specify the size in bytes. To define the pre-signed URL lifespan, use the "),a("code",[e._v("BACKUP_PRESIGNED_URL_LIFESPAN")]),e._v(" variable. The expected unit is minutes.")]),e._v(" "),a("p",[e._v("The following "),a("code",[e._v(".env")]),e._v(" snippet configures 1GB parts and uses 120 minutes as the pre-signed URL lifespan:")]),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 assign-left variable"}},[e._v("BACKUP_MAX_PART_SIZE")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1073741824")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_PRESIGNED_URL_LIFESPAN")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("120")]),e._v("\n")])])]),a("h4",{attrs:{id:"storage-class"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#storage-class"}},[e._v("#")]),e._v(" Storage Class")]),e._v(" "),a("p",[e._v("Should you need to specify a storage class, use the "),a("code",[e._v("AWS_BACKUPS_STORAGE_CLASS")]),e._v(" environment variable. Default option is "),a("code",[e._v("STANDARD")]),e._v(" (S3 Standard).")]),e._v(" "),a("p",[e._v("The following "),a("code",[e._v(".env")]),e._v(" snippet sets the class to "),a("code",[e._v("STANDARD_IA")]),e._v(" (this is an example).")]),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("# STANDARD_IA is an example.")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_BACKUPS_STORAGE_CLASS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("STANDARD_IA\n")])])]),a("h2",{attrs:{id:"reverse-proxy-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reverse-proxy-setup"}},[e._v("#")]),e._v(" Reverse Proxy Setup")]),e._v(" "),a("p",[e._v("When running Pterodactyl behind a reverse proxy, such as "),a("a",{attrs:{href:"https://support.cloudflare.com/hc/en-us/articles/200170416-What-do-the-SSL-options-mean-",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cloudflare's Flexible SSL"),a("OutboundLink")],1),e._v("\nor Nginx/Apache/Caddy, etc., you will need to make a quick modification to the Panel to ensure things continue to work as expected. By default, when using these reverse proxies,\nyour Panel will not correctly handle requests. You'll most likely be unable to login or see security warnings in your browser console as it attempts to load insecure assets.\nThis is because the internal logic the Panel uses to determine how links should be generated thinks it is running over HTTP and not over HTTPS.")]),e._v(" "),a("p",[e._v("You will need to edit the "),a("code",[e._v(".env")]),e._v(" file in the Panel's root directory to contain "),a("code",[e._v("TRUSTED_PROXIES=*")]),e._v(" at minimum. We highly suggest providing a specific IP address\n(or comma-separated list of IPs) rather than allowing "),a("code",[e._v("*")]),e._v(". For example, if your proxy is running on the same machine as the server,\nthe chances are that something like "),a("code",[e._v("TRUSTED_PROXIES=127.0.0.1")]),e._v(" will work for you.")]),e._v(" "),a("h3",{attrs:{id:"nginx-specific-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nginx-specific-configuration"}},[e._v("#")]),e._v(" NGINX Specific Configuration")]),e._v(" "),a("p",[e._v("For Pterodactyl to properly respond to an NGINX reverse proxy, the NGINX "),a("code",[e._v("location")]),e._v(" config must contain the following lines:")]),e._v(" "),a("div",{staticClass:"language-Nginx extra-class"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_redirect")]),e._v(" off"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_buffering")]),e._v(" off"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\nproxy_request_buffering off"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h3",{attrs:{id:"cloudflare-specific-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cloudflare-specific-configuration"}},[e._v("#")]),e._v(" Cloudflare Specific Configuration")]),e._v(" "),a("p",[e._v("If you're using Cloudflare's Flexible SSL you should set "),a("code",[e._v("TRUSTED_PROXIES")]),e._v(" to contain "),a("a",{attrs:{href:"https://www.cloudflare.com/ips/",target:"_blank",rel:"noopener noreferrer"}},[e._v("their IP addresses"),a("OutboundLink")],1),e._v(".\nBelow is an example of how to set this.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("TRUSTED_PROXIES=173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22\n")])])]),a("h2",{attrs:{id:"recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#recaptcha"}},[e._v("#")]),e._v(" reCAPTCHA")]),e._v(" "),a("p",[e._v("The Panel uses invisible reCAPTCHA to secure the login page from brute-force attacks. If the login attempt is considered suspicious, users may be required to perform a reCAPTCHA challenge.")]),e._v(" "),a("h3",{attrs:{id:"configuring-recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuring-recaptcha"}},[e._v("#")]),e._v(" Configuring reCAPTCHA")]),e._v(" "),a("p",[e._v("While we provide a global Site Key and Secret Key by default, we highly recommend changing it for your own setup.")]),e._v(" "),a("p",[e._v("You can generate your own keys in the "),a("a",{attrs:{href:"https://www.google.com/recaptcha/admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("reCAPTCHA Admin Console"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("The keys can then be applied using the Settings in the admin panel. The reCAPTCHA settings can be found on the "),a("strong",[e._v("Advanced")]),e._v(" tab.")]),e._v(" "),a("h3",{attrs:{id:"disabling-recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disabling-recaptcha"}},[e._v("#")]),e._v(" Disabling reCAPTCHA")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("SECURITY WARNING")]),e._v(" "),a("p",[e._v("We do not recommend disabling reCAPTCHA. It is a security mechanism that makes it harder to perform brute-force attacks on user accounts.")])]),e._v(" "),a("p",[e._v("If users have trouble logging in, or your Panel isn't exposed to the internet, it can make sense to disable reCAPTCHA.")]),e._v(" "),a("p",[e._v("reCAPTCHA can easily be disabled using the admin panel. In the Settings, select the "),a("strong",[e._v("Advanced")]),e._v(" tab and set the "),a("strong",[e._v("Status")]),e._v(" of reCAPTCHA to "),a("strong",[e._v("disabled")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"editing-your-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#editing-your-database"}},[e._v("#")]),e._v(" Editing your database")]),e._v(" "),a("p",[e._v("If you cannot access your panel, you can modify the database directly using the following commands.")]),e._v(" "),a("div",{staticClass:"language-sql extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[e._v("mysql "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("u root "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("p\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("UPDATE")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("settings "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("SET")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("value")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'false'")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("WHERE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("key")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'settings::recaptcha:enabled'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h2",{attrs:{id:"_2fa"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2fa"}},[e._v("#")]),e._v(" 2FA")]),e._v(" "),a("p",[e._v("If possible you should use the panel to update your 2FA settings. If you can't access your panel for what ever reason you can use the following steps.")]),e._v(" "),a("h3",{attrs:{id:"disable-2fa-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa-requirement"}},[e._v("#")]),e._v(" Disable 2FA requirement")]),e._v(" "),a("div",{staticClass:"language-sql extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[e._v("mysql "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("u root "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("p\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("UPDATE")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("settings "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("SET")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("value")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("0")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("WHERE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("key")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'settings::pterodactyl:auth:2fa_required'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h3",{attrs:{id:"disable-2fa-for-a-specific-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa-for-a-specific-user"}},[e._v("#")]),e._v(" Disable 2FA for a specific user")]),e._v(" "),a("p",[e._v("Run the following command in your "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:user:disable2fa\n")])])]),a("h2",{attrs:{id:"telemetry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#telemetry"}},[e._v("#")]),e._v(" Telemetry")]),e._v(" "),a("p",[e._v("Since 1.11, the Panel collects anonymous metrics about the Panel and all connected nodes.\nThis feature is enabled by default, but can be disabled.")]),e._v(" "),a("p",[e._v("The data collected by this feature is not sold or used for advertising purposes. Aggregate statistics\nmay be made public or shared with third-parties for the purposes of improving the software.")]),e._v(" "),a("h3",{attrs:{id:"how-does-it-work"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),a("p",[e._v("The Telemetry system works by first generating a random UUIDv4 identifier for the Panel installation.\nThis identifier is stored in the database so people load-balancing multiple Panel instances can still\nhave a unique identifier. This identifier is then sent to a remote server, along the associated\ntelemetry data. The telemetry data is collected every 24 hours, there is no ongoing collection\nor local storage of the telemetry data, we collect the data right before we send it to the remote\nserver.")]),e._v(" "),a("p",[e._v("Currently, all telemetry collection logic is handled by the "),a("a",{attrs:{href:"https://github.com/pterodactyl/panel/blob/1.0-develop/app/Services/Telemetry/TelemetryCollectionService.php#L53",target:"_blank",rel:"noopener noreferrer"}},[e._v("TelemetryCollectionService"),a("OutboundLink")],1),e._v("\non the panel. This service is responsible for collecting all the data that is sent to the remote\nserver.")]),e._v(" "),a("h3",{attrs:{id:"what-data-is-collected"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-data-is-collected"}},[e._v("#")]),e._v(" What data is collected?")]),e._v(" "),a("p",[e._v("If you wish to see the full data that is collected, please look at the TelemetryCollectionService\n(as linked above), or use the "),a("code",[e._v("php artisan p:telemetry")]),e._v(" command to view the exact data that will\nbe sent to the remote server.")]),e._v(" "),a("p",[e._v("As of 2022-12-01, the data collected consists of:")]),e._v(" "),a("ul",[a("li",[e._v("Unique identifier for the Panel")]),e._v(" "),a("li",[e._v("Version of the Panel")]),e._v(" "),a("li",[e._v("PHP version")]),e._v(" "),a("li",[e._v("Backup storage driver (S3, Local, etc.)")]),e._v(" "),a("li",[e._v("Cache driver (Redis, Memcached, etc.)")]),e._v(" "),a("li",[e._v("Database driver and version (MySQL, MariaDB, PostgreSQL, etc.)")]),e._v(" "),a("li",[e._v("Resources\n"),a("ul",[a("li",[e._v("Allocations\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Total number of used allocations (assigned to a server)")])])]),e._v(" "),a("li",[e._v("Backups\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Sum of the total amount of bytes stored by backups")])])]),e._v(" "),a("li",[e._v("Eggs\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Map of egg UUIDs to the number of servers using that egg")])])]),e._v(" "),a("li",[e._v("Locations\n"),a("ul",[a("li",[e._v("Total number")])])]),e._v(" "),a("li",[e._v("Mounts\n"),a("ul",[a("li",[e._v("Total number")])])]),e._v(" "),a("li",[e._v("Nests\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Map of nest UUIDs to the number of servers using eggs in that nest")])])]),e._v(" "),a("li",[e._v("Nodes\n"),a("ul",[a("li",[e._v("Total number")])])]),e._v(" "),a("li",[e._v("Servers\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Number of servers that are suspended")])])]),e._v(" "),a("li",[e._v("Users\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Number of users that are admins")])])])])]),e._v(" "),a("li",[e._v("Nodes\n"),a("ul",[a("li",[e._v("Node UUID")]),e._v(" "),a("li",[e._v("Version of Wings on the node")]),e._v(" "),a("li",[e._v("Docker\n"),a("ul",[a("li",[e._v("Version")]),e._v(" "),a("li",[e._v("Cgroups\n"),a("ul",[a("li",[e._v("Driver")]),e._v(" "),a("li",[e._v("Version")])])]),e._v(" "),a("li",[e._v("Containers\n"),a("ul",[a("li",[e._v("Total")]),e._v(" "),a("li",[e._v("Running")]),e._v(" "),a("li",[e._v("Paused")]),e._v(" "),a("li",[e._v("Stopped")])])]),e._v(" "),a("li",[e._v("Storage\n"),a("ul",[a("li",[e._v("Driver")]),e._v(" "),a("li",[e._v("Filesystem")])])]),e._v(" "),a("li",[e._v("runc\n"),a("ul",[a("li",[e._v("Version")])])])])]),e._v(" "),a("li",[e._v("System\n"),a("ul",[a("li",[e._v("Architecture ("),a("code",[e._v("amd64")]),e._v(", "),a("code",[e._v("arm64")]),e._v(", etc.)")]),e._v(" "),a("li",[e._v("CPU Threads")]),e._v(" "),a("li",[e._v("Memory Bytes")]),e._v(" "),a("li",[e._v("Kernel Version")]),e._v(" "),a("li",[e._v("Operating System (Debian, Fedora, RHEL, Ubuntu, etc.)")]),e._v(" "),a("li",[e._v("Operating System Type (bsd, linux, windows, etc.)")])])])])])]),e._v(" "),a("h3",{attrs:{id:"how-is-the-data-stored"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-is-the-data-stored"}},[e._v("#")]),e._v(" How is the data stored?")]),e._v(" "),a("p",[e._v("Currently, the data is stored with Cloudflare, exact specifics about the format and products used\nis not available at this time as our implementation is still very much an alpha. Right now, there\nis "),a("strong",[e._v("NO")]),e._v(" way to query or view this information, both for project team members and the public. We\nexpect this to change in the future, but for now we are not making any guarantees about the data\nbeing publicly available.")]),e._v(" "),a("h3",{attrs:{id:"why"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why"}},[e._v("#")]),e._v(" Why?")]),e._v(" "),a("p",[e._v("The primary reason for collecting this data is to help us make better decisions about the future of\nthis software. With the release of 1.11, the minimum PHP version requirement jumped from 7.4 to 8.0,\nhowever, we wanted to add a feature that required PHP 8.1 which would've made the version requirement\njump larger and potentially cause issues for some users. By collecting this data, we can hopefully\nhave more insight to how changes like this will affect the community and make better decisions in the\nfuture. This is especially important for information like the architecture, kernel version, and\noperating system nodes are using. For example, we want to utilize a feature that is only present in\nsome filesystems, but we have no idea how many people are using those filesystems, so we cannot\ndetermine if it's worth the effort to implement.")]),e._v(" "),a("p",[e._v("Some of the data is not as useful for making decisions, but is still useful for us to know.\nFor example, have you ever wondered how many Panel instances there are? How many servers are being\nran across all of those instances? How many users are using the Panel? How many of those users are\nadmins? How many servers are using a specific egg? How many servers are using a specific nest?\nAll of these questions can be answered by the data we collect, and can help us and the community\nbetter understand how the software is being used.")]),e._v(" "),a("p",[e._v("If you have any questions about the data we collect, please feel free to reach out to us on Discord.\nOur goal is to be as transparent as possible, and we want to make sure that the community understands\nwhat we are doing and why.")]),e._v(" "),a("h3",{attrs:{id:"enabling-telemetry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enabling-telemetry"}},[e._v("#")]),e._v(" Enabling Telemetry")]),e._v(" "),a("p",[e._v("Telemetry is enabled by default, if you want to enable it after disabling it, edit your "),a("code",[e._v(".env")]),e._v(" file\nand either remove the "),a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED")]),e._v(" line, or set it to "),a("code",[e._v("true")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED=true\n")])])]),a("h3",{attrs:{id:"disabling-telemetry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disabling-telemetry"}},[e._v("#")]),e._v(" Disabling Telemetry")]),e._v(" "),a("p",[e._v("To disable telemetry, edit your "),a("code",[e._v(".env")]),e._v(" file and set "),a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED")]),e._v(" to "),a("code",[e._v("false")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED=false\n")])])])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{410:function(e,t,a){"use strict";a.r(t);var s=a(48),r=Object(s.a)({},(function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[a("h1",{attrs:{id:"additional-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#additional-configuration"}},[e._v("#")]),e._v(" Additional Configuration")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#backups"}},[e._v("Backups")]),a("ul",[a("li",[a("a",{attrs:{href:"#using-local-backups"}},[e._v("Using Local Backups")])]),a("li",[a("a",{attrs:{href:"#using-s3-backups"}},[e._v("Using S3 Backups")])])])]),a("li",[a("a",{attrs:{href:"#reverse-proxy-setup"}},[e._v("Reverse Proxy Setup")]),a("ul",[a("li",[a("a",{attrs:{href:"#nginx-specific-configuration"}},[e._v("NGINX Specific Configuration")])]),a("li",[a("a",{attrs:{href:"#cloudflare-specific-configuration"}},[e._v("Cloudflare Specific Configuration")])])])]),a("li",[a("a",{attrs:{href:"#recaptcha"}},[e._v("reCAPTCHA")]),a("ul",[a("li",[a("a",{attrs:{href:"#configuring-recaptcha"}},[e._v("Configuring reCAPTCHA")])]),a("li",[a("a",{attrs:{href:"#disabling-recaptcha"}},[e._v("Disabling reCAPTCHA")])])])]),a("li",[a("a",{attrs:{href:"#_2fa"}},[e._v("2FA")]),a("ul",[a("li",[a("a",{attrs:{href:"#disable-2fa-requirement"}},[e._v("Disable 2FA requirement")])]),a("li",[a("a",{attrs:{href:"#disable-2fa-for-a-specific-user"}},[e._v("Disable 2FA for a specific user")])])])]),a("li",[a("a",{attrs:{href:"#telemetry"}},[e._v("Telemetry")]),a("ul",[a("li",[a("a",{attrs:{href:"#how-does-it-work"}},[e._v("How does it work?")])]),a("li",[a("a",{attrs:{href:"#what-data-is-collected"}},[e._v("What data is collected?")])]),a("li",[a("a",{attrs:{href:"#how-is-the-data-stored"}},[e._v("How is the data stored?")])]),a("li",[a("a",{attrs:{href:"#why"}},[e._v("Why?")])]),a("li",[a("a",{attrs:{href:"#enabling-telemetry"}},[e._v("Enabling Telemetry")])]),a("li",[a("a",{attrs:{href:"#disabling-telemetry"}},[e._v("Disabling Telemetry")])])])])])]),a("p"),e._v(" "),a("h2",{attrs:{id:"backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#backups"}},[e._v("#")]),e._v(" Backups")]),e._v(" "),a("p",[e._v("Pterodactyl Panel allows users to create backups of their servers. In order to create backups, a backup storage method has to be configured.")]),e._v(" "),a("p",[e._v("When changing Pterodactyl Panel's backup storage method, users may still download or delete existing backups from the prior storage driver. In the instance of migrating from S3 to local backups, S3 credentials must remain configured after switching to the local backup storage method.")]),e._v(" "),a("h3",{attrs:{id:"using-local-backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-local-backups"}},[e._v("#")]),e._v(" Using Local Backups")]),e._v(" "),a("p",[e._v("By default, Pterodactyl Panel uses local storage via Wings for backups. That said, this method of backup storage can be explicitly set with the following configuration in the "),a("code",[e._v(".env")]),e._v(" file:")]),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("# Sets your panel to use local storage via Wings for backups")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("APP_BACKUP_DRIVER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("wings\n")])])]),a("p",[e._v("Do note that, when using local storage via Wings, the destination for backups is set in Wings' "),a("code",[e._v("config.yml")]),e._v(" with the following setting key:")]),e._v(" "),a("div",{staticClass:"language-yml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[e._v("system")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v("\n "),a("span",{pre:!0,attrs:{class:"token key atrule"}},[e._v("backup_directory")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(":")]),e._v(" /path/to/backup/storage\n")])])]),a("h3",{attrs:{id:"using-s3-backups"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-s3-backups"}},[e._v("#")]),e._v(" Using S3 Backups")]),e._v(" "),a("p",[e._v("AWS S3 (or compatible storage) can be used to store remote or cloud-based backups. The following configuration options have to be set in the "),a("code",[e._v(".env")]),e._v(" file or as environment variables in order to enable it:")]),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("# Sets your panel to use s3 for backups")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("APP_BACKUP_DRIVER")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("s3\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Info to actually use s3")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_DEFAULT_REGION")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_ACCESS_KEY_ID")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_SECRET_ACCESS_KEY")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_BACKUPS_BUCKET")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_ENDPOINT")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("\n")])])]),a("p",[e._v("For some configurations, you might have to change your S3 URL from "),a("code",[e._v("bucket.domain.com")]),e._v(" to "),a("code",[e._v("domain.com/bucket")]),e._v(". To accomplish this, add "),a("code",[e._v("AWS_USE_PATH_STYLE_ENDPOINT=true")]),e._v(" to your "),a("code",[e._v(".env")]),e._v(" file.")]),e._v(" "),a("h4",{attrs:{id:"multipart-upload"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#multipart-upload"}},[e._v("#")]),e._v(" Multipart Upload")]),e._v(" "),a("p",[e._v("The S3 backup is using the S3 multipart upload capabilities. In rare situations, you might want to adjust the size of a single part or the lifespan of the generated pre-signed URLs. The default part size is 5GB, and the default pre-signed URL lifespan is 60 minutes.")]),e._v(" "),a("p",[e._v("You can configure the maximal part size using the "),a("code",[e._v("BACKUP_MAX_PART_SIZE")]),e._v(" environment variable. You must specify the size in bytes. To define the pre-signed URL lifespan, use the "),a("code",[e._v("BACKUP_PRESIGNED_URL_LIFESPAN")]),e._v(" variable. The expected unit is minutes.")]),e._v(" "),a("p",[e._v("The following "),a("code",[e._v(".env")]),e._v(" snippet configures 1GB parts and uses 120 minutes as the pre-signed URL lifespan:")]),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 assign-left variable"}},[e._v("BACKUP_MAX_PART_SIZE")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1073741824")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_PRESIGNED_URL_LIFESPAN")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("120")]),e._v("\n")])])]),a("h4",{attrs:{id:"storage-class"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#storage-class"}},[e._v("#")]),e._v(" Storage Class")]),e._v(" "),a("p",[e._v("Should you need to specify a storage class, use the "),a("code",[e._v("AWS_BACKUPS_STORAGE_CLASS")]),e._v(" environment variable. Default option is "),a("code",[e._v("STANDARD")]),e._v(" (S3 Standard).")]),e._v(" "),a("p",[e._v("The following "),a("code",[e._v(".env")]),e._v(" snippet sets the class to "),a("code",[e._v("STANDARD_IA")]),e._v(" (this is an example).")]),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("# STANDARD_IA is an example.")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("AWS_BACKUPS_STORAGE_CLASS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("STANDARD_IA\n")])])]),a("h2",{attrs:{id:"reverse-proxy-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reverse-proxy-setup"}},[e._v("#")]),e._v(" Reverse Proxy Setup")]),e._v(" "),a("p",[e._v("When running Pterodactyl behind a reverse proxy, such as "),a("a",{attrs:{href:"https://support.cloudflare.com/hc/en-us/articles/200170416-What-do-the-SSL-options-mean-",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cloudflare's Flexible SSL"),a("OutboundLink")],1),e._v("\nor Nginx/Apache/Caddy, etc., you will need to make a quick modification to the Panel to ensure things continue to work as expected. By default, when using these reverse proxies,\nyour Panel will not correctly handle requests. You'll most likely be unable to login or see security warnings in your browser console as it attempts to load insecure assets.\nThis is because the internal logic the Panel uses to determine how links should be generated thinks it is running over HTTP and not over HTTPS.")]),e._v(" "),a("p",[e._v("You will need to edit the "),a("code",[e._v(".env")]),e._v(" file in the Panel's root directory to contain "),a("code",[e._v("TRUSTED_PROXIES=*")]),e._v(" at minimum. We highly suggest providing a specific IP address\n(or comma-separated list of IPs) rather than allowing "),a("code",[e._v("*")]),e._v(". For example, if your proxy is running on the same machine as the server,\nthe chances are that something like "),a("code",[e._v("TRUSTED_PROXIES=127.0.0.1")]),e._v(" will work for you.")]),e._v(" "),a("h3",{attrs:{id:"nginx-specific-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nginx-specific-configuration"}},[e._v("#")]),e._v(" NGINX Specific Configuration")]),e._v(" "),a("p",[e._v("For Pterodactyl to properly respond to an NGINX reverse proxy, the NGINX "),a("code",[e._v("location")]),e._v(" config must contain the following lines:")]),e._v(" "),a("div",{staticClass:"language-Nginx extra-class"},[a("pre",{pre:!0,attrs:{class:"language-nginx"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Real"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("IP "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$remote_addr")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" Host "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$host")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("For "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$proxy_add_x_forwarded_for")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_set_header")]),e._v(" X"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Forwarded"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("Proto "),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$scheme")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_redirect")]),e._v(" off"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("proxy_buffering")]),e._v(" off"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\nproxy_request_buffering off"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h3",{attrs:{id:"cloudflare-specific-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#cloudflare-specific-configuration"}},[e._v("#")]),e._v(" Cloudflare Specific Configuration")]),e._v(" "),a("p",[e._v("If you're using Cloudflare's Flexible SSL you should set "),a("code",[e._v("TRUSTED_PROXIES")]),e._v(" to contain "),a("a",{attrs:{href:"https://www.cloudflare.com/ips/",target:"_blank",rel:"noopener noreferrer"}},[e._v("their IP addresses"),a("OutboundLink")],1),e._v(".\nBelow is an example of how to set this.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("TRUSTED_PROXIES=173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22\n")])])]),a("h2",{attrs:{id:"recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#recaptcha"}},[e._v("#")]),e._v(" reCAPTCHA")]),e._v(" "),a("p",[e._v("The Panel uses invisible reCAPTCHA to secure the login page from brute-force attacks. If the login attempt is considered suspicious, users may be required to perform a reCAPTCHA challenge.")]),e._v(" "),a("h3",{attrs:{id:"configuring-recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuring-recaptcha"}},[e._v("#")]),e._v(" Configuring reCAPTCHA")]),e._v(" "),a("p",[e._v("While we provide a global Site Key and Secret Key by default, we highly recommend changing it for your own setup.")]),e._v(" "),a("p",[e._v("You can generate your own keys in the "),a("a",{attrs:{href:"https://www.google.com/recaptcha/admin",target:"_blank",rel:"noopener noreferrer"}},[e._v("reCAPTCHA Admin Console"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("The keys can then be applied using the Settings in the admin panel. The reCAPTCHA settings can be found on the "),a("strong",[e._v("Advanced")]),e._v(" tab.")]),e._v(" "),a("h3",{attrs:{id:"disabling-recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disabling-recaptcha"}},[e._v("#")]),e._v(" Disabling reCAPTCHA")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("SECURITY WARNING")]),e._v(" "),a("p",[e._v("We do not recommend disabling reCAPTCHA. It is a security mechanism that makes it harder to perform brute-force attacks on user accounts.")])]),e._v(" "),a("p",[e._v("If users have trouble logging in, or your Panel isn't exposed to the internet, it can make sense to disable reCAPTCHA.")]),e._v(" "),a("p",[e._v("reCAPTCHA can easily be disabled using the admin panel. In the Settings, select the "),a("strong",[e._v("Advanced")]),e._v(" tab and set the "),a("strong",[e._v("Status")]),e._v(" of reCAPTCHA to "),a("strong",[e._v("disabled")]),e._v(".")]),e._v(" "),a("h4",{attrs:{id:"editing-your-database"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#editing-your-database"}},[e._v("#")]),e._v(" Editing your database")]),e._v(" "),a("p",[e._v("If you cannot access your panel, you can modify the database directly using the following commands.")]),e._v(" "),a("div",{staticClass:"language-sql extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[e._v("mysql "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("u root "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("p\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("UPDATE")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("settings "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("SET")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("value")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'false'")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("WHERE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("key")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'settings::recaptcha:enabled'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h2",{attrs:{id:"_2fa"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#_2fa"}},[e._v("#")]),e._v(" 2FA")]),e._v(" "),a("p",[e._v("If possible you should use the panel to update your 2FA settings. If you can't access your panel for what ever reason you can use the following steps.")]),e._v(" "),a("h3",{attrs:{id:"disable-2fa-requirement"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa-requirement"}},[e._v("#")]),e._v(" Disable 2FA requirement")]),e._v(" "),a("div",{staticClass:"language-sql extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sql"}},[a("code",[e._v("mysql "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("u root "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("-")]),e._v("p\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("UPDATE")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("settings "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("SET")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("value")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("0")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("WHERE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("key")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("`")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'settings::pterodactyl:auth:2fa_required'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n")])])]),a("h3",{attrs:{id:"disable-2fa-for-a-specific-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa-for-a-specific-user"}},[e._v("#")]),e._v(" Disable 2FA for a specific user")]),e._v(" "),a("p",[e._v("Run the following command in your "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:user:disable2fa\n")])])]),a("h2",{attrs:{id:"telemetry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#telemetry"}},[e._v("#")]),e._v(" Telemetry")]),e._v(" "),a("p",[e._v("Since 1.11, the Panel collects anonymous metrics about the Panel and all connected nodes.\nThis feature is enabled by default, but can be disabled.")]),e._v(" "),a("p",[e._v("The data collected by this feature is not sold or used for advertising purposes. Aggregate statistics\nmay be made public or shared with third-parties for the purposes of improving the software.")]),e._v(" "),a("h3",{attrs:{id:"how-does-it-work"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-does-it-work"}},[e._v("#")]),e._v(" How does it work?")]),e._v(" "),a("p",[e._v("The Telemetry system works by first generating a random UUIDv4 identifier for the Panel installation.\nThis identifier is stored in the database so people load-balancing multiple Panel instances can still\nhave a unique identifier. This identifier is then sent to a remote server, along the associated\ntelemetry data. The telemetry data is collected every 24 hours, there is no ongoing collection\nor local storage of the telemetry data, we collect the data right before we send it to the remote\nserver.")]),e._v(" "),a("p",[e._v("Currently, all telemetry collection logic is handled by the "),a("a",{attrs:{href:"https://github.com/pterodactyl/panel/blob/1.0-develop/app/Services/Telemetry/TelemetryCollectionService.php#L53",target:"_blank",rel:"noopener noreferrer"}},[e._v("TelemetryCollectionService"),a("OutboundLink")],1),e._v("\non the panel. This service is responsible for collecting all the data that is sent to the remote\nserver.")]),e._v(" "),a("h3",{attrs:{id:"what-data-is-collected"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#what-data-is-collected"}},[e._v("#")]),e._v(" What data is collected?")]),e._v(" "),a("p",[e._v("If you wish to see the full data that is collected, please look at the TelemetryCollectionService\n(as linked above), or use the "),a("code",[e._v("php artisan p:telemetry")]),e._v(" command to view the exact data that will\nbe sent to the remote server.")]),e._v(" "),a("p",[e._v("As of 2022-12-12, the data collected consists of:")]),e._v(" "),a("ul",[a("li",[e._v("Unique identifier for the Panel")]),e._v(" "),a("li",[e._v("Version of the Panel")]),e._v(" "),a("li",[e._v("PHP version")]),e._v(" "),a("li",[e._v("Backup storage driver (S3, Local, etc.)")]),e._v(" "),a("li",[e._v("Cache driver (Redis, Memcached, etc.)")]),e._v(" "),a("li",[e._v("Database driver and version (MySQL, MariaDB, PostgreSQL, etc.)")]),e._v(" "),a("li",[e._v("Resources\n"),a("ul",[a("li",[e._v("Allocations\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Total number of used allocations (assigned to a server)")])])]),e._v(" "),a("li",[e._v("Backups\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Sum of the total amount of bytes stored by backups")])])]),e._v(" "),a("li",[e._v("Eggs\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[a("s",[e._v("Map of egg UUIDs to the number of servers using that egg")]),e._v(" (removed in 1.11.2)")])])]),e._v(" "),a("li",[e._v("Locations\n"),a("ul",[a("li",[e._v("Total number")])])]),e._v(" "),a("li",[e._v("Mounts\n"),a("ul",[a("li",[e._v("Total number")])])]),e._v(" "),a("li",[e._v("Nests\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[a("s",[e._v("Map of nest UUIDs to the number of servers using eggs in that nest")]),e._v(" (removed in 1.11.2)")])])]),e._v(" "),a("li",[e._v("Nodes\n"),a("ul",[a("li",[e._v("Total number")])])]),e._v(" "),a("li",[e._v("Servers\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Number of servers that are suspended")])])]),e._v(" "),a("li",[e._v("Users\n"),a("ul",[a("li",[e._v("Total number")]),e._v(" "),a("li",[e._v("Number of users that are admins")])])])])]),e._v(" "),a("li",[e._v("Nodes\n"),a("ul",[a("li",[e._v("Node UUID")]),e._v(" "),a("li",[e._v("Version of Wings on the node")]),e._v(" "),a("li",[e._v("Docker\n"),a("ul",[a("li",[e._v("Version")]),e._v(" "),a("li",[e._v("Cgroups\n"),a("ul",[a("li",[e._v("Driver")]),e._v(" "),a("li",[e._v("Version")])])]),e._v(" "),a("li",[e._v("Containers\n"),a("ul",[a("li",[e._v("Total")]),e._v(" "),a("li",[e._v("Running")]),e._v(" "),a("li",[e._v("Paused")]),e._v(" "),a("li",[e._v("Stopped")])])]),e._v(" "),a("li",[e._v("Storage\n"),a("ul",[a("li",[e._v("Driver")]),e._v(" "),a("li",[e._v("Filesystem")])])]),e._v(" "),a("li",[e._v("runc\n"),a("ul",[a("li",[e._v("Version")])])])])]),e._v(" "),a("li",[e._v("System\n"),a("ul",[a("li",[e._v("Architecture ("),a("code",[e._v("amd64")]),e._v(", "),a("code",[e._v("arm64")]),e._v(", etc.)")]),e._v(" "),a("li",[e._v("CPU Threads")]),e._v(" "),a("li",[e._v("Memory Bytes")]),e._v(" "),a("li",[e._v("Kernel Version")]),e._v(" "),a("li",[e._v("Operating System (Debian, Fedora, RHEL, Ubuntu, etc.)")]),e._v(" "),a("li",[e._v("Operating System Type (bsd, linux, windows, etc.)")])])])])])]),e._v(" "),a("h3",{attrs:{id:"how-is-the-data-stored"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#how-is-the-data-stored"}},[e._v("#")]),e._v(" How is the data stored?")]),e._v(" "),a("p",[e._v("Currently, the data is stored with Cloudflare, we ingest all telemetry data with a Worker which does\nbasic processing such as validation and then inserts it into Cloudflare D1. Right now, there is not\nan API or visualization for any of the data collected, and it can only be manually queried. Only\nMatthew is able to query the data at this time, but we are working on alternatives to make this data\nmore accessible.")]),e._v(" "),a("h3",{attrs:{id:"why"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#why"}},[e._v("#")]),e._v(" Why?")]),e._v(" "),a("p",[e._v("The primary reason for collecting this data is to help us make better decisions about the future of\nthis software. With the release of 1.11, the minimum PHP version requirement jumped from 7.4 to 8.0,\nhowever, we wanted to add a feature that required PHP 8.1 which would've made the version requirement\njump larger and potentially cause issues for some users. By collecting this data, we can hopefully\nhave more insight to how changes like this will affect the community and make better decisions in the\nfuture. This is especially important for information like the architecture, kernel version, and\noperating system nodes are using. For example, we want to utilize a feature that is only present in\nsome filesystems, but we have no idea how many people are using those filesystems, so we cannot\ndetermine if it's worth the effort to implement.")]),e._v(" "),a("p",[e._v("Some of the data is not as useful for making decisions, but is still useful for us to know.\nFor example, have you ever wondered how many Panel instances there are? How many servers are being\nran across all of those instances? How many users are using the Panel? How many of those users are\nadmins? How many servers are using a specific egg? How many servers are using a specific nest?\nAll of these questions can be answered by the data we collect, and can help us and the community\nbetter understand how the software is being used.")]),e._v(" "),a("p",[e._v("If you have any questions about the data we collect, please feel free to reach out to us on Discord.\nOur goal is to be as transparent as possible, and we want to make sure that the community understands\nwhat we are doing and why.")]),e._v(" "),a("h3",{attrs:{id:"enabling-telemetry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enabling-telemetry"}},[e._v("#")]),e._v(" Enabling Telemetry")]),e._v(" "),a("p",[e._v("Telemetry is enabled by default, if you want to enable it after disabling it, edit your "),a("code",[e._v(".env")]),e._v(" file\nand either remove the "),a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED")]),e._v(" line, or set it to "),a("code",[e._v("true")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED=true\n")])])]),a("p",[e._v("You may also use the "),a("code",[e._v("php artisan p:environment:setup")]),e._v(" command to enable telemetry, optionally with\nthe "),a("code",[e._v("--telemetry")]),e._v(" flag for a non-interactive setup.")]),e._v(" "),a("h3",{attrs:{id:"disabling-telemetry"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disabling-telemetry"}},[e._v("#")]),e._v(" Disabling Telemetry")]),e._v(" "),a("p",[e._v("To disable telemetry, edit your "),a("code",[e._v(".env")]),e._v(" file and set "),a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED")]),e._v(" to "),a("code",[e._v("false")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_TELEMETRY_ENABLED=false\n")])])]),a("p",[e._v("You may also use the "),a("code",[e._v("php artisan p:environment:setup")]),e._v(" command to disable telemetry, optionally with\nthe "),a("code",[e._v("--telemetry=false")]),e._v(" flag for a non-interactive setup.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/app.07891aa8.js b/assets/js/app.31544372.js similarity index 99% rename from assets/js/app.07891aa8.js rename to assets/js/app.31544372.js index 061baf61..69d7e799 100644 --- a/assets/js/app.07891aa8.js +++ b/assets/js/app.31544372.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,s=e[0],u=e[1],l=e[2],f=0,p=[];f=0&&(e=t.slice(r),t=t.slice(0,r));var i=t.indexOf("?");return i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),{path:t,query:n,hash:e}}(i.path||""),c=e&&e.path||"/",f=l.path?k(l.path,c,n||i.append):c,h=function(t,e,n){void 0===e&&(e={});var r,i=n||d;try{r=i(t||"")}catch(t){r={}}for(var o in e){var a=e[o];r[o]=Array.isArray(a)?a.map(p):p(a)}return r}(l.query,i.query,r&&r.options.parseQuery),v=i.hash||l.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:f,query:h,hash:v}}var G,K=function(){},X={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),o=i.location,s=i.route,u=i.href,l={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,m=null==this.exactActiveClass?d:this.exactActiveClass,y=s.redirectedFrom?g(null,W(s.redirectedFrom),null,n):s;l[m]=w(r,y,this.exactPath),l[h]=this.exact||this.exactPath?l[m]:function(t,e){return 0===t.path.replace(v,"/").indexOf(e.path.replace(v,"/"))&&(!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 b=l[m]?this.ariaCurrentValue:null,_=function(t){Q(t)&&(e.replace?n.replace(o,K):n.push(o,K))},x={click:Q};Array.isArray(this.event)?this.event.forEach((function(t){x[t]=_})):x[this.event]=_;var S={class:l},C=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:s,navigate:_,isActive:l[h],isExactActive:l[m]});if(C){if(1===C.length)return C[0];if(C.length>1||!C.length)return 0===C.length?t():t("span",{},C)}if("a"===this.tag)S.on=x,S.attrs={href:u,"aria-current":b};else{var O=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=H(c.path,s.params),u(c,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[i]?e(t[i],(function(){r(i+1)})):r(i+1)};r(0)}var xt={redirected:2,aborted:4,cancelled:8,duplicated:16};function St(t,e){return Ot(t,e,xt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return kt.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function Ct(t,e){return Ot(t,e,xt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function Ot(t,e,n,r){var i=new Error(r);return i._isRouter=!0,i.from=t,i.to=e,i.type=n,i}var kt=["params","query","hash"];function Et(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Pt(t,e){return Et(t)&&t._isRouter&&(null==e||t.type===e)}function jt(t){return function(e,n,r){var i=!1,o=0,a=null;At(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){i=!0,o++;var u,l=Lt((function(e){var i;((i=e).__esModule||Tt&&"Module"===i[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:G.extend(e),n.components[s]=e,--o<=0&&r()})),c=Lt((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Et(t)?t:new Error(e),r(a))}));try{u=t(l,c)}catch(t){c(t)}if(u)if("function"==typeof u.then)u.then(l,c);else{var f=u.component;f&&"function"==typeof f.then&&f.then(l,c)}}})),i||r()}}function At(t,e){return $t(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function $t(t){return Array.prototype.concat.apply([],t)}var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Lt(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 Rt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){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=y,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Dt(t,e,n,r){var i=At(t,(function(t,r,i,o){var a=function(t,e){"function"!=typeof t&&(t=G.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,i,o)})):n(a,r,i,o)}));return $t(r?i.reverse():i)}function It(t,e){if(e)return function(){return t.apply(e,arguments)}}Rt.prototype.listen=function(t){this.cb=t},Rt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Rt.prototype.onError=function(t){this.errorCbs.push(t)},Rt.prototype.transitionTo=function(t,e,n){var r,i=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var o=this.current;this.confirmTransition(r,(function(){i.updateRoute(r),e&&e(r),i.ensureURL(),i.router.afterHooks.forEach((function(t){t&&t(r,o)})),i.ready||(i.ready=!0,i.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!i.ready&&(Pt(t,xt.redirected)&&o===y||(i.ready=!0,i.readyErrorCbs.forEach((function(e){e(t)}))))}))},Rt.prototype.confirmTransition=function(t,e,n){var r=this,i=this.current;this.pending=t;var o,a,s=function(t){!Pt(t)&&Et(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},u=t.matched.length-1,l=i.matched.length-1;if(w(t,i)&&u===l&&t.matched[u]===i.matched[l])return this.ensureURL(),s(((a=Ot(o=i,t,xt.duplicated,'Avoided redundant navigation to current location: "'+o.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=yt&&n;r&&this.listeners.push(ut());var i=function(){var n=t.current,i=Nt(t.base);t.current===y&&i===t._startLocation||t.transitionTo(i,(function(t){r&<(e,t,n,!0)}))};window.addEventListener("popstate",i),this.listeners.push((function(){window.removeEventListener("popstate",i)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){bt(E(r.base+t.fullPath)),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){_t(E(r.base+t.fullPath)),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Nt(this.base)!==this.current.fullPath){var e=E(this.base+this.current.fullPath);t?bt(e):_t(e)}},e.prototype.getCurrentLocation=function(){return Nt(this.base)},e}(Rt);function Nt(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ut=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Nt(t);if(!/^\/#/.test(e))return window.location.replace(E(t+"/#"+e)),!0}(this.base)||Ft()}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=yt&&e;n&&this.listeners.push(ut());var r=function(){var e=t.current;Ft()&&t.transitionTo(Bt(),(function(r){n&<(t.router,r,e,!0),yt||Vt(r.fullPath)}))},i=yt?"popstate":"hashchange";window.addEventListener(i,r),this.listeners.push((function(){window.removeEventListener(i,r)}))}},e.prototype.push=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){qt(t.fullPath),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){Vt(t.fullPath),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Bt()!==e&&(t?qt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return Bt()},e}(Rt);function Ft(){var t=Bt();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function Bt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function zt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function qt(t){yt?bt(zt(t)):window.location.hash=t}function Vt(t){yt?_t(zt(t)):window.location.replace(zt(t))}var Ht=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){Pt(t,xt.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}(Rt),Wt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=tt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!yt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new Mt(this,t.base);break;case"hash":this.history=new Ut(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base);break;default:0}},Gt={currentRoute:{configurable:!0}};function Kt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Wt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Gt.currentRoute.get=function(){return this.history&&this.history.current},Wt.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 Mt||n instanceof Ut){var r=function(t){n.setupListeners(),function(t){var r=n.current,i=e.options.scrollBehavior;yt&&i&&"fullPath"in t&<(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Wt.prototype.beforeEach=function(t){return Kt(this.beforeHooks,t)},Wt.prototype.beforeResolve=function(t){return Kt(this.resolveHooks,t)},Wt.prototype.afterEach=function(t){return Kt(this.afterHooks,t)},Wt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Wt.prototype.onError=function(t){this.history.onError(t)},Wt.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)},Wt.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)},Wt.prototype.go=function(t){this.history.go(t)},Wt.prototype.back=function(){this.go(-1)},Wt.prototype.forward=function(){this.go(1)},Wt.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]}))}))):[]},Wt.prototype.resolve=function(t,e,n){var r=W(t,e=e||this.history.current,n,this),i=this.match(r,e),o=i.redirectedFrom||i.fullPath;return{location:r,route:i,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?E(t+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:i}},Wt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Wt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Wt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Wt.prototype,Gt),Wt.install=function t(e){if(!t.installed||G!==e){t.installed=!0,G=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",C),e.component("RouterLink",X);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}},Wt.version="3.5.1",Wt.isNavigationFailure=Pt,Wt.NavigationFailureType=xt,Wt.START_LOCATION=y,J&&window.Vue&&window.Vue.use(Wt);var Xt=Wt;n(51),n(197),n(199),n(144),n(145),n(71),n(110),n(52);function Qt(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}n(201),n(146),n(50),n(202),n(70),n(44),n(61),n(92);function Jt(t){return(Jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Yt=n(31),Zt={DropdownLink:function(){return Promise.all([n.e(0),n.e(7)]).then(n.bind(null,324))},DropdownTransition:function(){return Promise.all([n.e(0),n.e(18)]).then(n.bind(null,321))},Home:function(){return Promise.all([n.e(2),n.e(8)]).then(n.bind(null,341))},Layout:function(){return Promise.all([n.e(0),n.e(2),n.e(1),n.e(4)]).then(n.bind(null,367))},NavLink:function(){return n.e(10).then(n.bind(null,315))},NavLinks:function(){return Promise.all([n.e(0),n.e(6)]).then(n.bind(null,325))},Navbar:function(){return Promise.all([n.e(0),n.e(5)]).then(n.bind(null,342))},NotFound:function(){return n.e(25).then(n.bind(null,368))},Page:function(){return n.e(15).then(n.bind(null,343))},SearchBox:function(){return n.e(13).then(n.bind(null,331))},Sidebar:function(){return Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,344))},SidebarButton:function(){return n.e(26).then(n.bind(null,333))},SidebarGroup:function(){return Promise.all([n.e(0),n.e(1)]).then(n.bind(null,345))},SidebarLink:function(){return n.e(16).then(n.bind(null,334))},SlickCarousel:function(){return Promise.all([n.e(2),n.e(27)]).then(n.bind(null,330))},VersionSelect:function(){return n.e(11).then(n.bind(null,346))},VersionSelectItem:function(){return n.e(28).then(n.bind(null,332))}},te={"v-680eebc3":function(){return n.e(29).then(n.bind(null,369))},"v-4e72e1d8":function(){return n.e(30).then(n.bind(null,370))},"v-7d127123":function(){return n.e(31).then(n.bind(null,371))},"v-4a1e6e3a":function(){return n.e(12).then(n.bind(null,372))},"v-10fe793a":function(){return n.e(32).then(n.bind(null,373))},"v-622f23e3":function(){return n.e(17).then(n.bind(null,374))},"v-ef34fffa":function(){return n.e(33).then(n.bind(null,375))},"v-090070fa":function(){return n.e(34).then(n.bind(null,376))},"v-67c3f2ba":function(){return n.e(14).then(n.bind(null,377))},"v-0af75f63":function(){return n.e(35).then(n.bind(null,378))},"v-cc322cfa":function(){return n.e(36).then(n.bind(null,379))},"v-4d5d0f9b":function(){return n.e(37).then(n.bind(null,380))},"v-692d66d9":function(){return n.e(38).then(n.bind(null,381))},"v-047b1c1f":function(){return n.e(39).then(n.bind(null,382))},"v-030337f1":function(){return n.e(40).then(n.bind(null,383))},"v-26037fe3":function(){return n.e(41).then(n.bind(null,384))},"v-9619ebfa":function(){return n.e(42).then(n.bind(null,385))},"v-432db923":function(){return n.e(43).then(n.bind(null,386))},"v-5efe1061":function(){return n.e(44).then(n.bind(null,387))},"v-e046bab2":function(){return n.e(45).then(n.bind(null,388))},"v-e336830e":function(){return n.e(46).then(n.bind(null,389))},"v-7c7b3203":function(){return n.e(47).then(n.bind(null,390))},"v-07a77f72":function(){return n.e(48).then(n.bind(null,391))},"v-00d38f11":function(){return n.e(49).then(n.bind(null,392))},"v-d39223ba":function(){return n.e(21).then(n.bind(null,393))},"v-a31c3dba":function(){return n.e(50).then(n.bind(null,394))},"v-6f0eac21":function(){return n.e(51).then(n.bind(null,395))},"v-481dea23":function(){return n.e(52).then(n.bind(null,396))},"v-15b388aa":function(){return n.e(53).then(n.bind(null,397))},"v-8a6363ba":function(){return n.e(54).then(n.bind(null,398))},"v-7f0b5429":function(){return n.e(55).then(n.bind(null,399))},"v-29055241":function(){return n.e(56).then(n.bind(null,400))},"v-c0e60bfa":function(){return n.e(22).then(n.bind(null,401))},"v-589003f5":function(){return n.e(57).then(n.bind(null,402))},"v-019cb63a":function(){return n.e(58).then(n.bind(null,403))},"v-7ffeb723":function(){return n.e(59).then(n.bind(null,404))},"v-9478f2ba":function(){return n.e(60).then(n.bind(null,405))},"v-4f03fe0f":function(){return n.e(61).then(n.bind(null,406))},"v-5baa92ba":function(){return n.e(62).then(n.bind(null,407))},"v-c249e07a":function(){return n.e(63).then(n.bind(null,408))},"v-27941b23":function(){return n.e(64).then(n.bind(null,409))},"v-6f4baca5":function(){return n.e(65).then(n.bind(null,410))},"v-fa75e63a":function(){return n.e(66).then(n.bind(null,411))},"v-dacf6e56":function(){return n.e(67).then(n.bind(null,412))},"v-8eec473a":function(){return n.e(68).then(n.bind(null,413))},"v-29d5bc56":function(){return n.e(69).then(n.bind(null,414))},"v-cbda523a":function(){return n.e(70).then(n.bind(null,415))},"v-a75af93a":function(){return n.e(71).then(n.bind(null,416))},"v-22ba6d3a":function(){return n.e(72).then(n.bind(null,417))},"v-d6319362":function(){return n.e(73).then(n.bind(null,418))},"v-7b99cfba":function(){return n.e(19).then(n.bind(null,419))},"v-6ec4d123":function(){return n.e(74).then(n.bind(null,420))},"v-5c5d50fa":function(){return n.e(75).then(n.bind(null,421))},"v-6cd19ba3":function(){return n.e(76).then(n.bind(null,422))},"v-55eb8eca":function(){return n.e(20).then(n.bind(null,423))},"v-1ec46263":function(){return n.e(23).then(n.bind(null,424))},"v-9213d4fa":function(){return n.e(77).then(n.bind(null,425))}};function ee(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var ne=/-(\w)/g,re=ee((function(t){return t.replace(ne,(function(t,e){return e?e.toUpperCase():""}))})),ie=/\B([A-Z])/g,oe=ee((function(t){return t.replace(ie,"-$1").toLowerCase()})),ae=ee((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function se(t,e){if(e)return t(e)?t(e):e.includes("-")?t(ae(re(e))):t(ae(e))||t(oe(e))}var ue=Object.assign({},Zt,te),le=function(t){return ue[t]},ce=function(t){return te[t]},fe=function(t){return Zt[t]},pe=function(t){return o.a.component(t)};function de(t){return se(ce,t)}function he(t){return se(fe,t)}function ve(t){return se(le,t)}function ge(t){return se(pe,t)}function me(){for(var t=arguments.length,e=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"";return t?''):""}function Oe(t,e){if(e&&Object(Yt.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement("meta");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function ke(t){for(var e=0,n=["name","property","itemprop"];e"})).join("\n "):"",this.$ssrContext.canonicalLink=Ce(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Yt.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=Oe(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return xe()([{name:"description",content:this.$description}],t,this.siteMeta,ke)},updateCanonicalLink:function(){Se(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Ce(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){Oe(null,this.currentMetaTags),Se()}}],Pe={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return ye("layout",t),o.a.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},je=n(48),Ae=Object(je.a)(Pe,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){var r;switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),(r=t[e]).push.apply(r,Object(Yt.a)(n));break;default:throw new Error("Unknown option name.")}}(Ae,"mixins",Ee);var $e=[{name:"v-680eebc3",path:"/404.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-680eebc3").then(n)}},{name:"v-4e72e1d8",path:"/",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-7d127123",path:"/community/about.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7d127123").then(n)}},{name:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4a1e6e3a").then(n)}},{name:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-10fe793a").then(n)}},{name:"v-622f23e3",path:"/community/config/nodes/add_node.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-622f23e3").then(n)}},{name:"v-ef34fffa",path:"/community/customization/panel.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-ef34fffa").then(n)}},{name:"v-090070fa",path:"/community/customization/wings.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-090070fa").then(n)}},{name:"v-67c3f2ba",path:"/community/games/minecraft.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-67c3f2ba").then(n)}},{name:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-0af75f63").then(n)}},{name:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-cc322cfa").then(n)}},{name:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4d5d0f9b").then(n)}},{name:"v-692d66d9",path:"/community/installation-guides/panel/debian11.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-692d66d9").then(n)}},{name:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-047b1c1f").then(n)}},{name:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-030337f1").then(n)}},{name:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-26037fe3").then(n)}},{name:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-9619ebfa").then(n)}},{name:"v-432db923",path:"/community/installation-guides/wings/debian10.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-432db923").then(n)}},{name:"v-5efe1061",path:"/community/installation-guides/wings/debian11.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-5efe1061").then(n)}},{name:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e046bab2").then(n)}},{name:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e336830e").then(n)}},{name:"v-7c7b3203",path:"/community/tutorials/artisan.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7c7b3203").then(n)}},{name:"v-07a77f72",path:"/daemon/0.6/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-07a77f72").then(n)}},{name:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-00d38f11").then(n)}},{name:"v-d39223ba",path:"/daemon/0.6/installing.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-d39223ba").then(n)}},{name:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-a31c3dba").then(n)}},{name:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6f0eac21").then(n)}},{name:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-481dea23").then(n)}},{name:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-15b388aa").then(n)}},{name:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-8a6363ba").then(n)}},{name:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7f0b5429").then(n)}},{name:"v-29055241",path:"/daemon/0.6/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-29055241").then(n)}},{name:"v-c0e60bfa",path:"/guides/mounts.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-c0e60bfa").then(n)}},{name:"v-589003f5",path:"/guides/php_upgrade.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-589003f5").then(n)}},{name:"v-019cb63a",path:"/panel/0.7/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-019cb63a").then(n)}},{name:"v-7ffeb723",path:"/panel/0.7/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7ffeb723").then(n)}},{name:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-9478f2ba").then(n)}},{name:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4f03fe0f").then(n)}},{name:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-5baa92ba").then(n)}},{name:"v-c249e07a",path:"/panel/0.7/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-c249e07a").then(n)}},{name:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-27941b23").then(n)}},{name:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6f4baca5").then(n)}},{name:"v-fa75e63a",path:"/panel/1.0/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-fa75e63a").then(n)}},{name:"v-dacf6e56",path:"/panel/1.0/legacy_upgrade.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-dacf6e56").then(n)}},{name:"v-8eec473a",path:"/panel/1.0/troubleshooting.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-8eec473a").then(n)}},{name:"v-29d5bc56",path:"/panel/1.0/updating.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-29d5bc56").then(n)}},{name:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-cbda523a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-a75af93a").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-22ba6d3a").then(n)}},{name:"v-d6319362",path:"/project/introduction.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-d6319362").then(n)}},{name:"v-7b99cfba",path:"/project/terms.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7b99cfba").then(n)}},{name:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6ec4d123").then(n)}},{name:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-5c5d50fa").then(n)}},{name:"v-6cd19ba3",path:"/wings/1.0/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6cd19ba3").then(n)}},{name:"v-55eb8eca",path:"/wings/1.0/installing.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-55eb8eca").then(n)}},{name:"v-1ec46263",path:"/wings/1.0/migrating.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-1ec46263").then(n)}},{name:"v-9213d4fa",path:"/wings/1.0/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-9213d4fa").then(n)}},{path:"*",component:Ae}],Te={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:"Home",frontmatter:{home:!0,heroImage:"/doc_pterry.png",actionText:"Get Started →",actionLink:"/project/introduction",features:[{title:"Security First",details:"Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box."},{title:"Modern Tooling",details:"Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications."},{title:"Docker to the Core",details:"All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game."}],footer:"MIT Licensed | Copyright © 2015 - 2018 Dane Everitt & Contributors"},regularPath:"/",relativePath:"README.md",key:"v-4e72e1d8",path:"/"},{title:"Community Guides and Tutorials",frontmatter:{},regularPath:"/community/about.html",relativePath:"community/about.md",key:"v-7d127123",path:"/community/about.html",headers:[{level:2,title:"About",slug:"about"}]},{title:"Creating a Custom Egg",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_egg.html",relativePath:"community/config/eggs/creating_a_custom_egg.md",key:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",headers:[{level:2,title:"Create New Option",slug:"create-new-option"},{level:2,title:"Configure Process Management",slug:"configure-process-management"},{level:3,title:"Stop Command",slug:"stop-command"},{level:3,title:"Log Storage",slug:"log-storage"},{level:3,title:"Configuration Files",slug:"configuration-files"},{level:3,title:"Start Configuration",slug:"start-configuration"},{level:2,title:"Copy Settings From",slug:"copy-settings-from"},{level:2,title:"Egg Variables",slug:"egg-variables"},{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:"Building Wings",frontmatter:{},regularPath:"/community/customization/wings.html",relativePath:"community/customization/wings.md",key:"v-090070fa",path:"/community/customization/wings.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Building",slug:"building"},{level:2,title:"Install the new binary",slug:"install-the-new-binary"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Minecraft",frontmatter:{},regularPath:"/community/games/minecraft.html",relativePath:"community/games/minecraft.md",key:"v-67c3f2ba",path:"/community/games/minecraft.html",headers:[{level:2,title:"Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)",slug:"configuring-a-server-network-bungeecord-waterfall-hexacord-etc"},{level:3,title:"Allocations in the Panel",slug:"allocations-in-the-panel"},{level:3,title:"proxy server settings",slug:"proxy-server-settings"},{level:3,title:"paper/spigot/bukkit settings",slug:"paper-spigot-bukkit-settings"},{level:3,title:"Firewalls",slug:"firewalls"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/panel/centos7.html",relativePath:"community/installation-guides/panel/centos7.md",key:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.0",slug:"php-8-0"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 8, Rocky Linux 8, AlmaLinux 8",frontmatter:{},regularPath:"/community/installation-guides/panel/centos8.html",relativePath:"community/installation-guides/panel/centos8.md",key:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.0",slug:"php-8-0"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/panel/debian10.html",relativePath:"community/installation-guides/panel/debian10.md",key:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.1",slug:"php-8-1"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 11",frontmatter:{},regularPath:"/community/installation-guides/panel/debian11.html",relativePath:"community/installation-guides/panel/debian11.md",key:"v-692d66d9",path:"/community/installation-guides/panel/debian11.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:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu1804.html",relativePath:"community/installation-guides/panel/ubuntu1804.md",key:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu2004.html",relativePath:"community/installation-guides/panel/ubuntu2004.md",key:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.0",slug:"php-8-0"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx Configuration",slug:"nginx-configuration"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/wings/centos7.html",relativePath:"community/installation-guides/wings/centos7.md",key:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"CentOS 8, Rocky Linux 8, AlmaLinux 8",frontmatter:{},regularPath:"/community/installation-guides/wings/centos8.html",relativePath:"community/installation-guides/wings/centos8.md",key:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/wings/debian10.html",relativePath:"community/installation-guides/wings/debian10.md",key:"v-432db923",path:"/community/installation-guides/wings/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 11",frontmatter:{},regularPath:"/community/installation-guides/wings/debian11.html",relativePath:"community/installation-guides/wings/debian11.md",key:"v-5efe1061",path:"/community/installation-guides/wings/debian11.html",headers:[{level:2,title:"Install",slug:"install"}]},{title:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu1804.html",relativePath:"community/installation-guides/wings/ubuntu1804.md",key:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu2004.html",relativePath:"community/installation-guides/wings/ubuntu2004.md",key:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Artisan CLI",frontmatter:{},regularPath:"/community/tutorials/artisan.html",relativePath:"community/tutorials/artisan.md",key:"v-7c7b3203",path:"/community/tutorials/artisan.html",headers:[{level:2,title:"User Management",slug:"user-management"},{level:3,title:"Create User",slug:"create-user"},{level:3,title:"Delete User",slug:"delete-user"},{level:3,title:"Disable 2FA",slug:"disable-2fa"},{level:2,title:"Server & Node Management",slug:"server-node-management"},{level:3,title:"Create Location",slug:"create-location"},{level:3,title:"Delete Location",slug:"delete-location"},{level:3,title:"Server Bulk Power",slug:"server-bulk-power"},{level: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:{},regularPath:"/daemon/0.6/configuration.html",relativePath:"daemon/0.6/configuration.md",key:"v-07a77f72",path:"/daemon/0.6/configuration.html",headers:[{level:2,title:"Output Throttles",slug:"output-throttles"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:2,title:"Private Registries",slug:"private-registries"},{level:2,title:"Security Policies",slug:"security-policies"},{level:2,title:"Container Policy",slug:"container-policy"},{level:3,title:"Default Security Opts Array",slug:"default-security-opts-array"},{level:3,title:"Default Capabilities Drop Array",slug:"default-capabilities-drop-array"},{level:2,title:"Enabling Cloudflare",slug:"enabling-cloudflare"}]},{title:"Docker on Debian 8",frontmatter:{},regularPath:"/daemon/0.6/debian_8_docker.html",relativePath:"daemon/0.6/debian_8_docker.md",key:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",headers:[{level:2,title:"Install Docker",slug:"install-docker"},{level:2,title:"Update GRUB Startup",slug:"update-grub-startup"},{level:2,title:"Add Backports Repo",slug:"add-backports-repo"},{level:2,title:"Update Software & Setup Docker",slug:"update-software-setup-docker"}]},{title:"Installation",frontmatter:{},regularPath:"/daemon/0.6/installing.html",relativePath:"daemon/0.6/installing.md",key:"v-d39223ba",path:"/daemon/0.6/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:3,title:"Installing Nodejs",slug:"installing-nodejs"},{level:2,title:"Installing Daemon Software",slug:"installing-daemon-software"},{level:2,title:"Configure Daemon",slug:"configure-daemon"},{level:2,title:"Starting the Daemon",slug:"starting-the-daemon"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"}]},{title:"Kernel Modifications",frontmatter:{},regularPath:"/daemon/0.6/kernel_modifications.html",relativePath:"daemon/0.6/kernel_modifications.md",key:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",headers:[{level:2,title:"Update Kernel",slug:"update-kernel"},{level:2,title:"Confirm Kernel",slug:"confirm-kernel"},{level:2,title:"Set Default Boot",slug:"set-default-boot"},{level:2,title:"Boot from hard disk",slug:"boot-from-hard-disk"}]},{title:"Standalone SFTP Server",frontmatter:{},regularPath:"/daemon/0.6/standalone_sftp.html",relativePath:"daemon/0.6/standalone_sftp.md",key:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",headers:[{level:2,title:"Disable Daemon's Server",slug:"disable-daemon-s-server"},{level:2,title:"Run the Standalone Server",slug:"run-the-standalone-server"},{level:3,title:"Start the Server",slug:"start-the-server"},{level:2,title:"Daemonize Server",slug:"daemonize-server"},{level:3,title:"Customizing Startup",slug:"customizing-startup"}]},{title:"Upgrading 0.4.X to 0.5.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.4_to_0.5.html",relativePath:"daemon/0.6/upgrade/0.4_to_0.5.md",key:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",headers:[{level:2,title:"Docker Adjustments",slug:"docker-adjustments"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"SFTP Cleanup",slug:"sftp-cleanup"},{level:2,title:"File Migration",slug:"file-migration"},{level:3,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.5 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5.html",relativePath:"daemon/0.6/upgrade/0.5.md",key:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading 0.5.X to 0.6.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5_to_0.6.html",relativePath:"daemon/0.6/upgrade/0.5_to_0.6.md",key:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",headers:[{level:2,title:"Breaking Changes",slug:"breaking-changes"},{level:2,title:"Download Files",slug:"download-files"},{level:3,title:"Start the Daemon",slug:"start-the-daemon"},{level:2,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.6 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.6.html",relativePath:"daemon/0.6/upgrade/0.6.md",key:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading",frontmatter:{},regularPath:"/daemon/0.6/upgrading.html",relativePath:"daemon/0.6/upgrading.md",key:"v-29055241",path:"/daemon/0.6/upgrading.html",headers:[{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Using Mounts",frontmatter:{},regularPath:"/guides/mounts.html",relativePath:"guides/mounts.md",key:"v-c0e60bfa",path:"/guides/mounts.html",headers:[{level:2,title:"Wings Configuration",slug:"wings-configuration"},{level:2,title:"Panel Configuration",slug:"panel-configuration"},{level:3,title:"Creating a Mount",slug:"creating-a-mount"},{level:3,title:"Assigning a Mount to a Server",slug:"assigning-a-mount-to-a-server"},{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:{},regularPath:"/panel/0.7/configuration.html",relativePath:"panel/0.7/configuration.md",key:"v-019cb63a",path:"/panel/0.7/configuration.html",headers:[{level:2,title:"Reporting All Exceptions",slug:"reporting-all-exceptions"},{level:2,title:"Client Databases",slug:"client-databases"},{level:2,title:"Reverse Proxy Setup",slug:"reverse-proxy-setup"},{level:3,title:"NGINX Specific Configuration",slug:"nginx-specific-configuration"},{level:3,title:"Cloudflare Specific Configuration",slug:"cloudflare-specific-configuration"},{level:2,title:"Increasing the Editable File Size",slug:"increasing-the-editable-file-size"},{level:2,title:"Disable or Modify ReCaptcha",slug:"disable-or-modify-recaptcha"},{level:3,title:"Using Your Own Keys",slug:"using-your-own-keys"}]},{title:"Getting Started",frontmatter:{},regularPath:"/panel/0.7/getting_started.html",relativePath:"panel/0.7/getting_started.md",key:"v-7ffeb723",path:"/panel/0.7/getting_started.html",headers:[{level:2,title:"Picking a Server OS",slug:"picking-a-server-os"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Example Dependency Installation",slug:"example-dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"Installation",slug:"installation"},{level:3,title:"Environment Configuration",slug:"environment-configuration"},{level:3,title:"Database Setup",slug:"database-setup"},{level:3,title:"Add The First User",slug:"add-the-first-user"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Queue Listeners",slug:"queue-listeners"},{level:3,title:"Crontab Configuration",slug:"crontab-configuration"},{level:3,title:"Create Queue Worker",slug:"create-queue-worker"}]},{title:"Troubleshooting",frontmatter:{},regularPath:"/panel/0.7/troubleshooting.html",relativePath:"panel/0.7/troubleshooting.md",key:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",headers:[{level:2,title:"Reading Error Logs",slug:"reading-error-logs"},{level:3,title:"Parsing the Error",slug:"parsing-the-error"},{level:3,title:"Understanding the Error",slug:"understanding-the-error"},{level:3,title:"Utilizing GREP",slug:"utilizing-grep"},{level:2,title:"Transfer Exceptions / XHR Poll Error",slug:"transfer-exceptions-xhr-poll-error"},{level:3,title:"Example Errors",slug:"example-errors"},{level:3,title:"Basic Debugging Steps",slug:"basic-debugging-steps"},{level:3,title:"More Advanced Debugging Steps",slug:"more-advanced-debugging-steps"},{level:2,title:"Invalid MAC Exception",slug:"invalid-mac-exception"},{level:2,title:"SELinux Issues",slug:"selinux-issues"},{level:3,title:"Redis Permissions Errors",slug:"redis-permissions-errors"},{level:3,title:"In case there is any weirdness with parts of the panel",slug:"in-case-there-is-any-weirdness-with-parts-of-the-panel"},{level:3,title:"Daemon Connection Errors",slug:"daemon-connection-errors"},{level:2,title:"FirewallD issues",slug:"firewalld-issues"},{level:2,title:"Database Errors",slug:"database-errors"},{level:3,title:"DatabaseController.php:142",slug:"databasecontroller-php-142"}]},{title:"Upgrading 0.6 to 0.7",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.6_to_0.7.html",relativePath:"panel/0.7/upgrade/0.6_to_0.7.md",key:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Clear Compiled Assets",slug:"clear-compiled-assets"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Update Environment",slug:"update-environment"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Cleanup API Keys",slug:"cleanup-api-keys"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading 0.7 Series",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.7.html",relativePath:"panel/0.7/upgrade/0.7.md",key:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading",frontmatter:{},regularPath:"/panel/0.7/upgrading.html",relativePath:"panel/0.7/upgrading.md",key:"v-c249e07a",path:"/panel/0.7/upgrading.html",headers:[{level:2,title:"Maintenance Mode",slug:"maintenance-mode"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Webserver Configuration",frontmatter:{},regularPath:"/panel/0.7/webserver_configuration.html",relativePath:"panel/0.7/webserver_configuration.md",key:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",headers:[{level:2,title:"NGINX",slug:"nginx"},{level:3,title:"NGINX With SSL",slug:"nginx-with-ssl"},{level:3,title:"NGINX Without SSL",slug:"nginx-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:2,title:"Apache",slug:"apache"},{level:3,title:"Apache With SSL",slug:"apache-with-ssl"},{level:3,title:"Apache Without SSL",slug:"apache-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/panel/1.0/additional_configuration.html",relativePath:"panel/1.0/additional_configuration.md",key:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",headers:[{level:2,title:"Backups",slug:"backups"},{level:3,title:"Using 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:"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"}]},{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"}]},{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",slug:"obtaining-cloudflare-api-key"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-2"},{level:3,title:"Auto Renewal",slug:"auto-renewal-2"}]},{title:"Setting up MySQL",frontmatter:{},regularPath:"/tutorials/mysql_setup.html",relativePath:"tutorials/mysql_setup.md",key:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",headers:[{level:2,title:"Creating a database for Pterodactyl",slug:"creating-a-database-for-pterodactyl"},{level:3,title:"Logging In",slug:"logging-in"},{level:3,title:"Creating a user",slug:"creating-a-user"},{level:3,title:"Create a database",slug:"create-a-database"},{level:3,title:"Assigning permissions",slug:"assigning-permissions"},{level:2,title:"Creating a Database Host for Nodes",slug:"creating-a-database-host-for-nodes"},{level:3,title:"Creating a user",slug:"creating-a-user-2"},{level:3,title:"Assigning permissions",slug:"assigning-permissions-2"},{level:3,title:"Allowing external database access",slug:"allowing-external-database-access"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/wings/1.0/configuration.html",relativePath:"wings/1.0/configuration.md",key:"v-6cd19ba3",path:"/wings/1.0/configuration.html",headers:[{level:2,title:"Private Registries",slug:"private-registries"},{level:3,title:"Available Keys",slug:"available-keys"},{level:3,title:"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/debian10.md","/community/installation-guides/panel/debian11.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian10.md","/community/installation-guides/wings/debian11.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"]}]}}},Le=(n(300),n(302),n(303),n(181),n(74),n(107));function Re(){for(var t="/",e=new RegExp(t+"{1,}","g"),n=arguments.length,r=new Array(n),i=0;i2&&void 0!==arguments[2]?arguments[2]:o.a;Qt(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),i=new r,a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(i)),s={};return Object.keys(a).reduce((function(t,e){return e.startsWith("$")&&(t[e]=a[e].get),t}),s),{computed:s}}((function(t){return function(){function e(){Ue(this,e)}return Be(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var i in r)"/"===i?e=r[i]:0===this.$page.path.indexOf(i)&&(t=r[i]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$canonicalUrl",get:function(){var t=this.$page.frontmatter.canonicalUrl;return"string"==typeof t&&t}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n=0&&(e=t.slice(r),t=t.slice(0,r));var i=t.indexOf("?");return i>=0&&(n=t.slice(i+1),t=t.slice(0,i)),{path:t,query:n,hash:e}}(i.path||""),c=e&&e.path||"/",f=l.path?k(l.path,c,n||i.append):c,h=function(t,e,n){void 0===e&&(e={});var r,i=n||d;try{r=i(t||"")}catch(t){r={}}for(var o in e){var a=e[o];r[o]=Array.isArray(a)?a.map(p):p(a)}return r}(l.query,i.query,r&&r.options.parseQuery),v=i.hash||l.hash;return v&&"#"!==v.charAt(0)&&(v="#"+v),{_normalized:!0,path:f,query:h,hash:v}}var G,K=function(){},X={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),o=i.location,s=i.route,u=i.href,l={},c=n.options.linkActiveClass,f=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==f?"router-link-exact-active":f,h=null==this.activeClass?p:this.activeClass,m=null==this.exactActiveClass?d:this.exactActiveClass,y=s.redirectedFrom?g(null,W(s.redirectedFrom),null,n):s;l[m]=w(r,y,this.exactPath),l[h]=this.exact||this.exactPath?l[m]:function(t,e){return 0===t.path.replace(v,"/").indexOf(e.path.replace(v,"/"))&&(!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 b=l[m]?this.ariaCurrentValue:null,_=function(t){Q(t)&&(e.replace?n.replace(o,K):n.push(o,K))},x={click:Q};Array.isArray(this.event)?this.event.forEach((function(t){x[t]=_})):x[this.event]=_;var S={class:l},C=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:u,route:s,navigate:_,isActive:l[h],isExactActive:l[m]});if(C){if(1===C.length)return C[0];if(C.length>1||!C.length)return 0===C.length?t():t("span",{},C)}if("a"===this.tag)S.on=x,S.attrs={href:u,"aria-current":b};else{var O=function t(e){var n;if(e)for(var r=0;r-1&&(s.params[p]=n.params[p]);return s.path=H(c.path,s.params),u(c,s,a)}if(s.path){s.params={};for(var d=0;d=t.length?n():t[i]?e(t[i],(function(){r(i+1)})):r(i+1)};r(0)}var xt={redirected:2,aborted:4,cancelled:8,duplicated:16};function St(t,e){return Ot(t,e,xt.redirected,'Redirected when going from "'+t.fullPath+'" to "'+function(t){if("string"==typeof t)return t;if("path"in t)return t.path;var e={};return kt.forEach((function(n){n in t&&(e[n]=t[n])})),JSON.stringify(e,null,2)}(e)+'" via a navigation guard.')}function Ct(t,e){return Ot(t,e,xt.cancelled,'Navigation cancelled from "'+t.fullPath+'" to "'+e.fullPath+'" with a new navigation.')}function Ot(t,e,n,r){var i=new Error(r);return i._isRouter=!0,i.from=t,i.to=e,i.type=n,i}var kt=["params","query","hash"];function Et(t){return Object.prototype.toString.call(t).indexOf("Error")>-1}function Pt(t,e){return Et(t)&&t._isRouter&&(null==e||t.type===e)}function jt(t){return function(e,n,r){var i=!1,o=0,a=null;At(t,(function(t,e,n,s){if("function"==typeof t&&void 0===t.cid){i=!0,o++;var u,l=Lt((function(e){var i;((i=e).__esModule||Tt&&"Module"===i[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:G.extend(e),n.components[s]=e,--o<=0&&r()})),c=Lt((function(t){var e="Failed to resolve async component "+s+": "+t;a||(a=Et(t)?t:new Error(e),r(a))}));try{u=t(l,c)}catch(t){c(t)}if(u)if("function"==typeof u.then)u.then(l,c);else{var f=u.component;f&&"function"==typeof f.then&&f.then(l,c)}}})),i||r()}}function At(t,e){return $t(t.map((function(t){return Object.keys(t.components).map((function(n){return e(t.components[n],t.instances[n],t,n)}))})))}function $t(t){return Array.prototype.concat.apply([],t)}var Tt="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Lt(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 Rt=function(t,e){this.router=t,this.base=function(t){if(!t)if(J){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=y,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Dt(t,e,n,r){var i=At(t,(function(t,r,i,o){var a=function(t,e){"function"!=typeof t&&(t=G.extend(t));return t.options[e]}(t,e);if(a)return Array.isArray(a)?a.map((function(t){return n(t,r,i,o)})):n(a,r,i,o)}));return $t(r?i.reverse():i)}function It(t,e){if(e)return function(){return t.apply(e,arguments)}}Rt.prototype.listen=function(t){this.cb=t},Rt.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},Rt.prototype.onError=function(t){this.errorCbs.push(t)},Rt.prototype.transitionTo=function(t,e,n){var r,i=this;try{r=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var o=this.current;this.confirmTransition(r,(function(){i.updateRoute(r),e&&e(r),i.ensureURL(),i.router.afterHooks.forEach((function(t){t&&t(r,o)})),i.ready||(i.ready=!0,i.readyCbs.forEach((function(t){t(r)})))}),(function(t){n&&n(t),t&&!i.ready&&(Pt(t,xt.redirected)&&o===y||(i.ready=!0,i.readyErrorCbs.forEach((function(e){e(t)}))))}))},Rt.prototype.confirmTransition=function(t,e,n){var r=this,i=this.current;this.pending=t;var o,a,s=function(t){!Pt(t)&&Et(t)&&(r.errorCbs.length?r.errorCbs.forEach((function(e){e(t)})):console.error(t)),n&&n(t)},u=t.matched.length-1,l=i.matched.length-1;if(w(t,i)&&u===l&&t.matched[u]===i.matched[l])return this.ensureURL(),s(((a=Ot(o=i,t,xt.duplicated,'Avoided redundant navigation to current location: "'+o.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=yt&&n;r&&this.listeners.push(ut());var i=function(){var n=t.current,i=Nt(t.base);t.current===y&&i===t._startLocation||t.transitionTo(i,(function(t){r&<(e,t,n,!0)}))};window.addEventListener("popstate",i),this.listeners.push((function(){window.removeEventListener("popstate",i)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){bt(E(r.base+t.fullPath)),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){_t(E(r.base+t.fullPath)),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.ensureURL=function(t){if(Nt(this.base)!==this.current.fullPath){var e=E(this.base+this.current.fullPath);t?bt(e):_t(e)}},e.prototype.getCurrentLocation=function(){return Nt(this.base)},e}(Rt);function Nt(t){var e=window.location.pathname;return t&&0===e.toLowerCase().indexOf(t.toLowerCase())&&(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ut=function(t){function e(e,n,r){t.call(this,e,n),r&&function(t){var e=Nt(t);if(!/^\/#/.test(e))return window.location.replace(E(t+"/#"+e)),!0}(this.base)||Ft()}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=yt&&e;n&&this.listeners.push(ut());var r=function(){var e=t.current;Ft()&&t.transitionTo(Bt(),(function(r){n&<(t.router,r,e,!0),yt||Vt(r.fullPath)}))},i=yt?"popstate":"hashchange";window.addEventListener(i,r),this.listeners.push((function(){window.removeEventListener(i,r)}))}},e.prototype.push=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){qt(t.fullPath),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.replace=function(t,e,n){var r=this,i=this.current;this.transitionTo(t,(function(t){Vt(t.fullPath),lt(r.router,t,i,!1),e&&e(t)}),n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Bt()!==e&&(t?qt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return Bt()},e}(Rt);function Ft(){var t=Bt();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function Bt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function zt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function qt(t){yt?bt(zt(t)):window.location.hash=t}function Vt(t){yt?_t(zt(t)):window.location.replace(zt(t))}var Ht=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){Pt(t,xt.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}(Rt),Wt=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=tt(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!yt&&!1!==t.fallback,this.fallback&&(e="hash"),J||(e="abstract"),this.mode=e,e){case"history":this.history=new Mt(this,t.base);break;case"hash":this.history=new Ut(this,t.base,this.fallback);break;case"abstract":this.history=new Ht(this,t.base);break;default:0}},Gt={currentRoute:{configurable:!0}};function Kt(t,e){return t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}Wt.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},Gt.currentRoute.get=function(){return this.history&&this.history.current},Wt.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 Mt||n instanceof Ut){var r=function(t){n.setupListeners(),function(t){var r=n.current,i=e.options.scrollBehavior;yt&&i&&"fullPath"in t&<(e,t,r,!1)}(t)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Wt.prototype.beforeEach=function(t){return Kt(this.beforeHooks,t)},Wt.prototype.beforeResolve=function(t){return Kt(this.resolveHooks,t)},Wt.prototype.afterEach=function(t){return Kt(this.afterHooks,t)},Wt.prototype.onReady=function(t,e){this.history.onReady(t,e)},Wt.prototype.onError=function(t){this.history.onError(t)},Wt.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)},Wt.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)},Wt.prototype.go=function(t){this.history.go(t)},Wt.prototype.back=function(){this.go(-1)},Wt.prototype.forward=function(){this.go(1)},Wt.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]}))}))):[]},Wt.prototype.resolve=function(t,e,n){var r=W(t,e=e||this.history.current,n,this),i=this.match(r,e),o=i.redirectedFrom||i.fullPath;return{location:r,route:i,href:function(t,e,n){var r="hash"===n?"#"+e:e;return t?E(t+"/"+r):r}(this.history.base,o,this.mode),normalizedTo:r,resolved:i}},Wt.prototype.getRoutes=function(){return this.matcher.getRoutes()},Wt.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Wt.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==y&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Wt.prototype,Gt),Wt.install=function t(e){if(!t.installed||G!==e){t.installed=!0,G=e;var n=function(t){return void 0!==t},r=function(t,e){var r=t.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(t,e)};e.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",C),e.component("RouterLink",X);var i=e.config.optionMergeStrategies;i.beforeRouteEnter=i.beforeRouteLeave=i.beforeRouteUpdate=i.created}},Wt.version="3.5.1",Wt.isNavigationFailure=Pt,Wt.NavigationFailureType=xt,Wt.START_LOCATION=y,J&&window.Vue&&window.Vue.use(Wt);var Xt=Wt;n(51),n(197),n(199),n(144),n(145),n(71),n(110),n(52);function Qt(t){t.locales&&Object.keys(t.locales).forEach((function(e){t.locales[e].path=e})),Object.freeze(t)}n(201),n(146),n(50),n(202),n(70),n(44),n(61),n(92);function Jt(t){return(Jt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Yt=n(31),Zt={DropdownLink:function(){return Promise.all([n.e(0),n.e(7)]).then(n.bind(null,324))},DropdownTransition:function(){return Promise.all([n.e(0),n.e(18)]).then(n.bind(null,321))},Home:function(){return Promise.all([n.e(2),n.e(8)]).then(n.bind(null,341))},Layout:function(){return Promise.all([n.e(0),n.e(2),n.e(1),n.e(4)]).then(n.bind(null,367))},NavLink:function(){return n.e(10).then(n.bind(null,315))},NavLinks:function(){return Promise.all([n.e(0),n.e(6)]).then(n.bind(null,325))},Navbar:function(){return Promise.all([n.e(0),n.e(5)]).then(n.bind(null,342))},NotFound:function(){return n.e(25).then(n.bind(null,368))},Page:function(){return n.e(15).then(n.bind(null,343))},SearchBox:function(){return n.e(13).then(n.bind(null,331))},Sidebar:function(){return Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,344))},SidebarButton:function(){return n.e(26).then(n.bind(null,333))},SidebarGroup:function(){return Promise.all([n.e(0),n.e(1)]).then(n.bind(null,345))},SidebarLink:function(){return n.e(16).then(n.bind(null,334))},SlickCarousel:function(){return Promise.all([n.e(2),n.e(27)]).then(n.bind(null,330))},VersionSelect:function(){return n.e(11).then(n.bind(null,346))},VersionSelectItem:function(){return n.e(28).then(n.bind(null,332))}},te={"v-680eebc3":function(){return n.e(29).then(n.bind(null,369))},"v-4e72e1d8":function(){return n.e(30).then(n.bind(null,370))},"v-7d127123":function(){return n.e(31).then(n.bind(null,371))},"v-4a1e6e3a":function(){return n.e(12).then(n.bind(null,372))},"v-10fe793a":function(){return n.e(32).then(n.bind(null,373))},"v-622f23e3":function(){return n.e(17).then(n.bind(null,374))},"v-ef34fffa":function(){return n.e(33).then(n.bind(null,375))},"v-090070fa":function(){return n.e(34).then(n.bind(null,376))},"v-67c3f2ba":function(){return n.e(14).then(n.bind(null,377))},"v-0af75f63":function(){return n.e(35).then(n.bind(null,378))},"v-cc322cfa":function(){return n.e(36).then(n.bind(null,379))},"v-4d5d0f9b":function(){return n.e(37).then(n.bind(null,380))},"v-692d66d9":function(){return n.e(38).then(n.bind(null,381))},"v-047b1c1f":function(){return n.e(39).then(n.bind(null,382))},"v-030337f1":function(){return n.e(40).then(n.bind(null,383))},"v-26037fe3":function(){return n.e(41).then(n.bind(null,384))},"v-9619ebfa":function(){return n.e(42).then(n.bind(null,385))},"v-432db923":function(){return n.e(43).then(n.bind(null,386))},"v-5efe1061":function(){return n.e(44).then(n.bind(null,387))},"v-e046bab2":function(){return n.e(45).then(n.bind(null,388))},"v-e336830e":function(){return n.e(46).then(n.bind(null,389))},"v-7c7b3203":function(){return n.e(47).then(n.bind(null,390))},"v-07a77f72":function(){return n.e(48).then(n.bind(null,391))},"v-00d38f11":function(){return n.e(49).then(n.bind(null,392))},"v-d39223ba":function(){return n.e(21).then(n.bind(null,393))},"v-a31c3dba":function(){return n.e(50).then(n.bind(null,394))},"v-6f0eac21":function(){return n.e(51).then(n.bind(null,395))},"v-481dea23":function(){return n.e(52).then(n.bind(null,396))},"v-15b388aa":function(){return n.e(53).then(n.bind(null,397))},"v-8a6363ba":function(){return n.e(54).then(n.bind(null,398))},"v-7f0b5429":function(){return n.e(55).then(n.bind(null,399))},"v-29055241":function(){return n.e(56).then(n.bind(null,400))},"v-c0e60bfa":function(){return n.e(22).then(n.bind(null,401))},"v-589003f5":function(){return n.e(57).then(n.bind(null,402))},"v-019cb63a":function(){return n.e(58).then(n.bind(null,403))},"v-7ffeb723":function(){return n.e(59).then(n.bind(null,404))},"v-9478f2ba":function(){return n.e(60).then(n.bind(null,405))},"v-4f03fe0f":function(){return n.e(61).then(n.bind(null,406))},"v-5baa92ba":function(){return n.e(62).then(n.bind(null,407))},"v-c249e07a":function(){return n.e(63).then(n.bind(null,408))},"v-27941b23":function(){return n.e(64).then(n.bind(null,409))},"v-6f4baca5":function(){return n.e(65).then(n.bind(null,410))},"v-fa75e63a":function(){return n.e(66).then(n.bind(null,411))},"v-dacf6e56":function(){return n.e(67).then(n.bind(null,412))},"v-8eec473a":function(){return n.e(68).then(n.bind(null,413))},"v-29d5bc56":function(){return n.e(69).then(n.bind(null,414))},"v-cbda523a":function(){return n.e(70).then(n.bind(null,415))},"v-a75af93a":function(){return n.e(71).then(n.bind(null,416))},"v-22ba6d3a":function(){return n.e(72).then(n.bind(null,417))},"v-d6319362":function(){return n.e(73).then(n.bind(null,418))},"v-7b99cfba":function(){return n.e(19).then(n.bind(null,419))},"v-6ec4d123":function(){return n.e(74).then(n.bind(null,420))},"v-5c5d50fa":function(){return n.e(75).then(n.bind(null,421))},"v-6cd19ba3":function(){return n.e(76).then(n.bind(null,422))},"v-55eb8eca":function(){return n.e(20).then(n.bind(null,423))},"v-1ec46263":function(){return n.e(23).then(n.bind(null,424))},"v-9213d4fa":function(){return n.e(77).then(n.bind(null,425))}};function ee(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var ne=/-(\w)/g,re=ee((function(t){return t.replace(ne,(function(t,e){return e?e.toUpperCase():""}))})),ie=/\B([A-Z])/g,oe=ee((function(t){return t.replace(ie,"-$1").toLowerCase()})),ae=ee((function(t){return t.charAt(0).toUpperCase()+t.slice(1)}));function se(t,e){if(e)return t(e)?t(e):e.includes("-")?t(ae(re(e))):t(ae(e))||t(oe(e))}var ue=Object.assign({},Zt,te),le=function(t){return ue[t]},ce=function(t){return te[t]},fe=function(t){return Zt[t]},pe=function(t){return o.a.component(t)};function de(t){return se(ce,t)}function he(t){return se(fe,t)}function ve(t){return se(le,t)}function ge(t){return se(pe,t)}function me(){for(var t=arguments.length,e=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:"";return t?''):""}function Oe(t,e){if(e&&Object(Yt.a)(e).filter((function(t){return t.parentNode===document.head})).forEach((function(t){return document.head.removeChild(t)})),t)return t.map((function(t){var e=document.createElement("meta");return Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])})),document.head.appendChild(e),e}))}function ke(t){for(var e=0,n=["name","property","itemprop"];e"})).join("\n "):"",this.$ssrContext.canonicalLink=Ce(this.$canonicalUrl)}var e},mounted:function(){this.currentMetaTags=Object(Yt.a)(document.querySelectorAll("meta")),this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta:function(){document.title=this.$title,document.documentElement.lang=this.$lang;var t=this.getMergedMetaTags();this.currentMetaTags=Oe(t,this.currentMetaTags)},getMergedMetaTags:function(){var t=this.$page.frontmatter.meta||[];return xe()([{name:"description",content:this.$description}],t,this.siteMeta,ke)},updateCanonicalLink:function(){Se(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",Ce(this.$canonicalUrl))}},watch:{$page:function(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy:function(){Oe(null,this.currentMetaTags),Se()}}],Pe={name:"GlobalLayout",computed:{layout:function(){var t=this.getLayout();return ye("layout",t),o.a.component(t)}},methods:{getLayout:function(){if(this.$page.path){var t=this.$page.frontmatter.layout;return t&&(this.$vuepress.getLayoutAsyncComponent(t)||this.$vuepress.getVueComponent(t))?t:"Layout"}return"NotFound"}}},je=n(48),Ae=Object(je.a)(Pe,(function(){var t=this.$createElement;return(this._self._c||t)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(t,e,n){var r;switch(e){case"components":t[e]||(t[e]={}),Object.assign(t[e],n);break;case"mixins":t[e]||(t[e]=[]),(r=t[e]).push.apply(r,Object(Yt.a)(n));break;default:throw new Error("Unknown option name.")}}(Ae,"mixins",Ee);var $e=[{name:"v-680eebc3",path:"/404.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-680eebc3").then(n)}},{name:"v-4e72e1d8",path:"/",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-7d127123",path:"/community/about.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7d127123").then(n)}},{name:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4a1e6e3a").then(n)}},{name:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-10fe793a").then(n)}},{name:"v-622f23e3",path:"/community/config/nodes/add_node.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-622f23e3").then(n)}},{name:"v-ef34fffa",path:"/community/customization/panel.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-ef34fffa").then(n)}},{name:"v-090070fa",path:"/community/customization/wings.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-090070fa").then(n)}},{name:"v-67c3f2ba",path:"/community/games/minecraft.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-67c3f2ba").then(n)}},{name:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-0af75f63").then(n)}},{name:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-cc322cfa").then(n)}},{name:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4d5d0f9b").then(n)}},{name:"v-692d66d9",path:"/community/installation-guides/panel/debian11.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-692d66d9").then(n)}},{name:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-047b1c1f").then(n)}},{name:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-030337f1").then(n)}},{name:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-26037fe3").then(n)}},{name:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-9619ebfa").then(n)}},{name:"v-432db923",path:"/community/installation-guides/wings/debian10.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-432db923").then(n)}},{name:"v-5efe1061",path:"/community/installation-guides/wings/debian11.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-5efe1061").then(n)}},{name:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e046bab2").then(n)}},{name:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e336830e").then(n)}},{name:"v-7c7b3203",path:"/community/tutorials/artisan.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7c7b3203").then(n)}},{name:"v-07a77f72",path:"/daemon/0.6/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-07a77f72").then(n)}},{name:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-00d38f11").then(n)}},{name:"v-d39223ba",path:"/daemon/0.6/installing.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-d39223ba").then(n)}},{name:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-a31c3dba").then(n)}},{name:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6f0eac21").then(n)}},{name:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-481dea23").then(n)}},{name:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-15b388aa").then(n)}},{name:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-8a6363ba").then(n)}},{name:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7f0b5429").then(n)}},{name:"v-29055241",path:"/daemon/0.6/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-29055241").then(n)}},{name:"v-c0e60bfa",path:"/guides/mounts.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-c0e60bfa").then(n)}},{name:"v-589003f5",path:"/guides/php_upgrade.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-589003f5").then(n)}},{name:"v-019cb63a",path:"/panel/0.7/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-019cb63a").then(n)}},{name:"v-7ffeb723",path:"/panel/0.7/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7ffeb723").then(n)}},{name:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-9478f2ba").then(n)}},{name:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4f03fe0f").then(n)}},{name:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-5baa92ba").then(n)}},{name:"v-c249e07a",path:"/panel/0.7/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-c249e07a").then(n)}},{name:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-27941b23").then(n)}},{name:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6f4baca5").then(n)}},{name:"v-fa75e63a",path:"/panel/1.0/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-fa75e63a").then(n)}},{name:"v-dacf6e56",path:"/panel/1.0/legacy_upgrade.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-dacf6e56").then(n)}},{name:"v-8eec473a",path:"/panel/1.0/troubleshooting.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-8eec473a").then(n)}},{name:"v-29d5bc56",path:"/panel/1.0/updating.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-29d5bc56").then(n)}},{name:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-cbda523a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-a75af93a").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-22ba6d3a").then(n)}},{name:"v-d6319362",path:"/project/introduction.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-d6319362").then(n)}},{name:"v-7b99cfba",path:"/project/terms.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7b99cfba").then(n)}},{name:"v-6ec4d123",path:"/tutorials/creating_ssl_certificates.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6ec4d123").then(n)}},{name:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-5c5d50fa").then(n)}},{name:"v-6cd19ba3",path:"/wings/1.0/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6cd19ba3").then(n)}},{name:"v-55eb8eca",path:"/wings/1.0/installing.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-55eb8eca").then(n)}},{name:"v-1ec46263",path:"/wings/1.0/migrating.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-1ec46263").then(n)}},{name:"v-9213d4fa",path:"/wings/1.0/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-9213d4fa").then(n)}},{path:"*",component:Ae}],Te={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:"Home",frontmatter:{home:!0,heroImage:"/doc_pterry.png",actionText:"Get Started →",actionLink:"/project/introduction",features:[{title:"Security First",details:"Security is a first-class citizen on this platform with bcrypt hashing, AES-256-CBC encryption, and HTTPS support out of the box."},{title:"Modern Tooling",details:"Built on a modern stack utilizing the best design practices that make it easy to jump in and make modifications."},{title:"Docker to the Core",details:"All servers run in isolated Docker containers that limit attack vectors, provide strict resource limits, and provide environments tailored to each specific game."}],footer:"MIT Licensed | Copyright © 2015 - 2018 Dane Everitt & Contributors"},regularPath:"/",relativePath:"README.md",key:"v-4e72e1d8",path:"/"},{title:"Community Guides and Tutorials",frontmatter:{},regularPath:"/community/about.html",relativePath:"community/about.md",key:"v-7d127123",path:"/community/about.html",headers:[{level:2,title:"About",slug:"about"}]},{title:"Creating a Custom Egg",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_egg.html",relativePath:"community/config/eggs/creating_a_custom_egg.md",key:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",headers:[{level:2,title:"Create New Option",slug:"create-new-option"},{level:2,title:"Configure Process Management",slug:"configure-process-management"},{level:3,title:"Stop Command",slug:"stop-command"},{level:3,title:"Log Storage",slug:"log-storage"},{level:3,title:"Configuration Files",slug:"configuration-files"},{level:3,title:"Start Configuration",slug:"start-configuration"},{level:2,title:"Copy Settings From",slug:"copy-settings-from"},{level:2,title:"Egg Variables",slug:"egg-variables"},{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:"Building Wings",frontmatter:{},regularPath:"/community/customization/wings.html",relativePath:"community/customization/wings.md",key:"v-090070fa",path:"/community/customization/wings.html",headers:[{level:2,title:"Build Requirements",slug:"build-requirements"},{level:2,title:"Building",slug:"building"},{level:2,title:"Install the new binary",slug:"install-the-new-binary"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Minecraft",frontmatter:{},regularPath:"/community/games/minecraft.html",relativePath:"community/games/minecraft.md",key:"v-67c3f2ba",path:"/community/games/minecraft.html",headers:[{level:2,title:"Configuring a Server Network (BungeeCord, Waterfall, HexaCord, etc.)",slug:"configuring-a-server-network-bungeecord-waterfall-hexacord-etc"},{level:3,title:"Allocations in the Panel",slug:"allocations-in-the-panel"},{level:3,title:"proxy server settings",slug:"proxy-server-settings"},{level:3,title:"paper/spigot/bukkit settings",slug:"paper-spigot-bukkit-settings"},{level:3,title:"Firewalls",slug:"firewalls"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/panel/centos7.html",relativePath:"community/installation-guides/panel/centos7.md",key:"v-0af75f63",path:"/community/installation-guides/panel/centos7.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.0",slug:"php-8-0"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 8, Rocky Linux 8, AlmaLinux 8",frontmatter:{},regularPath:"/community/installation-guides/panel/centos8.html",relativePath:"community/installation-guides/panel/centos8.md",key:"v-cc322cfa",path:"/community/installation-guides/panel/centos8.html",headers:[{level:2,title:"Install Requirements and Additional Utilities",slug:"install-requirements-and-additional-utilities"},{level:3,title:"SELinux tools",slug:"selinux-tools"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.0",slug:"php-8-0"},{level:3,title:"Composer",slug:"composer"},{level:2,title:"Install Utility Packages",slug:"install-utility-packages"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/panel/debian10.html",relativePath:"community/installation-guides/panel/debian10.md",key:"v-4d5d0f9b",path:"/community/installation-guides/panel/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.1",slug:"php-8-1"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Debian 11",frontmatter:{},regularPath:"/community/installation-guides/panel/debian11.html",relativePath:"community/installation-guides/panel/debian11.md",key:"v-692d66d9",path:"/community/installation-guides/panel/debian11.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:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu1804.html",relativePath:"community/installation-guides/panel/ubuntu1804.md",key:"v-047b1c1f",path:"/community/installation-guides/panel/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 7.4",slug:"php-7-4"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx",slug:"nginx-2"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/panel/ubuntu2004.html",relativePath:"community/installation-guides/panel/ubuntu2004.md",key:"v-030337f1",path:"/community/installation-guides/panel/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"MariaDB",slug:"mariadb"},{level:3,title:"PHP 8.0",slug:"php-8-0"},{level:3,title:"Nginx",slug:"nginx"},{level:3,title:"Redis",slug:"redis"},{level:3,title:"Additional Utilities",slug:"additional-utilities"},{level:2,title:"Server Configuration",slug:"server-configuration"},{level:3,title:"Configuring MariaDB",slug:"configuring-mariadb"},{level:3,title:"Setup PHP",slug:"setup-php"},{level:3,title:"Nginx Configuration",slug:"nginx-configuration"},{level:3,title:"Redis Setup",slug:"redis-setup"},{level:2,title:"Installing the Panel",slug:"installing-the-panel"}]},{title:"CentOS 7",frontmatter:{},regularPath:"/community/installation-guides/wings/centos7.html",relativePath:"community/installation-guides/wings/centos7.md",key:"v-26037fe3",path:"/community/installation-guides/wings/centos7.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"CentOS 8, Rocky Linux 8, AlmaLinux 8",frontmatter:{},regularPath:"/community/installation-guides/wings/centos8.html",relativePath:"community/installation-guides/wings/centos8.md",key:"v-9619ebfa",path:"/community/installation-guides/wings/centos8.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:3,title:"FirewallD Changes",slug:"firewalld-changes"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 10",frontmatter:{},regularPath:"/community/installation-guides/wings/debian10.html",relativePath:"community/installation-guides/wings/debian10.md",key:"v-432db923",path:"/community/installation-guides/wings/debian10.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Debian 11",frontmatter:{},regularPath:"/community/installation-guides/wings/debian11.html",relativePath:"community/installation-guides/wings/debian11.md",key:"v-5efe1061",path:"/community/installation-guides/wings/debian11.html",headers:[{level:2,title:"Install",slug:"install"}]},{title:"Ubuntu 18.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu1804.html",relativePath:"community/installation-guides/wings/ubuntu1804.md",key:"v-e046bab2",path:"/community/installation-guides/wings/ubuntu1804.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Ubuntu 20.04",frontmatter:{},regularPath:"/community/installation-guides/wings/ubuntu2004.html",relativePath:"community/installation-guides/wings/ubuntu2004.md",key:"v-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",headers:[{level:2,title:"Install Requirements",slug:"install-requirements"},{level:3,title:"Docker",slug:"docker"},{level:2,title:"Installing Wings",slug:"installing-wings"}]},{title:"Artisan CLI",frontmatter:{},regularPath:"/community/tutorials/artisan.html",relativePath:"community/tutorials/artisan.md",key:"v-7c7b3203",path:"/community/tutorials/artisan.html",headers:[{level:2,title:"User Management",slug:"user-management"},{level:3,title:"Create User",slug:"create-user"},{level:3,title:"Delete User",slug:"delete-user"},{level:3,title:"Disable 2FA",slug:"disable-2fa"},{level:2,title:"Server & Node Management",slug:"server-node-management"},{level:3,title:"Create Location",slug:"create-location"},{level:3,title:"Delete Location",slug:"delete-location"},{level:3,title:"Server Bulk Power",slug:"server-bulk-power"},{level: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:{},regularPath:"/daemon/0.6/configuration.html",relativePath:"daemon/0.6/configuration.md",key:"v-07a77f72",path:"/daemon/0.6/configuration.html",headers:[{level:2,title:"Output Throttles",slug:"output-throttles"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:2,title:"Private Registries",slug:"private-registries"},{level:2,title:"Security Policies",slug:"security-policies"},{level:2,title:"Container Policy",slug:"container-policy"},{level:3,title:"Default Security Opts Array",slug:"default-security-opts-array"},{level:3,title:"Default Capabilities Drop Array",slug:"default-capabilities-drop-array"},{level:2,title:"Enabling Cloudflare",slug:"enabling-cloudflare"}]},{title:"Docker on Debian 8",frontmatter:{},regularPath:"/daemon/0.6/debian_8_docker.html",relativePath:"daemon/0.6/debian_8_docker.md",key:"v-00d38f11",path:"/daemon/0.6/debian_8_docker.html",headers:[{level:2,title:"Install Docker",slug:"install-docker"},{level:2,title:"Update GRUB Startup",slug:"update-grub-startup"},{level:2,title:"Add Backports Repo",slug:"add-backports-repo"},{level:2,title:"Update Software & Setup Docker",slug:"update-software-setup-docker"}]},{title:"Installation",frontmatter:{},regularPath:"/daemon/0.6/installing.html",relativePath:"daemon/0.6/installing.md",key:"v-d39223ba",path:"/daemon/0.6/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:3,title:"Installing Nodejs",slug:"installing-nodejs"},{level:2,title:"Installing Daemon Software",slug:"installing-daemon-software"},{level:2,title:"Configure Daemon",slug:"configure-daemon"},{level:2,title:"Starting the Daemon",slug:"starting-the-daemon"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"}]},{title:"Kernel Modifications",frontmatter:{},regularPath:"/daemon/0.6/kernel_modifications.html",relativePath:"daemon/0.6/kernel_modifications.md",key:"v-a31c3dba",path:"/daemon/0.6/kernel_modifications.html",headers:[{level:2,title:"Update Kernel",slug:"update-kernel"},{level:2,title:"Confirm Kernel",slug:"confirm-kernel"},{level:2,title:"Set Default Boot",slug:"set-default-boot"},{level:2,title:"Boot from hard disk",slug:"boot-from-hard-disk"}]},{title:"Standalone SFTP Server",frontmatter:{},regularPath:"/daemon/0.6/standalone_sftp.html",relativePath:"daemon/0.6/standalone_sftp.md",key:"v-6f0eac21",path:"/daemon/0.6/standalone_sftp.html",headers:[{level:2,title:"Disable Daemon's Server",slug:"disable-daemon-s-server"},{level:2,title:"Run the Standalone Server",slug:"run-the-standalone-server"},{level:3,title:"Start the Server",slug:"start-the-server"},{level:2,title:"Daemonize Server",slug:"daemonize-server"},{level:3,title:"Customizing Startup",slug:"customizing-startup"}]},{title:"Upgrading 0.4.X to 0.5.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.4_to_0.5.html",relativePath:"daemon/0.6/upgrade/0.4_to_0.5.md",key:"v-481dea23",path:"/daemon/0.6/upgrade/0.4_to_0.5.html",headers:[{level:2,title:"Docker Adjustments",slug:"docker-adjustments"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"SFTP Cleanup",slug:"sftp-cleanup"},{level:2,title:"File Migration",slug:"file-migration"},{level:3,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.5 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5.html",relativePath:"daemon/0.6/upgrade/0.5.md",key:"v-15b388aa",path:"/daemon/0.6/upgrade/0.5.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading 0.5.X to 0.6.X",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.5_to_0.6.html",relativePath:"daemon/0.6/upgrade/0.5_to_0.6.md",key:"v-8a6363ba",path:"/daemon/0.6/upgrade/0.5_to_0.6.html",headers:[{level:2,title:"Breaking Changes",slug:"breaking-changes"},{level:2,title:"Download Files",slug:"download-files"},{level:3,title:"Start the Daemon",slug:"start-the-daemon"},{level:2,title:"Rebuild Containers",slug:"rebuild-containers"}]},{title:"Upgrading 0.6 Series",frontmatter:{},regularPath:"/daemon/0.6/upgrade/0.6.html",relativePath:"daemon/0.6/upgrade/0.6.md",key:"v-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",headers:[{level:2,title:"Download Newest Release",slug:"download-newest-release"},{level:2,title:"Update Components",slug:"update-components"}]},{title:"Upgrading",frontmatter:{},regularPath:"/daemon/0.6/upgrading.html",relativePath:"daemon/0.6/upgrading.md",key:"v-29055241",path:"/daemon/0.6/upgrading.html",headers:[{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Using Mounts",frontmatter:{},regularPath:"/guides/mounts.html",relativePath:"guides/mounts.md",key:"v-c0e60bfa",path:"/guides/mounts.html",headers:[{level:2,title:"Wings Configuration",slug:"wings-configuration"},{level:2,title:"Panel Configuration",slug:"panel-configuration"},{level:3,title:"Creating a Mount",slug:"creating-a-mount"},{level:3,title:"Assigning a Mount to a Server",slug:"assigning-a-mount-to-a-server"},{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:{},regularPath:"/panel/0.7/configuration.html",relativePath:"panel/0.7/configuration.md",key:"v-019cb63a",path:"/panel/0.7/configuration.html",headers:[{level:2,title:"Reporting All Exceptions",slug:"reporting-all-exceptions"},{level:2,title:"Client Databases",slug:"client-databases"},{level:2,title:"Reverse Proxy Setup",slug:"reverse-proxy-setup"},{level:3,title:"NGINX Specific Configuration",slug:"nginx-specific-configuration"},{level:3,title:"Cloudflare Specific Configuration",slug:"cloudflare-specific-configuration"},{level:2,title:"Increasing the Editable File Size",slug:"increasing-the-editable-file-size"},{level:2,title:"Disable or Modify ReCaptcha",slug:"disable-or-modify-recaptcha"},{level:3,title:"Using Your Own Keys",slug:"using-your-own-keys"}]},{title:"Getting Started",frontmatter:{},regularPath:"/panel/0.7/getting_started.html",relativePath:"panel/0.7/getting_started.md",key:"v-7ffeb723",path:"/panel/0.7/getting_started.html",headers:[{level:2,title:"Picking a Server OS",slug:"picking-a-server-os"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Example Dependency Installation",slug:"example-dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:2,title:"Download Files",slug:"download-files"},{level:2,title:"Installation",slug:"installation"},{level:3,title:"Environment Configuration",slug:"environment-configuration"},{level:3,title:"Database Setup",slug:"database-setup"},{level:3,title:"Add The First User",slug:"add-the-first-user"},{level:3,title:"Set Permissions",slug:"set-permissions"},{level:2,title:"Queue Listeners",slug:"queue-listeners"},{level:3,title:"Crontab Configuration",slug:"crontab-configuration"},{level:3,title:"Create Queue Worker",slug:"create-queue-worker"}]},{title:"Troubleshooting",frontmatter:{},regularPath:"/panel/0.7/troubleshooting.html",relativePath:"panel/0.7/troubleshooting.md",key:"v-9478f2ba",path:"/panel/0.7/troubleshooting.html",headers:[{level:2,title:"Reading Error Logs",slug:"reading-error-logs"},{level:3,title:"Parsing the Error",slug:"parsing-the-error"},{level:3,title:"Understanding the Error",slug:"understanding-the-error"},{level:3,title:"Utilizing GREP",slug:"utilizing-grep"},{level:2,title:"Transfer Exceptions / XHR Poll Error",slug:"transfer-exceptions-xhr-poll-error"},{level:3,title:"Example Errors",slug:"example-errors"},{level:3,title:"Basic Debugging Steps",slug:"basic-debugging-steps"},{level:3,title:"More Advanced Debugging Steps",slug:"more-advanced-debugging-steps"},{level:2,title:"Invalid MAC Exception",slug:"invalid-mac-exception"},{level:2,title:"SELinux Issues",slug:"selinux-issues"},{level:3,title:"Redis Permissions Errors",slug:"redis-permissions-errors"},{level:3,title:"In case there is any weirdness with parts of the panel",slug:"in-case-there-is-any-weirdness-with-parts-of-the-panel"},{level:3,title:"Daemon Connection Errors",slug:"daemon-connection-errors"},{level:2,title:"FirewallD issues",slug:"firewalld-issues"},{level:2,title:"Database Errors",slug:"database-errors"},{level:3,title:"DatabaseController.php:142",slug:"databasecontroller-php-142"}]},{title:"Upgrading 0.6 to 0.7",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.6_to_0.7.html",relativePath:"panel/0.7/upgrade/0.6_to_0.7.md",key:"v-4f03fe0f",path:"/panel/0.7/upgrade/0.6_to_0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Clear Compiled Assets",slug:"clear-compiled-assets"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Update Environment",slug:"update-environment"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Cleanup API Keys",slug:"cleanup-api-keys"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading 0.7 Series",frontmatter:{},regularPath:"/panel/0.7/upgrade/0.7.html",relativePath:"panel/0.7/upgrade/0.7.md",key:"v-5baa92ba",path:"/panel/0.7/upgrade/0.7.html",headers:[{level:2,title:"Fetch Updated Files",slug:"fetch-updated-files"},{level:2,title:"Update Dependencies",slug:"update-dependencies"},{level:2,title:"Clear Compiled Template Cache",slug:"clear-compiled-template-cache"},{level:2,title:"Database Updates",slug:"database-updates"},{level:2,title:"Set Permissions",slug:"set-permissions"}]},{title:"Upgrading",frontmatter:{},regularPath:"/panel/0.7/upgrading.html",relativePath:"panel/0.7/upgrading.md",key:"v-c249e07a",path:"/panel/0.7/upgrading.html",headers:[{level:2,title:"Maintenance Mode",slug:"maintenance-mode"},{level:2,title:"Restarting Queue Workers",slug:"restarting-queue-workers"},{level:2,title:"Version Specific Guides",slug:"version-specific-guides"}]},{title:"Webserver Configuration",frontmatter:{},regularPath:"/panel/0.7/webserver_configuration.html",relativePath:"panel/0.7/webserver_configuration.md",key:"v-27941b23",path:"/panel/0.7/webserver_configuration.html",headers:[{level:2,title:"NGINX",slug:"nginx"},{level:3,title:"NGINX With SSL",slug:"nginx-with-ssl"},{level:3,title:"NGINX Without SSL",slug:"nginx-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:2,title:"Apache",slug:"apache"},{level:3,title:"Apache With SSL",slug:"apache-with-ssl"},{level:3,title:"Apache Without SSL",slug:"apache-without-ssl"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/panel/1.0/additional_configuration.html",relativePath:"panel/1.0/additional_configuration.md",key:"v-6f4baca5",path:"/panel/1.0/additional_configuration.html",headers:[{level:2,title:"Backups",slug:"backups"},{level:3,title:"Using 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:"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"}]},{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"}]},{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",slug:"obtaining-cloudflare-api-key"},{level:3,title:"Creating a Certificate",slug:"creating-a-certificate-2"},{level:3,title:"Auto Renewal",slug:"auto-renewal-2"}]},{title:"Setting up MySQL",frontmatter:{},regularPath:"/tutorials/mysql_setup.html",relativePath:"tutorials/mysql_setup.md",key:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",headers:[{level:2,title:"Creating a database for Pterodactyl",slug:"creating-a-database-for-pterodactyl"},{level:3,title:"Logging In",slug:"logging-in"},{level:3,title:"Creating a user",slug:"creating-a-user"},{level:3,title:"Create a database",slug:"create-a-database"},{level:3,title:"Assigning permissions",slug:"assigning-permissions"},{level:2,title:"Creating a Database Host for Nodes",slug:"creating-a-database-host-for-nodes"},{level:3,title:"Creating a user",slug:"creating-a-user-2"},{level:3,title:"Assigning permissions",slug:"assigning-permissions-2"},{level:3,title:"Allowing external database access",slug:"allowing-external-database-access"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/wings/1.0/configuration.html",relativePath:"wings/1.0/configuration.md",key:"v-6cd19ba3",path:"/wings/1.0/configuration.html",headers:[{level:2,title:"Private Registries",slug:"private-registries"},{level:3,title:"Available Keys",slug:"available-keys"},{level:3,title:"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/debian10.md","/community/installation-guides/panel/debian11.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian10.md","/community/installation-guides/wings/debian11.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"]}]}}},Le=(n(300),n(302),n(303),n(181),n(74),n(107));function Re(){for(var t="/",e=new RegExp(t+"{1,}","g"),n=arguments.length,r=new Array(n),i=0;i2&&void 0!==arguments[2]?arguments[2]:o.a;Qt(e),n.$vuepress.$set("siteData",e);var r=t(n.$vuepress.$get("siteData")),i=new r,a=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(i)),s={};return Object.keys(a).reduce((function(t,e){return e.startsWith("$")&&(t[e]=a[e].get),t}),s),{computed:s}}((function(t){return function(){function e(){Ue(this,e)}return Be(e,[{key:"setPage",value:function(t){this.__page=t}},{key:"$site",get:function(){return t}},{key:"$themeConfig",get:function(){return this.$site.themeConfig}},{key:"$frontmatter",get:function(){return this.$page.frontmatter}},{key:"$localeConfig",get:function(){var t,e,n=this.$site.locales,r=void 0===n?{}:n;for(var i in r)"/"===i?e=r[i]:0===this.$page.path.indexOf(i)&&(t=r[i]);return t||e||{}}},{key:"$siteTitle",get:function(){return this.$localeConfig.title||this.$site.title||""}},{key:"$canonicalUrl",get:function(){var t=this.$page.frontmatter.canonicalUrl;return"string"==typeof t&&t}},{key:"$title",get:function(){var t=this.$page,e=this.$page.frontmatter.metaTitle;if("string"==typeof e)return e;var n=this.$siteTitle,r=t.frontmatter.home?null:t.frontmatter.title||t.title;return n?r?r+" | "+n:n:r||"VuePress"}},{key:"$description",get:function(){var t=function(t){if(t){var e=t.filter((function(t){return"description"===t.name}))[0];if(e)return e.content}}(this.$page.frontmatter.meta);return t||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}},{key:"$lang",get:function(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}},{key:"$localePath",get:function(){return this.$localeConfig.path||"/"}},{key:"$themeLocaleConfig",get:function(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}},{key:"$page",get:function(){return this.__page?this.__page:function(t,e){for(var n=0;n - + @@ -41,6 +41,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 83374365..7fd6ffec 100644 --- a/community/config/eggs/creating_a_custom_egg.html +++ b/community/config/eggs/creating_a_custom_egg.html @@ -15,7 +15,7 @@ - + @@ -117,6 +117,6 @@ regex as any letters or numbers (\w\d) including underscore (Debian 11
    - + diff --git a/community/config/eggs/creating_a_custom_image.html b/community/config/eggs/creating_a_custom_image.html index 331b5401..c5e67634 100644 --- a/community/config/eggs/creating_a_custom_image.html +++ b/community/config/eggs/creating_a_custom_image.html @@ -15,7 +15,7 @@ - + @@ -102,6 +102,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 b0f5ce72..dd93c5bd 100644 --- a/community/config/nodes/add_node.html +++ b/community/config/nodes/add_node.html @@ -15,7 +15,7 @@ - + @@ -50,6 +50,6 @@ for more information, or try one of the community guides for Minecraft
    - + diff --git a/community/customization/panel.html b/community/customization/panel.html index c3fc80e0..7b62de0c 100644 --- a/community/customization/panel.html +++ b/community/customization/panel.html @@ -15,7 +15,7 @@ - + @@ -56,6 +56,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 801423a6..1786b4dc 100644 --- a/community/customization/wings.html +++ b/community/customization/wings.html @@ -15,7 +15,7 @@ - + @@ -49,6 +49,6 @@ systemctl start wings
    - + diff --git a/community/games/minecraft.html b/community/games/minecraft.html index c917ac6a..28a976de 100644 --- a/community/games/minecraft.html +++ b/community/games/minecraft.html @@ -15,7 +15,7 @@ - + @@ -43,6 +43,6 @@ ← Creating a Custom Docker Image
    - + diff --git a/community/installation-guides/panel/centos7.html b/community/installation-guides/panel/centos7.html index 6012d2c9..d56bcba2 100644 --- a/community/installation-guides/panel/centos7.html +++ b/community/installation-guides/panel/centos7.html @@ -15,7 +15,7 @@ - + @@ -172,6 +172,6 @@ server { ← Community Guides and Tutorials
    - + diff --git a/community/installation-guides/panel/centos8.html b/community/installation-guides/panel/centos8.html index 05186be7..fb9e8f6d 100644 --- a/community/installation-guides/panel/centos8.html +++ b/community/installation-guides/panel/centos8.html @@ -15,7 +15,7 @@ - + @@ -154,6 +154,6 @@ server { ← CentOS 7
    - + diff --git a/community/installation-guides/panel/debian10.html b/community/installation-guides/panel/debian10.html index 3e3cd6c9..a667611e 100644 --- a/community/installation-guides/panel/debian10.html +++ b/community/installation-guides/panel/debian10.html @@ -15,7 +15,7 @@ - + @@ -139,6 +139,6 @@ server { ← CentOS 8, Rocky Linux 8, AlmaLinux 8
    - + diff --git a/community/installation-guides/panel/debian11.html b/community/installation-guides/panel/debian11.html index fba295f6..c72454db 100644 --- a/community/installation-guides/panel/debian11.html +++ b/community/installation-guides/panel/debian11.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,6 @@ need composer installed before continuing in this process.

    Debian 10
    - + diff --git a/community/installation-guides/panel/ubuntu1804.html b/community/installation-guides/panel/ubuntu1804.html index 7aabbfb8..f3e4633e 100644 --- a/community/installation-guides/panel/ubuntu1804.html +++ b/community/installation-guides/panel/ubuntu1804.html @@ -15,7 +15,7 @@ - + @@ -130,6 +130,6 @@ server { }

    # Redis Setup

    The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into running another Redis instance (opens new window).

    # Installing the Panel

    Excellent, we now have all of the required dependencies installed and configured. From here, follow the official Panel installation documentation.

    - + diff --git a/community/installation-guides/panel/ubuntu2004.html b/community/installation-guides/panel/ubuntu2004.html index 90878e86..7d0b32e8 100644 --- a/community/installation-guides/panel/ubuntu2004.html +++ b/community/installation-guides/panel/ubuntu2004.html @@ -15,7 +15,7 @@ - + @@ -64,6 +64,6 @@ commands below.

    # Nginx Configuration 

    Follow this guide to setup Nginx for Pterodactyl, choose whether to use Nginx with or without SSL.

    # Redis Setup

    The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into running another Redis instance (opens new window).

    # Installing the Panel

    Excellent, we now have all of the required dependencies installed and configured. From here, follow the official Panel installation documentation.

    - + diff --git a/community/installation-guides/wings/centos7.html b/community/installation-guides/wings/centos7.html index 496c9b79..8a929480 100644 --- a/community/installation-guides/wings/centos7.html +++ b/community/installation-guides/wings/centos7.html @@ -15,7 +15,7 @@ - + @@ -58,6 +58,6 @@ firewall-cmd --reload ← Debian 11
    - + diff --git a/community/installation-guides/wings/centos8.html b/community/installation-guides/wings/centos8.html index 9bcca45c..93cc0978 100644 --- a/community/installation-guides/wings/centos8.html +++ b/community/installation-guides/wings/centos8.html @@ -15,7 +15,7 @@ - + @@ -58,6 +58,6 @@ firewall-cmd --reload ← CentOS 7
    - + diff --git a/community/installation-guides/wings/debian10.html b/community/installation-guides/wings/debian10.html index d4991b57..650a5972 100644 --- a/community/installation-guides/wings/debian10.html +++ b/community/installation-guides/wings/debian10.html @@ -15,7 +15,7 @@ - + @@ -57,6 +57,6 @@ systemctl start docker ← CentOS 8, Rocky Linux 8, AlmaLinux 8
    - + diff --git a/community/installation-guides/wings/debian11.html b/community/installation-guides/wings/debian11.html index 027a1bcc..de842fa2 100644 --- a/community/installation-guides/wings/debian11.html +++ b/community/installation-guides/wings/debian11.html @@ -15,7 +15,7 @@ - + @@ -41,6 +41,6 @@ ← Debian 10
    - + diff --git a/community/installation-guides/wings/ubuntu1804.html b/community/installation-guides/wings/ubuntu1804.html index 5c3c68ec..d9ba061a 100644 --- a/community/installation-guides/wings/ubuntu1804.html +++ b/community/installation-guides/wings/ubuntu1804.html @@ -15,7 +15,7 @@ - + @@ -44,6 +44,6 @@ systemctl enable docker systemctl start docker

    # Installing Wings

    Great, now all of the dependencies and firewall rules have been dealt with. From here follow the official Wings installation documentation.

    - + diff --git a/community/installation-guides/wings/ubuntu2004.html b/community/installation-guides/wings/ubuntu2004.html index 776723fc..966f0bd3 100644 --- a/community/installation-guides/wings/ubuntu2004.html +++ b/community/installation-guides/wings/ubuntu2004.html @@ -15,7 +15,7 @@ - + @@ -44,6 +44,6 @@ systemctl enable docker systemctl start docker

    # Installing Wings

    Great, now all of the dependencies and firewall rules have been dealt with. From here follow the official Wings installation documentation.

    - + diff --git a/community/tutorials/artisan.html b/community/tutorials/artisan.html index b7d3a437..59291518 100644 --- a/community/tutorials/artisan.html +++ b/community/tutorials/artisan.html @@ -15,7 +15,7 @@ - + @@ -64,6 +64,6 @@ ← Creating a New Node
    - + diff --git a/daemon/0.6/configuration.html b/daemon/0.6/configuration.html index 55c98338..ec684d84 100644 --- a/daemon/0.6/configuration.html +++ b/daemon/0.6/configuration.html @@ -15,7 +15,7 @@ - + @@ -99,6 +99,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 ceadfa14..b300118c 100644 --- a/daemon/0.6/debian_8_docker.html +++ b/daemon/0.6/debian_8_docker.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,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 bbf2b950..2b199025 100644 --- a/daemon/0.6/installing.html +++ b/daemon/0.6/installing.html @@ -15,7 +15,7 @@ - + @@ -106,6 +106,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 fd4b7cb9..6efc5816 100644 --- a/daemon/0.6/kernel_modifications.html +++ b/daemon/0.6/kernel_modifications.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,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 9b40b54b..4b3c281a 100644 --- a/daemon/0.6/standalone_sftp.html +++ b/daemon/0.6/standalone_sftp.html @@ -15,7 +15,7 @@ - + @@ -86,6 +86,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 ce035733..31bbe8ef 100644 --- a/daemon/0.6/upgrade/0.4_to_0.5.html +++ b/daemon/0.6/upgrade/0.4_to_0.5.html @@ -15,7 +15,7 @@ - + @@ -77,6 +77,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 8eef1acf..87de9514 100644 --- a/daemon/0.6/upgrade/0.5.html +++ b/daemon/0.6/upgrade/0.5.html @@ -15,7 +15,7 @@ - + @@ -54,6 +54,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 ddd0f173..75ba881b 100644 --- a/daemon/0.6/upgrade/0.5_to_0.6.html +++ b/daemon/0.6/upgrade/0.5_to_0.6.html @@ -15,7 +15,7 @@ - + @@ -64,6 +64,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 d9ec1313..9fcb320f 100644 --- a/daemon/0.6/upgrade/0.6.html +++ b/daemon/0.6/upgrade/0.6.html @@ -15,7 +15,7 @@ - + @@ -56,6 +56,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 ab9f4e61..f20b66c7 100644 --- a/daemon/0.6/upgrading.html +++ b/daemon/0.6/upgrading.html @@ -15,7 +15,7 @@ - + @@ -48,6 +48,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 dfaf5bd3..19f391ea 100644 --- a/guides/mounts.html +++ b/guides/mounts.html @@ -15,7 +15,7 @@ - + @@ -53,6 +53,6 @@

    - + diff --git a/guides/php_upgrade.html b/guides/php_upgrade.html index 239d64aa..f46c8578 100644 --- a/guides/php_upgrade.html +++ b/guides/php_upgrade.html @@ -15,7 +15,7 @@ - + @@ -64,6 +64,6 @@ a2dismod php* a2enmod php8.1

    # Return to the 1.X.X Upgrade Guide

    - + diff --git a/index.html b/index.html index ca3c7e3d..70591a3c 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@ - + @@ -59,6 +59,6 @@ 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 579952a3..d107ebca 100644 --- a/panel/0.7/configuration.html +++ b/panel/0.7/configuration.html @@ -15,7 +15,7 @@ - + @@ -82,6 +82,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 13a6ebd4..8a583069 100644 --- a/panel/0.7/getting_started.html +++ b/panel/0.7/getting_started.html @@ -15,7 +15,7 @@ - + @@ -142,6 +142,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 22113dde..c2cdfd7c 100644 --- a/panel/0.7/troubleshooting.html +++ b/panel/0.7/troubleshooting.html @@ -15,7 +15,7 @@ - + @@ -96,6 +96,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 1b767bfb..7589d61c 100644 --- a/panel/0.7/upgrade/0.6_to_0.7.html +++ b/panel/0.7/upgrade/0.6_to_0.7.html @@ -15,7 +15,7 @@ - + @@ -83,6 +83,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 ebc1cf54..a197c2ee 100644 --- a/panel/0.7/upgrade/0.7.html +++ b/panel/0.7/upgrade/0.7.html @@ -15,7 +15,7 @@ - + @@ -73,6 +73,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 5415da6d..4c038927 100644 --- a/panel/0.7/upgrading.html +++ b/panel/0.7/upgrading.html @@ -15,7 +15,7 @@ - + @@ -55,6 +55,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 5679b6d0..c7bb7d94 100644 --- a/panel/0.7/webserver_configuration.html +++ b/panel/0.7/webserver_configuration.html @@ -15,7 +15,7 @@ - + @@ -212,6 +212,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 79f901be..280a2070 100644 --- a/panel/1.0/additional_configuration.html +++ b/panel/1.0/additional_configuration.html @@ -15,7 +15,7 @@ - + @@ -92,14 +92,14 @@ server.

    Currently, all telemetry collection logic is handled by the

    # What data is collected?

    If you wish to see the full data that is collected, please look at the TelemetryCollectionService (as linked above), or use the php artisan p:telemetry command to view the exact data that will -be sent to the remote server.

    As of 2022-12-01, the data collected consists of:

    • Unique identifier for the Panel
    • Version of the Panel
    • PHP version
    • Backup storage driver (S3, Local, etc.)
    • Cache driver (Redis, Memcached, etc.)
    • Database driver and version (MySQL, MariaDB, PostgreSQL, etc.)
    • Resources +be sent to the remote server.

      As of 2022-12-12, the data collected consists of:

      • Unique identifier for the Panel
      • Version of the Panel
      • PHP version
      • Backup storage driver (S3, Local, etc.)
      • Cache driver (Redis, Memcached, etc.)
      • Database driver and version (MySQL, MariaDB, PostgreSQL, etc.)
      • Resources
        • Allocations
          • Total number
          • Total number of used allocations (assigned to a server)
        • Backups
          • Total number
          • Sum of the total amount of bytes stored by backups
        • Eggs -
          • Total number
          • Map of egg UUIDs to the number of servers using that egg
        • Locations +
          • Total number
          • Map of egg UUIDs to the number of servers using that egg (removed in 1.11.2)
        • Locations
          • Total number
        • Mounts
          • Total number
        • Nests -
          • Total number
          • Map of nest UUIDs to the number of servers using eggs in that nest
        • Nodes +
          • Total number
          • Map of nest UUIDs to the number of servers using eggs in that nest (removed in 1.11.2)
        • Nodes
          • Total number
        • Servers
          • Total number
          • Number of servers that are suspended
        • Users
          • Total number
          • Number of users that are admins
      • Nodes @@ -109,11 +109,11 @@ be sent to the remote server.

        As of 2022-12-01, the data collected consis

        • Total
        • Running
        • Paused
        • Stopped
      • Storage
        • Driver
        • Filesystem
      • runc
        • Version
    • System -
      • Architecture (amd64, arm64, etc.)
      • CPU Threads
      • Memory Bytes
      • Kernel Version
      • Operating System (Debian, Fedora, RHEL, Ubuntu, etc.)
      • Operating System Type (bsd, linux, windows, etc.)

    # How is the data stored?

    Currently, the data is stored with Cloudflare, exact specifics about the format and products used -is not available at this time as our implementation is still very much an alpha. Right now, there -is NO way to query or view this information, both for project team members and the public. We -expect this to change in the future, but for now we are not making any guarantees about the data -being publicly available.

    # Why?

    The primary reason for collecting this data is to help us make better decisions about the future of +

    • Architecture (amd64, arm64, etc.)
    • CPU Threads
    • Memory Bytes
    • Kernel Version
    • Operating System (Debian, Fedora, RHEL, Ubuntu, etc.)
    • Operating System Type (bsd, linux, windows, etc.)

    # How is the data stored?

    Currently, the data is stored with Cloudflare, we ingest all telemetry data with a Worker which does +basic processing such as validation and then inserts it into Cloudflare D1. Right now, there is not +an API or visualization for any of the data collected, and it can only be manually queried. Only +Matthew is able to query the data at this time, but we are working on alternatives to make this data +more accessible.

    # Why?

    The primary reason for collecting this data is to help us make better decisions about the future of this software. With the release of 1.11, the minimum PHP version requirement jumped from 7.4 to 8.0, however, we wanted to add a feature that required PHP 8.1 which would've made the version requirement jump larger and potentially cause issues for some users. By collecting this data, we can hopefully @@ -130,8 +130,10 @@ better understand how the software is being used.

    If you have any questio Our goal is to be as transparent as possible, and we want to make sure that the community understands what we are doing and why.

    # Enabling Telemetry

    Telemetry is enabled by default, if you want to enable it after disabling it, edit your .env file and either remove the PTERODACTYL_TELEMETRY_ENABLED line, or set it to true.

    PTERODACTYL_TELEMETRY_ENABLED=true
    -

    # 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 enable telemetry, optionally with +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 833d27e1..75eb7416 100644 --- a/panel/1.0/getting_started.html +++ b/panel/1.0/getting_started.html @@ -15,7 +15,7 @@ - + @@ -152,6 +152,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 a0f14a62..e4df4699 100644 --- a/panel/1.0/legacy_upgrade.html +++ b/panel/1.0/legacy_upgrade.html @@ -15,7 +15,7 @@ - + @@ -95,6 +95,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 b33f97db..26874f52 100644 --- a/panel/1.0/troubleshooting.html +++ b/panel/1.0/troubleshooting.html @@ -15,7 +15,7 @@ - + @@ -94,6 +94,6 @@ semodule -i http_port_t.pp

    # 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 45ce16e3..b7922060 100644 --- a/panel/1.0/updating.html +++ b/panel/1.0/updating.html @@ -15,7 +15,7 @@ - + @@ -95,6 +95,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 cc922796..4230bcf3 100644 --- a/panel/1.0/webserver_configuration.html +++ b/panel/1.0/webserver_configuration.html @@ -15,7 +15,7 @@ - + @@ -227,6 +227,6 @@ below! You only need to run systemctl restart httpd.

    sudo a2enmod rewrite sudo systemctl restart apache2

    # Next Step: Wings Installation

    - + diff --git a/project/about.html b/project/about.html index 3069ecef..0c1d7c99 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 0b6e37aa..25581d62 100644 --- a/project/community.html +++ b/project/community.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,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 ddc37eab..f8d3459e 100644 --- a/project/introduction.html +++ b/project/introduction.html @@ -15,7 +15,7 @@ - + @@ -55,6 +55,6 @@ code base and hunt for security issues. If you come across anything that raises hesitate to reach out directly to support@pterodactyl.io. We ask that you please be responsible when disclosing any security concerns and do not report them on our public facing bug tracker.

    - + diff --git a/project/terms.html b/project/terms.html index bbb3a716..90448683 100644 --- a/project/terms.html +++ b/project/terms.html @@ -15,7 +15,7 @@ - + @@ -53,6 +53,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 729798c8..b27f323a 100644 --- a/tutorials/creating_ssl_certificates.html +++ b/tutorials/creating_ssl_certificates.html @@ -15,7 +15,7 @@ - + @@ -86,6 +86,6 @@ This can be easily fixed by renewing the SSL certificate, although using the com ← Setting up MySQL
    - + diff --git a/tutorials/mysql_setup.html b/tutorials/mysql_setup.html index 590f194f..59228900 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 ea462fff..8397c3de 100644 --- a/wings/1.0/configuration.html +++ b/wings/1.0/configuration.html @@ -15,7 +15,7 @@ - + @@ -73,6 +73,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 7efc8330..9f7d63e8 100644 --- a/wings/1.0/installing.html +++ b/wings/1.0/installing.html @@ -15,7 +15,7 @@ - + @@ -93,6 +93,6 @@ RestartSec=5s WantedBy=multi-user.target

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

    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 7cb76f35..6614e29a 100644 --- a/wings/1.0/migrating.html +++ b/wings/1.0/migrating.html @@ -15,7 +15,7 @@ - + @@ -95,6 +95,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 0360fd26..0433d7b8 100644 --- a/wings/1.0/upgrading.html +++ b/wings/1.0/upgrading.html @@ -15,7 +15,7 @@ - + @@ -54,6 +54,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
     
    - +