diff --git a/404.html b/404.html index ba42fbdd5..cec0b94d5 100644 --- a/404.html +++ b/404.html @@ -15,7 +15,7 @@ - + @@ -46,6 +46,6 @@ current

  • - + diff --git a/assets/js/29.d8f8baa4.js b/assets/js/29.34880c0e.js similarity index 79% rename from assets/js/29.d8f8baa4.js rename to assets/js/29.34880c0e.js index c4d880bd5..f81606688 100644 --- a/assets/js/29.d8f8baa4.js +++ b/assets/js/29.34880c0e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{370:function(t,e,n){"use strict";n.r(e);var s=n(48),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{369:function(t,e,n){"use strict";n.r(e);var s=n(48),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/30.61a90133.js b/assets/js/30.7acbd17e.js similarity index 79% rename from assets/js/30.61a90133.js rename to assets/js/30.7acbd17e.js index c450d1973..fda3b0f28 100644 --- a/assets/js/30.61a90133.js +++ b/assets/js/30.7acbd17e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{369:function(t,e,n){"use strict";n.r(e);var s=n(48),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{371:function(t,e,n){"use strict";n.r(e);var s=n(48),l=Object(s.a)({},(function(){var t=this.$createElement;return(this._self._c||t)("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}})}),[],!1,null,null,null);e.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/31.d561e4f4.js b/assets/js/31.6cbb938e.js similarity index 93% rename from assets/js/31.d561e4f4.js rename to assets/js/31.6cbb938e.js index cf7ec8540..581501fc1 100644 --- a/assets/js/31.d561e4f4.js +++ b/assets/js/31.6cbb938e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{371:function(t,e,o){"use strict";o.r(e);var a=o(48),i=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"community-guides-and-tutorials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-guides-and-tutorials"}},[t._v("#")]),t._v(" Community Guides and Tutorials")]),t._v(" "),o("h2",{attrs:{id:"about"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),o("p",[t._v("This section of Pterodactyl's site is dedicated to more complex topics, tutorials, and features that we\nfeel are important to share with the community, but do not fit into the theme of our core documentation.")]),t._v(" "),o("p",[t._v("Here you'll find in-depth OS-specific installation guides, advanced network configurations, individual game\nsetup instructions, and so much more.")])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{370:function(t,e,o){"use strict";o.r(e);var a=o(48),i=Object(a.a)({},(function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[o("h1",{attrs:{id:"community-guides-and-tutorials"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#community-guides-and-tutorials"}},[t._v("#")]),t._v(" Community Guides and Tutorials")]),t._v(" "),o("h2",{attrs:{id:"about"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[t._v("#")]),t._v(" About")]),t._v(" "),o("p",[t._v("This section of Pterodactyl's site is dedicated to more complex topics, tutorials, and features that we\nfeel are important to share with the community, but do not fit into the theme of our core documentation.")]),t._v(" "),o("p",[t._v("Here you'll find in-depth OS-specific installation guides, advanced network configurations, individual game\nsetup instructions, and so much more.")])])}),[],!1,null,null,null);e.default=i.exports}}]); \ No newline at end of file diff --git a/assets/js/36.bba29a49.js b/assets/js/36.e7b7e83e.js similarity index 99% rename from assets/js/36.bba29a49.js rename to assets/js/36.e7b7e83e.js index 5ab077dd0..50efe005d 100644 --- a/assets/js/36.bba29a49.js +++ b/assets/js/36.e7b7e83e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{382:function(t,e,a){"use strict";a.r(e);var s=a(48),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"centos-8-rocky-linux-8-almalinux-8-fedora-server-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centos-8-rocky-linux-8-almalinux-8-fedora-server-38"}},[t._v("#")]),t._v(" CentOS 8, Rocky Linux 8, AlmaLinux 8, Fedora Server 38")]),t._v(" "),a("p",[t._v("In this guide we will install Pterodactyl v1.X — including all of it's dependencies — and configure our webserver to serve it using SSL.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#install-requirements-and-additional-utilities"}},[t._v("Install Requirements and Additional Utilities")]),a("ul",[a("li",[a("a",{attrs:{href:"#selinux-tools"}},[t._v("SELinux tools")])]),a("li",[a("a",{attrs:{href:"#mariadb"}},[t._v("MariaDB")])]),a("li",[a("a",{attrs:{href:"#php-8-0"}},[t._v("PHP 8.0")])]),a("li",[a("a",{attrs:{href:"#if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"}},[t._v("If using Fedora Server 38 install PHP 8.1 and Dependencies from this section. If not, skip this section.")])]),a("li",[a("a",{attrs:{href:"#composer"}},[t._v("Composer")])])])]),a("li",[a("a",{attrs:{href:"#install-utility-packages"}},[t._v("Install Utility Packages")]),a("ul",[a("li",[a("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),a("li",[a("a",{attrs:{href:"#redis"}},[t._v("Redis")])])])]),a("li",[a("a",{attrs:{href:"#server-configuration"}},[t._v("Server Configuration")]),a("ul",[a("li",[a("a",{attrs:{href:"#configuring-mariadb"}},[t._v("Configuring MariaDB")])]),a("li",[a("a",{attrs:{href:"#setup-php"}},[t._v("Setup PHP")])]),a("li",[a("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),a("li",[a("a",{attrs:{href:"#redis-setup"}},[t._v("Redis Setup")])])])]),a("li",[a("a",{attrs:{href:"#installing-the-panel"}},[t._v("Installing the Panel")])])])]),a("p"),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This guide is based off the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Enterprise Linux 8.")],1)]),t._v(" "),a("h2",{attrs:{id:"install-requirements-and-additional-utilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements-and-additional-utilities"}},[t._v("#")]),t._v(" Install Requirements and Additional Utilities")]),t._v(" "),a("p",[t._v("We will install all of Pterodactyl's "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#dependencies"}},[t._v("required")]),t._v(" dependencies and a few aditional utilities.")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you run "),a("code",[t._v("sestatus")]),t._v(" and it shows "),a("code",[t._v("SELinux status: enabled")]),t._v(" you should install the following packages for later")])]),t._v(" "),a("h3",{attrs:{id:"selinux-tools"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#selinux-tools"}},[t._v("#")]),t._v(" SELinux tools")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y policycoreutils selinux-policy selinux-policy-targeted setroubleshoot-server setools setools-console mcstrans\n")])])]),a("h3",{attrs:{id:"mariadb"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mariadb"}},[t._v("#")]),t._v(" MariaDB")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y mariadb mariadb-server\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Start maraidb")]),t._v("\nsystemctl start mariadb\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" mariadb\n")])])]),a("h3",{attrs:{id:"php-8-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#php-8-0"}},[t._v("#")]),t._v(" PHP 8.0")]),t._v(" "),a("p",[t._v("We recommend the remi repo to get the latest php packages. (Skip to next section if on Fedora 38)")]),t._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"}},[t._v("## Install Repos")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" epel-release\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" https://rpms.remirepo.net/enterprise/remi-release-8.rpm\ndnf module "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php:remi-8.0\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get dnf updates")]),t._v("\ndnf update -y\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install PHP 8.0")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y php php-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("common,fpm,cli,json,mysqlnd,gd,mbstring,pdo,zip,bcmath,dom,opcache"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"}},[t._v("#")]),t._v(" If using Fedora Server 38 install PHP 8.1 and Dependencies from this section. If not, skip this section.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" https://rpms.remirepo.net/fedora/remi-release-38.rpm\ndnf module "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php:remi-8.1\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" php php-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("common,fpm,cli,json,mysqlnd,gd,mbstring,pdo,zip,bcmath,dom,opcache,process"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#composer"}},[t._v("#")]),t._v(" Composer")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("zip")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unzip")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Required for Composer")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("composer\n")])])]),a("h2",{attrs:{id:"install-utility-packages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-utility-packages"}},[t._v("#")]),t._v(" Install Utility Packages")]),t._v(" "),a("h3",{attrs:{id:"nginx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nginx\n\nfirewall-cmd --add-service"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http --permanent\nfirewall-cmd --add-service"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("https --permanent \nfirewall-cmd --reload\n")])])]),a("h3",{attrs:{id:"redis"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#redis"}},[t._v("#")]),t._v(" Redis")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y redis\n\nsystemctl start redis\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" redis\n")])])]),a("h4",{attrs:{id:"selinux-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#selinux-commands"}},[t._v("#")]),t._v(" SELinux commands")]),t._v(" "),a("p",[t._v("The following command will allow nginx to work with redis and")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("setsebool -P httpd_can_network_connect "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\nsetsebool -P httpd_execmem "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\nsetsebool -P httpd_unified "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),a("h2",{attrs:{id:"server-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[t._v("#")]),t._v(" Server Configuration")]),t._v(" "),a("p",[t._v("This following section covers the configuration of parts of the server to run the panel.")]),t._v(" "),a("h3",{attrs:{id:"configuring-mariadb"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuring-mariadb"}},[t._v("#")]),t._v(" Configuring MariaDB")]),t._v(" "),a("p",[t._v("The fastest way to set up mariadb is to use the "),a("code",[t._v("mysql_secure_installation")]),t._v(" command and follow prompts")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("mysql_secure_installation\n")])])]),a("p",[t._v("The following are safe defaults.")]),t._v(" "),a("p",[t._v("Change to your own secure password"),a("br"),t._v(" "),a("code",[t._v("Set root password? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Get rid of users that could access the db by default"),a("br"),t._v(" "),a("code",[t._v("Remove anonymous users? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Keep root off the external interfaces"),a("br"),t._v(" "),a("code",[t._v("Disallow root login remotely? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Extra databases that aren't needed"),a("br"),t._v(" "),a("code",[t._v("Remove test database and access to it? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Clears and sets all the changes made"),a("br"),t._v(" "),a("code",[t._v("Reload privilege tables now? [Y/n] Y")])]),t._v(" "),a("p",[t._v("All done! If you've completed all of the above steps, your MariaDB"),a("br"),t._v("\ninstallation should now be secure.")]),t._v(" "),a("h4",{attrs:{id:"adding-mariadb-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-mariadb-user"}},[t._v("#")]),t._v(" Adding MariaDB user")]),t._v(" "),a("p",[t._v("To add your first user to the database, see our tutorial on "),a("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[t._v("setting up MySQL")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"setup-php"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup-php"}},[t._v("#")]),t._v(" Setup PHP")]),t._v(" "),a("p",[t._v("Place the contents below in a file inside the "),a("code",[t._v("/etc/php-fpm.d")]),t._v(" folder. The file can be named anything, but a good standard is "),a("code",[t._v("www-pterodactyl.conf")]),t._v(". This config will match the nginx config later in the guide.")]),t._v(" "),a("div",{staticClass:"language-conf extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("[pterodactyl]\n\nuser = nginx\ngroup = nginx\n\nlisten = /var/run/php-fpm/pterodactyl.sock\nlisten.owner = nginx\nlisten.group = nginx\nlisten.mode = 0750\n\npm = ondemand\npm.max_children = 9\npm.process_idle_timeout = 10s\npm.max_requests = 200")])])]),a("p",[t._v("Start and enable php-fpm on the system.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php-fpm\nsystemctl start php-fpm\n")])])]),a("h3",{attrs:{id:"nginx-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nginx-2"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),a("p",[t._v("Please check our "),a("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("tutorial")]),t._v(" on generating SSL certificates for more information.")],1),t._v(" "),a("h4",{attrs:{id:"ssl-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssl-configuration"}},[t._v("#")]),t._v(" SSL Configuration")]),t._v(" "),a("div",{staticClass:"language-conf extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('server_tokens off;\n\nserver {\n listen 80;\n server_name ;\n return 301 https://$server_name$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.php;\n\n access_log /var/log/nginx/pterodactyl.app-access.log;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n \n sendfile off;\n\n # SSL Configuration\n ssl_certificate /etc/letsencrypt/live//fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live//privkey.pem;\n ssl_session_cache shared:SSL:10m;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";\n ssl_prefer_server_ciphers on;\n\n # See https://hstspreload.org/ before uncommenting the line below.\n # add_header Strict-Transport-Security "max-age=15768000; preload;";\n add_header X-Content-Type-Options nosniff;\n add_header X-XSS-Protection "1; mode=block";\n add_header X-Robots-Tag none;\n add_header Content-Security-Policy "frame-ancestors \'self\'";\n add_header X-Frame-Options DENY;\n add_header Referrer-Policy same-origin;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/var/run/php-fpm/pterodactyl.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n include /etc/nginx/fastcgi_params;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}')])])]),a("h3",{attrs:{id:"redis-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#redis-setup"}},[t._v("#")]),t._v(" Redis Setup")]),t._v(" "),a("p",[t._v("The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into\n"),a("a",{attrs:{href:"https://community.pivotal.io/s/article/How-to-setup-and-run-multiple-Redis-server-instances-on-a-Linux-host",target:"_blank",rel:"noopener noreferrer"}},[t._v("running another Redis instance"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"installing-the-panel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[t._v("#")]),t._v(" Installing the Panel")]),t._v(" "),a("p",[t._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[t._v("official Panel installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{379:function(t,e,a){"use strict";a.r(e);var s=a(48),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"centos-8-rocky-linux-8-almalinux-8-fedora-server-38"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centos-8-rocky-linux-8-almalinux-8-fedora-server-38"}},[t._v("#")]),t._v(" CentOS 8, Rocky Linux 8, AlmaLinux 8, Fedora Server 38")]),t._v(" "),a("p",[t._v("In this guide we will install Pterodactyl v1.X — including all of it's dependencies — and configure our webserver to serve it using SSL.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#install-requirements-and-additional-utilities"}},[t._v("Install Requirements and Additional Utilities")]),a("ul",[a("li",[a("a",{attrs:{href:"#selinux-tools"}},[t._v("SELinux tools")])]),a("li",[a("a",{attrs:{href:"#mariadb"}},[t._v("MariaDB")])]),a("li",[a("a",{attrs:{href:"#php-8-0"}},[t._v("PHP 8.0")])]),a("li",[a("a",{attrs:{href:"#if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"}},[t._v("If using Fedora Server 38 install PHP 8.1 and Dependencies from this section. If not, skip this section.")])]),a("li",[a("a",{attrs:{href:"#composer"}},[t._v("Composer")])])])]),a("li",[a("a",{attrs:{href:"#install-utility-packages"}},[t._v("Install Utility Packages")]),a("ul",[a("li",[a("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),a("li",[a("a",{attrs:{href:"#redis"}},[t._v("Redis")])])])]),a("li",[a("a",{attrs:{href:"#server-configuration"}},[t._v("Server Configuration")]),a("ul",[a("li",[a("a",{attrs:{href:"#configuring-mariadb"}},[t._v("Configuring MariaDB")])]),a("li",[a("a",{attrs:{href:"#setup-php"}},[t._v("Setup PHP")])]),a("li",[a("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),a("li",[a("a",{attrs:{href:"#redis-setup"}},[t._v("Redis Setup")])])])]),a("li",[a("a",{attrs:{href:"#installing-the-panel"}},[t._v("Installing the Panel")])])])]),a("p"),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This guide is based off the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Enterprise Linux 8.")],1)]),t._v(" "),a("h2",{attrs:{id:"install-requirements-and-additional-utilities"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements-and-additional-utilities"}},[t._v("#")]),t._v(" Install Requirements and Additional Utilities")]),t._v(" "),a("p",[t._v("We will install all of Pterodactyl's "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#dependencies"}},[t._v("required")]),t._v(" dependencies and a few aditional utilities.")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you run "),a("code",[t._v("sestatus")]),t._v(" and it shows "),a("code",[t._v("SELinux status: enabled")]),t._v(" you should install the following packages for later")])]),t._v(" "),a("h3",{attrs:{id:"selinux-tools"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#selinux-tools"}},[t._v("#")]),t._v(" SELinux tools")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y policycoreutils selinux-policy selinux-policy-targeted setroubleshoot-server setools setools-console mcstrans\n")])])]),a("h3",{attrs:{id:"mariadb"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#mariadb"}},[t._v("#")]),t._v(" MariaDB")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y mariadb mariadb-server\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Start maraidb")]),t._v("\nsystemctl start mariadb\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" mariadb\n")])])]),a("h3",{attrs:{id:"php-8-0"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#php-8-0"}},[t._v("#")]),t._v(" PHP 8.0")]),t._v(" "),a("p",[t._v("We recommend the remi repo to get the latest php packages. (Skip to next section if on Fedora 38)")]),t._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"}},[t._v("## Install Repos")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" epel-release\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" https://rpms.remirepo.net/enterprise/remi-release-8.rpm\ndnf module "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php:remi-8.0\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get dnf updates")]),t._v("\ndnf update -y\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install PHP 8.0")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y php php-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("common,fpm,cli,json,mysqlnd,gd,mbstring,pdo,zip,bcmath,dom,opcache"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"}},[t._v("#")]),t._v(" If using Fedora Server 38 install PHP 8.1 and Dependencies from this section. If not, skip this section.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" https://rpms.remirepo.net/fedora/remi-release-38.rpm\ndnf module "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php:remi-8.1\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" php php-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("common,fpm,cli,json,mysqlnd,gd,mbstring,pdo,zip,bcmath,dom,opcache,process"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),a("h3",{attrs:{id:"composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#composer"}},[t._v("#")]),t._v(" Composer")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("zip")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("unzip")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Required for Composer")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("composer\n")])])]),a("h2",{attrs:{id:"install-utility-packages"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-utility-packages"}},[t._v("#")]),t._v(" Install Utility Packages")]),t._v(" "),a("h3",{attrs:{id:"nginx"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nginx\n\nfirewall-cmd --add-service"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("http --permanent\nfirewall-cmd --add-service"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("https --permanent \nfirewall-cmd --reload\n")])])]),a("h3",{attrs:{id:"redis"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#redis"}},[t._v("#")]),t._v(" Redis")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("dnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y redis\n\nsystemctl start redis\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" redis\n")])])]),a("h4",{attrs:{id:"selinux-commands"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#selinux-commands"}},[t._v("#")]),t._v(" SELinux commands")]),t._v(" "),a("p",[t._v("The following command will allow nginx to work with redis and")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("setsebool -P httpd_can_network_connect "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\nsetsebool -P httpd_execmem "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\nsetsebool -P httpd_unified "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n")])])]),a("h2",{attrs:{id:"server-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[t._v("#")]),t._v(" Server Configuration")]),t._v(" "),a("p",[t._v("This following section covers the configuration of parts of the server to run the panel.")]),t._v(" "),a("h3",{attrs:{id:"configuring-mariadb"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#configuring-mariadb"}},[t._v("#")]),t._v(" Configuring MariaDB")]),t._v(" "),a("p",[t._v("The fastest way to set up mariadb is to use the "),a("code",[t._v("mysql_secure_installation")]),t._v(" command and follow prompts")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("mysql_secure_installation\n")])])]),a("p",[t._v("The following are safe defaults.")]),t._v(" "),a("p",[t._v("Change to your own secure password"),a("br"),t._v(" "),a("code",[t._v("Set root password? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Get rid of users that could access the db by default"),a("br"),t._v(" "),a("code",[t._v("Remove anonymous users? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Keep root off the external interfaces"),a("br"),t._v(" "),a("code",[t._v("Disallow root login remotely? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Extra databases that aren't needed"),a("br"),t._v(" "),a("code",[t._v("Remove test database and access to it? [Y/n] Y")])]),t._v(" "),a("p",[t._v("Clears and sets all the changes made"),a("br"),t._v(" "),a("code",[t._v("Reload privilege tables now? [Y/n] Y")])]),t._v(" "),a("p",[t._v("All done! If you've completed all of the above steps, your MariaDB"),a("br"),t._v("\ninstallation should now be secure.")]),t._v(" "),a("h4",{attrs:{id:"adding-mariadb-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#adding-mariadb-user"}},[t._v("#")]),t._v(" Adding MariaDB user")]),t._v(" "),a("p",[t._v("To add your first user to the database, see our tutorial on "),a("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[t._v("setting up MySQL")]),t._v(".")],1),t._v(" "),a("h3",{attrs:{id:"setup-php"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#setup-php"}},[t._v("#")]),t._v(" Setup PHP")]),t._v(" "),a("p",[t._v("Place the contents below in a file inside the "),a("code",[t._v("/etc/php-fpm.d")]),t._v(" folder. The file can be named anything, but a good standard is "),a("code",[t._v("www-pterodactyl.conf")]),t._v(". This config will match the nginx config later in the guide.")]),t._v(" "),a("div",{staticClass:"language-conf extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v("[pterodactyl]\n\nuser = nginx\ngroup = nginx\n\nlisten = /var/run/php-fpm/pterodactyl.sock\nlisten.owner = nginx\nlisten.group = nginx\nlisten.mode = 0750\n\npm = ondemand\npm.max_children = 9\npm.process_idle_timeout = 10s\npm.max_requests = 200")])])]),a("p",[t._v("Start and enable php-fpm on the system.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php-fpm\nsystemctl start php-fpm\n")])])]),a("h3",{attrs:{id:"nginx-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#nginx-2"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),a("p",[t._v("Please check our "),a("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("tutorial")]),t._v(" on generating SSL certificates for more information.")],1),t._v(" "),a("h4",{attrs:{id:"ssl-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#ssl-configuration"}},[t._v("#")]),t._v(" SSL Configuration")]),t._v(" "),a("div",{staticClass:"language-conf extra-class"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("div",{staticClass:"highlighted"},[t._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[t._v('server_tokens off;\n\nserver {\n listen 80;\n server_name ;\n return 301 https://$server_name$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.php;\n\n access_log /var/log/nginx/pterodactyl.app-access.log;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n \n sendfile off;\n\n # SSL Configuration\n ssl_certificate /etc/letsencrypt/live//fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live//privkey.pem;\n ssl_session_cache shared:SSL:10m;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";\n ssl_prefer_server_ciphers on;\n\n # See https://hstspreload.org/ before uncommenting the line below.\n # add_header Strict-Transport-Security "max-age=15768000; preload;";\n add_header X-Content-Type-Options nosniff;\n add_header X-XSS-Protection "1; mode=block";\n add_header X-Robots-Tag none;\n add_header Content-Security-Policy "frame-ancestors \'self\'";\n add_header X-Frame-Options DENY;\n add_header Referrer-Policy same-origin;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/var/run/php-fpm/pterodactyl.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n include /etc/nginx/fastcgi_params;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}')])])]),a("h3",{attrs:{id:"redis-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#redis-setup"}},[t._v("#")]),t._v(" Redis Setup")]),t._v(" "),a("p",[t._v("The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into\n"),a("a",{attrs:{href:"https://community.pivotal.io/s/article/How-to-setup-and-run-multiple-Redis-server-instances-on-a-Linux-host",target:"_blank",rel:"noopener noreferrer"}},[t._v("running another Redis instance"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"installing-the-panel"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[t._v("#")]),t._v(" Installing the Panel")]),t._v(" "),a("p",[t._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[t._v("official Panel installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/37.bb650e96.js b/assets/js/37.c5e4e1df.js similarity index 99% rename from assets/js/37.bb650e96.js rename to assets/js/37.c5e4e1df.js index 0a6c0ef7c..f0f6e9ab4 100644 --- a/assets/js/37.bb650e96.js +++ b/assets/js/37.c5e4e1df.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{379:function(s,t,a){"use strict";a.r(t);var e=a(48),n=Object(e.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"debian-11-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debian-11-12"}},[s._v("#")]),s._v(" Debian 11 & 12")]),s._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#dependency-installation"}},[s._v("Dependency Installation")]),a("ul",[a("li",[a("a",{attrs:{href:"#installing-composer"}},[s._v("Installing Composer")])]),a("li",[a("a",{attrs:{href:"#download-files"}},[s._v("Download Files")])])])])])]),a("p"),s._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[s._v("TIP")]),s._v(" "),a("p",[s._v("This guide is based off the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[s._v("official installation documentation")]),s._v(" but is tailored specifically for Debian 11 and 12.")],1)]),s._v(" "),a("h2",{attrs:{id:"dependency-installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependency-installation"}},[s._v("#")]),s._v(" Dependency Installation")]),s._v(" "),a("p",[s._v("In this guide, we will install the required dependencies for the Pterodactyl panel. After that, you can follow the official installation documentation.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Update package lists")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" update -y\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install necessary packages")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" software-properties-common "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" ca-certificates gnupg2 "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" lsb-release\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Add repository for PHP")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb https://packages.sury.org/php/ '),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),s._v("lsb_release -sc"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v(' main"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/sury-php.list\n\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -fsSL https://packages.sury.org/php/apt.gpg "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Add repository for Redis")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -fsSL https://packages.redis.io/gpg "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb '),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),s._v("lsb_release -cs"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v(' main"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/redis.list\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Update package lists")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" update -y\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install PHP and required extensions")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y php8.1 php8.1-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# MariaDB repo setup script")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install the rest of dependencies")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y mariadb-server nginx "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tar")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("unzip")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" redis-server\n\n")])])]),a("h3",{attrs:{id:"installing-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-composer"}},[s._v("#")]),s._v(" Installing Composer")]),s._v(" "),a("p",[s._v("Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll\nneed composer installed before continuing in this process.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("composer\n")])])]),a("h3",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[s._v("#")]),s._v(" Download Files")]),s._v(" "),a("p",[s._v("Great, now all of the dependencies have been dealt with. Continue the installation by following the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[s._v("official documentation Download Files section")]),s._v(".")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{380:function(s,t,a){"use strict";a.r(t);var e=a(48),n=Object(e.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"debian-11-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debian-11-12"}},[s._v("#")]),s._v(" Debian 11 & 12")]),s._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#dependency-installation"}},[s._v("Dependency Installation")]),a("ul",[a("li",[a("a",{attrs:{href:"#installing-composer"}},[s._v("Installing Composer")])]),a("li",[a("a",{attrs:{href:"#download-files"}},[s._v("Download Files")])])])])])]),a("p"),s._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[s._v("TIP")]),s._v(" "),a("p",[s._v("This guide is based off the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[s._v("official installation documentation")]),s._v(" but is tailored specifically for Debian 11 and 12.")],1)]),s._v(" "),a("h2",{attrs:{id:"dependency-installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependency-installation"}},[s._v("#")]),s._v(" Dependency Installation")]),s._v(" "),a("p",[s._v("In this guide, we will install the required dependencies for the Pterodactyl panel. After that, you can follow the official installation documentation.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Update package lists")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" update -y\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install necessary packages")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" software-properties-common "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" ca-certificates gnupg2 "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" lsb-release\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Add repository for PHP")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb https://packages.sury.org/php/ '),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),s._v("lsb_release -sc"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v(' main"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/sury-php.list\n\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -fsSL https://packages.sury.org/php/apt.gpg "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Add repository for Redis")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -fsSL https://packages.redis.io/gpg "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb '),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[s._v("$(")]),s._v("lsb_release -cs"),a("span",{pre:!0,attrs:{class:"token variable"}},[s._v(")")])]),s._v(' main"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tee")]),s._v(" /etc/apt/sources.list.d/redis.list\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Update package lists")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" update -y\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install PHP and required extensions")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y php8.1 php8.1-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# MariaDB repo setup script")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("bash")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# Install the rest of dependencies")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("apt")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y mariadb-server nginx "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("tar")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("unzip")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("git")]),s._v(" redis-server\n\n")])])]),a("h3",{attrs:{id:"installing-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-composer"}},[s._v("#")]),s._v(" Installing Composer")]),s._v(" "),a("p",[s._v("Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll\nneed composer installed before continuing in this process.")]),s._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("composer\n")])])]),a("h3",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[s._v("#")]),s._v(" Download Files")]),s._v(" "),a("p",[s._v("Great, now all of the dependencies have been dealt with. Continue the installation by following the "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[s._v("official documentation Download Files section")]),s._v(".")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/38.e1f447b2.js b/assets/js/38.8014c1ae.js similarity index 99% rename from assets/js/38.e1f447b2.js rename to assets/js/38.8014c1ae.js index 7c3c4e8b2..a25930916 100644 --- a/assets/js/38.e1f447b2.js +++ b/assets/js/38.8014c1ae.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{380:function(t,a,e){"use strict";e.r(a);var s=e(48),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ubuntu-18-04"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-18-04"}},[t._v("#")]),t._v(" Ubuntu 18.04")]),t._v(" "),e("p",[t._v("In this guide we will install Pterodactyl v1.X — including all of it's dependencies — and configure our webserver to serve it using SSL.")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),e("ul",[e("li",[e("a",{attrs:{href:"#mariadb"}},[t._v("MariaDB")])]),e("li",[e("a",{attrs:{href:"#php-7-4"}},[t._v("PHP 7.4")])]),e("li",[e("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),e("li",[e("a",{attrs:{href:"#redis"}},[t._v("Redis")])]),e("li",[e("a",{attrs:{href:"#additional-utilities"}},[t._v("Additional Utilities")])])])]),e("li",[e("a",{attrs:{href:"#server-configuration"}},[t._v("Server Configuration")]),e("ul",[e("li",[e("a",{attrs:{href:"#configuring-mariadb"}},[t._v("Configuring MariaDB")])]),e("li",[e("a",{attrs:{href:"#setup-php"}},[t._v("Setup PHP")])]),e("li",[e("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),e("li",[e("a",{attrs:{href:"#redis-setup"}},[t._v("Redis Setup")])])])]),e("li",[e("a",{attrs:{href:"#installing-the-panel"}},[t._v("Installing the Panel")])])])]),e("p"),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("This guide is based off the "),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Ubuntu 18.04.")],1)]),t._v(" "),e("h2",{attrs:{id:"install-requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),e("p",[t._v("We will first begin by installing all of Pterodactyl's "),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),e("h3",{attrs:{id:"mariadb"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mariadb"}},[t._v("#")]),t._v(" MariaDB")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install MariaDB")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y mariadb-common mariadb-server mariadb-client\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Start MariaDB")]),t._v("\nsystemctl start mariadb\nsystemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" mariadb\n")])])]),e("h3",{attrs:{id:"php-7-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#php-7-4"}},[t._v("#")]),t._v(" PHP 7.4")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install PHP 7.4")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y php7.4 php7.4-"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"nginx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nginx\n")])])]),e("h3",{attrs:{id:"redis"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#redis"}},[t._v("#")]),t._v(" Redis")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y redis-server\n\nsystemctl start redis-server\nsystemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" redis-server\n")])])]),e("h3",{attrs:{id:"additional-utilities"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#additional-utilities"}},[t._v("#")]),t._v(" Additional Utilities")]),t._v(" "),e("h4",{attrs:{id:"certbot"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#certbot"}},[t._v("#")]),t._v(" Certbot")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y certbot\n")])])]),e("h4",{attrs:{id:"composer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#composer"}},[t._v("#")]),t._v(" Composer")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sS https://getcomposer.org/installer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" php -- --install-dir"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/usr/local/bin --filename"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("composer\n")])])]),e("h2",{attrs:{id:"server-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[t._v("#")]),t._v(" Server Configuration")]),t._v(" "),e("p",[t._v("This following section covers the configuration of parts of the server to run the panel.")]),t._v(" "),e("h3",{attrs:{id:"configuring-mariadb"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuring-mariadb"}},[t._v("#")]),t._v(" Configuring MariaDB")]),t._v(" "),e("p",[t._v("The fastest way to set up MariaDB is to use the "),e("code",[t._v("mysql_secure_installation")]),t._v(" command and follow prompts")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("mysql_secure_installation\n")])])]),e("p",[t._v("The following are safe defaults.")]),t._v(" "),e("p",[t._v("Change to your own secure password"),e("br"),t._v(" "),e("code",[t._v("Set root password? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Get rid of users that could access the db by default"),e("br"),t._v(" "),e("code",[t._v("Remove anonymous users? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Keep root off the external interfaces"),e("br"),t._v(" "),e("code",[t._v("Disallow root login remotely? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Extra databases that aren't needed"),e("br"),t._v(" "),e("code",[t._v("Remove test database and access to it? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Clears and sets all the changes made"),e("br"),t._v(" "),e("code",[t._v("Reload privilege tables now? [Y/n] Y")])]),t._v(" "),e("p",[t._v("All done! If you've completed all of the above steps, your MariaDB installation should now be secure.")]),t._v(" "),e("h4",{attrs:{id:"adding-mariadb-user"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-mariadb-user"}},[t._v("#")]),t._v(" Adding MariaDB user")]),t._v(" "),e("p",[t._v("To add your first user to the database, see our tutorial on "),e("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[t._v("setting up MySQL")]),t._v(".")],1),t._v(" "),e("h3",{attrs:{id:"setup-php"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setup-php"}},[t._v("#")]),t._v(" Setup PHP")]),t._v(" "),e("p",[t._v("The default php-fpm configuration is fine to use and can be started and then enabled on the system using the\ncommands below.")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("systemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php7.4-fpm\nsystemctl start php7.4-fpm\n")])])]),e("h3",{attrs:{id:"nginx-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nginx-2"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),e("p",[t._v("Please check our "),e("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("tutorial")]),t._v(" on generating SSL certificates for more information.")],1),t._v(" "),e("h4",{attrs:{id:"ssl-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ssl-configuration"}},[t._v("#")]),t._v(" SSL Configuration")]),t._v(" "),e("div",{staticClass:"language-conf extra-class"},[e("div",{staticClass:"highlight-lines"},[e("br"),e("br"),e("br"),e("br"),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("br"),e("br"),e("br"),e("br"),e("br"),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br")]),e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('server_tokens off;\n\nserver {\n listen 80;\n server_name ;\n return 301 https://$server_name$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.php;\n\n access_log /var/log/nginx/pterodactyl.app-access.log;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n\n sendfile off;\n\n # SSL Configuration\n ssl_certificate /etc/letsencrypt/live//fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live//privkey.pem;\n ssl_session_cache shared:SSL:10m;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";\n ssl_prefer_server_ciphers on;\n\n # See https://hstspreload.org/ before uncommenting the line below.\n # add_header Strict-Transport-Security "max-age=15768000; preload;";\n add_header X-Content-Type-Options nosniff;\n add_header X-XSS-Protection "1; mode=block";\n add_header X-Robots-Tag none;\n add_header Content-Security-Policy "frame-ancestors \'self\'";\n add_header X-Frame-Options DENY;\n add_header Referrer-Policy same-origin;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/run/php/php7.4-fpm.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n include /etc/nginx/fastcgi_params;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}\n')])])]),e("h3",{attrs:{id:"redis-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#redis-setup"}},[t._v("#")]),t._v(" Redis Setup")]),t._v(" "),e("p",[t._v("The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into\n"),e("a",{attrs:{href:"https://community.pivotal.io/s/article/How-to-setup-and-run-multiple-Redis-server-instances-on-a-Linux-host",target:"_blank",rel:"noopener noreferrer"}},[t._v("running another Redis instance"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"installing-the-panel"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[t._v("#")]),t._v(" Installing the Panel")]),t._v(" "),e("p",[t._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[t._v("official Panel installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{381:function(t,a,e){"use strict";e.r(a);var s=e(48),r=Object(s.a)({},(function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ubuntu-18-04"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-18-04"}},[t._v("#")]),t._v(" Ubuntu 18.04")]),t._v(" "),e("p",[t._v("In this guide we will install Pterodactyl v1.X — including all of it's dependencies — and configure our webserver to serve it using SSL.")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),e("ul",[e("li",[e("a",{attrs:{href:"#mariadb"}},[t._v("MariaDB")])]),e("li",[e("a",{attrs:{href:"#php-7-4"}},[t._v("PHP 7.4")])]),e("li",[e("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),e("li",[e("a",{attrs:{href:"#redis"}},[t._v("Redis")])]),e("li",[e("a",{attrs:{href:"#additional-utilities"}},[t._v("Additional Utilities")])])])]),e("li",[e("a",{attrs:{href:"#server-configuration"}},[t._v("Server Configuration")]),e("ul",[e("li",[e("a",{attrs:{href:"#configuring-mariadb"}},[t._v("Configuring MariaDB")])]),e("li",[e("a",{attrs:{href:"#setup-php"}},[t._v("Setup PHP")])]),e("li",[e("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),e("li",[e("a",{attrs:{href:"#redis-setup"}},[t._v("Redis Setup")])])])]),e("li",[e("a",{attrs:{href:"#installing-the-panel"}},[t._v("Installing the Panel")])])])]),e("p"),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("This guide is based off the "),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Ubuntu 18.04.")],1)]),t._v(" "),e("h2",{attrs:{id:"install-requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),e("p",[t._v("We will first begin by installing all of Pterodactyl's "),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),e("h3",{attrs:{id:"mariadb"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#mariadb"}},[t._v("#")]),t._v(" MariaDB")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install MariaDB")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y mariadb-common mariadb-server mariadb-client\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Start MariaDB")]),t._v("\nsystemctl start mariadb\nsystemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" mariadb\n")])])]),e("h3",{attrs:{id:"php-7-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#php-7-4"}},[t._v("#")]),t._v(" PHP 7.4")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install PHP 7.4")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y php7.4 php7.4-"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),e("h3",{attrs:{id:"nginx"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nginx\n")])])]),e("h3",{attrs:{id:"redis"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#redis"}},[t._v("#")]),t._v(" Redis")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y redis-server\n\nsystemctl start redis-server\nsystemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" redis-server\n")])])]),e("h3",{attrs:{id:"additional-utilities"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#additional-utilities"}},[t._v("#")]),t._v(" Additional Utilities")]),t._v(" "),e("h4",{attrs:{id:"certbot"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#certbot"}},[t._v("#")]),t._v(" Certbot")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y certbot\n")])])]),e("h4",{attrs:{id:"composer"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#composer"}},[t._v("#")]),t._v(" Composer")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sS https://getcomposer.org/installer "),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" php -- --install-dir"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/usr/local/bin --filename"),e("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("composer\n")])])]),e("h2",{attrs:{id:"server-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[t._v("#")]),t._v(" Server Configuration")]),t._v(" "),e("p",[t._v("This following section covers the configuration of parts of the server to run the panel.")]),t._v(" "),e("h3",{attrs:{id:"configuring-mariadb"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#configuring-mariadb"}},[t._v("#")]),t._v(" Configuring MariaDB")]),t._v(" "),e("p",[t._v("The fastest way to set up MariaDB is to use the "),e("code",[t._v("mysql_secure_installation")]),t._v(" command and follow prompts")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("mysql_secure_installation\n")])])]),e("p",[t._v("The following are safe defaults.")]),t._v(" "),e("p",[t._v("Change to your own secure password"),e("br"),t._v(" "),e("code",[t._v("Set root password? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Get rid of users that could access the db by default"),e("br"),t._v(" "),e("code",[t._v("Remove anonymous users? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Keep root off the external interfaces"),e("br"),t._v(" "),e("code",[t._v("Disallow root login remotely? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Extra databases that aren't needed"),e("br"),t._v(" "),e("code",[t._v("Remove test database and access to it? [Y/n] Y")])]),t._v(" "),e("p",[t._v("Clears and sets all the changes made"),e("br"),t._v(" "),e("code",[t._v("Reload privilege tables now? [Y/n] Y")])]),t._v(" "),e("p",[t._v("All done! If you've completed all of the above steps, your MariaDB installation should now be secure.")]),t._v(" "),e("h4",{attrs:{id:"adding-mariadb-user"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#adding-mariadb-user"}},[t._v("#")]),t._v(" Adding MariaDB user")]),t._v(" "),e("p",[t._v("To add your first user to the database, see our tutorial on "),e("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[t._v("setting up MySQL")]),t._v(".")],1),t._v(" "),e("h3",{attrs:{id:"setup-php"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#setup-php"}},[t._v("#")]),t._v(" Setup PHP")]),t._v(" "),e("p",[t._v("The default php-fpm configuration is fine to use and can be started and then enabled on the system using the\ncommands below.")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[t._v("systemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php7.4-fpm\nsystemctl start php7.4-fpm\n")])])]),e("h3",{attrs:{id:"nginx-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#nginx-2"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),e("p",[t._v("Please check our "),e("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("tutorial")]),t._v(" on generating SSL certificates for more information.")],1),t._v(" "),e("h4",{attrs:{id:"ssl-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ssl-configuration"}},[t._v("#")]),t._v(" SSL Configuration")]),t._v(" "),e("div",{staticClass:"language-conf extra-class"},[e("div",{staticClass:"highlight-lines"},[e("br"),e("br"),e("br"),e("br"),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("br"),e("br"),e("br"),e("br"),e("br"),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("div",{staticClass:"highlighted"},[t._v(" ")]),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br"),e("br")]),e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[t._v('server_tokens off;\n\nserver {\n listen 80;\n server_name ;\n return 301 https://$server_name$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.php;\n\n access_log /var/log/nginx/pterodactyl.app-access.log;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n\n sendfile off;\n\n # SSL Configuration\n ssl_certificate /etc/letsencrypt/live//fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live//privkey.pem;\n ssl_session_cache shared:SSL:10m;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";\n ssl_prefer_server_ciphers on;\n\n # See https://hstspreload.org/ before uncommenting the line below.\n # add_header Strict-Transport-Security "max-age=15768000; preload;";\n add_header X-Content-Type-Options nosniff;\n add_header X-XSS-Protection "1; mode=block";\n add_header X-Robots-Tag none;\n add_header Content-Security-Policy "frame-ancestors \'self\'";\n add_header X-Frame-Options DENY;\n add_header Referrer-Policy same-origin;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/run/php/php7.4-fpm.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n include /etc/nginx/fastcgi_params;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}\n')])])]),e("h3",{attrs:{id:"redis-setup"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#redis-setup"}},[t._v("#")]),t._v(" Redis Setup")]),t._v(" "),e("p",[t._v("The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into\n"),e("a",{attrs:{href:"https://community.pivotal.io/s/article/How-to-setup-and-run-multiple-Redis-server-instances-on-a-Linux-host",target:"_blank",rel:"noopener noreferrer"}},[t._v("running another Redis instance"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"installing-the-panel"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[t._v("#")]),t._v(" Installing the Panel")]),t._v(" "),e("p",[t._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),e("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[t._v("official Panel installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/39.582c9238.js b/assets/js/39.d1e0976c.js similarity index 99% rename from assets/js/39.582c9238.js rename to assets/js/39.d1e0976c.js index 5e29aa1b0..0e4fcd9c2 100644 --- a/assets/js/39.582c9238.js +++ b/assets/js/39.d1e0976c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{381:function(t,a,s){"use strict";s.r(a);var e=s(48),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"ubuntu-20-04"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-20-04"}},[t._v("#")]),t._v(" Ubuntu 20.04")]),t._v(" "),s("p",[t._v("In this guide we will install Pterodactyl v1.X — including all of it's dependencies — and configure our webserver to serve it using SSL.")]),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),s("ul",[s("li",[s("a",{attrs:{href:"#mariadb"}},[t._v("MariaDB")])]),s("li",[s("a",{attrs:{href:"#php-8-0"}},[t._v("PHP 8.0")])]),s("li",[s("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),s("li",[s("a",{attrs:{href:"#redis"}},[t._v("Redis")])]),s("li",[s("a",{attrs:{href:"#additional-utilities"}},[t._v("Additional Utilities")])])])]),s("li",[s("a",{attrs:{href:"#server-configuration"}},[t._v("Server Configuration")]),s("ul",[s("li",[s("a",{attrs:{href:"#configuring-mariadb"}},[t._v("Configuring MariaDB")])]),s("li",[s("a",{attrs:{href:"#setup-php"}},[t._v("Setup PHP")])]),s("li",[s("a",{attrs:{href:"#nginx-configuration"}},[t._v("Nginx Configuration")])]),s("li",[s("a",{attrs:{href:"#redis-setup"}},[t._v("Redis Setup")])])])]),s("li",[s("a",{attrs:{href:"#installing-the-panel"}},[t._v("Installing the Panel")])])])]),s("p"),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("This guide is based off the "),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Ubuntu 20.04.")],1)]),t._v(" "),s("h2",{attrs:{id:"install-requirements"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),s("p",[t._v("We will first begin by installing all of Pterodactyl's "),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),s("h3",{attrs:{id:"mariadb"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mariadb"}},[t._v("#")]),t._v(" MariaDB")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install MariaDB")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y mariadb-common mariadb-server mariadb-client\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Start MariaDB")]),t._v("\nsystemctl start mariadb\nsystemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" mariadb\n")])])]),s("h3",{attrs:{id:"php-8-0"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#php-8-0"}},[t._v("#")]),t._v(" PHP 8.0")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install PHP 8.0")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" -y "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" php8.0 php8.0-"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"nginx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nginx\n")])])]),s("h3",{attrs:{id:"redis"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#redis"}},[t._v("#")]),t._v(" Redis")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y redis-server\n\nsystemctl start redis-server\nsystemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" redis-server\n")])])]),s("h3",{attrs:{id:"additional-utilities"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#additional-utilities"}},[t._v("#")]),t._v(" Additional Utilities")]),t._v(" "),s("h4",{attrs:{id:"certbot"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#certbot"}},[t._v("#")]),t._v(" Certbot")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y certbot\n")])])]),s("h4",{attrs:{id:"composer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#composer"}},[t._v("#")]),t._v(" Composer")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sS https://getcomposer.org/installer "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" php -- --install-dir"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/usr/local/bin --filename"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("composer\n")])])]),s("h2",{attrs:{id:"server-configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[t._v("#")]),t._v(" Server Configuration")]),t._v(" "),s("p",[t._v("This following section covers the configuration of parts of the server to run the panel.")]),t._v(" "),s("h3",{attrs:{id:"configuring-mariadb"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#configuring-mariadb"}},[t._v("#")]),t._v(" Configuring MariaDB")]),t._v(" "),s("p",[t._v("The fastest way to set up MariaDB is to use the "),s("code",[t._v("mysql_secure_installation")]),t._v(" command and follow prompts")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("mysql_secure_installation\n")])])]),s("p",[t._v("The following are safe defaults.")]),t._v(" "),s("p",[t._v("Change to your own secure password"),s("br"),t._v(" "),s("code",[t._v("Set root password? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Get rid of users that could access the db by default"),s("br"),t._v(" "),s("code",[t._v("Remove anonymous users? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Keep root off the external interfaces"),s("br"),t._v(" "),s("code",[t._v("Disallow root login remotely? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Extra databases that aren't needed"),s("br"),t._v(" "),s("code",[t._v("Remove test database and access to it? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Clears and sets all the changes made"),s("br"),t._v(" "),s("code",[t._v("Reload privilege tables now? [Y/n] Y")])]),t._v(" "),s("p",[t._v("All done! If you've completed all of the above steps, your MariaDB installation should now be secure.")]),t._v(" "),s("h4",{attrs:{id:"adding-mariadb-user"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-mariadb-user"}},[t._v("#")]),t._v(" Adding MariaDB user")]),t._v(" "),s("p",[t._v("To add your first user to the database, see our tutorial on "),s("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[t._v("setting up MySQL")]),t._v(".")],1),t._v(" "),s("h3",{attrs:{id:"setup-php"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setup-php"}},[t._v("#")]),t._v(" Setup PHP")]),t._v(" "),s("p",[t._v("The default php-fpm configuration is fine to use and can be started and then enabled on the system using the\ncommands below.")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("systemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php8.0-fpm\nsystemctl start php8.0-fpm\n")])])]),s("h3",{attrs:{id:"nginx-configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#nginx-configuration"}},[t._v("#")]),t._v(" Nginx Configuration")]),t._v(" "),s("p",[t._v("Follow "),s("RouterLink",{attrs:{to:"/panel/1.0/webserver_configuration.html"}},[t._v("this guide")]),t._v(" to setup Nginx for Pterodactyl, choose whether to use Nginx with or without SSL.")],1),t._v(" "),s("h3",{attrs:{id:"redis-setup"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#redis-setup"}},[t._v("#")]),t._v(" Redis Setup")]),t._v(" "),s("p",[t._v("The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into\n"),s("a",{attrs:{href:"https://community.pivotal.io/s/article/How-to-setup-and-run-multiple-Redis-server-instances-on-a-Linux-host",target:"_blank",rel:"noopener noreferrer"}},[t._v("running another Redis instance"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("h2",{attrs:{id:"installing-the-panel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[t._v("#")]),t._v(" Installing the Panel")]),t._v(" "),s("p",[t._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[t._v("official Panel installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{382:function(t,a,s){"use strict";s.r(a);var e=s(48),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"ubuntu-20-04"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-20-04"}},[t._v("#")]),t._v(" Ubuntu 20.04")]),t._v(" "),s("p",[t._v("In this guide we will install Pterodactyl v1.X — including all of it's dependencies — and configure our webserver to serve it using SSL.")]),t._v(" "),s("p"),s("div",{staticClass:"table-of-contents"},[s("ul",[s("li",[s("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),s("ul",[s("li",[s("a",{attrs:{href:"#mariadb"}},[t._v("MariaDB")])]),s("li",[s("a",{attrs:{href:"#php-8-0"}},[t._v("PHP 8.0")])]),s("li",[s("a",{attrs:{href:"#nginx"}},[t._v("Nginx")])]),s("li",[s("a",{attrs:{href:"#redis"}},[t._v("Redis")])]),s("li",[s("a",{attrs:{href:"#additional-utilities"}},[t._v("Additional Utilities")])])])]),s("li",[s("a",{attrs:{href:"#server-configuration"}},[t._v("Server Configuration")]),s("ul",[s("li",[s("a",{attrs:{href:"#configuring-mariadb"}},[t._v("Configuring MariaDB")])]),s("li",[s("a",{attrs:{href:"#setup-php"}},[t._v("Setup PHP")])]),s("li",[s("a",{attrs:{href:"#nginx-configuration"}},[t._v("Nginx Configuration")])]),s("li",[s("a",{attrs:{href:"#redis-setup"}},[t._v("Redis Setup")])])])]),s("li",[s("a",{attrs:{href:"#installing-the-panel"}},[t._v("Installing the Panel")])])])]),s("p"),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("This guide is based off the "),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Ubuntu 20.04.")],1)]),t._v(" "),s("h2",{attrs:{id:"install-requirements"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),s("p",[t._v("We will first begin by installing all of Pterodactyl's "),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),s("h3",{attrs:{id:"mariadb"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#mariadb"}},[t._v("#")]),t._v(" MariaDB")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install MariaDB")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y mariadb-common mariadb-server mariadb-client\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Start MariaDB")]),t._v("\nsystemctl start mariadb\nsystemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" mariadb\n")])])]),s("h3",{attrs:{id:"php-8-0"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#php-8-0"}},[t._v("#")]),t._v(" PHP 8.0")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Get apt updates")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" update -y\n\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install PHP 8.0")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" -y "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" php8.0 php8.0-"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])])]),s("h3",{attrs:{id:"nginx"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" Nginx")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y nginx\n")])])]),s("h3",{attrs:{id:"redis"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#redis"}},[t._v("#")]),t._v(" Redis")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y redis-server\n\nsystemctl start redis-server\nsystemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" redis-server\n")])])]),s("h3",{attrs:{id:"additional-utilities"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#additional-utilities"}},[t._v("#")]),t._v(" Additional Utilities")]),t._v(" "),s("h4",{attrs:{id:"certbot"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#certbot"}},[t._v("#")]),t._v(" Certbot")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y certbot\n")])])]),s("h4",{attrs:{id:"composer"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#composer"}},[t._v("#")]),t._v(" Composer")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -sS https://getcomposer.org/installer "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" php -- --install-dir"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("/usr/local/bin --filename"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("composer\n")])])]),s("h2",{attrs:{id:"server-configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-configuration"}},[t._v("#")]),t._v(" Server Configuration")]),t._v(" "),s("p",[t._v("This following section covers the configuration of parts of the server to run the panel.")]),t._v(" "),s("h3",{attrs:{id:"configuring-mariadb"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#configuring-mariadb"}},[t._v("#")]),t._v(" Configuring MariaDB")]),t._v(" "),s("p",[t._v("The fastest way to set up MariaDB is to use the "),s("code",[t._v("mysql_secure_installation")]),t._v(" command and follow prompts")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("mysql_secure_installation\n")])])]),s("p",[t._v("The following are safe defaults.")]),t._v(" "),s("p",[t._v("Change to your own secure password"),s("br"),t._v(" "),s("code",[t._v("Set root password? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Get rid of users that could access the db by default"),s("br"),t._v(" "),s("code",[t._v("Remove anonymous users? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Keep root off the external interfaces"),s("br"),t._v(" "),s("code",[t._v("Disallow root login remotely? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Extra databases that aren't needed"),s("br"),t._v(" "),s("code",[t._v("Remove test database and access to it? [Y/n] Y")])]),t._v(" "),s("p",[t._v("Clears and sets all the changes made"),s("br"),t._v(" "),s("code",[t._v("Reload privilege tables now? [Y/n] Y")])]),t._v(" "),s("p",[t._v("All done! If you've completed all of the above steps, your MariaDB installation should now be secure.")]),t._v(" "),s("h4",{attrs:{id:"adding-mariadb-user"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#adding-mariadb-user"}},[t._v("#")]),t._v(" Adding MariaDB user")]),t._v(" "),s("p",[t._v("To add your first user to the database, see our tutorial on "),s("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[t._v("setting up MySQL")]),t._v(".")],1),t._v(" "),s("h3",{attrs:{id:"setup-php"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#setup-php"}},[t._v("#")]),t._v(" Setup PHP")]),t._v(" "),s("p",[t._v("The default php-fpm configuration is fine to use and can be started and then enabled on the system using the\ncommands below.")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[t._v("systemctl "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" php8.0-fpm\nsystemctl start php8.0-fpm\n")])])]),s("h3",{attrs:{id:"nginx-configuration"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#nginx-configuration"}},[t._v("#")]),t._v(" Nginx Configuration")]),t._v(" "),s("p",[t._v("Follow "),s("RouterLink",{attrs:{to:"/panel/1.0/webserver_configuration.html"}},[t._v("this guide")]),t._v(" to setup Nginx for Pterodactyl, choose whether to use Nginx with or without SSL.")],1),t._v(" "),s("h3",{attrs:{id:"redis-setup"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#redis-setup"}},[t._v("#")]),t._v(" Redis Setup")]),t._v(" "),s("p",[t._v("The default Redis install is perfectly fine for the panel. If you have Redis already in use you may want to look into\n"),s("a",{attrs:{href:"https://community.pivotal.io/s/article/How-to-setup-and-run-multiple-Redis-server-instances-on-a-Linux-host",target:"_blank",rel:"noopener noreferrer"}},[t._v("running another Redis instance"),s("OutboundLink")],1),t._v(".")]),t._v(" "),s("h2",{attrs:{id:"installing-the-panel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#installing-the-panel"}},[t._v("#")]),t._v(" Installing the Panel")]),t._v(" "),s("p",[t._v("Excellent, we now have all of the required dependencies installed and configured. From here, follow the "),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html#download-files"}},[t._v("official Panel installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/41.d717f31a.js b/assets/js/41.e352cd67.js similarity index 98% rename from assets/js/41.d717f31a.js rename to assets/js/41.e352cd67.js index 83253016f..17ba8d806 100644 --- a/assets/js/41.d717f31a.js +++ b/assets/js/41.e352cd67.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{385:function(t,e,a){"use strict";a.r(e);var s=a(48),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"centos-8-rocky-linux-8-almalinux-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centos-8-rocky-linux-8-almalinux-8"}},[t._v("#")]),t._v(" CentOS 8, Rocky Linux 8, AlmaLinux 8")]),t._v(" "),a("p",[t._v("In this guide we will install Pterodactyl's Wings v1.X — including all of it's dependencies — and configure it to use a SSL connection.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),a("ul",[a("li",[a("a",{attrs:{href:"#docker"}},[t._v("Docker")])]),a("li",[a("a",{attrs:{href:"#firewalld-changes"}},[t._v("FirewallD Changes")])])])]),a("li",[a("a",{attrs:{href:"#installing-wings"}},[t._v("Installing Wings")])])])]),a("p"),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This guide is based off the "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Enterprise Linux 8.")],1)]),t._v(" "),a("h2",{attrs:{id:"install-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),a("p",[t._v("We will first begin by installing all of the Wings' "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),a("h3",{attrs:{id:"docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[t._v("#")]),t._v(" Docker")]),t._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"}},[t._v("## Install yum tools")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y dnf-utils device-mapper-persistent-data lvm2\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Add the docker repo")]),t._v("\ndnf config-manager --add-repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("https://download.docker.com/linux/centos/docker-ce.repo\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install docker")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y docker-ce --nobest\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Enable docker service")]),t._v("\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" docker\nsystemctl start docker\n")])])]),a("h3",{attrs:{id:"firewalld-changes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-changes"}},[t._v("#")]),t._v(" FirewallD Changes")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("firewall-cmd --add-port "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8080")]),t._v("/tcp --permanent\nfirewall-cmd --add-port "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2022")]),t._v("/tcp --permanent\nfirewall-cmd --permanent --zone"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("trusted --change-interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("pterodactyl0\nfirewall-cmd --zone"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("trusted --add-masquerade --permanent\nfirewall-cmd --reload\n")])])]),a("h2",{attrs:{id:"installing-wings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-wings"}},[t._v("#")]),t._v(" Installing Wings")]),t._v(" "),a("p",[t._v("Great, now all of the dependencies and firewall rules have been dealt with. From here follow the "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html#enabling-swap"}},[t._v("official Wings installation documentation")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you have SELinux enforcement enabled and you are getting AVC denials from your containers, try relocating your Wings data directory from "),a("code",[t._v("/var/lib/pterodactyl")]),t._v(" to "),a("code",[t._v("/var/srv/containers/pterodactyl")]),t._v(". That is where the targeted policy expects Docker to read and write data from.")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{384:function(t,e,a){"use strict";a.r(e);var s=a(48),n=Object(s.a)({},(function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"centos-8-rocky-linux-8-almalinux-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#centos-8-rocky-linux-8-almalinux-8"}},[t._v("#")]),t._v(" CentOS 8, Rocky Linux 8, AlmaLinux 8")]),t._v(" "),a("p",[t._v("In this guide we will install Pterodactyl's Wings v1.X — including all of it's dependencies — and configure it to use a SSL connection.")]),t._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),a("ul",[a("li",[a("a",{attrs:{href:"#docker"}},[t._v("Docker")])]),a("li",[a("a",{attrs:{href:"#firewalld-changes"}},[t._v("FirewallD Changes")])])])]),a("li",[a("a",{attrs:{href:"#installing-wings"}},[t._v("Installing Wings")])])])]),a("p"),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("This guide is based off the "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Enterprise Linux 8.")],1)]),t._v(" "),a("h2",{attrs:{id:"install-requirements"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),a("p",[t._v("We will first begin by installing all of the Wings' "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),a("h3",{attrs:{id:"docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[t._v("#")]),t._v(" Docker")]),t._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"}},[t._v("## Install yum tools")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y dnf-utils device-mapper-persistent-data lvm2\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Add the docker repo")]),t._v("\ndnf config-manager --add-repo"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("https://download.docker.com/linux/centos/docker-ce.repo\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install docker")]),t._v("\ndnf "),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y docker-ce --nobest\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Enable docker service")]),t._v("\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" docker\nsystemctl start docker\n")])])]),a("h3",{attrs:{id:"firewalld-changes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-changes"}},[t._v("#")]),t._v(" FirewallD Changes")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[t._v("firewall-cmd --add-port "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("8080")]),t._v("/tcp --permanent\nfirewall-cmd --add-port "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("2022")]),t._v("/tcp --permanent\nfirewall-cmd --permanent --zone"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("trusted --change-interface"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("pterodactyl0\nfirewall-cmd --zone"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("trusted --add-masquerade --permanent\nfirewall-cmd --reload\n")])])]),a("h2",{attrs:{id:"installing-wings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-wings"}},[t._v("#")]),t._v(" Installing Wings")]),t._v(" "),a("p",[t._v("Great, now all of the dependencies and firewall rules have been dealt with. From here follow the "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html#enabling-swap"}},[t._v("official Wings installation documentation")]),t._v(".")],1),t._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),a("p",[t._v("If you have SELinux enforcement enabled and you are getting AVC denials from your containers, try relocating your Wings data directory from "),a("code",[t._v("/var/lib/pterodactyl")]),t._v(" to "),a("code",[t._v("/var/srv/containers/pterodactyl")]),t._v(". That is where the targeted policy expects Docker to read and write data from.")])])])}),[],!1,null,null,null);e.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/42.ae330318.js b/assets/js/42.7e1fb0ca.js similarity index 92% rename from assets/js/42.ae330318.js rename to assets/js/42.7e1fb0ca.js index 299e6f9d4..df3218514 100644 --- a/assets/js/42.ae330318.js +++ b/assets/js/42.7e1fb0ca.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{384:function(t,n,a){"use strict";a.r(n);var i=a(48),e=Object(i.a)({},(function(){var t=this,n=t.$createElement,a=t._self._c||n;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"debian-11-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debian-11-12"}},[t._v("#")]),t._v(" Debian 11 & 12")]),t._v(" "),a("h2",{attrs:{id:"install"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),a("p",[t._v("There is no additional configuration required for Wings on Debian 11 or 12. You can follow the "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official Wings install documentation")]),t._v(", which covers Docker installation for Debian.")],1)])}),[],!1,null,null,null);n.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{390:function(t,n,a){"use strict";a.r(n);var i=a(48),e=Object(i.a)({},(function(){var t=this,n=t.$createElement,a=t._self._c||n;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"debian-11-12"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#debian-11-12"}},[t._v("#")]),t._v(" Debian 11 & 12")]),t._v(" "),a("h2",{attrs:{id:"install"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install"}},[t._v("#")]),t._v(" Install")]),t._v(" "),a("p",[t._v("There is no additional configuration required for Wings on Debian 11 or 12. You can follow the "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official Wings install documentation")]),t._v(", which covers Docker installation for Debian.")],1)])}),[],!1,null,null,null);n.default=e.exports}}]); \ No newline at end of file diff --git a/assets/js/44.041f7415.js b/assets/js/44.1b20e663.js similarity index 97% rename from assets/js/44.041f7415.js rename to assets/js/44.1b20e663.js index 7fe1ddf79..7f49a9e3c 100644 --- a/assets/js/44.041f7415.js +++ b/assets/js/44.1b20e663.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{387:function(t,s,e){"use strict";e.r(s);var n=e(48),a=Object(n.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ubuntu-20-04"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-20-04"}},[t._v("#")]),t._v(" Ubuntu 20.04")]),t._v(" "),e("p",[t._v("In this guide we will install Pterodactyl's Wings v1.X — including all of it's dependencies — and configure it to use a SSL connection.")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),e("ul",[e("li",[e("a",{attrs:{href:"#docker"}},[t._v("Docker")])])])]),e("li",[e("a",{attrs:{href:"#installing-wings"}},[t._v("Installing Wings")])])])]),e("p"),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("This guide is based off the "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Ubuntu 20.04.")],1)]),t._v(" "),e("h2",{attrs:{id:"install-requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),e("p",[t._v("We will first begin by installing all of Wings' "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),e("h3",{attrs:{id:"docker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[t._v("#")]),t._v(" Docker")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install docker")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y docker.io\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Enable docker service")]),t._v("\nsystemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" docker\nsystemctl start docker\n")])])]),e("h2",{attrs:{id:"installing-wings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-wings"}},[t._v("#")]),t._v(" Installing Wings")]),t._v(" "),e("p",[t._v("Great, now all of the dependencies and firewall rules have been dealt with. From here follow the "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html#enabling-swap"}},[t._v("official Wings installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{385:function(t,s,e){"use strict";e.r(s);var n=e(48),a=Object(n.a)({},(function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"ubuntu-20-04"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ubuntu-20-04"}},[t._v("#")]),t._v(" Ubuntu 20.04")]),t._v(" "),e("p",[t._v("In this guide we will install Pterodactyl's Wings v1.X — including all of it's dependencies — and configure it to use a SSL connection.")]),t._v(" "),e("p"),e("div",{staticClass:"table-of-contents"},[e("ul",[e("li",[e("a",{attrs:{href:"#install-requirements"}},[t._v("Install Requirements")]),e("ul",[e("li",[e("a",{attrs:{href:"#docker"}},[t._v("Docker")])])])]),e("li",[e("a",{attrs:{href:"#installing-wings"}},[t._v("Installing Wings")])])])]),e("p"),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("This guide is based off the "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("official installation documentation")]),t._v(" but is tailored specifically for Ubuntu 20.04.")],1)]),t._v(" "),e("h2",{attrs:{id:"install-requirements"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#install-requirements"}},[t._v("#")]),t._v(" Install Requirements")]),t._v(" "),e("p",[t._v("We will first begin by installing all of Wings' "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html#dependencies"}},[t._v("required")]),t._v(" dependencies.")],1),t._v(" "),e("h3",{attrs:{id:"docker"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#docker"}},[t._v("#")]),t._v(" Docker")]),t._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Install docker")]),t._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("apt")]),t._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" -y docker.io\n\n"),e("span",{pre:!0,attrs:{class:"token comment"}},[t._v("## Enable docker service")]),t._v("\nsystemctl "),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("enable")]),t._v(" docker\nsystemctl start docker\n")])])]),e("h2",{attrs:{id:"installing-wings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#installing-wings"}},[t._v("#")]),t._v(" Installing Wings")]),t._v(" "),e("p",[t._v("Great, now all of the dependencies and firewall rules have been dealt with. From here follow the "),e("RouterLink",{attrs:{to:"/wings/1.0/installing.html#enabling-swap"}},[t._v("official Wings installation documentation")]),t._v(".")],1)])}),[],!1,null,null,null);s.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/45.62b0c349.js b/assets/js/45.d370a0c3.js similarity index 99% rename from assets/js/45.62b0c349.js rename to assets/js/45.d370a0c3.js index 6f4315376..0700cfb19 100644 --- a/assets/js/45.62b0c349.js +++ b/assets/js/45.d370a0c3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{389:function(a,t,s){"use strict";s.r(t);var e=s(48),n=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"artisan-cli"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#artisan-cli"}},[a._v("#")]),a._v(" Artisan CLI")]),a._v(" "),s("p",[a._v("The Artisan CLI, command line interface, is part of the Laravel framework, which Pterodactyl is built on. The Artisan file is located in "),s("code",[a._v("/var/www/pterodactyl")]),a._v(" if you followed the official guide. This guide goes over some more Pterodactyl specific/related Artisan commands, which are all prefixed with the letter "),s("code",[a._v("p")]),a._v(" (e.g. "),s("code",[a._v("p:user:make")]),a._v("). If you'd like to view all commands, you can do so by running:")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan list\n")])])]),s("p",[a._v("To get information regarding a specific command you can do so by running:")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("help")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("command"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),s("p",[a._v("To simplify this documentation, in command usage you'll see things like the following:")]),a._v(" "),s("p",[s("code",[a._v("")]),a._v(" - Required argument")]),a._v(" "),s("p",[s("code",[a._v("[hello-world]")]),a._v(" - Optional argument")]),a._v(" "),s("p",[s("code",[a._v("{--hello-world}")]),a._v(" - Option")])]),a._v(" "),s("h2",{attrs:{id:"user-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#user-management"}},[a._v("#")]),a._v(" User Management")]),a._v(" "),s("p",[a._v("When running any of the following commands, you can either use the options or don't pass through anything and use the interactive prompt. You can also do both passing through options and using interactive prompts as well.")]),a._v(" "),s("h3",{attrs:{id:"create-user"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-user"}},[a._v("#")]),a._v(" Create User")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:user:make "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--username"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("myusername"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-first"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("My"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-last"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("Name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--password"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("supersecret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--admin"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--no-password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"delete-user"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete-user"}},[a._v("#")]),a._v(" Delete User")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:user:delete "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("username/email/UUID"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"disable-2fa"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa"}},[a._v("#")]),a._v(" Disable 2FA")]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),s("p",[a._v("Disabling 2-factor authentication should only be used as a last resort for user recovery. "),s("strong",[a._v("Please use this with caution.")])])]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:user:disable2fa "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"server-node-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-node-management"}},[a._v("#")]),a._v(" Server & Node Management")]),a._v(" "),s("h3",{attrs:{id:"create-location"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-location"}},[a._v("#")]),a._v(" Create Location")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:location:make "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--long"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"A description of this location."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"delete-location"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete-location"}},[a._v("#")]),a._v(" Delete Location")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:location:delete "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"server-bulk-power"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-bulk-power"}},[a._v("#")]),a._v(" Server Bulk Power")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:server:bulk-power "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("start, stop, kill, restart"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--servers"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--nodes"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"panel-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#panel-management"}},[a._v("#")]),a._v(" Panel Management")]),a._v(" "),s("h3",{attrs:{id:"view-panel-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#view-panel-info"}},[a._v("#")]),a._v(" View Panel Info")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:info\n")])])]),s("p",[a._v("Displays a variety of panel information that can be used to check the configuration of things such as database and email.")]),a._v(" "),s("h3",{attrs:{id:"update-panel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update-panel"}},[a._v("#")]),a._v(" Update Panel")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:upgrade "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--group"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--url"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("https://example.com/panel.tar.gz"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--release"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("latest"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--skip-download"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("p",[a._v("Downloads a new archive for Pterodactyl and executes the normal upgrade commands.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{387:function(a,t,s){"use strict";s.r(t);var e=s(48),n=Object(e.a)({},(function(){var a=this,t=a.$createElement,s=a._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[s("h1",{attrs:{id:"artisan-cli"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#artisan-cli"}},[a._v("#")]),a._v(" Artisan CLI")]),a._v(" "),s("p",[a._v("The Artisan CLI, command line interface, is part of the Laravel framework, which Pterodactyl is built on. The Artisan file is located in "),s("code",[a._v("/var/www/pterodactyl")]),a._v(" if you followed the official guide. This guide goes over some more Pterodactyl specific/related Artisan commands, which are all prefixed with the letter "),s("code",[a._v("p")]),a._v(" (e.g. "),s("code",[a._v("p:user:make")]),a._v("). If you'd like to view all commands, you can do so by running:")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan list\n")])])]),s("p",[a._v("To get information regarding a specific command you can do so by running:")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan "),s("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v("help")]),a._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("command"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[a._v("TIP")]),a._v(" "),s("p",[a._v("To simplify this documentation, in command usage you'll see things like the following:")]),a._v(" "),s("p",[s("code",[a._v("")]),a._v(" - Required argument")]),a._v(" "),s("p",[s("code",[a._v("[hello-world]")]),a._v(" - Optional argument")]),a._v(" "),s("p",[s("code",[a._v("{--hello-world}")]),a._v(" - Option")])]),a._v(" "),s("h2",{attrs:{id:"user-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#user-management"}},[a._v("#")]),a._v(" User Management")]),a._v(" "),s("p",[a._v("When running any of the following commands, you can either use the options or don't pass through anything and use the interactive prompt. You can also do both passing through options and using interactive prompts as well.")]),a._v(" "),s("h3",{attrs:{id:"create-user"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-user"}},[a._v("#")]),a._v(" Create User")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:user:make "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--username"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("myusername"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-first"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("My"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--name-last"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("Name"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--password"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("supersecret"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--admin"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1")]),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("0")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--no-password"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"delete-user"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete-user"}},[a._v("#")]),a._v(" Delete User")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:user:delete "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("username/email/UUID"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"disable-2fa"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#disable-2fa"}},[a._v("#")]),a._v(" Disable 2FA")]),a._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[a._v("WARNING")]),a._v(" "),s("p",[a._v("Disabling 2-factor authentication should only be used as a last resort for user recovery. "),s("strong",[a._v("Please use this with caution.")])])]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:user:disable2fa "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--email"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("user@example.com"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"server-node-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-node-management"}},[a._v("#")]),a._v(" Server & Node Management")]),a._v(" "),s("h3",{attrs:{id:"create-location"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#create-location"}},[a._v("#")]),a._v(" Create Location")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:location:make "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--long"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token string"}},[a._v('"A description of this location."')]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"delete-location"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#delete-location"}},[a._v("#")]),a._v(" Delete Location")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:location:delete "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--short"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("us1"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h3",{attrs:{id:"server-bulk-power"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#server-bulk-power"}},[a._v("#")]),a._v(" Server Bulk Power")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:server:bulk-power "),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("start, stop, kill, restart"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--servers"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--nodes"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[a._v("1,2")]),a._v(",3"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("h2",{attrs:{id:"panel-management"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#panel-management"}},[a._v("#")]),a._v(" Panel Management")]),a._v(" "),s("h3",{attrs:{id:"view-panel-info"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#view-panel-info"}},[a._v("#")]),a._v(" View Panel Info")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:info\n")])])]),s("p",[a._v("Displays a variety of panel information that can be used to check the configuration of things such as database and email.")]),a._v(" "),s("h3",{attrs:{id:"update-panel"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update-panel"}},[a._v("#")]),a._v(" Update Panel")]),a._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[a._v("php artisan p:upgrade "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--user"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--group"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("www-data"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--url"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("https://example.com/panel.tar.gz"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--release"),s("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),a._v("latest"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n "),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("{")]),a._v("--skip-download"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("}")]),a._v("\n")])])]),s("p",[a._v("Downloads a new archive for Pterodactyl and executes the normal upgrade commands.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/47.b8b05e62.js b/assets/js/47.86eb115e.js similarity index 99% rename from assets/js/47.b8b05e62.js rename to assets/js/47.86eb115e.js index e808b90e6..27f9f69e2 100644 --- a/assets/js/47.b8b05e62.js +++ b/assets/js/47.86eb115e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{390:function(e,t,a){"use strict";a.r(t);var s=a(48),o=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:"docker-on-debian-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#docker-on-debian-8"}},[e._v("#")]),e._v(" Docker on Debian 8")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#install-docker"}},[e._v("Install Docker")])]),a("li",[a("a",{attrs:{href:"#update-grub-startup"}},[e._v("Update GRUB Startup")])]),a("li",[a("a",{attrs:{href:"#add-backports-repo"}},[e._v("Add Backports Repo")])]),a("li",[a("a",{attrs:{href:"#update-software-setup-docker"}},[e._v("Update Software & Setup Docker")])])])]),a("p"),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("There is a potential for broken software after this upgrade as we are moving to a non-stable kernel (in regards\nto mainline Debian). Please take backups and only proceed if you are comfortable with this process.")])]),e._v(" "),a("h2",{attrs:{id:"install-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-docker"}},[e._v("#")]),e._v(" Install Docker")]),e._v(" "),a("p",[e._v("To begin with, we're going to install docker just like we would for any other OS by following Docker's\n"),a("a",{attrs:{href:"https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce",target:"_blank",rel:"noopener noreferrer"}},[e._v("official documentation for Debian"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Once you've done that, if you run "),a("code",[e._v("docker info")]),e._v(" you'll notice some missing features at the bottom, something\nlike the output below.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("WARNING: No memory limit support\nWARNING: No swap limit support\nWARNING: No kernel memory limit support\nWARNING: No oom kill disable support\nWARNING: No cpu cfs quota support\nWARNING: No cpu cfs period support\n")])])]),a("h2",{attrs:{id:"update-grub-startup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-grub-startup"}},[e._v("#")]),e._v(" Update GRUB Startup")]),e._v(" "),a("p",[e._v("To fix the memory limit support issues, we just need to add two arguments to our default grub startup. Start by\nopening "),a("code",[e._v("/etc/default/grub")]),e._v(" and adding the following arguments to "),a("code",[e._v("GRUB_CMDLINE_LINUX_DEFAULT")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("swapaccount=1 cgroup_enable=memory\n")])])]),a("p",[e._v("The line should then look like the one below — assuming nothing else was in the quote to begin with.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('GRUB_CMDLINE_LINUX_DEFAULT="swapaccount=1 cgroup_enable=memory"\n')])])]),a("p",[e._v("After doing that, run "),a("code",[e._v("sudo update-grub")]),e._v(" to update our grub configuration.")]),e._v(" "),a("h2",{attrs:{id:"add-backports-repo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-backports-repo"}},[e._v("#")]),e._v(" Add Backports Repo")]),e._v(" "),a("p",[e._v("We then need to enable the "),a("code",[e._v("jessie-backports")]),e._v(" apt repository to install a newer kernel. To do this, run the commands below.")]),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 builtin class-name"}},[e._v("echo")]),e._v(" deb http://http.debian.net/debian jessie-backports main "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" /etc/apt/sources.list.d/jessie-backports.list\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("echo")]),e._v(" deb http://http.debian.net/debian jessie-backports main contrib non-free "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" /etc/apt/sources.list.d/jessie-backports.list\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update\n")])])]),a("p",[e._v("To find the most recent kernels, run "),a("code",[e._v("apt-cache search linux-image")]),e._v(" which will list all of the ones available. In this\ncase, we'll install the "),a("code",[e._v("4.9.0")]),e._v(" kernel using the command below. Once we've done that, it is time to reboot the server\nto start using this kernel.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -t jessie-backports linux-image-4.9.0-0.bpo.3-amd64\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("reboot")]),e._v("\n")])])]),a("h2",{attrs:{id:"update-software-setup-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-software-setup-docker"}},[e._v("#")]),e._v(" Update Software & Setup Docker")]),e._v(" "),a("p",[e._v("Now that we're on the new kernel you probably need to update some software to take advantage of it. To do this,\nsimply run the command below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" upgrade\n")])])]),a("p",[e._v("Once that is done, we need to make an adjustment to docker to use "),a("code",[e._v("overlay2")]),e._v(" rather than "),a("code",[e._v("aufs")]),e._v(" since "),a("code",[e._v("aufs")]),e._v(" is not\nsupported on this kernel currently. Run the command below to do so.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sed")]),e._v(" -i "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'s,/usr/bin/dockerd,/usr/bin/dockerd --storage-driver=overlay2,g'")]),e._v(" /lib/systemd/system/docker.service\n")])])]),a("p",[e._v("Finally, update "),a("code",[e._v("systemd")]),e._v(" and start docker using the following commands.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl daemon-reload\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("service")]),e._v(" docker start\n")])])]),a("p",[e._v("Docker should now be running and reporting no errors if you run "),a("code",[e._v("docker info")]),e._v("!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{389:function(e,t,a){"use strict";a.r(t);var s=a(48),o=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:"docker-on-debian-8"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#docker-on-debian-8"}},[e._v("#")]),e._v(" Docker on Debian 8")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#install-docker"}},[e._v("Install Docker")])]),a("li",[a("a",{attrs:{href:"#update-grub-startup"}},[e._v("Update GRUB Startup")])]),a("li",[a("a",{attrs:{href:"#add-backports-repo"}},[e._v("Add Backports Repo")])]),a("li",[a("a",{attrs:{href:"#update-software-setup-docker"}},[e._v("Update Software & Setup Docker")])])])]),a("p"),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("There is a potential for broken software after this upgrade as we are moving to a non-stable kernel (in regards\nto mainline Debian). Please take backups and only proceed if you are comfortable with this process.")])]),e._v(" "),a("h2",{attrs:{id:"install-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-docker"}},[e._v("#")]),e._v(" Install Docker")]),e._v(" "),a("p",[e._v("To begin with, we're going to install docker just like we would for any other OS by following Docker's\n"),a("a",{attrs:{href:"https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce",target:"_blank",rel:"noopener noreferrer"}},[e._v("official documentation for Debian"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("p",[e._v("Once you've done that, if you run "),a("code",[e._v("docker info")]),e._v(" you'll notice some missing features at the bottom, something\nlike the output below.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("WARNING: No memory limit support\nWARNING: No swap limit support\nWARNING: No kernel memory limit support\nWARNING: No oom kill disable support\nWARNING: No cpu cfs quota support\nWARNING: No cpu cfs period support\n")])])]),a("h2",{attrs:{id:"update-grub-startup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-grub-startup"}},[e._v("#")]),e._v(" Update GRUB Startup")]),e._v(" "),a("p",[e._v("To fix the memory limit support issues, we just need to add two arguments to our default grub startup. Start by\nopening "),a("code",[e._v("/etc/default/grub")]),e._v(" and adding the following arguments to "),a("code",[e._v("GRUB_CMDLINE_LINUX_DEFAULT")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("swapaccount=1 cgroup_enable=memory\n")])])]),a("p",[e._v("The line should then look like the one below — assuming nothing else was in the quote to begin with.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v('GRUB_CMDLINE_LINUX_DEFAULT="swapaccount=1 cgroup_enable=memory"\n')])])]),a("p",[e._v("After doing that, run "),a("code",[e._v("sudo update-grub")]),e._v(" to update our grub configuration.")]),e._v(" "),a("h2",{attrs:{id:"add-backports-repo"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-backports-repo"}},[e._v("#")]),e._v(" Add Backports Repo")]),e._v(" "),a("p",[e._v("We then need to enable the "),a("code",[e._v("jessie-backports")]),e._v(" apt repository to install a newer kernel. To do this, run the commands below.")]),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 builtin class-name"}},[e._v("echo")]),e._v(" deb http://http.debian.net/debian jessie-backports main "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" /etc/apt/sources.list.d/jessie-backports.list\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("echo")]),e._v(" deb http://http.debian.net/debian jessie-backports main contrib non-free "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v(" /etc/apt/sources.list.d/jessie-backports.list\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update\n")])])]),a("p",[e._v("To find the most recent kernels, run "),a("code",[e._v("apt-cache search linux-image")]),e._v(" which will list all of the ones available. In this\ncase, we'll install the "),a("code",[e._v("4.9.0")]),e._v(" kernel using the command below. Once we've done that, it is time to reboot the server\nto start using this kernel.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" -t jessie-backports linux-image-4.9.0-0.bpo.3-amd64\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("reboot")]),e._v("\n")])])]),a("h2",{attrs:{id:"update-software-setup-docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-software-setup-docker"}},[e._v("#")]),e._v(" Update Software & Setup Docker")]),e._v(" "),a("p",[e._v("Now that we're on the new kernel you probably need to update some software to take advantage of it. To do this,\nsimply run the command below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" upgrade\n")])])]),a("p",[e._v("Once that is done, we need to make an adjustment to docker to use "),a("code",[e._v("overlay2")]),e._v(" rather than "),a("code",[e._v("aufs")]),e._v(" since "),a("code",[e._v("aufs")]),e._v(" is not\nsupported on this kernel currently. Run the command below to do so.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sed")]),e._v(" -i "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'s,/usr/bin/dockerd,/usr/bin/dockerd --storage-driver=overlay2,g'")]),e._v(" /lib/systemd/system/docker.service\n")])])]),a("p",[e._v("Finally, update "),a("code",[e._v("systemd")]),e._v(" and start docker using the following commands.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl daemon-reload\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("service")]),e._v(" docker start\n")])])]),a("p",[e._v("Docker should now be running and reporting no errors if you run "),a("code",[e._v("docker info")]),e._v("!")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/52.40ca9828.js b/assets/js/52.c69a9cce.js similarity index 99% rename from assets/js/52.40ca9828.js rename to assets/js/52.c69a9cce.js index 736ebd297..884de698a 100644 --- a/assets/js/52.40ca9828.js +++ b/assets/js/52.c69a9cce.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{397:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"upgrading-0-5-x-to-0-6-x"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-5-x-to-0-6-x"}},[e._v("#")]),e._v(" Upgrading 0.5.X to 0.6.X")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Software is Abandoned")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("abandoned software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[e._v("Wings")]),e._v(" in production environments with\n"),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(".")],1)]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#breaking-changes"}},[e._v("Breaking Changes")])]),a("li",[a("a",{attrs:{href:"#download-files"}},[e._v("Download Files")]),a("ul",[a("li",[a("a",{attrs:{href:"#start-the-daemon"}},[e._v("Start the Daemon")])])])]),a("li",[a("a",{attrs:{href:"#rebuild-containers"}},[e._v("Rebuild Containers")])])])]),a("p"),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Server Restart Required")]),e._v(" "),a("p",[e._v("Your servers will need to be restarted after upgrading the daemon in order to see the expected log output in the Panel.")])]),e._v(" "),a("h2",{attrs:{id:"breaking-changes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#breaking-changes"}},[e._v("#")]),e._v(" Breaking Changes")]),e._v(" "),a("p",[e._v("This release introduces a few breaking changes to how the Daemon operates, but maintains compatibility with "),a("code",[e._v("v0.7.X")]),e._v(" of\nthe Panel, so you don't need to worry about updating the Panel.")]),e._v(" "),a("p",[e._v("Of notable change in this release is that we've switched from using custom logging functionality to using Docker logging\nfunctionality. This allows us to better output events that happen before we can attach to the container, centralizes logic,\nand allows Docker to manage the logs (which it does very well). Now, when your server refuses to boot, instead of seeing\nan unhelpful \"Server has crashed\" message with nothing before it, you'll see "),a("em",[e._v("everything")]),e._v(" that happened in the container\nleading up to that point, assuming things were output.")]),e._v(" "),a("h2",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),a("p",[e._v("To upgrade from v0.5.X first switch the directory where you installed your Daemon. If you followed the installation\nguide your Daemon is most likely located in "),a("code",[e._v("/srv/daemon")]),e._v(". Then, download and unpack the archive using the\ncommand below.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),a("p",[e._v("Stop your Daemon process before continuing in order to avoid any issues and ensure everything updates as expected.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl stop wings\n")])])])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzv\n")])])]),a("p",[e._v("Then, update the core dependencies for the Daemon with the following command.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("npm")]),e._v(" update --only"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("production\n")])])]),a("h3",{attrs:{id:"start-the-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-the-daemon"}},[e._v("#")]),e._v(" Start the Daemon")]),e._v(" "),a("p",[e._v("Finally, start your daemon up, most likely with the command below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl start wings\n")])])]),a("h2",{attrs:{id:"rebuild-containers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rebuild-containers"}},[e._v("#")]),e._v(" Rebuild Containers")]),e._v(" "),a("p",[e._v("Because of some changes we made behind the scenes when it comes to displaying server output you'll need to rebuild and\nrestart all of your servers. The rebuild step is required, the restart step is optional, but highly recommended otherwise\nyou will not be able to see any console output.")]),e._v(" "),a("p",[e._v("Run the following commands "),a("em",[e._v("from the Panel server")]),e._v(" in order to perform a mass rebuild and restart. Replace "),a("code",[e._v("###")]),e._v(" with the\nID of the node you just upgraded, or remove the "),a("code",[e._v("--node")]),e._v(" flag entirely to rebuild on all nodes.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:server:rebuild --node"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])]),a("p",[e._v("Then, restart all of the servers using the following command, or by manually restarting them one at a time in the Panel.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:server:bulk-power restart --nodes"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{396:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"upgrading-0-5-x-to-0-6-x"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-5-x-to-0-6-x"}},[e._v("#")]),e._v(" Upgrading 0.5.X to 0.6.X")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Software is Abandoned")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("abandoned software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[e._v("Wings")]),e._v(" in production environments with\n"),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(".")],1)]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#breaking-changes"}},[e._v("Breaking Changes")])]),a("li",[a("a",{attrs:{href:"#download-files"}},[e._v("Download Files")]),a("ul",[a("li",[a("a",{attrs:{href:"#start-the-daemon"}},[e._v("Start the Daemon")])])])]),a("li",[a("a",{attrs:{href:"#rebuild-containers"}},[e._v("Rebuild Containers")])])])]),a("p"),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Server Restart Required")]),e._v(" "),a("p",[e._v("Your servers will need to be restarted after upgrading the daemon in order to see the expected log output in the Panel.")])]),e._v(" "),a("h2",{attrs:{id:"breaking-changes"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#breaking-changes"}},[e._v("#")]),e._v(" Breaking Changes")]),e._v(" "),a("p",[e._v("This release introduces a few breaking changes to how the Daemon operates, but maintains compatibility with "),a("code",[e._v("v0.7.X")]),e._v(" of\nthe Panel, so you don't need to worry about updating the Panel.")]),e._v(" "),a("p",[e._v("Of notable change in this release is that we've switched from using custom logging functionality to using Docker logging\nfunctionality. This allows us to better output events that happen before we can attach to the container, centralizes logic,\nand allows Docker to manage the logs (which it does very well). Now, when your server refuses to boot, instead of seeing\nan unhelpful \"Server has crashed\" message with nothing before it, you'll see "),a("em",[e._v("everything")]),e._v(" that happened in the container\nleading up to that point, assuming things were output.")]),e._v(" "),a("h2",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),a("p",[e._v("To upgrade from v0.5.X first switch the directory where you installed your Daemon. If you followed the installation\nguide your Daemon is most likely located in "),a("code",[e._v("/srv/daemon")]),e._v(". Then, download and unpack the archive using the\ncommand below.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),a("p",[e._v("Stop your Daemon process before continuing in order to avoid any issues and ensure everything updates as expected.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl stop wings\n")])])])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzv\n")])])]),a("p",[e._v("Then, update the core dependencies for the Daemon with the following command.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("npm")]),e._v(" update --only"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("production\n")])])]),a("h3",{attrs:{id:"start-the-daemon"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#start-the-daemon"}},[e._v("#")]),e._v(" Start the Daemon")]),e._v(" "),a("p",[e._v("Finally, start your daemon up, most likely with the command below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl start wings\n")])])]),a("h2",{attrs:{id:"rebuild-containers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#rebuild-containers"}},[e._v("#")]),e._v(" Rebuild Containers")]),e._v(" "),a("p",[e._v("Because of some changes we made behind the scenes when it comes to displaying server output you'll need to rebuild and\nrestart all of your servers. The rebuild step is required, the restart step is optional, but highly recommended otherwise\nyou will not be able to see any console output.")]),e._v(" "),a("p",[e._v("Run the following commands "),a("em",[e._v("from the Panel server")]),e._v(" in order to perform a mass rebuild and restart. Replace "),a("code",[e._v("###")]),e._v(" with the\nID of the node you just upgraded, or remove the "),a("code",[e._v("--node")]),e._v(" flag entirely to rebuild on all nodes.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:server:rebuild --node"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])]),a("p",[e._v("Then, restart all of the servers using the following command, or by manually restarting them one at a time in the Panel.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:server:bulk-power restart --nodes"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("###")]),e._v("\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/53.05c0fc8a.js b/assets/js/53.2cf7d527.js similarity index 98% rename from assets/js/53.05c0fc8a.js rename to assets/js/53.2cf7d527.js index 80e896358..0520eefcd 100644 --- a/assets/js/53.05c0fc8a.js +++ b/assets/js/53.2cf7d527.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{396:function(t,e,s){"use strict";s.r(e);var o=s(48),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"upgrading-0-6-series"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-series"}},[t._v("#")]),t._v(" Upgrading 0.6 Series")]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("This Software is Abandoned")]),t._v(" "),s("p",[t._v("This documentation is for "),s("strong",[t._v("abandoned software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),s("p",[t._v("You should be installing and using "),s("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("Wings")]),t._v(" in production environments with\n"),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(".")],1)]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Minor Versions Only")]),t._v(" "),s("p",[s("strong",[t._v("DO NOT")]),t._v(" use this guide to upgrade from "),s("code",[t._v("0.5.X")]),t._v(" to "),s("code",[t._v("0.6.X")]),t._v(", it will not work and you will encounter errors afterwards. Please check the "),s("RouterLink",{attrs:{to:"/daemon/upgrade/0.5_to_0.6.html"}},[t._v("0.5 to 0.6")]),t._v(" upgrade documentation to perform that update.")],1)]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("Your servers will not go offline during this process thanks to Docker. Clients will briefly lose connection\nto the Daemon from the Panel, but only during the restart phase.")])]),t._v(" "),s("h2",{attrs:{id:"download-newest-release"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#download-newest-release"}},[t._v("#")]),t._v(" Download Newest Release")]),t._v(" "),s("p",[t._v("First, ensure you're in the Daemon directory, "),s("code",[t._v("/srv/daemon")]),t._v(", before continuing through this process. After you've done\nthat, run the command below to pull down the latest files and unpack them in the daemon directory.")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -L https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" --strip-components"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -xzv\n")])])]),s("h2",{attrs:{id:"update-components"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update-components"}},[t._v("#")]),t._v(" Update Components")]),t._v(" "),s("p",[t._v("After you've pulled down the latest files the last thing you need to do is run the commands below to update the\ncomponents and then restart the daemon.")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Nodejs 10 Required")]),t._v(" "),s("p",[t._v("Version "),s("code",[t._v("0.6.13")]),t._v(" requires Nodejs v10 or higher in order to compile the "),s("code",[t._v("mmmagic")]),t._v(" dependency. Please ensure\nyou are running at least version 10. You can run "),s("code",[t._v("node -v")]),t._v(" to check, upgrade if it is "),s("code",[t._v("v6")]),t._v(" or "),s("code",[t._v("v8")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Audit Results")]),t._v(" "),s("p",[t._v('You may see output along the lines of "found 14 vulnerabilities (6 low, 3 moderate, 5 high) in 927 scanned packages".\nYou can safely ignore this output. Do not run the audit fix command, you '),s("em",[t._v("will")]),t._v(" break your Daemon.")])]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" --only"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("production --no-audit --unsafe-perm\nsystemctl restart wings\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{398:function(t,e,s){"use strict";s.r(e);var o=s(48),a=Object(o.a)({},(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"upgrading-0-6-series"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-series"}},[t._v("#")]),t._v(" Upgrading 0.6 Series")]),t._v(" "),s("div",{staticClass:"custom-block danger"},[s("p",{staticClass:"custom-block-title"},[t._v("This Software is Abandoned")]),t._v(" "),s("p",[t._v("This documentation is for "),s("strong",[t._v("abandoned software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),s("p",[t._v("You should be installing and using "),s("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("Wings")]),t._v(" in production environments with\n"),s("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(".")],1)]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Minor Versions Only")]),t._v(" "),s("p",[s("strong",[t._v("DO NOT")]),t._v(" use this guide to upgrade from "),s("code",[t._v("0.5.X")]),t._v(" to "),s("code",[t._v("0.6.X")]),t._v(", it will not work and you will encounter errors afterwards. Please check the "),s("RouterLink",{attrs:{to:"/daemon/upgrade/0.5_to_0.6.html"}},[t._v("0.5 to 0.6")]),t._v(" upgrade documentation to perform that update.")],1)]),t._v(" "),s("div",{staticClass:"custom-block tip"},[s("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),s("p",[t._v("Your servers will not go offline during this process thanks to Docker. Clients will briefly lose connection\nto the Daemon from the Panel, but only during the restart phase.")])]),t._v(" "),s("h2",{attrs:{id:"download-newest-release"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#download-newest-release"}},[t._v("#")]),t._v(" Download Newest Release")]),t._v(" "),s("p",[t._v("First, ensure you're in the Daemon directory, "),s("code",[t._v("/srv/daemon")]),t._v(", before continuing through this process. After you've done\nthat, run the command below to pull down the latest files and unpack them in the daemon directory.")]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("curl")]),t._v(" -L https://github.com/pterodactyl/daemon/releases/download/v0.6.13/daemon.tar.gz "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("|")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("tar")]),t._v(" --strip-components"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v(" -xzv\n")])])]),s("h2",{attrs:{id:"update-components"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#update-components"}},[t._v("#")]),t._v(" Update Components")]),t._v(" "),s("p",[t._v("After you've pulled down the latest files the last thing you need to do is run the commands below to update the\ncomponents and then restart the daemon.")]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Nodejs 10 Required")]),t._v(" "),s("p",[t._v("Version "),s("code",[t._v("0.6.13")]),t._v(" requires Nodejs v10 or higher in order to compile the "),s("code",[t._v("mmmagic")]),t._v(" dependency. Please ensure\nyou are running at least version 10. You can run "),s("code",[t._v("node -v")]),t._v(" to check, upgrade if it is "),s("code",[t._v("v6")]),t._v(" or "),s("code",[t._v("v8")]),t._v(".")])]),t._v(" "),s("div",{staticClass:"custom-block warning"},[s("p",{staticClass:"custom-block-title"},[t._v("Audit Results")]),t._v(" "),s("p",[t._v('You may see output along the lines of "found 14 vulnerabilities (6 low, 3 moderate, 5 high) in 927 scanned packages".\nYou can safely ignore this output. Do not run the audit fix command, you '),s("em",[t._v("will")]),t._v(" break your Daemon.")])]),t._v(" "),s("div",{staticClass:"language-bash extra-class"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token function"}},[t._v("install")]),t._v(" --only"),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v("production --no-audit --unsafe-perm\nsystemctl restart wings\n")])])])])}),[],!1,null,null,null);e.default=a.exports}}]); \ No newline at end of file diff --git a/assets/js/54.5fed4f57.js b/assets/js/54.a806efe3.js similarity index 96% rename from assets/js/54.5fed4f57.js rename to assets/js/54.a806efe3.js index 6019cfbfb..f5ee1c49f 100644 --- a/assets/js/54.5fed4f57.js +++ b/assets/js/54.a806efe3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{398:function(t,e,i){"use strict";i.r(e);var s=i(48),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"upgrading"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#upgrading"}},[t._v("#")]),t._v(" Upgrading")]),t._v(" "),i("div",{staticClass:"custom-block danger"},[i("p",{staticClass:"custom-block-title"},[t._v("This Software is Abandoned")]),t._v(" "),i("p",[t._v("This documentation is for "),i("strong",[t._v("abandoned software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),i("p",[t._v("You should be installing and using "),i("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("Wings")]),t._v(" in production environments with\n"),i("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(".")],1)]),t._v(" "),i("h2",{attrs:{id:"version-specific-guides"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#version-specific-guides"}},[t._v("#")]),t._v(" Version Specific Guides")]),t._v(" "),i("ul",[i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.4_to_0.5.html"}},[t._v("0.4.X to 0.5.X")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.5.html"}},[t._v("0.5.X series")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.5_to_0.6.html"}},[t._v("0.5.X to 0.6.X")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.6.html"}},[t._v("0.6.X series")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/wings/1.0/migrating.html"}},[t._v("0.6.X to 1.X.X")]),t._v(" "),i("Badge",{attrs:{text:"current",vertical:"middle"}})],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/wings/1.0/upgrading.html"}},[t._v("1.X.X series")]),t._v(" "),i("Badge",{attrs:{text:"current",vertical:"middle"}})],1)])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{397:function(t,e,i){"use strict";i.r(e);var s=i(48),r=Object(s.a)({},(function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[i("h1",{attrs:{id:"upgrading"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#upgrading"}},[t._v("#")]),t._v(" Upgrading")]),t._v(" "),i("div",{staticClass:"custom-block danger"},[i("p",{staticClass:"custom-block-title"},[t._v("This Software is Abandoned")]),t._v(" "),i("p",[t._v("This documentation is for "),i("strong",[t._v("abandoned software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),i("p",[t._v("You should be installing and using "),i("RouterLink",{attrs:{to:"/wings/1.0/installing.html"}},[t._v("Wings")]),t._v(" in production environments with\n"),i("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(".")],1)]),t._v(" "),i("h2",{attrs:{id:"version-specific-guides"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#version-specific-guides"}},[t._v("#")]),t._v(" Version Specific Guides")]),t._v(" "),i("ul",[i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.4_to_0.5.html"}},[t._v("0.4.X to 0.5.X")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.5.html"}},[t._v("0.5.X series")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.5_to_0.6.html"}},[t._v("0.5.X to 0.6.X")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/daemon/0.6/upgrade/0.6.html"}},[t._v("0.6.X series")])],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/wings/1.0/migrating.html"}},[t._v("0.6.X to 1.X.X")]),t._v(" "),i("Badge",{attrs:{text:"current",vertical:"middle"}})],1),t._v(" "),i("li",[i("RouterLink",{attrs:{to:"/wings/1.0/upgrading.html"}},[t._v("1.X.X series")]),t._v(" "),i("Badge",{attrs:{text:"current",vertical:"middle"}})],1)])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/55.45dcd989.js b/assets/js/55.398d2689.js similarity index 98% rename from assets/js/55.45dcd989.js rename to assets/js/55.398d2689.js index e988c56ca..997628131 100644 --- a/assets/js/55.45dcd989.js +++ b/assets/js/55.398d2689.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{401:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"upgrading-php"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-php"}},[e._v("#")]),e._v(" Upgrading PHP")]),e._v(" "),a("p",[e._v("This documentation includes instructions for upgrading your system to the latest version of PHP. Please reference the\ntable below to check what version you need for your version of Pterodactyl.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Panel Version")]),e._v(" "),a("th",[e._v("PHP Version")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("1.0.0 - 1.2.0")]),e._v(" "),a("td",[e._v("7.3, 7.4")])]),e._v(" "),a("tr",[a("td",[e._v("1.3.0+")]),e._v(" "),a("td",[e._v("7.4, 8.0")])]),e._v(" "),a("tr",[a("td",[e._v("1.8.0+")]),e._v(" "),a("td",[e._v("7.4, 8.0, 8.1")])]),e._v(" "),a("tr",[a("td",[e._v("1.11.0+")]),e._v(" "),a("td",[e._v("8.0, 8.1")])])])]),e._v(" "),a("h2",{attrs:{id:"install-php"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-php"}},[e._v("#")]),e._v(" Install PHP")]),e._v(" "),a("p",[e._v("In order to install PHP 8.1, you will need to run the following command. Please keep in mind different operating systems\nmay have slightly different requirements for how this command is formatted.")]),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("# Add additional repository for PHP")]),e._v("\nadd-apt-repository -y ppa:ondrej/php\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y update\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" php8.1 php8.1-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h2",{attrs:{id:"update-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-composer"}},[e._v("#")]),e._v(" Update Composer")]),e._v(" "),a("p",[e._v("As of "),a("code",[e._v("Panel@1.3.0")]),e._v(" we require "),a("code",[e._v("composer")]),e._v(" v2. To update composer you will need to run the following command which will\nperform the composer self-update process and move you over to version 2.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("composer self-update --2\n")])])]),a("h2",{attrs:{id:"webserver-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#webserver-configuration"}},[e._v("#")]),e._v(" Webserver Configuration")]),e._v(" "),a("tabs",[a("tab",{attrs:{name:"NGINX"}},[a("p",[e._v("After upgrading to PHP 8.1, you will most likely need to update your NGINX configuration. Your configuration file\nis most likely called "),a("code",[e._v("pterodactyl.conf")]),e._v(" and located in the "),a("code",[e._v("/etc/nginx/sites-available/")]),e._v(" directory, or if on CentOS,\n"),a("code",[e._v("/etc/nginx/conf.d/")]),e._v(".")]),e._v(" "),a("p",[e._v("Make sure to update the path in the command below to reflect the actual location of your configuration 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 function"}},[e._v("sed")]),e._v(" -i -e "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'s/php[7|8].[0-9]-fpm.sock/php8.1-fpm.sock/'")]),e._v(" /etc/nginx/sites-available/pterodactyl.conf\n")])])]),a("p",[e._v("Once you have edited the file run the command below to reload nginx and apply your changes.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl reload nginx\n")])])])]),e._v(" "),a("tab",{attrs:{name:"Apache"}},[a("p",[e._v("Run the commands below to disable all previous PHP versions and enable PHP 8.1 when serving requests.")]),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("# Hint: a2dismod = a2_disable_module 🤯")]),e._v("\na2dismod php*\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Hint: a2enmod = a2_enable_module 🤯")]),e._v("\na2enmod php8.1\n\n")])])])])],1),e._v(" "),a("h3",{attrs:{id:"return-to-the-1-x-x-upgrade-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-to-the-1-x-x-upgrade-guide"}},[e._v("#")]),e._v(" "),a("RouterLink",{attrs:{to:"/panel/1.0/upgrade/1.0.html#fetch-updated-files"}},[e._v("Return to the 1.X.X Upgrade Guide")])],1)],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{400:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"upgrading-php"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-php"}},[e._v("#")]),e._v(" Upgrading PHP")]),e._v(" "),a("p",[e._v("This documentation includes instructions for upgrading your system to the latest version of PHP. Please reference the\ntable below to check what version you need for your version of Pterodactyl.")]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Panel Version")]),e._v(" "),a("th",[e._v("PHP Version")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[e._v("1.0.0 - 1.2.0")]),e._v(" "),a("td",[e._v("7.3, 7.4")])]),e._v(" "),a("tr",[a("td",[e._v("1.3.0+")]),e._v(" "),a("td",[e._v("7.4, 8.0")])]),e._v(" "),a("tr",[a("td",[e._v("1.8.0+")]),e._v(" "),a("td",[e._v("7.4, 8.0, 8.1")])]),e._v(" "),a("tr",[a("td",[e._v("1.11.0+")]),e._v(" "),a("td",[e._v("8.0, 8.1")])])])]),e._v(" "),a("h2",{attrs:{id:"install-php"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#install-php"}},[e._v("#")]),e._v(" Install PHP")]),e._v(" "),a("p",[e._v("In order to install PHP 8.1, you will need to run the following command. Please keep in mind different operating systems\nmay have slightly different requirements for how this command is formatted.")]),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("# Add additional repository for PHP")]),e._v("\nadd-apt-repository -y ppa:ondrej/php\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y update\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" php8.1 php8.1-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),a("h2",{attrs:{id:"update-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-composer"}},[e._v("#")]),e._v(" Update Composer")]),e._v(" "),a("p",[e._v("As of "),a("code",[e._v("Panel@1.3.0")]),e._v(" we require "),a("code",[e._v("composer")]),e._v(" v2. To update composer you will need to run the following command which will\nperform the composer self-update process and move you over to version 2.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("composer self-update --2\n")])])]),a("h2",{attrs:{id:"webserver-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#webserver-configuration"}},[e._v("#")]),e._v(" Webserver Configuration")]),e._v(" "),a("tabs",[a("tab",{attrs:{name:"NGINX"}},[a("p",[e._v("After upgrading to PHP 8.1, you will most likely need to update your NGINX configuration. Your configuration file\nis most likely called "),a("code",[e._v("pterodactyl.conf")]),e._v(" and located in the "),a("code",[e._v("/etc/nginx/sites-available/")]),e._v(" directory, or if on CentOS,\n"),a("code",[e._v("/etc/nginx/conf.d/")]),e._v(".")]),e._v(" "),a("p",[e._v("Make sure to update the path in the command below to reflect the actual location of your configuration 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 function"}},[e._v("sed")]),e._v(" -i -e "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'s/php[7|8].[0-9]-fpm.sock/php8.1-fpm.sock/'")]),e._v(" /etc/nginx/sites-available/pterodactyl.conf\n")])])]),a("p",[e._v("Once you have edited the file run the command below to reload nginx and apply your changes.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("systemctl reload nginx\n")])])])]),e._v(" "),a("tab",{attrs:{name:"Apache"}},[a("p",[e._v("Run the commands below to disable all previous PHP versions and enable PHP 8.1 when serving requests.")]),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("# Hint: a2dismod = a2_disable_module 🤯")]),e._v("\na2dismod php*\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Hint: a2enmod = a2_enable_module 🤯")]),e._v("\na2enmod php8.1\n\n")])])])])],1),e._v(" "),a("h3",{attrs:{id:"return-to-the-1-x-x-upgrade-guide"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#return-to-the-1-x-x-upgrade-guide"}},[e._v("#")]),e._v(" "),a("RouterLink",{attrs:{to:"/panel/1.0/upgrade/1.0.html#fetch-updated-files"}},[e._v("Return to the 1.X.X Upgrade Guide")])],1)],1)}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/56.0431282b.js b/assets/js/56.7f2bcbe4.js similarity index 99% rename from assets/js/56.0431282b.js rename to assets/js/56.7f2bcbe4.js index 7375f07f7..7a21d8c24 100644 --- a/assets/js/56.0431282b.js +++ b/assets/js/56.7f2bcbe4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{400:function(e,t,a){"use strict";a.r(t);var o=a(48),n=Object(o.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:"environment-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-configuration"}},[e._v("#")]),e._v(" Environment Configuration")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#reporting-all-exceptions"}},[e._v("Reporting All Exceptions")])]),a("li",[a("a",{attrs:{href:"#client-databases"}},[e._v("Client Databases")])]),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:"#increasing-the-editable-file-size"}},[e._v("Increasing the Editable File Size")])]),a("li",[a("a",{attrs:{href:"#disable-or-modify-recaptcha"}},[e._v("Disable or Modify ReCaptcha")]),a("ul",[a("li",[a("a",{attrs:{href:"#using-your-own-keys"}},[e._v("Using Your Own Keys")])])])])])]),a("p"),e._v(" "),a("p",[e._v("Pterodactyl's environment settings are configured and stored in an environment file — "),a("code",[e._v(".env")]),e._v(" — located in the\ninstallation root directory — generally "),a("code",[e._v("/var/www/pterodactyl")]),e._v(". Some of these settings are also stored in the database\nand will override settings found in the environment file.")]),e._v(" "),a("p",[e._v("To change this behavior you can edit the "),a("code",[e._v(".env")]),e._v(" file and change the setting "),a("code",[e._v("APP_ENVIRONMENT_ONLY=false")]),e._v(" to\n"),a("code",[e._v("APP_ENVIRONMENT_ONLY=true")]),e._v(" which will take effect the next time you refresh a page on the Panel. Generally you will\nonly need to do this if you severly corrupt a setting in the Panel or are deep in development with the software.")]),e._v(" "),a("h2",{attrs:{id:"reporting-all-exceptions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reporting-all-exceptions"}},[e._v("#")]),e._v(" Reporting All Exceptions")]),e._v(" "),a("p",[e._v("By default Pterodactyl only logs and reports exceptions that are, well, exceptional by nature. There are some exceptions\nthat we expect to occur such as authentication failures or validation issues. However, in rare instances when developing,\nor even on production servers, you might need to have all exceptions logged to detect inconsistent behavior.")]),e._v(" "),a("p",[e._v("To do this, simply set "),a("code",[e._v("APP_REPORT_ALL_EXCEPTIONS=true")]),e._v(" in your "),a("code",[e._v(".env")]),e._v(" file. You'll want to turn this off once you've\ncompleted whatever it is you're needing the exceptions for, otherwise your logs will become very large, very quickly.")]),e._v(" "),a("h2",{attrs:{id:"client-databases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-databases"}},[e._v("#")]),e._v(" Client Databases")]),e._v(" "),a("p",[e._v("By default Pterodactyl ships with the ability for clients to have their own per-server databases. If you wish to disable\nthis ability, set "),a("code",[e._v("PTERODACTYL_CLIENT_DATABASES_ENABLED")]),e._v(" to be "),a("code",[e._v("false")]),e._v(". Pterodactyl also attempts to create databases\non a database host assigned to the current server's node but will use any host if one can't be found. If you would like\nto force a database to be created only on a host belonging to that server's node, set "),a("code",[e._v("PTERODACTYL_CLIENT_DATABASES_ALLOW_RANDOM")]),e._v("\nto be "),a("code",[e._v("false")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_CLIENT_DATABASES_ENABLED=true\nPTERODACTYL_CLIENT_DATABASES_ALLOW_RANDOM=true\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("If you are planning on running Pterodactyl behind a reverse proxy, either using NGINX or because you are using\n"),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(",\nyou will need to make a quick modification to the Panel to ensure things continue to work as expected. By default when\nyou are using these reverse proxies your Panel will not understand how to properly handle requests and you'll most likely\nbe unable to login, or will see security warnings in your browser console as it attempts to load insecure assets. This\nis because the internal logic the Panel is using to determine how links should be generated thinks it is running over\nHTTP, 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\nhighly suggest providing a specific IP address (or comma separated list of IPs) rather than allowing "),a("code",[e._v("*")]),e._v(". For example,\nif your proxy is running on the same machine as the server, chances are that something like "),a("code",[e._v("TRUSTED_PROXIES=127.0.0.1")]),e._v("\nwill 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- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("proxy_set_header X-Real-IP $remote_addr;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_redirect off;\nproxy_buffering off;\nproxy_request_buffering off;\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- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("TRUSTED_PROXIES=103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,104.16.0.0/12,108.162.192.0/18,131.0.72.0/22,141.101.64.0/18,162.158.0.0/15,172.64.0.0/13,173.245.48.0/20,188.114.96.0/20,190.93.240.0/20,197.234.240.0/22,198.41.128.0/17\n")])])]),a("h2",{attrs:{id:"increasing-the-editable-file-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-editable-file-size"}},[e._v("#")]),e._v(" Increasing the Editable File Size")]),e._v(" "),a("p",[e._v("By default the Panel attempts to set a reasonable limit for editing files through the web based file manager. However,\nsome users find it too restrictive and wish to increase the size. This is controlled by a configuration value that can\nalso be set using the "),a("code",[e._v(".env")]),e._v(" file. The default value is "),a("code",[e._v("50,000")]),e._v(" bytes but this can be increased as you see fit.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_FILES_MAX_EDIT_SIZE=50000\n")])])]),a("h2",{attrs:{id:"disable-or-modify-recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disable-or-modify-recaptcha"}},[e._v("#")]),e._v(" Disable or Modify ReCaptcha")]),e._v(" "),a("p",[e._v("To disable reCAPTCHA on login or password reset, simply set "),a("code",[e._v("RECAPTCHA_ENABLED=false")]),e._v(" in the environment file. This\nchange will take effect immediately.")]),e._v(" "),a("h3",{attrs:{id:"using-your-own-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-your-own-keys"}},[e._v("#")]),e._v(" Using Your Own Keys")]),e._v(" "),a("p",[e._v("Pterodactyl comes preconfigured using a public set of reCAPTCHA keys but you may wish to use your own site\nspecific keys. To do so, follow the instructions below.")]),e._v(" "),a("ol",[a("li",[e._v("Visit "),a("a",{attrs:{href:"https://www.google.com/recaptcha/admin#list",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google's reCAPTCHA Admin Console"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v('Click "Register New Site" and fill in a name for your keys.')]),e._v(" "),a("li",[e._v("Choose "),a("code",[e._v("reCAPTCHA v2")]),e._v(" and ensure that the option for "),a("code",[e._v("Invisible")]),e._v(" is selected.")]),e._v(" "),a("li",[e._v("Include the domain that your panel is located on.")]),e._v(" "),a("li",[e._v('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.')])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Disabling Domain Verification")]),e._v(" "),a("p",[e._v('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.')])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{402:function(e,t,a){"use strict";a.r(t);var o=a(48),n=Object(o.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:"environment-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-configuration"}},[e._v("#")]),e._v(" Environment Configuration")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#reporting-all-exceptions"}},[e._v("Reporting All Exceptions")])]),a("li",[a("a",{attrs:{href:"#client-databases"}},[e._v("Client Databases")])]),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:"#increasing-the-editable-file-size"}},[e._v("Increasing the Editable File Size")])]),a("li",[a("a",{attrs:{href:"#disable-or-modify-recaptcha"}},[e._v("Disable or Modify ReCaptcha")]),a("ul",[a("li",[a("a",{attrs:{href:"#using-your-own-keys"}},[e._v("Using Your Own Keys")])])])])])]),a("p"),e._v(" "),a("p",[e._v("Pterodactyl's environment settings are configured and stored in an environment file — "),a("code",[e._v(".env")]),e._v(" — located in the\ninstallation root directory — generally "),a("code",[e._v("/var/www/pterodactyl")]),e._v(". Some of these settings are also stored in the database\nand will override settings found in the environment file.")]),e._v(" "),a("p",[e._v("To change this behavior you can edit the "),a("code",[e._v(".env")]),e._v(" file and change the setting "),a("code",[e._v("APP_ENVIRONMENT_ONLY=false")]),e._v(" to\n"),a("code",[e._v("APP_ENVIRONMENT_ONLY=true")]),e._v(" which will take effect the next time you refresh a page on the Panel. Generally you will\nonly need to do this if you severly corrupt a setting in the Panel or are deep in development with the software.")]),e._v(" "),a("h2",{attrs:{id:"reporting-all-exceptions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#reporting-all-exceptions"}},[e._v("#")]),e._v(" Reporting All Exceptions")]),e._v(" "),a("p",[e._v("By default Pterodactyl only logs and reports exceptions that are, well, exceptional by nature. There are some exceptions\nthat we expect to occur such as authentication failures or validation issues. However, in rare instances when developing,\nor even on production servers, you might need to have all exceptions logged to detect inconsistent behavior.")]),e._v(" "),a("p",[e._v("To do this, simply set "),a("code",[e._v("APP_REPORT_ALL_EXCEPTIONS=true")]),e._v(" in your "),a("code",[e._v(".env")]),e._v(" file. You'll want to turn this off once you've\ncompleted whatever it is you're needing the exceptions for, otherwise your logs will become very large, very quickly.")]),e._v(" "),a("h2",{attrs:{id:"client-databases"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-databases"}},[e._v("#")]),e._v(" Client Databases")]),e._v(" "),a("p",[e._v("By default Pterodactyl ships with the ability for clients to have their own per-server databases. If you wish to disable\nthis ability, set "),a("code",[e._v("PTERODACTYL_CLIENT_DATABASES_ENABLED")]),e._v(" to be "),a("code",[e._v("false")]),e._v(". Pterodactyl also attempts to create databases\non a database host assigned to the current server's node but will use any host if one can't be found. If you would like\nto force a database to be created only on a host belonging to that server's node, set "),a("code",[e._v("PTERODACTYL_CLIENT_DATABASES_ALLOW_RANDOM")]),e._v("\nto be "),a("code",[e._v("false")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_CLIENT_DATABASES_ENABLED=true\nPTERODACTYL_CLIENT_DATABASES_ALLOW_RANDOM=true\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("If you are planning on running Pterodactyl behind a reverse proxy, either using NGINX or because you are using\n"),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(",\nyou will need to make a quick modification to the Panel to ensure things continue to work as expected. By default when\nyou are using these reverse proxies your Panel will not understand how to properly handle requests and you'll most likely\nbe unable to login, or will see security warnings in your browser console as it attempts to load insecure assets. This\nis because the internal logic the Panel is using to determine how links should be generated thinks it is running over\nHTTP, 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\nhighly suggest providing a specific IP address (or comma separated list of IPs) rather than allowing "),a("code",[e._v("*")]),e._v(". For example,\nif your proxy is running on the same machine as the server, chances are that something like "),a("code",[e._v("TRUSTED_PROXIES=127.0.0.1")]),e._v("\nwill 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- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("proxy_set_header X-Real-IP $remote_addr;\nproxy_set_header Host $host;\nproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\nproxy_set_header X-Forwarded-Proto $scheme;\nproxy_redirect off;\nproxy_buffering off;\nproxy_request_buffering off;\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- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("TRUSTED_PROXIES=103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,104.16.0.0/12,108.162.192.0/18,131.0.72.0/22,141.101.64.0/18,162.158.0.0/15,172.64.0.0/13,173.245.48.0/20,188.114.96.0/20,190.93.240.0/20,197.234.240.0/22,198.41.128.0/17\n")])])]),a("h2",{attrs:{id:"increasing-the-editable-file-size"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#increasing-the-editable-file-size"}},[e._v("#")]),e._v(" Increasing the Editable File Size")]),e._v(" "),a("p",[e._v("By default the Panel attempts to set a reasonable limit for editing files through the web based file manager. However,\nsome users find it too restrictive and wish to increase the size. This is controlled by a configuration value that can\nalso be set using the "),a("code",[e._v(".env")]),e._v(" file. The default value is "),a("code",[e._v("50,000")]),e._v(" bytes but this can be increased as you see fit.")]),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("PTERODACTYL_FILES_MAX_EDIT_SIZE=50000\n")])])]),a("h2",{attrs:{id:"disable-or-modify-recaptcha"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#disable-or-modify-recaptcha"}},[e._v("#")]),e._v(" Disable or Modify ReCaptcha")]),e._v(" "),a("p",[e._v("To disable reCAPTCHA on login or password reset, simply set "),a("code",[e._v("RECAPTCHA_ENABLED=false")]),e._v(" in the environment file. This\nchange will take effect immediately.")]),e._v(" "),a("h3",{attrs:{id:"using-your-own-keys"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-your-own-keys"}},[e._v("#")]),e._v(" Using Your Own Keys")]),e._v(" "),a("p",[e._v("Pterodactyl comes preconfigured using a public set of reCAPTCHA keys but you may wish to use your own site\nspecific keys. To do so, follow the instructions below.")]),e._v(" "),a("ol",[a("li",[e._v("Visit "),a("a",{attrs:{href:"https://www.google.com/recaptcha/admin#list",target:"_blank",rel:"noopener noreferrer"}},[e._v("Google's reCAPTCHA Admin Console"),a("OutboundLink")],1),e._v(".")]),e._v(" "),a("li",[e._v('Click "Register New Site" and fill in a name for your keys.')]),e._v(" "),a("li",[e._v("Choose "),a("code",[e._v("reCAPTCHA v2")]),e._v(" and ensure that the option for "),a("code",[e._v("Invisible")]),e._v(" is selected.")]),e._v(" "),a("li",[e._v("Include the domain that your panel is located on.")]),e._v(" "),a("li",[e._v('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.')])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Disabling Domain Verification")]),e._v(" "),a("p",[e._v('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.')])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/57.fdfaf056.js b/assets/js/57.afd77f2b.js similarity index 99% rename from assets/js/57.fdfaf056.js rename to assets/js/57.afd77f2b.js index 8bdab6fe4..178377f0b 100644 --- a/assets/js/57.fdfaf056.js +++ b/assets/js/57.afd77f2b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{402:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("Pterodactyl Panel is designed to run on your own web server. You will need to have root access to your server in order\nto run and use this panel.")]),e._v(" "),a("p",[e._v("This panel does not exist as a drag-and-drop service to run your servers. It is a highly complex system\nrequiring multiple dependencies and administrators willing to spend some time learning how to use it. If you expect\nto be able to install this with no understanding of basic Linux system administration you should stop and turn\naround now.")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#picking-a-server-os"}},[e._v("Picking a Server OS")])]),a("li",[a("a",{attrs:{href:"#dependencies"}},[e._v("Dependencies")]),a("ul",[a("li",[a("a",{attrs:{href:"#example-dependency-installation"}},[e._v("Example Dependency Installation")])]),a("li",[a("a",{attrs:{href:"#installing-composer"}},[e._v("Installing Composer")])])])]),a("li",[a("a",{attrs:{href:"#download-files"}},[e._v("Download Files")])]),a("li",[a("a",{attrs:{href:"#installation"}},[e._v("Installation")]),a("ul",[a("li",[a("a",{attrs:{href:"#environment-configuration"}},[e._v("Environment Configuration")])]),a("li",[a("a",{attrs:{href:"#database-setup"}},[e._v("Database Setup")])]),a("li",[a("a",{attrs:{href:"#add-the-first-user"}},[e._v("Add The First User")])]),a("li",[a("a",{attrs:{href:"#set-permissions"}},[e._v("Set Permissions")])])])]),a("li",[a("a",{attrs:{href:"#queue-listeners"}},[e._v("Queue Listeners")]),a("ul",[a("li",[a("a",{attrs:{href:"#crontab-configuration"}},[e._v("Crontab Configuration")])]),a("li",[a("a",{attrs:{href:"#create-queue-worker"}},[e._v("Create Queue Worker")])])])])])]),a("p"),e._v(" "),a("h2",{attrs:{id:"picking-a-server-os"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#picking-a-server-os"}},[e._v("#")]),e._v(" Picking a Server OS")]),e._v(" "),a("p",[e._v("Pterodactyl runs on a wide range of operating systems, so pick whichever you are most comfortable using.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Pterodactyl does not support most OpenVZ systems due to incompatabilities with Docker. If you are planning on running\nthis software on an OpenVZ based system you will — most likely — not be successful.")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Operating System")]),e._v(" "),a("th",[e._v("Version")]),e._v(" "),a("th",{staticStyle:{"text-align":"center"}},[e._v("Supported")]),e._v(" "),a("th",[e._v("Notes")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("strong",[e._v("Ubuntu")])]),e._v(" "),a("td",[e._v("18.04")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Documentation written assuming Ubuntu 18.04 as the base OS.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/ubuntu2004.html"}},[e._v("20.04")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("CentOS")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/centos7.html"}},[e._v("7")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Extra repos are required.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/centos8.html"}},[e._v("8")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("All required packages are part of the base repos.")])]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("Debian")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/debian9.html"}},[e._v("9")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Extra repos are required.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/debian10.html"}},[e._v("10")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("All required packages are part of the base repos.")])])])]),e._v(" "),a("h2",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies"}},[e._v("#")]),e._v(" Dependencies")]),e._v(" "),a("ul",[a("li",[e._v("PHP "),a("code",[e._v("7.2")]),e._v(" with the following extensions: "),a("code",[e._v("cli")]),e._v(", "),a("code",[e._v("openssl")]),e._v(", "),a("code",[e._v("gd")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("PDO")]),e._v(", "),a("code",[e._v("mbstring")]),e._v(", "),a("code",[e._v("tokenizer")]),e._v(", "),a("code",[e._v("bcmath")]),e._v(", "),a("code",[e._v("xml")]),e._v(" or "),a("code",[e._v("dom")]),e._v(", "),a("code",[e._v("curl")]),e._v(", "),a("code",[e._v("zip")]),e._v(", and "),a("code",[e._v("fpm")]),e._v(" if you are planning to use nginx")]),e._v(" "),a("li",[e._v("MySQL "),a("code",[e._v("5.7")]),e._v(" "),a("strong",[e._v("or")]),e._v(" MariaDB "),a("code",[e._v("10.1.3")]),e._v(" or higher")]),e._v(" "),a("li",[e._v("Redis ("),a("code",[e._v("redis-server")]),e._v(")")]),e._v(" "),a("li",[e._v("A webserver (Apache, NGINX, Caddy, etc.)")]),e._v(" "),a("li",[a("code",[e._v("curl")])]),e._v(" "),a("li",[a("code",[e._v("tar")])]),e._v(" "),a("li",[a("code",[e._v("unzip")])]),e._v(" "),a("li",[a("code",[e._v("git")])]),e._v(" "),a("li",[a("code",[e._v("composer")])])]),e._v(" "),a("h3",{attrs:{id:"example-dependency-installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-dependency-installation"}},[e._v("#")]),e._v(" Example Dependency Installation")]),e._v(" "),a("p",[e._v("The commands below are simply an example of how you might install these dependencies. Please consult with your\noperating system's package manager to determine the correct packages to install.")]),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('# Add "add-apt-repository" command')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" software-properties-common "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add additional repositories for PHP, Redis, and MariaDB")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("LC_ALL")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("C.UTF-8 add-apt-repository -y ppa:ondrej/php\nadd-apt-repository -y ppa:chris-lea/redis-server\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("bash")]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Update repositories list")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add universe repository if you are on Ubuntu 18.04")]),e._v("\napt-add-repository universe\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Install Dependencies")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" php7.2 php7.2-cli php7.2-gd php7.2-mysql php7.2-pdo php7.2-mbstring php7.2-tokenizer php7.2-bcmath php7.2-xml php7.2-fpm php7.2-curl php7.2-zip mariadb-server nginx "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("unzip")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" redis-server\n")])])]),a("h3",{attrs:{id:"installing-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-composer"}},[e._v("#")]),e._v(" Installing Composer")]),e._v(" "),a("p",[e._v("Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll\nneed composer installed before continuing in this process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("composer --1\n")])])]),a("h2",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),a("p",[e._v("The first step in this process is to create the folder where the panel will live and then move ourselves into that\nnewly created folder. Below is an example of how to perform this operation.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" -p /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" /var/www/pterodactyl\n")])])]),a("p",[e._v("Once you have created a new directory for the Panel and moved into it you'll need to download the Panel files. This\nis as simple as using "),a("code",[e._v("curl")]),e._v(" to download our pre-packaged content. Once it is downloaded you'll need to unpack the archive\nand then set the correct permissions on the "),a("code",[e._v("storage/")]),e._v(" and "),a("code",[e._v("bootstrap/cache/")]),e._v(" directories. These directories\nallow us to store files as well as keep a speedy cache available to reduce load times.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzvf panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache/\n")])])]),a("h2",{attrs:{id:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[e._v("#")]),e._v(" Installation")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("Now that all of the files have been downloaded we need to configure some core aspects of the Panel.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Database Configuration")]),e._v(" "),a("p",[e._v("You will need a database setup and a user with the correct permissions created for that database before\ncontinuing any further. See below to quickly create a user and database for your Pterodactyl panel, if you are unsure how to do this or want more information, please have a look at "),a("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[e._v("Setting up MySQL")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ mysql -u root -p\n\nmysql> CREATE USER 'pterodactyl'@'localhost' IDENTIFIED WITH mysql_native_password BY 'A secure password';\nmysql> CREATE DATABASE panel;\nmysql> GRANT ALL ON panel.* TO 'pterodactyl'@'localhost' WITH GRANT OPTION;\n\n")])])])]),e._v(" "),a("p",[e._v("First we will copy over our default environment settings file, install core dependencies, and then generate a\nnew application encryption key.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("cp")]),e._v(" .env.example .env\ncomposer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Only run the command below if you are installing this Panel for")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# the first time and do not have any Pterodactyl Panel data in the database.")]),e._v("\nphp artisan key:generate --force\n")])])]),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),a("p",[e._v("Back up your encryption key (APP_KEY in the "),a("code",[e._v(".env")]),e._v(" file). It is used as an encryption key for all data that needs to be stored securely (e.g. api keys).\nStore it somewhere safe - not just on your server. If you lose it, all encrypted data is useless and can't be restored, even if you have database backups.")])]),e._v(" "),a("h3",{attrs:{id:"environment-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-configuration"}},[e._v("#")]),e._v(" Environment Configuration")]),e._v(" "),a("p",[e._v("Pterodactyl's core environment is easily configured using a few different CLI commands built into the app. This step\nwill cover setting up things such as sessions, caching, database credentials, and email sending.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:database\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# To use PHP\'s internal mail sending (not recommended), select "mail". To use a')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# custom SMTP server, select "smtp".')]),e._v("\nphp artisan p:environment:mail\n")])])]),a("h3",{attrs:{id:"database-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-setup"}},[e._v("#")]),e._v(" Database Setup")]),e._v(" "),a("p",[e._v("Now we need to setup all of the base data for the Panel in the database you created earlier. "),a("strong",[e._v("The command below\nmay take some time to run depending on your machine. Please "),a("em",[e._v("DO NOT")]),e._v(" exit the process until it is completed!")]),e._v(" This\ncommand will setup the database tables and then add all of the Nests & Eggs that power Pterodactyl.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --seed\n")])])]),a("h3",{attrs:{id:"add-the-first-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-user"}},[e._v("#")]),e._v(" Add The First User")]),e._v(" "),a("p",[e._v("You'll then need to create an administrative user so that you can log into the panel. To do so, run the command below.\nAt this time passwords "),a("strong",[e._v("must")]),e._v(" meet the following requirements: 8 characters, mixed case, at least one number.")]),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:make\n")])])]),a("h3",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step in the installation process is to set the correct permissions on the Panel files so that the webserver can\nuse them correctly.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])]),a("h2",{attrs:{id:"queue-listeners"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queue-listeners"}},[e._v("#")]),e._v(" Queue Listeners")]),e._v(" "),a("p",[e._v("We make use of queues to make the application faster and handle sending emails and other actions in the background.\nYou will need to setup the queue worker for these actions to be processed.")]),e._v(" "),a("h3",{attrs:{id:"crontab-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crontab-configuration"}},[e._v("#")]),e._v(" Crontab Configuration")]),e._v(" "),a("p",[e._v("The first thing we need to do is create a new cronjob that runs every minute to process specific Pterodactyl tasks, such\nas session cleanup and sending scheduled tasks to daemons. You'll want to open your crontab using "),a("code",[e._v("sudo crontab -e")]),e._v(" and\nthen paste the line below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("* * * * * php /var/www/pterodactyl/artisan schedule:run "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">>")]),e._v(" /dev/null "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("2")]),e._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("&1")]),e._v("\n")])])]),a("h3",{attrs:{id:"create-queue-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-queue-worker"}},[e._v("#")]),e._v(" Create Queue Worker")]),e._v(" "),a("p",[e._v("Next you need to create a new systemd worker to keep our queue process running in the background. This queue is responsible\nfor sending emails and handling many other background tasks for Pterodactyl.")]),e._v(" "),a("p",[e._v("Create a file called "),a("code",[e._v("pteroq.service")]),e._v(" in "),a("code",[e._v("/etc/systemd/system")]),e._v(" with the contents below.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("# Pterodactyl Queue Worker File\n# ----------------------------------\n\n[Unit]\nDescription=Pterodactyl Queue Worker\nAfter=redis-server.service\n\n[Service]\n# On some systems the user and group might be different.\n# Some systems use `apache` or `nginx` as the user and group.\nUser=www-data\nGroup=www-data\nRestart=always\nExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3\n\n[Install]\nWantedBy=multi-user.target\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Redis on CentOS")]),e._v(" "),a("p",[e._v("If you are using CentOS, you will need to replace "),a("code",[e._v("redis-server.service")]),e._v(" with "),a("code",[e._v("redis.service")]),e._v(" at the "),a("code",[e._v("After=")]),e._v(" line in order to ensure "),a("code",[e._v("redis")]),e._v(" starts before the queue worker.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("If you are not using "),a("code",[e._v("redis")]),e._v(" for anything you should remove the "),a("code",[e._v("After=")]),e._v(" line, otherwise you will encounter errors\nwhen the service starts.")])]),e._v(" "),a("p",[e._v("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:")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now redis-server\n")])])]),a("p",[e._v("Finally, enable the service and set it to boot on machine start.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now pteroq.service\n")])])]),a("h4",{attrs:{id:"next-step-webserver-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next-step-webserver-configuration"}},[e._v("#")]),e._v(" Next Step: "),a("a",{attrs:{href:"./webserver_configuration"}},[e._v("Webserver Configuration")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{401:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("Pterodactyl Panel is designed to run on your own web server. You will need to have root access to your server in order\nto run and use this panel.")]),e._v(" "),a("p",[e._v("This panel does not exist as a drag-and-drop service to run your servers. It is a highly complex system\nrequiring multiple dependencies and administrators willing to spend some time learning how to use it. If you expect\nto be able to install this with no understanding of basic Linux system administration you should stop and turn\naround now.")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#picking-a-server-os"}},[e._v("Picking a Server OS")])]),a("li",[a("a",{attrs:{href:"#dependencies"}},[e._v("Dependencies")]),a("ul",[a("li",[a("a",{attrs:{href:"#example-dependency-installation"}},[e._v("Example Dependency Installation")])]),a("li",[a("a",{attrs:{href:"#installing-composer"}},[e._v("Installing Composer")])])])]),a("li",[a("a",{attrs:{href:"#download-files"}},[e._v("Download Files")])]),a("li",[a("a",{attrs:{href:"#installation"}},[e._v("Installation")]),a("ul",[a("li",[a("a",{attrs:{href:"#environment-configuration"}},[e._v("Environment Configuration")])]),a("li",[a("a",{attrs:{href:"#database-setup"}},[e._v("Database Setup")])]),a("li",[a("a",{attrs:{href:"#add-the-first-user"}},[e._v("Add The First User")])]),a("li",[a("a",{attrs:{href:"#set-permissions"}},[e._v("Set Permissions")])])])]),a("li",[a("a",{attrs:{href:"#queue-listeners"}},[e._v("Queue Listeners")]),a("ul",[a("li",[a("a",{attrs:{href:"#crontab-configuration"}},[e._v("Crontab Configuration")])]),a("li",[a("a",{attrs:{href:"#create-queue-worker"}},[e._v("Create Queue Worker")])])])])])]),a("p"),e._v(" "),a("h2",{attrs:{id:"picking-a-server-os"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#picking-a-server-os"}},[e._v("#")]),e._v(" Picking a Server OS")]),e._v(" "),a("p",[e._v("Pterodactyl runs on a wide range of operating systems, so pick whichever you are most comfortable using.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Pterodactyl does not support most OpenVZ systems due to incompatabilities with Docker. If you are planning on running\nthis software on an OpenVZ based system you will — most likely — not be successful.")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Operating System")]),e._v(" "),a("th",[e._v("Version")]),e._v(" "),a("th",{staticStyle:{"text-align":"center"}},[e._v("Supported")]),e._v(" "),a("th",[e._v("Notes")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("strong",[e._v("Ubuntu")])]),e._v(" "),a("td",[e._v("18.04")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Documentation written assuming Ubuntu 18.04 as the base OS.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/ubuntu2004.html"}},[e._v("20.04")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("CentOS")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/centos7.html"}},[e._v("7")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Extra repos are required.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/centos8.html"}},[e._v("8")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("All required packages are part of the base repos.")])]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("Debian")])]),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/debian9.html"}},[e._v("9")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Extra repos are required.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[a("RouterLink",{attrs:{to:"/community/installation-guides/panel/debian10.html"}},[e._v("10")])],1),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("All required packages are part of the base repos.")])])])]),e._v(" "),a("h2",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies"}},[e._v("#")]),e._v(" Dependencies")]),e._v(" "),a("ul",[a("li",[e._v("PHP "),a("code",[e._v("7.2")]),e._v(" with the following extensions: "),a("code",[e._v("cli")]),e._v(", "),a("code",[e._v("openssl")]),e._v(", "),a("code",[e._v("gd")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("PDO")]),e._v(", "),a("code",[e._v("mbstring")]),e._v(", "),a("code",[e._v("tokenizer")]),e._v(", "),a("code",[e._v("bcmath")]),e._v(", "),a("code",[e._v("xml")]),e._v(" or "),a("code",[e._v("dom")]),e._v(", "),a("code",[e._v("curl")]),e._v(", "),a("code",[e._v("zip")]),e._v(", and "),a("code",[e._v("fpm")]),e._v(" if you are planning to use nginx")]),e._v(" "),a("li",[e._v("MySQL "),a("code",[e._v("5.7")]),e._v(" "),a("strong",[e._v("or")]),e._v(" MariaDB "),a("code",[e._v("10.1.3")]),e._v(" or higher")]),e._v(" "),a("li",[e._v("Redis ("),a("code",[e._v("redis-server")]),e._v(")")]),e._v(" "),a("li",[e._v("A webserver (Apache, NGINX, Caddy, etc.)")]),e._v(" "),a("li",[a("code",[e._v("curl")])]),e._v(" "),a("li",[a("code",[e._v("tar")])]),e._v(" "),a("li",[a("code",[e._v("unzip")])]),e._v(" "),a("li",[a("code",[e._v("git")])]),e._v(" "),a("li",[a("code",[e._v("composer")])])]),e._v(" "),a("h3",{attrs:{id:"example-dependency-installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-dependency-installation"}},[e._v("#")]),e._v(" Example Dependency Installation")]),e._v(" "),a("p",[e._v("The commands below are simply an example of how you might install these dependencies. Please consult with your\noperating system's package manager to determine the correct packages to install.")]),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('# Add "add-apt-repository" command')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" software-properties-common "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add additional repositories for PHP, Redis, and MariaDB")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("LC_ALL")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("C.UTF-8 add-apt-repository -y ppa:ondrej/php\nadd-apt-repository -y ppa:chris-lea/redis-server\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("bash")]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Update repositories list")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add universe repository if you are on Ubuntu 18.04")]),e._v("\napt-add-repository universe\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Install Dependencies")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" php7.2 php7.2-cli php7.2-gd php7.2-mysql php7.2-pdo php7.2-mbstring php7.2-tokenizer php7.2-bcmath php7.2-xml php7.2-fpm php7.2-curl php7.2-zip mariadb-server nginx "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("unzip")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" redis-server\n")])])]),a("h3",{attrs:{id:"installing-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-composer"}},[e._v("#")]),e._v(" Installing Composer")]),e._v(" "),a("p",[e._v("Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll\nneed composer installed before continuing in this process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("composer --1\n")])])]),a("h2",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),a("p",[e._v("The first step in this process is to create the folder where the panel will live and then move ourselves into that\nnewly created folder. Below is an example of how to perform this operation.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" -p /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" /var/www/pterodactyl\n")])])]),a("p",[e._v("Once you have created a new directory for the Panel and moved into it you'll need to download the Panel files. This\nis as simple as using "),a("code",[e._v("curl")]),e._v(" to download our pre-packaged content. Once it is downloaded you'll need to unpack the archive\nand then set the correct permissions on the "),a("code",[e._v("storage/")]),e._v(" and "),a("code",[e._v("bootstrap/cache/")]),e._v(" directories. These directories\nallow us to store files as well as keep a speedy cache available to reduce load times.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzvf panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache/\n")])])]),a("h2",{attrs:{id:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[e._v("#")]),e._v(" Installation")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("Now that all of the files have been downloaded we need to configure some core aspects of the Panel.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Database Configuration")]),e._v(" "),a("p",[e._v("You will need a database setup and a user with the correct permissions created for that database before\ncontinuing any further. See below to quickly create a user and database for your Pterodactyl panel, if you are unsure how to do this or want more information, please have a look at "),a("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[e._v("Setting up MySQL")]),e._v(".")],1),e._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("$ mysql -u root -p\n\nmysql> CREATE USER 'pterodactyl'@'localhost' IDENTIFIED WITH mysql_native_password BY 'A secure password';\nmysql> CREATE DATABASE panel;\nmysql> GRANT ALL ON panel.* TO 'pterodactyl'@'localhost' WITH GRANT OPTION;\n\n")])])])]),e._v(" "),a("p",[e._v("First we will copy over our default environment settings file, install core dependencies, and then generate a\nnew application encryption key.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("cp")]),e._v(" .env.example .env\ncomposer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Only run the command below if you are installing this Panel for")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# the first time and do not have any Pterodactyl Panel data in the database.")]),e._v("\nphp artisan key:generate --force\n")])])]),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),a("p",[e._v("Back up your encryption key (APP_KEY in the "),a("code",[e._v(".env")]),e._v(" file). It is used as an encryption key for all data that needs to be stored securely (e.g. api keys).\nStore it somewhere safe - not just on your server. If you lose it, all encrypted data is useless and can't be restored, even if you have database backups.")])]),e._v(" "),a("h3",{attrs:{id:"environment-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-configuration"}},[e._v("#")]),e._v(" Environment Configuration")]),e._v(" "),a("p",[e._v("Pterodactyl's core environment is easily configured using a few different CLI commands built into the app. This step\nwill cover setting up things such as sessions, caching, database credentials, and email sending.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:database\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# To use PHP\'s internal mail sending (not recommended), select "mail". To use a')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# custom SMTP server, select "smtp".')]),e._v("\nphp artisan p:environment:mail\n")])])]),a("h3",{attrs:{id:"database-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-setup"}},[e._v("#")]),e._v(" Database Setup")]),e._v(" "),a("p",[e._v("Now we need to setup all of the base data for the Panel in the database you created earlier. "),a("strong",[e._v("The command below\nmay take some time to run depending on your machine. Please "),a("em",[e._v("DO NOT")]),e._v(" exit the process until it is completed!")]),e._v(" This\ncommand will setup the database tables and then add all of the Nests & Eggs that power Pterodactyl.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --seed\n")])])]),a("h3",{attrs:{id:"add-the-first-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-user"}},[e._v("#")]),e._v(" Add The First User")]),e._v(" "),a("p",[e._v("You'll then need to create an administrative user so that you can log into the panel. To do so, run the command below.\nAt this time passwords "),a("strong",[e._v("must")]),e._v(" meet the following requirements: 8 characters, mixed case, at least one number.")]),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:make\n")])])]),a("h3",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step in the installation process is to set the correct permissions on the Panel files so that the webserver can\nuse them correctly.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])]),a("h2",{attrs:{id:"queue-listeners"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queue-listeners"}},[e._v("#")]),e._v(" Queue Listeners")]),e._v(" "),a("p",[e._v("We make use of queues to make the application faster and handle sending emails and other actions in the background.\nYou will need to setup the queue worker for these actions to be processed.")]),e._v(" "),a("h3",{attrs:{id:"crontab-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crontab-configuration"}},[e._v("#")]),e._v(" Crontab Configuration")]),e._v(" "),a("p",[e._v("The first thing we need to do is create a new cronjob that runs every minute to process specific Pterodactyl tasks, such\nas session cleanup and sending scheduled tasks to daemons. You'll want to open your crontab using "),a("code",[e._v("sudo crontab -e")]),e._v(" and\nthen paste the line below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("* * * * * php /var/www/pterodactyl/artisan schedule:run "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">>")]),e._v(" /dev/null "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("2")]),e._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("&1")]),e._v("\n")])])]),a("h3",{attrs:{id:"create-queue-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-queue-worker"}},[e._v("#")]),e._v(" Create Queue Worker")]),e._v(" "),a("p",[e._v("Next you need to create a new systemd worker to keep our queue process running in the background. This queue is responsible\nfor sending emails and handling many other background tasks for Pterodactyl.")]),e._v(" "),a("p",[e._v("Create a file called "),a("code",[e._v("pteroq.service")]),e._v(" in "),a("code",[e._v("/etc/systemd/system")]),e._v(" with the contents below.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("# Pterodactyl Queue Worker File\n# ----------------------------------\n\n[Unit]\nDescription=Pterodactyl Queue Worker\nAfter=redis-server.service\n\n[Service]\n# On some systems the user and group might be different.\n# Some systems use `apache` or `nginx` as the user and group.\nUser=www-data\nGroup=www-data\nRestart=always\nExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3\n\n[Install]\nWantedBy=multi-user.target\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Redis on CentOS")]),e._v(" "),a("p",[e._v("If you are using CentOS, you will need to replace "),a("code",[e._v("redis-server.service")]),e._v(" with "),a("code",[e._v("redis.service")]),e._v(" at the "),a("code",[e._v("After=")]),e._v(" line in order to ensure "),a("code",[e._v("redis")]),e._v(" starts before the queue worker.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("If you are not using "),a("code",[e._v("redis")]),e._v(" for anything you should remove the "),a("code",[e._v("After=")]),e._v(" line, otherwise you will encounter errors\nwhen the service starts.")])]),e._v(" "),a("p",[e._v("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:")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now redis-server\n")])])]),a("p",[e._v("Finally, enable the service and set it to boot on machine start.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now pteroq.service\n")])])]),a("h4",{attrs:{id:"next-step-webserver-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next-step-webserver-configuration"}},[e._v("#")]),e._v(" Next Step: "),a("a",{attrs:{href:"./webserver_configuration"}},[e._v("Webserver Configuration")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/58.8a156ab7.js b/assets/js/58.9cc1b910.js similarity index 99% rename from assets/js/58.8a156ab7.js rename to assets/js/58.9cc1b910.js index 5c04b8d89..ee6d227ad 100644 --- a/assets/js/58.8a156ab7.js +++ b/assets/js/58.9cc1b910.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{404:function(e,t,r){"use strict";r.r(t);var a=r(48),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"troubleshooting"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),r("p"),r("div",{staticClass:"table-of-contents"},[r("ul",[r("li",[r("a",{attrs:{href:"#reading-error-logs"}},[e._v("Reading Error Logs")]),r("ul",[r("li",[r("a",{attrs:{href:"#parsing-the-error"}},[e._v("Parsing the Error")])]),r("li",[r("a",{attrs:{href:"#understanding-the-error"}},[e._v("Understanding the Error")])]),r("li",[r("a",{attrs:{href:"#utilizing-grep"}},[e._v("Utilizing GREP")])])])]),r("li",[r("a",{attrs:{href:"#transfer-exceptions-xhr-poll-error"}},[e._v("Transfer Exceptions / XHR Poll Error")]),r("ul",[r("li",[r("a",{attrs:{href:"#example-errors"}},[e._v("Example Errors")])]),r("li",[r("a",{attrs:{href:"#basic-debugging-steps"}},[e._v("Basic Debugging Steps")])]),r("li",[r("a",{attrs:{href:"#more-advanced-debugging-steps"}},[e._v("More Advanced Debugging Steps")])])])]),r("li",[r("a",{attrs:{href:"#invalid-mac-exception"}},[e._v("Invalid MAC Exception")])]),r("li",[r("a",{attrs:{href:"#selinux-issues"}},[e._v("SELinux Issues")]),r("ul",[r("li",[r("a",{attrs:{href:"#redis-permissions-errors"}},[e._v("Redis Permissions Errors")])]),r("li",[r("a",{attrs:{href:"#in-case-there-is-any-weirdness-with-parts-of-the-panel"}},[e._v("In case there is any weirdness with parts of the panel")])]),r("li",[r("a",{attrs:{href:"#daemon-connection-errors"}},[e._v("Daemon Connection Errors")])])])]),r("li",[r("a",{attrs:{href:"#firewalld-issues"}},[e._v("FirewallD issues")])]),r("li",[r("a",{attrs:{href:"#database-errors"}},[e._v("Database Errors")]),r("ul",[r("li",[r("a",{attrs:{href:"#databasecontroller-php-142"}},[e._v("DatabaseController.php:142")])])])])])]),r("p"),e._v(" "),r("h2",{attrs:{id:"reading-error-logs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reading-error-logs"}},[e._v("#")]),e._v(" Reading Error Logs")]),e._v(" "),r("p",[e._v("If you ever encounter an unexpected error with the Panel the first thing you will likely be asked for is the logs.\nTo retrieve these, simply execute the command below which will output the last 100 lines of the Panel's log file.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("100")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log\n")])])]),r("h3",{attrs:{id:"parsing-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#parsing-the-error"}},[e._v("#")]),e._v(" Parsing the Error")]),e._v(" "),r("p",[e._v("When you run the command above, you'll probably be hit with a huge wall of text that might scare you. Fear not,\nthis is simply a stacktrace leading to the cause of the error, and you can actually ignore almost all of it when\nlooking for the cause of the error. Lets take a look at some example output below, which has been truncated to\nmake this easier to follow with.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("#70 /srv/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))\n#71 /srv/www/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))\n#72 {main}\n[2018-07-19 00:50:24] local.ERROR: ErrorException: file_put_contents(/srv/www/storage/framework/views/c9c05d1357df1ce4ec8fc5df78c16c493b0d4f48.php): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\nStack trace:\n#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'file_put_conten...', '/srv/www/vendor...', 122, Array)\n#1 /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/srv/www/storag...', 's...', 0)\n#2 /srv/www/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122): Illuminate\\Filesystem\\Filesystem->put('/srv/www/storag...', 's...')\n#3 /srv/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51): Illuminate\\View\\Compilers\\BladeCompiler->compile('/srv/www/resour...')\n#4 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(142): Illuminate\\View\\Engines\\CompilerEngine->get('/srv/www/resour...', Array)\n#5 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(125): Illuminate\\View\\View->getContents()\n")])])]),r("p",[e._v("The first thing you'll want to do is follow the chain of numbers "),r("em",[e._v("up")]),e._v(" until you find "),r("code",[e._v("#0")]),e._v(", this will be the function that\ntriggered the exception. Right above line 0 you will see a line that has the date and time in brackets, "),r("code",[e._v("[2018-07-19 00:50:24]")]),e._v("\nabove for example. This line will be the human readable exception that you can use to understand what went wrong.")]),e._v(" "),r("h3",{attrs:{id:"understanding-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#understanding-the-error"}},[e._v("#")]),e._v(" Understanding the Error")]),e._v(" "),r("p",[e._v("In the example above we can see that the actual error was:")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("local.ERROR: ErrorException: file_put_contents(...): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\n")])])]),r("p",[e._v("From this error we can determine that there was an error performing a "),r("a",{attrs:{href:"http://php.net/manual/en/function.file-put-contents.php",target:"_blank",rel:"noopener noreferrer"}},[e._v("file_put_contents()"),r("OutboundLink")],1),e._v(" call, and the error was\nthat we couldn't open the file because permissions were denied. Its okay if you don't understand the error at all, but\nit does help you get faster support if you're able to provide these logs, and at least find the source of the error.\nSometimes the errors are pretty straightforward and will tell you exactly what went wrong, such as a "),r("code",[e._v("ConnectionException")]),e._v("\nbeing thrown when the Panel can't connect to the Daemon.")]),e._v(" "),r("h3",{attrs:{id:"utilizing-grep"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#utilizing-grep"}},[e._v("#")]),e._v(" Utilizing GREP")]),e._v(" "),r("p",[e._v("If you're trying to go through a bunch of errors quickly, you can use the command below which will limit the results returned to only\nbe the actual error lines, without all of the stack traces.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("1000")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log "),r("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token string"}},[e._v('"\\['),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%Y"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v('"')]),e._v("\n")])])]),r("h2",{attrs:{id:"transfer-exceptions-xhr-poll-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#transfer-exceptions-xhr-poll-error"}},[e._v("#")]),e._v(" Transfer Exceptions / XHR Poll Error")]),e._v(" "),r("p",[e._v("If you are seeing errors similar to the examples below, chances are there is some networking related issue, or you\njust don't have a required service running.")]),e._v(" "),r("h3",{attrs:{id:"example-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#example-errors"}},[e._v("#")]),e._v(" Example Errors")]),e._v(" "),r("ul",[r("li",[r("p",[e._v('"We were unable to connect to the main Socket.IO server, there may be network issues currently. The panel may not work as expected."')])]),e._v(" "),r("li",[r("p",[e._v('"A TransferException was encountered while trying to contact the daemon, please ensure it\'s online and accessible. This error has been logged."')])])]),e._v(" "),r("h3",{attrs:{id:"basic-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#basic-debugging-steps"}},[e._v("#")]),e._v(" Basic Debugging Steps")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Ensure you have AdBlock disabled or whitelisted for your Panel and Daemon domains.")])]),e._v(" "),r("li",[r("p",[e._v("Check your browser's console by pressing "),r("code",[e._v("Ctrl + Shift + J")]),e._v(" (in Chrome) or "),r("code",[e._v("Cmd + Alt + I")]),e._v(" (in Safari). If there is\na red error in it, chances are that it will narrow down the potential problem.")])]),e._v(" "),r("li",[r("p",[e._v("Make sure if the daemon is properly installed and the active configuration matches the configuration shown under\n"),r("code",[e._v("Admin -> Node -> Configuration")]),e._v(" in the Panel.")])]),e._v(" "),r("li",[r("p",[e._v("Check that the Daemon is running, and not reporting errors. Use "),r("code",[e._v("service wings status")]),e._v(" to check the current status of the process.")])]),e._v(" "),r("li",[r("p",[e._v("Check that the Daemon ports are open on your firewall. The Daemon uses ports "),r("code",[e._v("8080")]),e._v(" or "),r("code",[e._v("8443")]),e._v(" for HTTP traffic,\nand "),r("code",[e._v("2022")]),e._v(" for SFTP traffic.")])]),e._v(" "),r("li",[r("p",[e._v("Check that the Panel can reach the Daemon using the domain that is configured on the Panel. Run "),r("code",[e._v("curl https://domain.com:8080")]),e._v(" on the Panel server and ensure that it can connect to the Daemon.")])]),e._v(" "),r("li",[r("p",[e._v("Ensure that you are using the correct HTTP scheme for your Panel and Daemon. If the Panel is running over HTTPS\nthe Daemon will also need to be running on HTTPS.")])])]),e._v(" "),r("h3",{attrs:{id:"more-advanced-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#more-advanced-debugging-steps"}},[e._v("#")]),e._v(" More Advanced Debugging Steps")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Stop the Daemon and run "),r("code",[e._v("cd /srv/daemon; sudo npm start")]),e._v(" to see if there are any errors being output by the Daemon.\nIf so, try resolving them manually, or contact us on Discord for more assistance.")])]),e._v(" "),r("li",[r("p",[e._v("Check your DNS and ensure that the response you receive is the one you expect using a tool such as "),r("code",[e._v("nslookup")]),e._v(" or "),r("code",[e._v("dig")]),e._v(".")])]),e._v(" "),r("li",[r("p",[e._v("If you use CloudFlare make sure that the yellow cloud is disabled for your Daemon or Panel "),r("code",[e._v("A")]),e._v(" records.")])]),e._v(" "),r("li",[r("p",[e._v("Make sure when using the daemon behind a firewall — pfSense, OpenSwitch, etc — that the correct NAT settings to access\nthe Daemon's ports from the outside network are setup.")])]),e._v(" "),r("li",[r("p",[e._v("If nothing is working so far, check your own DNS settings and consider switching DNS servers.")])]),e._v(" "),r("li",[r("p",[e._v("When running the Panel and Daemon on one server it can sometimes help if to add an entry in "),r("code",[e._v("/etc/hosts")]),e._v(" that directs\nthe public IP back to the server. Sometimes the reverse path is also needed, so you may need to add an entry to your\nservers "),r("code",[e._v("/etc/hosts")]),e._v(" file that points the Panel's domain to the correct IP.")])]),e._v(" "),r("li",[r("p",[e._v("When running the Daemon and Panel on separate VM's using the same adapter make sure the VM's can connect to each\nother. Promiscuous mode might be needed.")])])]),e._v(" "),r("h2",{attrs:{id:"invalid-mac-exception"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalid-mac-exception"}},[e._v("#")]),e._v(" Invalid MAC Exception")]),e._v(" "),r("div",{staticClass:"custom-block warning"},[r("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),r("p",[e._v("This error should never happen if you correctly follow our installation and upgrade guides. The only time we have\never seen this error occur is when you blindly restore the Panel database from a backup and try to use a fresh\ninstallation of the Panel.")]),e._v(" "),r("p",[e._v("When restoring backups you should "),r("em",[e._v("always")]),e._v(" restore the "),r("code",[e._v(".env")]),e._v(" file!")])]),e._v(" "),r("p",[e._v("Sometimes when using the Panel you'll unexpectedly encounter a broken page, and upon checking the logs you'll see\nan exception mentioning an invalid MAC when decrypting. This error is caused by mismatched "),r("code",[e._v("APP_KEY")]),e._v("s in your "),r("code",[e._v(".env")]),e._v(" file\nwhen the data was encrypted versus decrypted.")]),e._v(" "),r("p",[e._v("If you are seeing this error the only solution is to restore the "),r("code",[e._v("APP_KEY")]),e._v(" from your "),r("code",[e._v(".env")]),e._v(" file. If you have lost that\noriginal key there is no way to recover the lost data.")]),e._v(" "),r("h2",{attrs:{id:"selinux-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#selinux-issues"}},[e._v("#")]),e._v(" SELinux Issues")]),e._v(" "),r("p",[e._v("On systems with SELinux installed you might encounter unexpected errors when running redis or attempting to connect\nto the daemon to perform actions. These issues can generally be resolved by executing the commands below to allow\nthese programs to work with SELinux.")]),e._v(" "),r("h3",{attrs:{id:"redis-permissions-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#redis-permissions-errors"}},[e._v("#")]),e._v(" Redis Permissions Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M redis_t\nsemodule -i redis_t.pp\n")])])]),r("h3",{attrs:{id:"in-case-there-is-any-weirdness-with-parts-of-the-panel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#in-case-there-is-any-weirdness-with-parts-of-the-panel"}},[e._v("#")]),e._v(" In case there is any weirdness with parts of the panel")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("restorecon -R /var/www/pterodactyl/\n")])])]),r("h3",{attrs:{id:"daemon-connection-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#daemon-connection-errors"}},[e._v("#")]),e._v(" Daemon Connection Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M http_port_t\nsemodule -i http_port_t.pp\n")])])]),r("h2",{attrs:{id:"firewalld-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-issues"}},[e._v("#")]),e._v(" FirewallD issues")]),e._v(" "),r("p",[e._v("If you are on a RHEL/CentOS server with firewalld installed you may have broken DNS.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("firewall-cmd --permanent --zone=trusted --change-interface=pterodactyl0\nfirewall-cmd --reload\n")])])]),r("p",[e._v("restart docker and wings after running these to be sure the rules are applied.")]),e._v(" "),r("h2",{attrs:{id:"database-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#database-errors"}},[e._v("#")]),e._v(" Database Errors")]),e._v(" "),r("h3",{attrs:{id:"databasecontroller-php-142"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#databasecontroller-php-142"}},[e._v("#")]),e._v(" DatabaseController.php:142")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("production.ERROR: ErrorException: Undefined variable: host in /var/www/pterodactyl/app/Http/Controllers/Admin/DatabaseController.php:142\n")])])]),r("p",[e._v("The database user you are trying to use doesn't have appropriate grants/has used incorrect password.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{403:function(e,t,r){"use strict";r.r(t);var a=r(48),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"troubleshooting"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),r("p"),r("div",{staticClass:"table-of-contents"},[r("ul",[r("li",[r("a",{attrs:{href:"#reading-error-logs"}},[e._v("Reading Error Logs")]),r("ul",[r("li",[r("a",{attrs:{href:"#parsing-the-error"}},[e._v("Parsing the Error")])]),r("li",[r("a",{attrs:{href:"#understanding-the-error"}},[e._v("Understanding the Error")])]),r("li",[r("a",{attrs:{href:"#utilizing-grep"}},[e._v("Utilizing GREP")])])])]),r("li",[r("a",{attrs:{href:"#transfer-exceptions-xhr-poll-error"}},[e._v("Transfer Exceptions / XHR Poll Error")]),r("ul",[r("li",[r("a",{attrs:{href:"#example-errors"}},[e._v("Example Errors")])]),r("li",[r("a",{attrs:{href:"#basic-debugging-steps"}},[e._v("Basic Debugging Steps")])]),r("li",[r("a",{attrs:{href:"#more-advanced-debugging-steps"}},[e._v("More Advanced Debugging Steps")])])])]),r("li",[r("a",{attrs:{href:"#invalid-mac-exception"}},[e._v("Invalid MAC Exception")])]),r("li",[r("a",{attrs:{href:"#selinux-issues"}},[e._v("SELinux Issues")]),r("ul",[r("li",[r("a",{attrs:{href:"#redis-permissions-errors"}},[e._v("Redis Permissions Errors")])]),r("li",[r("a",{attrs:{href:"#in-case-there-is-any-weirdness-with-parts-of-the-panel"}},[e._v("In case there is any weirdness with parts of the panel")])]),r("li",[r("a",{attrs:{href:"#daemon-connection-errors"}},[e._v("Daemon Connection Errors")])])])]),r("li",[r("a",{attrs:{href:"#firewalld-issues"}},[e._v("FirewallD issues")])]),r("li",[r("a",{attrs:{href:"#database-errors"}},[e._v("Database Errors")]),r("ul",[r("li",[r("a",{attrs:{href:"#databasecontroller-php-142"}},[e._v("DatabaseController.php:142")])])])])])]),r("p"),e._v(" "),r("h2",{attrs:{id:"reading-error-logs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reading-error-logs"}},[e._v("#")]),e._v(" Reading Error Logs")]),e._v(" "),r("p",[e._v("If you ever encounter an unexpected error with the Panel the first thing you will likely be asked for is the logs.\nTo retrieve these, simply execute the command below which will output the last 100 lines of the Panel's log file.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("100")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log\n")])])]),r("h3",{attrs:{id:"parsing-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#parsing-the-error"}},[e._v("#")]),e._v(" Parsing the Error")]),e._v(" "),r("p",[e._v("When you run the command above, you'll probably be hit with a huge wall of text that might scare you. Fear not,\nthis is simply a stacktrace leading to the cause of the error, and you can actually ignore almost all of it when\nlooking for the cause of the error. Lets take a look at some example output below, which has been truncated to\nmake this easier to follow with.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("#70 /srv/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))\n#71 /srv/www/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))\n#72 {main}\n[2018-07-19 00:50:24] local.ERROR: ErrorException: file_put_contents(/srv/www/storage/framework/views/c9c05d1357df1ce4ec8fc5df78c16c493b0d4f48.php): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\nStack trace:\n#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'file_put_conten...', '/srv/www/vendor...', 122, Array)\n#1 /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/srv/www/storag...', 's...', 0)\n#2 /srv/www/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122): Illuminate\\Filesystem\\Filesystem->put('/srv/www/storag...', 's...')\n#3 /srv/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51): Illuminate\\View\\Compilers\\BladeCompiler->compile('/srv/www/resour...')\n#4 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(142): Illuminate\\View\\Engines\\CompilerEngine->get('/srv/www/resour...', Array)\n#5 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(125): Illuminate\\View\\View->getContents()\n")])])]),r("p",[e._v("The first thing you'll want to do is follow the chain of numbers "),r("em",[e._v("up")]),e._v(" until you find "),r("code",[e._v("#0")]),e._v(", this will be the function that\ntriggered the exception. Right above line 0 you will see a line that has the date and time in brackets, "),r("code",[e._v("[2018-07-19 00:50:24]")]),e._v("\nabove for example. This line will be the human readable exception that you can use to understand what went wrong.")]),e._v(" "),r("h3",{attrs:{id:"understanding-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#understanding-the-error"}},[e._v("#")]),e._v(" Understanding the Error")]),e._v(" "),r("p",[e._v("In the example above we can see that the actual error was:")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("local.ERROR: ErrorException: file_put_contents(...): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\n")])])]),r("p",[e._v("From this error we can determine that there was an error performing a "),r("a",{attrs:{href:"http://php.net/manual/en/function.file-put-contents.php",target:"_blank",rel:"noopener noreferrer"}},[e._v("file_put_contents()"),r("OutboundLink")],1),e._v(" call, and the error was\nthat we couldn't open the file because permissions were denied. Its okay if you don't understand the error at all, but\nit does help you get faster support if you're able to provide these logs, and at least find the source of the error.\nSometimes the errors are pretty straightforward and will tell you exactly what went wrong, such as a "),r("code",[e._v("ConnectionException")]),e._v("\nbeing thrown when the Panel can't connect to the Daemon.")]),e._v(" "),r("h3",{attrs:{id:"utilizing-grep"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#utilizing-grep"}},[e._v("#")]),e._v(" Utilizing GREP")]),e._v(" "),r("p",[e._v("If you're trying to go through a bunch of errors quickly, you can use the command below which will limit the results returned to only\nbe the actual error lines, without all of the stack traces.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("1000")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log "),r("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token string"}},[e._v('"\\['),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%Y"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v('"')]),e._v("\n")])])]),r("h2",{attrs:{id:"transfer-exceptions-xhr-poll-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#transfer-exceptions-xhr-poll-error"}},[e._v("#")]),e._v(" Transfer Exceptions / XHR Poll Error")]),e._v(" "),r("p",[e._v("If you are seeing errors similar to the examples below, chances are there is some networking related issue, or you\njust don't have a required service running.")]),e._v(" "),r("h3",{attrs:{id:"example-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#example-errors"}},[e._v("#")]),e._v(" Example Errors")]),e._v(" "),r("ul",[r("li",[r("p",[e._v('"We were unable to connect to the main Socket.IO server, there may be network issues currently. The panel may not work as expected."')])]),e._v(" "),r("li",[r("p",[e._v('"A TransferException was encountered while trying to contact the daemon, please ensure it\'s online and accessible. This error has been logged."')])])]),e._v(" "),r("h3",{attrs:{id:"basic-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#basic-debugging-steps"}},[e._v("#")]),e._v(" Basic Debugging Steps")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Ensure you have AdBlock disabled or whitelisted for your Panel and Daemon domains.")])]),e._v(" "),r("li",[r("p",[e._v("Check your browser's console by pressing "),r("code",[e._v("Ctrl + Shift + J")]),e._v(" (in Chrome) or "),r("code",[e._v("Cmd + Alt + I")]),e._v(" (in Safari). If there is\na red error in it, chances are that it will narrow down the potential problem.")])]),e._v(" "),r("li",[r("p",[e._v("Make sure if the daemon is properly installed and the active configuration matches the configuration shown under\n"),r("code",[e._v("Admin -> Node -> Configuration")]),e._v(" in the Panel.")])]),e._v(" "),r("li",[r("p",[e._v("Check that the Daemon is running, and not reporting errors. Use "),r("code",[e._v("service wings status")]),e._v(" to check the current status of the process.")])]),e._v(" "),r("li",[r("p",[e._v("Check that the Daemon ports are open on your firewall. The Daemon uses ports "),r("code",[e._v("8080")]),e._v(" or "),r("code",[e._v("8443")]),e._v(" for HTTP traffic,\nand "),r("code",[e._v("2022")]),e._v(" for SFTP traffic.")])]),e._v(" "),r("li",[r("p",[e._v("Check that the Panel can reach the Daemon using the domain that is configured on the Panel. Run "),r("code",[e._v("curl https://domain.com:8080")]),e._v(" on the Panel server and ensure that it can connect to the Daemon.")])]),e._v(" "),r("li",[r("p",[e._v("Ensure that you are using the correct HTTP scheme for your Panel and Daemon. If the Panel is running over HTTPS\nthe Daemon will also need to be running on HTTPS.")])])]),e._v(" "),r("h3",{attrs:{id:"more-advanced-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#more-advanced-debugging-steps"}},[e._v("#")]),e._v(" More Advanced Debugging Steps")]),e._v(" "),r("ul",[r("li",[r("p",[e._v("Stop the Daemon and run "),r("code",[e._v("cd /srv/daemon; sudo npm start")]),e._v(" to see if there are any errors being output by the Daemon.\nIf so, try resolving them manually, or contact us on Discord for more assistance.")])]),e._v(" "),r("li",[r("p",[e._v("Check your DNS and ensure that the response you receive is the one you expect using a tool such as "),r("code",[e._v("nslookup")]),e._v(" or "),r("code",[e._v("dig")]),e._v(".")])]),e._v(" "),r("li",[r("p",[e._v("If you use CloudFlare make sure that the yellow cloud is disabled for your Daemon or Panel "),r("code",[e._v("A")]),e._v(" records.")])]),e._v(" "),r("li",[r("p",[e._v("Make sure when using the daemon behind a firewall — pfSense, OpenSwitch, etc — that the correct NAT settings to access\nthe Daemon's ports from the outside network are setup.")])]),e._v(" "),r("li",[r("p",[e._v("If nothing is working so far, check your own DNS settings and consider switching DNS servers.")])]),e._v(" "),r("li",[r("p",[e._v("When running the Panel and Daemon on one server it can sometimes help if to add an entry in "),r("code",[e._v("/etc/hosts")]),e._v(" that directs\nthe public IP back to the server. Sometimes the reverse path is also needed, so you may need to add an entry to your\nservers "),r("code",[e._v("/etc/hosts")]),e._v(" file that points the Panel's domain to the correct IP.")])]),e._v(" "),r("li",[r("p",[e._v("When running the Daemon and Panel on separate VM's using the same adapter make sure the VM's can connect to each\nother. Promiscuous mode might be needed.")])])]),e._v(" "),r("h2",{attrs:{id:"invalid-mac-exception"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalid-mac-exception"}},[e._v("#")]),e._v(" Invalid MAC Exception")]),e._v(" "),r("div",{staticClass:"custom-block warning"},[r("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),r("p",[e._v("This error should never happen if you correctly follow our installation and upgrade guides. The only time we have\never seen this error occur is when you blindly restore the Panel database from a backup and try to use a fresh\ninstallation of the Panel.")]),e._v(" "),r("p",[e._v("When restoring backups you should "),r("em",[e._v("always")]),e._v(" restore the "),r("code",[e._v(".env")]),e._v(" file!")])]),e._v(" "),r("p",[e._v("Sometimes when using the Panel you'll unexpectedly encounter a broken page, and upon checking the logs you'll see\nan exception mentioning an invalid MAC when decrypting. This error is caused by mismatched "),r("code",[e._v("APP_KEY")]),e._v("s in your "),r("code",[e._v(".env")]),e._v(" file\nwhen the data was encrypted versus decrypted.")]),e._v(" "),r("p",[e._v("If you are seeing this error the only solution is to restore the "),r("code",[e._v("APP_KEY")]),e._v(" from your "),r("code",[e._v(".env")]),e._v(" file. If you have lost that\noriginal key there is no way to recover the lost data.")]),e._v(" "),r("h2",{attrs:{id:"selinux-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#selinux-issues"}},[e._v("#")]),e._v(" SELinux Issues")]),e._v(" "),r("p",[e._v("On systems with SELinux installed you might encounter unexpected errors when running redis or attempting to connect\nto the daemon to perform actions. These issues can generally be resolved by executing the commands below to allow\nthese programs to work with SELinux.")]),e._v(" "),r("h3",{attrs:{id:"redis-permissions-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#redis-permissions-errors"}},[e._v("#")]),e._v(" Redis Permissions Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M redis_t\nsemodule -i redis_t.pp\n")])])]),r("h3",{attrs:{id:"in-case-there-is-any-weirdness-with-parts-of-the-panel"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#in-case-there-is-any-weirdness-with-parts-of-the-panel"}},[e._v("#")]),e._v(" In case there is any weirdness with parts of the panel")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("restorecon -R /var/www/pterodactyl/\n")])])]),r("h3",{attrs:{id:"daemon-connection-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#daemon-connection-errors"}},[e._v("#")]),e._v(" Daemon Connection Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M http_port_t\nsemodule -i http_port_t.pp\n")])])]),r("h2",{attrs:{id:"firewalld-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-issues"}},[e._v("#")]),e._v(" FirewallD issues")]),e._v(" "),r("p",[e._v("If you are on a RHEL/CentOS server with firewalld installed you may have broken DNS.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("firewall-cmd --permanent --zone=trusted --change-interface=pterodactyl0\nfirewall-cmd --reload\n")])])]),r("p",[e._v("restart docker and wings after running these to be sure the rules are applied.")]),e._v(" "),r("h2",{attrs:{id:"database-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#database-errors"}},[e._v("#")]),e._v(" Database Errors")]),e._v(" "),r("h3",{attrs:{id:"databasecontroller-php-142"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#databasecontroller-php-142"}},[e._v("#")]),e._v(" DatabaseController.php:142")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("production.ERROR: ErrorException: Undefined variable: host in /var/www/pterodactyl/app/Http/Controllers/Admin/DatabaseController.php:142\n")])])]),r("p",[e._v("The database user you are trying to use doesn't have appropriate grants/has used incorrect password.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/59.0bbceca9.js b/assets/js/59.443c58f6.js similarity index 99% rename from assets/js/59.0bbceca9.js rename to assets/js/59.443c58f6.js index dce127674..ddf15c5b9 100644 --- a/assets/js/59.0bbceca9.js +++ b/assets/js/59.443c58f6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{405:function(e,a,t){"use strict";t.r(a);var s=t(48),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"upgrading-0-6-to-0-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-to-0-7"}},[e._v("#")]),e._v(" Upgrading 0.6 to 0.7")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),t("p",[e._v("This documentation is for "),t("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),t("p",[e._v("You should be installing and using "),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),t("h2",{attrs:{id:"fetch-updated-files"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),t("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),t("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack in whatever\ndirectory you are currently in.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzv\n")])])]),t("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),t("h2",{attrs:{id:"clear-compiled-assets"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-assets"}},[e._v("#")]),e._v(" Clear Compiled Assets")]),e._v(" "),t("p",[e._v("Previous versions of Pterodactyl attempted to cache your configuration file for speed and performance enhancements. This\nended up just causing more headaches with minimal improvements in performance, so we decided to stop doing that. Running\nthe command below will clear the cached files for you so we can continue with upgrading.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("You probably only need to run this command once when upgrading from "),t("code",[e._v("0.6.X")]),e._v(". Once you're upgraded we don't cache the configuration\nfile so there is no reason to remove anything.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf bootstrap/cache/*\n")])])]),t("p",[e._v("Once the configuration cache is removed, you'll need to clear the template cache to ensure users get the most recent\ntemplates.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan view:clear\n")])])]),t("h2",{attrs:{id:"update-dependencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),t("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("composer "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),t("h2",{attrs:{id:"update-environment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-environment"}},[e._v("#")]),e._v(" Update Environment")]),e._v(" "),t("p",[e._v("These scripts will display your current values in brackets. To keep the current values simply press enter and it will\ncontinue without making any modifications.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("We've changed our recommended cache driver to be Redis, rather than Memcached. If you're using Memcached you can\ncontinue doing so with no problems, however moving forward our installation documentation will only mention Redis.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:mail\nphp artisan p:environment:database\n")])])]),t("h2",{attrs:{id:"database-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Backup your databases")]),e._v(" "),t("p",[e._v("The upgrade from "),t("code",[e._v("0.6")]),e._v(" to "),t("code",[e._v("v0.7")]),e._v(" includes some rather significant database changes. While the migration utility is\nable to handle everything for you, we still suggest taking a backup of your database before proceeding — just incase.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Running "),t("code",[e._v("db:seed")]),e._v(" below will overwrite any changes you made to core Pterodactyl Nests, Eggs, or Egg Variables! This is\nunavoidable, and this seeder must be run. To avoid this in the future, please create custom nests, or create custom\neggs for game variations.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan migrate --force\nphp artisan db:seed --force\n")])])]),t("h2",{attrs:{id:"cleanup-api-keys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cleanup-api-keys"}},[e._v("#")]),e._v(" Cleanup API Keys")]),e._v(" "),t("p",[e._v("A significant change is introduced in 0.7.0 that changes how API keys are used, stored, and validated. Due to this\nchange, all previously created keys will no longer function. In order to keep things cleaned up you'll want to remove\nthese orphaned keys. To do so, run the command below.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:migration:clean-orphaned-keys\n")])])]),t("p",[e._v("Don't forget to create new keys for yourself, as well as let all of your users know they'll need to do so as well.")]),e._v(" "),t("h2",{attrs:{id:"set-permissions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),t("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),t("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),t("code",[e._v("nginx")]),e._v(", "),t("code",[e._v("apache")]),e._v(", or even "),t("code",[e._v("nobody")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data * \n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{404:function(e,a,t){"use strict";t.r(a);var s=t(48),n=Object(s.a)({},(function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"upgrading-0-6-to-0-7"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-6-to-0-7"}},[e._v("#")]),e._v(" Upgrading 0.6 to 0.7")]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),t("p",[e._v("This documentation is for "),t("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),t("p",[e._v("You should be installing and using "),t("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),t("h2",{attrs:{id:"fetch-updated-files"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),t("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),t("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack in whatever\ndirectory you are currently in.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzv\n")])])]),t("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),t("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),t("h2",{attrs:{id:"clear-compiled-assets"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-assets"}},[e._v("#")]),e._v(" Clear Compiled Assets")]),e._v(" "),t("p",[e._v("Previous versions of Pterodactyl attempted to cache your configuration file for speed and performance enhancements. This\nended up just causing more headaches with minimal improvements in performance, so we decided to stop doing that. Running\nthe command below will clear the cached files for you so we can continue with upgrading.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("You probably only need to run this command once when upgrading from "),t("code",[e._v("0.6.X")]),e._v(". Once you're upgraded we don't cache the configuration\nfile so there is no reason to remove anything.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf bootstrap/cache/*\n")])])]),t("p",[e._v("Once the configuration cache is removed, you'll need to clear the template cache to ensure users get the most recent\ntemplates.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan view:clear\n")])])]),t("h2",{attrs:{id:"update-dependencies"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),t("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("composer "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),t("h2",{attrs:{id:"update-environment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#update-environment"}},[e._v("#")]),e._v(" Update Environment")]),e._v(" "),t("p",[e._v("These scripts will display your current values in brackets. To keep the current values simply press enter and it will\ncontinue without making any modifications.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("We've changed our recommended cache driver to be Redis, rather than Memcached. If you're using Memcached you can\ncontinue doing so with no problems, however moving forward our installation documentation will only mention Redis.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:mail\nphp artisan p:environment:database\n")])])]),t("h2",{attrs:{id:"database-updates"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("Backup your databases")]),e._v(" "),t("p",[e._v("The upgrade from "),t("code",[e._v("0.6")]),e._v(" to "),t("code",[e._v("v0.7")]),e._v(" includes some rather significant database changes. While the migration utility is\nable to handle everything for you, we still suggest taking a backup of your database before proceeding — just incase.")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Running "),t("code",[e._v("db:seed")]),e._v(" below will overwrite any changes you made to core Pterodactyl Nests, Eggs, or Egg Variables! This is\nunavoidable, and this seeder must be run. To avoid this in the future, please create custom nests, or create custom\neggs for game variations.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan migrate --force\nphp artisan db:seed --force\n")])])]),t("h2",{attrs:{id:"cleanup-api-keys"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#cleanup-api-keys"}},[e._v("#")]),e._v(" Cleanup API Keys")]),e._v(" "),t("p",[e._v("A significant change is introduced in 0.7.0 that changes how API keys are used, stored, and validated. Due to this\nchange, all previously created keys will no longer function. In order to keep things cleaned up you'll want to remove\nthese orphaned keys. To do so, run the command below.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("php artisan p:migration:clean-orphaned-keys\n")])])]),t("p",[e._v("Don't forget to create new keys for yourself, as well as let all of your users know they'll need to do so as well.")]),e._v(" "),t("h2",{attrs:{id:"set-permissions"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),t("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),t("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),t("code",[e._v("nginx")]),e._v(", "),t("code",[e._v("apache")]),e._v(", or even "),t("code",[e._v("nobody")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data * \n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/60.a149bed5.js b/assets/js/60.44b593cf.js similarity index 99% rename from assets/js/60.a149bed5.js rename to assets/js/60.44b593cf.js index 2fb5e3136..6c7ce2924 100644 --- a/assets/js/60.a149bed5.js +++ b/assets/js/60.44b593cf.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{403:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"upgrading-0-7-series"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-7-series"}},[e._v("#")]),e._v(" Upgrading 0.7 Series")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("This documentation covers the process for upgrading within the "),a("code",[e._v("0.7.X")]),e._v(" series of releases. This means upgrading from\n— for example — "),a("code",[e._v("0.7.3")]),e._v(" to "),a("code",[e._v("0.7.11")]),e._v(". "),a("strong",[e._v("Do not use this guide for upgrading from "),a("code",[e._v("0.6")]),e._v(" or upgrading to "),a("code",[e._v("1.0")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("If you are using a custom theme please be aware that upgrading will remove those files. You will need to re-upload\nyour theme once the upgrade is complete or you will end up with server errors.")])]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack the archive\ninto your current folder.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzv\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("composer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"clear-compiled-template-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-template-cache"}},[e._v("#")]),e._v(" Clear Compiled Template Cache")]),e._v(" "),a("p",[e._v("You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for\nusers.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\nphp artisan config:clear\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("p",[e._v("You'll also need to update your database schema for the newest version of Pterodactyl. Running the two commands below\nwill update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just\nremember, "),a("em",[e._v("never edit core eggs we ship")]),e._v("! They will be overwritten by this update process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --force\nphp artisan db:seed --force\n")])])]),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{406:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"upgrading-0-7-series"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading-0-7-series"}},[e._v("#")]),e._v(" Upgrading 0.7 Series")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("p",[e._v("This documentation covers the process for upgrading within the "),a("code",[e._v("0.7.X")]),e._v(" series of releases. This means upgrading from\n— for example — "),a("code",[e._v("0.7.3")]),e._v(" to "),a("code",[e._v("0.7.11")]),e._v(". "),a("strong",[e._v("Do not use this guide for upgrading from "),a("code",[e._v("0.6")]),e._v(" or upgrading to "),a("code",[e._v("1.0")]),e._v(".")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("If you are using a custom theme please be aware that upgrading will remove those files. You will need to re-upload\nyour theme once the upgrade is complete or you will end up with server errors.")])]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack the archive\ninto your current folder.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L https://github.com/pterodactyl/panel/releases/download/v0.7.19/panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" --strip-components"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("1")]),e._v(" -xzv\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("composer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"clear-compiled-template-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-template-cache"}},[e._v("#")]),e._v(" Clear Compiled Template Cache")]),e._v(" "),a("p",[e._v("You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for\nusers.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\nphp artisan config:clear\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("p",[e._v("You'll also need to update your database schema for the newest version of Pterodactyl. Running the two commands below\nwill update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just\nremember, "),a("em",[e._v("never edit core eggs we ship")]),e._v("! They will be overwritten by this update process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --force\nphp artisan db:seed --force\n")])])]),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data * \n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/61.f80f3bcf.js b/assets/js/61.3b760511.js similarity index 97% rename from assets/js/61.f80f3bcf.js rename to assets/js/61.3b760511.js index f9c7a8bf6..489584620 100644 --- a/assets/js/61.f80f3bcf.js +++ b/assets/js/61.3b760511.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{407: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:"upgrading"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading"}},[e._v("#")]),e._v(" Upgrading")]),e._v(" "),a("p",[e._v("Upgrading the Panel is a relatively simple process. Below you will find a list of articles that will walk you through\nthe upgrade process for each version of the software.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("h2",{attrs:{id:"maintenance-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maintenance-mode"}},[e._v("#")]),e._v(" Maintenance Mode")]),e._v(" "),a("p",[e._v('Whenever you are performing an upgrade, you should be sure to place your Panel into "maintenance mode". This will prevent\nusers from encountering unexpected errors, and ensure everything can be upgraded before users encounter potentially new features.')]),e._v(" "),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("# Put the Panel into maintenance mode and deny user access")]),e._v("\nphp artisan down\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Bring the Panel back up to receive connections.")]),e._v("\nphp artisan up\n")])])]),a("h2",{attrs:{id:"restarting-queue-workers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restarting-queue-workers"}},[e._v("#")]),e._v(" Restarting Queue Workers")]),e._v(" "),a("p",[e._v("After "),a("em",[e._v("every")]),e._v(" update, you should restart the queue worker to ensure that the new code is being loaded in and used.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan queue:restart\n")])])]),a("h2",{attrs:{id:"version-specific-guides"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version-specific-guides"}},[e._v("#")]),e._v(" Version Specific Guides")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.6_to_0.7.html"}},[e._v("0.6.X to 0.7.19")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.7.html"}},[e._v("0.7.X series")])],1),e._v(" "),a("li",[a("a",{attrs:{href:"/panel/1.0/upgrade/0.7_to_1.0"}},[e._v("0.7.19 to 1.X.X")]),e._v(" "),a("Badge",{attrs:{text:"current",vertical:"middle"}})],1)])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{405: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:"upgrading"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#upgrading"}},[e._v("#")]),e._v(" Upgrading")]),e._v(" "),a("p",[e._v("Upgrading the Panel is a relatively simple process. Below you will find a list of articles that will walk you through\nthe upgrade process for each version of the software.")]),e._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("This Version is End-of-Life")]),e._v(" "),a("p",[e._v("This documentation is for "),a("strong",[e._v("end-of-life software")]),e._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),e._v(" "),a("p",[e._v("You should be installing and using "),a("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[e._v("Pterodactyl Panel 1.0")]),e._v(" in production environments.")],1)]),e._v(" "),a("h2",{attrs:{id:"maintenance-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#maintenance-mode"}},[e._v("#")]),e._v(" Maintenance Mode")]),e._v(" "),a("p",[e._v('Whenever you are performing an upgrade, you should be sure to place your Panel into "maintenance mode". This will prevent\nusers from encountering unexpected errors, and ensure everything can be upgraded before users encounter potentially new features.')]),e._v(" "),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("# Put the Panel into maintenance mode and deny user access")]),e._v("\nphp artisan down\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Bring the Panel back up to receive connections.")]),e._v("\nphp artisan up\n")])])]),a("h2",{attrs:{id:"restarting-queue-workers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restarting-queue-workers"}},[e._v("#")]),e._v(" Restarting Queue Workers")]),e._v(" "),a("p",[e._v("After "),a("em",[e._v("every")]),e._v(" update, you should restart the queue worker to ensure that the new code is being loaded in and used.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan queue:restart\n")])])]),a("h2",{attrs:{id:"version-specific-guides"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#version-specific-guides"}},[e._v("#")]),e._v(" Version Specific Guides")]),e._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.6_to_0.7.html"}},[e._v("0.6.X to 0.7.19")])],1),e._v(" "),a("li",[a("RouterLink",{attrs:{to:"/panel/0.7/upgrade/0.7.html"}},[e._v("0.7.X series")])],1),e._v(" "),a("li",[a("a",{attrs:{href:"/panel/1.0/upgrade/0.7_to_1.0"}},[e._v("0.7.19 to 1.X.X")]),e._v(" "),a("Badge",{attrs:{text:"current",vertical:"middle"}})],1)])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/62.8176d150.js b/assets/js/62.b082266a.js similarity index 99% rename from assets/js/62.8176d150.js rename to assets/js/62.b082266a.js index ee0028439..54aa64da2 100644 --- a/assets/js/62.8176d150.js +++ b/assets/js/62.b082266a.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{406:function(t,e,n){"use strict";n.r(e);var a=n(48),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"webserver-configuration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#webserver-configuration"}},[t._v("#")]),t._v(" Webserver Configuration")]),t._v(" "),n("div",{staticClass:"custom-block danger"},[n("p",{staticClass:"custom-block-title"},[t._v("This Version is End-of-Life")]),t._v(" "),n("p",[t._v("This documentation is for "),n("strong",[t._v("end-of-life software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),n("p",[t._v("You should be installing and using "),n("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(" in production environments.")],1)]),t._v(" "),n("p"),n("div",{staticClass:"table-of-contents"},[n("ul",[n("li",[n("a",{attrs:{href:"#nginx"}},[t._v("NGINX")]),n("ul",[n("li",[n("a",{attrs:{href:"#nginx-with-ssl"}},[t._v("NGINX With SSL")])]),n("li",[n("a",{attrs:{href:"#nginx-without-ssl"}},[t._v("NGINX Without SSL")])]),n("li",[n("a",{attrs:{href:"#enabling-configuration"}},[t._v("Enabling Configuration")])])])]),n("li",[n("a",{attrs:{href:"#apache"}},[t._v("Apache")]),n("ul",[n("li",[n("a",{attrs:{href:"#apache-with-ssl"}},[t._v("Apache With SSL")])]),n("li",[n("a",{attrs:{href:"#apache-without-ssl"}},[t._v("Apache Without SSL")])]),n("li",[n("a",{attrs:{href:"#enabling-configuration"}},[t._v("Enabling Configuration")])])])])])]),n("p"),t._v(" "),n("div",{staticClass:"custom-block danger"},[n("p",{staticClass:"custom-block-title"},[t._v("DANGER")]),t._v(" "),n("p",[t._v("You should remove the default Apache or NGINX configuration as it will expose application secrets to malicious\nusers by default.")])]),t._v(" "),n("h2",{attrs:{id:"nginx"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" NGINX")]),t._v(" "),n("p",[t._v("You should paste the contents of the file below, replacing "),n("code",[t._v("")]),t._v(" with your domain name being used in a file called\n"),n("code",[t._v("pterodactyl.conf")]),t._v(" and place it in "),n("code",[t._v("/etc/nginx/sites-available/")]),t._v(", or — if on CentOS, "),n("code",[t._v("/etc/nginx/conf.d/")]),t._v(".")]),t._v(" "),n("h3",{attrs:{id:"nginx-with-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#nginx-with-ssl"}},[t._v("#")]),t._v(" NGINX With SSL")]),t._v(" "),n("p",[t._v("This configuration assumes that you will be using SSL on both the Panel and Daemons for significantly improved communication\nsecurity between users and the Panel. You will need to get a valid SSL certificate which can be done for free by using\nLet's Encrypt.")]),t._v(" "),n("div",{staticClass:"custom-block warning"},[n("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),n("p",[t._v("When using the SSL configuration you MUST create SSL certificates, otherwise your NGINX will fail to start. See "),n("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("Creating SSL Certificates")]),t._v(" documentation page for how to create these certificates before continuing.")],1)]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('server_tokens off;\n\nserver {\n listen 80;\n server_name ;\n return 301 https://$server_name$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.php;\n\n access_log /var/log/nginx/pterodactyl.app-access.log;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n\n sendfile off;\n\n # SSL Configuration\n ssl_certificate /etc/letsencrypt/live//fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live//privkey.pem;\n ssl_session_cache shared:SSL:10m;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";\n ssl_prefer_server_ciphers on;\n\n # See https://hstspreload.org/ before uncommenting the line below.\n # add_header Strict-Transport-Security "max-age=15768000; preload;";\n add_header X-Content-Type-Options nosniff;\n add_header X-XSS-Protection "1; mode=block";\n add_header X-Robots-Tag none;\n add_header Content-Security-Policy "frame-ancestors \'self\'";\n add_header X-Frame-Options DENY;\n add_header Referrer-Policy same-origin;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/run/php/php7.2-fpm.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n include /etc/nginx/fastcgi_params;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}\n')])])]),n("p",[t._v("Continue reading to the bottom of this section for the final steps with NGINX!")]),t._v(" "),n("h3",{attrs:{id:"nginx-without-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#nginx-without-ssl"}},[t._v("#")]),t._v(" NGINX Without SSL")]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('server {\n listen 80;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.html index.htm index.php;\n charset utf-8;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location = /favicon.ico { access_log off; log_not_found off; }\n location = /robots.txt { access_log off; log_not_found off; }\n\n access_log off;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n\n sendfile off;\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/run/php/php7.2-fpm.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}\n')])])]),n("h3",{attrs:{id:"enabling-configuration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enabling-configuration"}},[t._v("#")]),t._v(" Enabling Configuration")]),t._v(" "),n("p",[t._v("The final step is to enable your NGINX configuration and restart it.")]),t._v(" "),n("div",{staticClass:"language-bash extra-class"},[n("pre",{pre:!0,attrs:{class:"language-bash"}},[n("code",[n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# You do not need to symlink this file if you are using CentOS.")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ln")]),t._v(" -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf\n\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# You need to restart nginx regardless of OS.")]),t._v("\nsystemctl restart nginx\n")])])]),n("h2",{attrs:{id:"apache"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apache"}},[t._v("#")]),t._v(" Apache")]),t._v(" "),n("p",[t._v("You should paste the contents of the file below, replacing "),n("code",[t._v("")]),t._v(" with your domain name being used in a file called\n"),n("code",[t._v("pterodactyl.conf")]),t._v(" and place it in "),n("code",[t._v("/etc/apache2/sites-available")]),t._v(", or — if on CentOS, "),n("code",[t._v("/etc/httpd/conf.d/")]),t._v(".")]),t._v(" "),n("p",[t._v("Note: When using Apache, make sure you have the "),n("code",[t._v("libapache2-mod-php")]),t._v(" package installed or else PHP will not display on your webserver.")]),t._v(" "),n("h3",{attrs:{id:"apache-with-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apache-with-ssl"}},[t._v("#")]),t._v(" Apache With SSL")]),t._v(" "),n("p",[t._v("Like the nginx configuration, this assumes you will be using SSL on both the Panel and Daemons for improved security.")]),t._v(" "),n("div",{staticClass:"custom-block warning"},[n("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),n("p",[t._v("When using the SSL configuration you MUST create SSL certificates, otherwise your Apache will fail to start. See "),n("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("Creating SSL Certificates")]),t._v(" documentation page for how to create these certificates before continuing.")],1)]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('\n ServerName \n \n RewriteEngine On\n RewriteCond %{HTTPS} !=on\n RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] \n\n\n\n ServerName \n DocumentRoot "/var/www/pterodactyl/public"\n\n AllowEncodedSlashes On\n \n php_value upload_max_filesize 100M\n php_value post_max_size 100M\n\n \n Require all granted\n AllowOverride all\n \n\n SSLEngine on\n SSLCertificateFile /etc/letsencrypt/live//fullchain.pem\n SSLCertificateKeyFile /etc/letsencrypt/live//privkey.pem\n \n')])])]),n("h3",{attrs:{id:"apache-without-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apache-without-ssl"}},[t._v("#")]),t._v(" Apache Without SSL")]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('\n ServerName \n DocumentRoot "/var/www/pterodactyl/public"\n \n AllowEncodedSlashes On\n \n php_value upload_max_filesize 100M\n php_value post_max_size 100M\n \n \n AllowOverride all\n Require all granted\n \n\n')])])]),n("h3",{attrs:{id:"enabling-configuration-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enabling-configuration-2"}},[t._v("#")]),t._v(" Enabling Configuration")]),t._v(" "),n("p",[t._v("Once you've created the file above, simply run the commands below. If you are on CentOS "),n("em",[t._v("you do not need to run the commands\nbelow!")]),t._v(" You only need to run "),n("code",[t._v("systemctl restart httpd")]),t._v(".")]),t._v(" "),n("div",{staticClass:"language-bash extra-class"},[n("pre",{pre:!0,attrs:{class:"language-bash"}},[n("code",[n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# You do not need to run any of these commands on CentOS")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ln")]),t._v(" -s /etc/apache2/sites-available/pterodactyl.conf /etc/apache2/sites-enabled/pterodactyl.conf\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" a2enmod rewrite\nsystemctl restart apache2\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{407:function(t,e,n){"use strict";n.r(e);var a=n(48),r=Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[n("h1",{attrs:{id:"webserver-configuration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#webserver-configuration"}},[t._v("#")]),t._v(" Webserver Configuration")]),t._v(" "),n("div",{staticClass:"custom-block danger"},[n("p",{staticClass:"custom-block-title"},[t._v("This Version is End-of-Life")]),t._v(" "),n("p",[t._v("This documentation is for "),n("strong",[t._v("end-of-life software")]),t._v(" which does not recieve any security updates or support\nfrom the community. This documentation has been left accessible for historial reasons.")]),t._v(" "),n("p",[t._v("You should be installing and using "),n("RouterLink",{attrs:{to:"/panel/1.0/getting_started.html"}},[t._v("Pterodactyl Panel 1.0")]),t._v(" in production environments.")],1)]),t._v(" "),n("p"),n("div",{staticClass:"table-of-contents"},[n("ul",[n("li",[n("a",{attrs:{href:"#nginx"}},[t._v("NGINX")]),n("ul",[n("li",[n("a",{attrs:{href:"#nginx-with-ssl"}},[t._v("NGINX With SSL")])]),n("li",[n("a",{attrs:{href:"#nginx-without-ssl"}},[t._v("NGINX Without SSL")])]),n("li",[n("a",{attrs:{href:"#enabling-configuration"}},[t._v("Enabling Configuration")])])])]),n("li",[n("a",{attrs:{href:"#apache"}},[t._v("Apache")]),n("ul",[n("li",[n("a",{attrs:{href:"#apache-with-ssl"}},[t._v("Apache With SSL")])]),n("li",[n("a",{attrs:{href:"#apache-without-ssl"}},[t._v("Apache Without SSL")])]),n("li",[n("a",{attrs:{href:"#enabling-configuration"}},[t._v("Enabling Configuration")])])])])])]),n("p"),t._v(" "),n("div",{staticClass:"custom-block danger"},[n("p",{staticClass:"custom-block-title"},[t._v("DANGER")]),t._v(" "),n("p",[t._v("You should remove the default Apache or NGINX configuration as it will expose application secrets to malicious\nusers by default.")])]),t._v(" "),n("h2",{attrs:{id:"nginx"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#nginx"}},[t._v("#")]),t._v(" NGINX")]),t._v(" "),n("p",[t._v("You should paste the contents of the file below, replacing "),n("code",[t._v("")]),t._v(" with your domain name being used in a file called\n"),n("code",[t._v("pterodactyl.conf")]),t._v(" and place it in "),n("code",[t._v("/etc/nginx/sites-available/")]),t._v(", or — if on CentOS, "),n("code",[t._v("/etc/nginx/conf.d/")]),t._v(".")]),t._v(" "),n("h3",{attrs:{id:"nginx-with-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#nginx-with-ssl"}},[t._v("#")]),t._v(" NGINX With SSL")]),t._v(" "),n("p",[t._v("This configuration assumes that you will be using SSL on both the Panel and Daemons for significantly improved communication\nsecurity between users and the Panel. You will need to get a valid SSL certificate which can be done for free by using\nLet's Encrypt.")]),t._v(" "),n("div",{staticClass:"custom-block warning"},[n("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),n("p",[t._v("When using the SSL configuration you MUST create SSL certificates, otherwise your NGINX will fail to start. See "),n("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("Creating SSL Certificates")]),t._v(" documentation page for how to create these certificates before continuing.")],1)]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('server_tokens off;\n\nserver {\n listen 80;\n server_name ;\n return 301 https://$server_name$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.php;\n\n access_log /var/log/nginx/pterodactyl.app-access.log;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n\n sendfile off;\n\n # SSL Configuration\n ssl_certificate /etc/letsencrypt/live//fullchain.pem;\n ssl_certificate_key /etc/letsencrypt/live//privkey.pem;\n ssl_session_cache shared:SSL:10m;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";\n ssl_prefer_server_ciphers on;\n\n # See https://hstspreload.org/ before uncommenting the line below.\n # add_header Strict-Transport-Security "max-age=15768000; preload;";\n add_header X-Content-Type-Options nosniff;\n add_header X-XSS-Protection "1; mode=block";\n add_header X-Robots-Tag none;\n add_header Content-Security-Policy "frame-ancestors \'self\'";\n add_header X-Frame-Options DENY;\n add_header Referrer-Policy same-origin;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/run/php/php7.2-fpm.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n include /etc/nginx/fastcgi_params;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}\n')])])]),n("p",[t._v("Continue reading to the bottom of this section for the final steps with NGINX!")]),t._v(" "),n("h3",{attrs:{id:"nginx-without-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#nginx-without-ssl"}},[t._v("#")]),t._v(" NGINX Without SSL")]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('server {\n listen 80;\n server_name ;\n\n root /var/www/pterodactyl/public;\n index index.html index.htm index.php;\n charset utf-8;\n\n location / {\n try_files $uri $uri/ /index.php?$query_string;\n }\n\n location = /favicon.ico { access_log off; log_not_found off; }\n location = /robots.txt { access_log off; log_not_found off; }\n\n access_log off;\n error_log /var/log/nginx/pterodactyl.app-error.log error;\n\n # allow larger file uploads and longer script runtimes\n client_max_body_size 100m;\n client_body_timeout 120s;\n\n sendfile off;\n\n location ~ \\.php$ {\n fastcgi_split_path_info ^(.+\\.php)(/.+)$;\n fastcgi_pass unix:/run/php/php7.2-fpm.sock;\n fastcgi_index index.php;\n include fastcgi_params;\n fastcgi_param PHP_VALUE "upload_max_filesize = 100M \\n post_max_size=100M";\n fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n fastcgi_param HTTP_PROXY "";\n fastcgi_intercept_errors off;\n fastcgi_buffer_size 16k;\n fastcgi_buffers 4 16k;\n fastcgi_connect_timeout 300;\n fastcgi_send_timeout 300;\n fastcgi_read_timeout 300;\n }\n\n location ~ /\\.ht {\n deny all;\n }\n}\n')])])]),n("h3",{attrs:{id:"enabling-configuration"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enabling-configuration"}},[t._v("#")]),t._v(" Enabling Configuration")]),t._v(" "),n("p",[t._v("The final step is to enable your NGINX configuration and restart it.")]),t._v(" "),n("div",{staticClass:"language-bash extra-class"},[n("pre",{pre:!0,attrs:{class:"language-bash"}},[n("code",[n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# You do not need to symlink this file if you are using CentOS.")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ln")]),t._v(" -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf\n\n"),n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# You need to restart nginx regardless of OS.")]),t._v("\nsystemctl restart nginx\n")])])]),n("h2",{attrs:{id:"apache"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apache"}},[t._v("#")]),t._v(" Apache")]),t._v(" "),n("p",[t._v("You should paste the contents of the file below, replacing "),n("code",[t._v("")]),t._v(" with your domain name being used in a file called\n"),n("code",[t._v("pterodactyl.conf")]),t._v(" and place it in "),n("code",[t._v("/etc/apache2/sites-available")]),t._v(", or — if on CentOS, "),n("code",[t._v("/etc/httpd/conf.d/")]),t._v(".")]),t._v(" "),n("p",[t._v("Note: When using Apache, make sure you have the "),n("code",[t._v("libapache2-mod-php")]),t._v(" package installed or else PHP will not display on your webserver.")]),t._v(" "),n("h3",{attrs:{id:"apache-with-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apache-with-ssl"}},[t._v("#")]),t._v(" Apache With SSL")]),t._v(" "),n("p",[t._v("Like the nginx configuration, this assumes you will be using SSL on both the Panel and Daemons for improved security.")]),t._v(" "),n("div",{staticClass:"custom-block warning"},[n("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),n("p",[t._v("When using the SSL configuration you MUST create SSL certificates, otherwise your Apache will fail to start. See "),n("RouterLink",{attrs:{to:"/tutorials/creating_ssl_certificates.html"}},[t._v("Creating SSL Certificates")]),t._v(" documentation page for how to create these certificates before continuing.")],1)]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('\n ServerName \n \n RewriteEngine On\n RewriteCond %{HTTPS} !=on\n RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] \n\n\n\n ServerName \n DocumentRoot "/var/www/pterodactyl/public"\n\n AllowEncodedSlashes On\n \n php_value upload_max_filesize 100M\n php_value post_max_size 100M\n\n \n Require all granted\n AllowOverride all\n \n\n SSLEngine on\n SSLCertificateFile /etc/letsencrypt/live//fullchain.pem\n SSLCertificateKeyFile /etc/letsencrypt/live//privkey.pem\n \n')])])]),n("h3",{attrs:{id:"apache-without-ssl"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#apache-without-ssl"}},[t._v("#")]),t._v(" Apache Without SSL")]),t._v(" "),n("div",{staticClass:"language-conf extra-class"},[n("div",{staticClass:"highlight-lines"},[n("br"),n("div",{staticClass:"highlighted"},[t._v(" ")]),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br"),n("br")]),n("pre",{pre:!0,attrs:{class:"language-text"}},[n("code",[t._v('\n ServerName \n DocumentRoot "/var/www/pterodactyl/public"\n \n AllowEncodedSlashes On\n \n php_value upload_max_filesize 100M\n php_value post_max_size 100M\n \n \n AllowOverride all\n Require all granted\n \n\n')])])]),n("h3",{attrs:{id:"enabling-configuration-2"}},[n("a",{staticClass:"header-anchor",attrs:{href:"#enabling-configuration-2"}},[t._v("#")]),t._v(" Enabling Configuration")]),t._v(" "),n("p",[t._v("Once you've created the file above, simply run the commands below. If you are on CentOS "),n("em",[t._v("you do not need to run the commands\nbelow!")]),t._v(" You only need to run "),n("code",[t._v("systemctl restart httpd")]),t._v(".")]),t._v(" "),n("div",{staticClass:"language-bash extra-class"},[n("pre",{pre:!0,attrs:{class:"language-bash"}},[n("code",[n("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# You do not need to run any of these commands on CentOS")]),t._v("\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" "),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("ln")]),t._v(" -s /etc/apache2/sites-available/pterodactyl.conf /etc/apache2/sites-enabled/pterodactyl.conf\n"),n("span",{pre:!0,attrs:{class:"token function"}},[t._v("sudo")]),t._v(" a2enmod rewrite\nsystemctl restart apache2\n")])])])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/64.bc44f7f2.js b/assets/js/64.4ee3782b.js similarity index 99% rename from assets/js/64.bc44f7f2.js rename to assets/js/64.4ee3782b.js index b44731c8d..6ee7fbe47 100644 --- a/assets/js/64.bc44f7f2.js +++ b/assets/js/64.4ee3782b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{410:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#picking-a-server-os"}},[e._v("Picking a Server OS")])]),a("li",[a("a",{attrs:{href:"#dependencies"}},[e._v("Dependencies")]),a("ul",[a("li",[a("a",{attrs:{href:"#example-dependency-installation"}},[e._v("Example Dependency Installation")])]),a("li",[a("a",{attrs:{href:"#installing-composer"}},[e._v("Installing Composer")])])])]),a("li",[a("a",{attrs:{href:"#download-files"}},[e._v("Download Files")])]),a("li",[a("a",{attrs:{href:"#installation"}},[e._v("Installation")]),a("ul",[a("li",[a("a",{attrs:{href:"#environment-configuration"}},[e._v("Environment Configuration")])]),a("li",[a("a",{attrs:{href:"#database-setup"}},[e._v("Database Setup")])]),a("li",[a("a",{attrs:{href:"#add-the-first-user"}},[e._v("Add The First User")])]),a("li",[a("a",{attrs:{href:"#set-permissions"}},[e._v("Set Permissions")])])])]),a("li",[a("a",{attrs:{href:"#queue-listeners"}},[e._v("Queue Listeners")]),a("ul",[a("li",[a("a",{attrs:{href:"#crontab-configuration"}},[e._v("Crontab Configuration")])]),a("li",[a("a",{attrs:{href:"#create-queue-worker"}},[e._v("Create Queue Worker")])]),a("li",[a("a",{attrs:{href:"#telemetry"}},[e._v("Telemetry")])])])])])]),a("p"),e._v(" "),a("p",[e._v("Pterodactyl Panel is designed to run on your own web server. You will need to have root access to your server in order to run and use this panel.")]),e._v(" "),a("p",[e._v("You are expected to understand how to read documentation to use this Panel. We have spent many hours detailing how to install or upgrade our\nsoftware; take some time and read rather than copy and pasting and then complaining when things do not work. This panel does\nnot exist as a drag-and-drop service to run your servers. It is a highly complex system requiring multiple dependencies and\nadministrators willing to spend some time learning how to use it. "),a("strong",[e._v("If you expect to be able to install this with no understanding\nof basic linux system administration you should stop and turn around now.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Looking for something simple to setup?")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://wisp.gg",target:"_blank",rel:"noopener noreferrer"}},[e._v("WISP"),a("OutboundLink")],1),e._v(" is a Pterodactyl powered SaaS suitable for enterprise and personal use. Offering all the features without the setup hassle, and fully compatible with Pterodactyl eggs. Comparable to MultiCraft or TCAdmin while offering new and unique features. Click here to "),a("a",{attrs:{href:"https://wisp.gg/features",target:"_blank",rel:"noopener noreferrer"}},[e._v("learn more"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("h2",{attrs:{id:"picking-a-server-os"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#picking-a-server-os"}},[e._v("#")]),e._v(" Picking a Server OS")]),e._v(" "),a("p",[e._v("Pterodactyl runs on a wide range of operating systems, so pick whichever you are most comfortable using.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Pterodactyl does not support most OpenVZ systems due to incompatibilities with Docker. If you are planning on running\nthis software on an OpenVZ based system you will — most likely — not be successful.")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Operating System")]),e._v(" "),a("th",[e._v("Version")]),e._v(" "),a("th",{staticStyle:{"text-align":"center"}},[e._v("Supported")]),e._v(" "),a("th",[e._v("Notes")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("strong",[e._v("Ubuntu")])]),e._v(" "),a("td",[e._v("20.04")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Documentation written assuming Ubuntu 20.04 as the base OS.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[e._v("22.04")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("MariaDB can be installed without the repo setup script.")])]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("CentOS")])]),e._v(" "),a("td",[e._v("7")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Extra repos are required.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[e._v("8")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Note that CentOS 8 is EOL. Use Rocky or Alma Linux.")])]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("Debian")])]),e._v(" "),a("td",[e._v("11")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[e._v("12")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td")])])]),e._v(" "),a("h2",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies"}},[e._v("#")]),e._v(" Dependencies")]),e._v(" "),a("ul",[a("li",[e._v("PHP "),a("code",[e._v("8.0")]),e._v(" or "),a("code",[e._v("8.1")]),e._v(" (recommended) with the following extensions: "),a("code",[e._v("cli")]),e._v(", "),a("code",[e._v("openssl")]),e._v(", "),a("code",[e._v("gd")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("PDO")]),e._v(", "),a("code",[e._v("mbstring")]),e._v(", "),a("code",[e._v("tokenizer")]),e._v(", "),a("code",[e._v("bcmath")]),e._v(", "),a("code",[e._v("xml")]),e._v(" or "),a("code",[e._v("dom")]),e._v(", "),a("code",[e._v("curl")]),e._v(", "),a("code",[e._v("zip")]),e._v(", and "),a("code",[e._v("fpm")]),e._v(" if you are planning to use NGINX.")]),e._v(" "),a("li",[e._v("MySQL "),a("code",[e._v("5.7.22")]),e._v(" and higher (MySQL "),a("code",[e._v("8")]),e._v(" recommended) "),a("strong",[e._v("or")]),e._v(" MariaDB "),a("code",[e._v("10.2")]),e._v(" and higher.")]),e._v(" "),a("li",[e._v("Redis ("),a("code",[e._v("redis-server")]),e._v(")")]),e._v(" "),a("li",[e._v("A webserver (Apache, NGINX, Caddy, etc.)")]),e._v(" "),a("li",[a("code",[e._v("curl")])]),e._v(" "),a("li",[a("code",[e._v("tar")])]),e._v(" "),a("li",[a("code",[e._v("unzip")])]),e._v(" "),a("li",[a("code",[e._v("git")])]),e._v(" "),a("li",[a("code",[e._v("composer")]),e._v(" v2")])]),e._v(" "),a("h3",{attrs:{id:"example-dependency-installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-dependency-installation"}},[e._v("#")]),e._v(" Example Dependency Installation")]),e._v(" "),a("p",[e._v("The commands below are simply an example of how you might install these dependencies. Please consult with your\noperating system's package manager to determine the correct packages to install.")]),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('# Add "add-apt-repository" command')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" software-properties-common "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" apt-transport-https ca-certificates gnupg\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add additional repositories for PHP, Redis, and MariaDB")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("LC_ALL")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("C.UTF-8 add-apt-repository -y ppa:ondrej/php\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add Redis official APT repository")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -fsSL https://packages.redis.io/gpg "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("echo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb '),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),e._v("lsb_release -cs"),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(' main"')]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tee")]),e._v(" /etc/apt/sources.list.d/redis.list\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# MariaDB repo setup script can be skipped on Ubuntu 22.04")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("bash")]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Update repositories list")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Install Dependencies")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" php8.1 php8.1-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v(" mariadb-server nginx "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("unzip")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" redis-server\n")])])]),a("h3",{attrs:{id:"installing-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-composer"}},[e._v("#")]),e._v(" Installing Composer")]),e._v(" "),a("p",[e._v("Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll\nneed composer installed before continuing in this process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("composer\n")])])]),a("h2",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),a("p",[e._v("The first step in this process is to create the folder where the panel will live and then move ourselves into that\nnewly created folder. Below is an example of how to perform this operation.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" -p /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" /var/www/pterodactyl\n")])])]),a("p",[e._v("Once you have created a new directory for the Panel and moved into it you'll need to download the Panel files. This\nis as simple as using "),a("code",[e._v("curl")]),e._v(" to download our pre-packaged content. Once it is downloaded you'll need to unpack the archive\nand then set the correct permissions on the "),a("code",[e._v("storage/")]),e._v(" and "),a("code",[e._v("bootstrap/cache/")]),e._v(" directories. These directories\nallow us to store files as well as keep a speedy cache available to reduce load times.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -xzvf panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache/\n")])])]),a("h2",{attrs:{id:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[e._v("#")]),e._v(" Installation")]),e._v(" "),a("p",[e._v("Now that all of the files have been downloaded we need to configure some core aspects of the Panel.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Database Configuration")]),e._v(" "),a("p",[e._v("You will need a database setup and a user with the correct permissions created for that database before\ncontinuing any further. See below to create a user and database for your Pterodactyl panel quickly. To find more detailed information\nplease have a look at "),a("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[e._v("Setting up MySQL")]),e._v(".")],1),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\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Remember to change 'yourPassword' below to be a unique password")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("CREATE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("USER")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'pterodactyl'")]),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("@'127.0.0.1'")]),e._v(" IDENTIFIED "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("BY")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'yourPassword'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("CREATE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("DATABASE")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("GRANT")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("ALL")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("PRIVILEGES")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("ON")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("TO")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'pterodactyl'")]),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("@'127.0.0.1'")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("WITH")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("GRANT")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("OPTION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("exit")]),e._v("\n")])])])]),e._v(" "),a("p",[e._v("First we will copy over our default environment settings file, install core dependencies, and then generate a\nnew application encryption key.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("cp")]),e._v(" .env.example .env\ncomposer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Only run the command below if you are installing this Panel for")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# the first time and do not have any Pterodactyl Panel data in the database.")]),e._v("\nphp artisan key:generate --force\n")])])]),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),a("p",[e._v("Back up your encryption key (APP_KEY in the "),a("code",[e._v(".env")]),e._v(" file). It is used as an encryption key for all data that needs to be stored securely (e.g. api keys).\nStore it somewhere safe - not just on your server. If you lose it all encrypted data is irrecoverable -- even if you have database backups.")])]),e._v(" "),a("h3",{attrs:{id:"environment-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-configuration"}},[e._v("#")]),e._v(" Environment Configuration")]),e._v(" "),a("p",[e._v("Pterodactyl's core environment is easily configured using a few different CLI commands built into the app. This step\nwill cover setting up things such as sessions, caching, database credentials, and email sending.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:database\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# To use PHP\'s internal mail sending (not recommended), select "mail". To use a')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# custom SMTP server, select "smtp".')]),e._v("\nphp artisan p:environment:mail\n")])])]),a("h3",{attrs:{id:"database-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-setup"}},[e._v("#")]),e._v(" Database Setup")]),e._v(" "),a("p",[e._v("Now we need to setup all of the base data for the Panel in the database you created earlier. "),a("strong",[e._v("The command below\nmay take some time to run depending on your machine. Please "),a("em",[e._v("DO NOT")]),e._v(" exit the process until it is completed!")]),e._v(" This\ncommand will setup the database tables and then add all of the Nests & Eggs that power Pterodactyl.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --seed --force\n")])])]),a("h3",{attrs:{id:"add-the-first-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-user"}},[e._v("#")]),e._v(" Add The First User")]),e._v(" "),a("p",[e._v("You'll then need to create an administrative user so that you can log into the panel. To do so, run the command below.\nAt this time passwords "),a("strong",[e._v("must")]),e._v(" meet the following requirements: 8 characters, mixed case, at least one number.")]),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:make\n")])])]),a("h3",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step in the installation process is to set the correct permissions on the Panel files so that the webserver can\nuse them correctly.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS)")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data /var/www/pterodactyl/*\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx /var/www/pterodactyl/*\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache /var/www/pterodactyl/*\n")])])]),a("h2",{attrs:{id:"queue-listeners"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queue-listeners"}},[e._v("#")]),e._v(" Queue Listeners")]),e._v(" "),a("p",[e._v("We make use of queues to make the application faster and handle sending emails and other actions in the background.\nYou will need to setup the queue worker for these actions to be processed.")]),e._v(" "),a("h3",{attrs:{id:"crontab-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crontab-configuration"}},[e._v("#")]),e._v(" Crontab Configuration")]),e._v(" "),a("p",[e._v("The first thing we need to do is create a new cronjob that runs every minute to process specific Pterodactyl tasks, such\nas session cleanup and sending scheduled tasks to daemons. You'll want to open your crontab using "),a("code",[e._v("sudo crontab -e")]),e._v(" and\nthen paste the line below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("* * * * * php /var/www/pterodactyl/artisan schedule:run "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">>")]),e._v(" /dev/null "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("2")]),e._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("&1")]),e._v("\n")])])]),a("h3",{attrs:{id:"create-queue-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-queue-worker"}},[e._v("#")]),e._v(" Create Queue Worker")]),e._v(" "),a("p",[e._v("Next you need to create a new systemd worker to keep our queue process running in the background. This queue is responsible\nfor sending emails and handling many other background tasks for Pterodactyl.")]),e._v(" "),a("p",[e._v("Create a file called "),a("code",[e._v("pteroq.service")]),e._v(" in "),a("code",[e._v("/etc/systemd/system")]),e._v(" with the contents below.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("# Pterodactyl Queue Worker File\n# ----------------------------------\n\n[Unit]\nDescription=Pterodactyl Queue Worker\nAfter=redis-server.service\n\n[Service]\n# On some systems the user and group might be different.\n# Some systems use `apache` or `nginx` as the user and group.\nUser=www-data\nGroup=www-data\nRestart=always\nExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3\nStartLimitInterval=180\nStartLimitBurst=30\nRestartSec=5s\n\n[Install]\nWantedBy=multi-user.target\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Redis on CentOS")]),e._v(" "),a("p",[e._v("If you are using CentOS, you will need to replace "),a("code",[e._v("redis-server.service")]),e._v(" with "),a("code",[e._v("redis.service")]),e._v(" at the "),a("code",[e._v("After=")]),e._v(" line in order to ensure "),a("code",[e._v("redis")]),e._v(" starts before the queue worker.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("If you are not using "),a("code",[e._v("redis")]),e._v(" for anything you should remove the "),a("code",[e._v("After=")]),e._v(" line, otherwise you will encounter errors\nwhen the service starts.")])]),e._v(" "),a("p",[e._v("If you 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:")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now redis-server\n")])])]),a("p",[e._v("Finally, enable the service and set it to boot on machine start.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now pteroq.service\n")])])]),a("h3",{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, Pterodactyl will collect anonymous telemetry to help us better understand how the\nsoftware is being used. To learn more about this feature and to opt-out, please see our "),a("RouterLink",{attrs:{to:"/panel/1.0/additional_configuration.html#telemetry"}},[e._v("Telemetry")]),e._v("\ndocumentation. Make sure to continue with the rest of the installation process.")],1),e._v(" "),a("h4",{attrs:{id:"next-step-webserver-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next-step-webserver-configuration"}},[e._v("#")]),e._v(" Next Step: "),a("a",{attrs:{href:"./webserver_configuration"}},[e._v("Webserver Configuration")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{409:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"getting-started"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#getting-started"}},[e._v("#")]),e._v(" Getting Started")]),e._v(" "),a("p"),a("div",{staticClass:"table-of-contents"},[a("ul",[a("li",[a("a",{attrs:{href:"#picking-a-server-os"}},[e._v("Picking a Server OS")])]),a("li",[a("a",{attrs:{href:"#dependencies"}},[e._v("Dependencies")]),a("ul",[a("li",[a("a",{attrs:{href:"#example-dependency-installation"}},[e._v("Example Dependency Installation")])]),a("li",[a("a",{attrs:{href:"#installing-composer"}},[e._v("Installing Composer")])])])]),a("li",[a("a",{attrs:{href:"#download-files"}},[e._v("Download Files")])]),a("li",[a("a",{attrs:{href:"#installation"}},[e._v("Installation")]),a("ul",[a("li",[a("a",{attrs:{href:"#environment-configuration"}},[e._v("Environment Configuration")])]),a("li",[a("a",{attrs:{href:"#database-setup"}},[e._v("Database Setup")])]),a("li",[a("a",{attrs:{href:"#add-the-first-user"}},[e._v("Add The First User")])]),a("li",[a("a",{attrs:{href:"#set-permissions"}},[e._v("Set Permissions")])])])]),a("li",[a("a",{attrs:{href:"#queue-listeners"}},[e._v("Queue Listeners")]),a("ul",[a("li",[a("a",{attrs:{href:"#crontab-configuration"}},[e._v("Crontab Configuration")])]),a("li",[a("a",{attrs:{href:"#create-queue-worker"}},[e._v("Create Queue Worker")])]),a("li",[a("a",{attrs:{href:"#telemetry"}},[e._v("Telemetry")])])])])])]),a("p"),e._v(" "),a("p",[e._v("Pterodactyl Panel is designed to run on your own web server. You will need to have root access to your server in order to run and use this panel.")]),e._v(" "),a("p",[e._v("You are expected to understand how to read documentation to use this Panel. We have spent many hours detailing how to install or upgrade our\nsoftware; take some time and read rather than copy and pasting and then complaining when things do not work. This panel does\nnot exist as a drag-and-drop service to run your servers. It is a highly complex system requiring multiple dependencies and\nadministrators willing to spend some time learning how to use it. "),a("strong",[e._v("If you expect to be able to install this with no understanding\nof basic linux system administration you should stop and turn around now.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Looking for something simple to setup?")]),e._v(" "),a("p",[a("a",{attrs:{href:"https://wisp.gg",target:"_blank",rel:"noopener noreferrer"}},[e._v("WISP"),a("OutboundLink")],1),e._v(" is a Pterodactyl powered SaaS suitable for enterprise and personal use. Offering all the features without the setup hassle, and fully compatible with Pterodactyl eggs. Comparable to MultiCraft or TCAdmin while offering new and unique features. Click here to "),a("a",{attrs:{href:"https://wisp.gg/features",target:"_blank",rel:"noopener noreferrer"}},[e._v("learn more"),a("OutboundLink")],1),e._v(".")])]),e._v(" "),a("h2",{attrs:{id:"picking-a-server-os"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#picking-a-server-os"}},[e._v("#")]),e._v(" Picking a Server OS")]),e._v(" "),a("p",[e._v("Pterodactyl runs on a wide range of operating systems, so pick whichever you are most comfortable using.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("Pterodactyl does not support most OpenVZ systems due to incompatibilities with Docker. If you are planning on running\nthis software on an OpenVZ based system you will — most likely — not be successful.")])]),e._v(" "),a("table",[a("thead",[a("tr",[a("th",[e._v("Operating System")]),e._v(" "),a("th",[e._v("Version")]),e._v(" "),a("th",{staticStyle:{"text-align":"center"}},[e._v("Supported")]),e._v(" "),a("th",[e._v("Notes")])])]),e._v(" "),a("tbody",[a("tr",[a("td",[a("strong",[e._v("Ubuntu")])]),e._v(" "),a("td",[e._v("20.04")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Documentation written assuming Ubuntu 20.04 as the base OS.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[e._v("22.04")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("MariaDB can be installed without the repo setup script.")])]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("CentOS")])]),e._v(" "),a("td",[e._v("7")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Extra repos are required.")])]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[e._v("8")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td",[e._v("Note that CentOS 8 is EOL. Use Rocky or Alma Linux.")])]),e._v(" "),a("tr",[a("td",[a("strong",[e._v("Debian")])]),e._v(" "),a("td",[e._v("11")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td")]),e._v(" "),a("tr",[a("td"),e._v(" "),a("td",[e._v("12")]),e._v(" "),a("td",{staticStyle:{"text-align":"center"}},[e._v("✅")]),e._v(" "),a("td")])])]),e._v(" "),a("h2",{attrs:{id:"dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#dependencies"}},[e._v("#")]),e._v(" Dependencies")]),e._v(" "),a("ul",[a("li",[e._v("PHP "),a("code",[e._v("8.0")]),e._v(" or "),a("code",[e._v("8.1")]),e._v(" (recommended) with the following extensions: "),a("code",[e._v("cli")]),e._v(", "),a("code",[e._v("openssl")]),e._v(", "),a("code",[e._v("gd")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("PDO")]),e._v(", "),a("code",[e._v("mbstring")]),e._v(", "),a("code",[e._v("tokenizer")]),e._v(", "),a("code",[e._v("bcmath")]),e._v(", "),a("code",[e._v("xml")]),e._v(" or "),a("code",[e._v("dom")]),e._v(", "),a("code",[e._v("curl")]),e._v(", "),a("code",[e._v("zip")]),e._v(", and "),a("code",[e._v("fpm")]),e._v(" if you are planning to use NGINX.")]),e._v(" "),a("li",[e._v("MySQL "),a("code",[e._v("5.7.22")]),e._v(" and higher (MySQL "),a("code",[e._v("8")]),e._v(" recommended) "),a("strong",[e._v("or")]),e._v(" MariaDB "),a("code",[e._v("10.2")]),e._v(" and higher.")]),e._v(" "),a("li",[e._v("Redis ("),a("code",[e._v("redis-server")]),e._v(")")]),e._v(" "),a("li",[e._v("A webserver (Apache, NGINX, Caddy, etc.)")]),e._v(" "),a("li",[a("code",[e._v("curl")])]),e._v(" "),a("li",[a("code",[e._v("tar")])]),e._v(" "),a("li",[a("code",[e._v("unzip")])]),e._v(" "),a("li",[a("code",[e._v("git")])]),e._v(" "),a("li",[a("code",[e._v("composer")]),e._v(" v2")])]),e._v(" "),a("h3",{attrs:{id:"example-dependency-installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#example-dependency-installation"}},[e._v("#")]),e._v(" Example Dependency Installation")]),e._v(" "),a("p",[e._v("The commands below are simply an example of how you might install these dependencies. Please consult with your\noperating system's package manager to determine the correct packages to install.")]),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('# Add "add-apt-repository" command')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" software-properties-common "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" apt-transport-https ca-certificates gnupg\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add additional repositories for PHP, Redis, and MariaDB")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a("span",{pre:!0,attrs:{class:"token environment constant"}},[e._v("LC_ALL")])]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("C.UTF-8 add-apt-repository -y ppa:ondrej/php\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Add Redis official APT repository")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -fsSL https://packages.redis.io/gpg "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("echo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb '),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),e._v("lsb_release -cs"),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(' main"')]),e._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tee")]),e._v(" /etc/apt/sources.list.d/redis.list\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# MariaDB repo setup script can be skipped on Ubuntu 22.04")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("bash")]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Update repositories list")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" update\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Install Dependencies")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("apt")]),e._v(" -y "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" php8.1 php8.1-"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v(" mariadb-server nginx "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("unzip")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" redis-server\n")])])]),a("h3",{attrs:{id:"installing-composer"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installing-composer"}},[e._v("#")]),e._v(" Installing Composer")]),e._v(" "),a("p",[e._v("Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll\nneed composer installed before continuing in this process.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -sS https://getcomposer.org/installer "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" php -- --install-dir"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("/usr/local/bin --filename"),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("composer\n")])])]),a("h2",{attrs:{id:"download-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#download-files"}},[e._v("#")]),e._v(" Download Files")]),e._v(" "),a("p",[e._v("The first step in this process is to create the folder where the panel will live and then move ourselves into that\nnewly created folder. Below is an example of how to perform this operation.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" -p /var/www/pterodactyl\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" /var/www/pterodactyl\n")])])]),a("p",[e._v("Once you have created a new directory for the Panel and moved into it you'll need to download the Panel files. This\nis as simple as using "),a("code",[e._v("curl")]),e._v(" to download our pre-packaged content. Once it is downloaded you'll need to unpack the archive\nand then set the correct permissions on the "),a("code",[e._v("storage/")]),e._v(" and "),a("code",[e._v("bootstrap/cache/")]),e._v(" directories. These directories\nallow us to store files as well as keep a speedy cache available to reduce load times.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -xzvf panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache/\n")])])]),a("h2",{attrs:{id:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[e._v("#")]),e._v(" Installation")]),e._v(" "),a("p",[e._v("Now that all of the files have been downloaded we need to configure some core aspects of the Panel.")]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Database Configuration")]),e._v(" "),a("p",[e._v("You will need a database setup and a user with the correct permissions created for that database before\ncontinuing any further. See below to create a user and database for your Pterodactyl panel quickly. To find more detailed information\nplease have a look at "),a("RouterLink",{attrs:{to:"/tutorials/mysql_setup.html"}},[e._v("Setting up MySQL")]),e._v(".")],1),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\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Remember to change 'yourPassword' below to be a unique password")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("CREATE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("USER")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'pterodactyl'")]),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("@'127.0.0.1'")]),e._v(" IDENTIFIED "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("BY")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'yourPassword'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("CREATE")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("DATABASE")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("GRANT")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("ALL")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("PRIVILEGES")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("ON")]),e._v(" panel"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("*")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("TO")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v("'pterodactyl'")]),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("@'127.0.0.1'")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("WITH")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("GRANT")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("OPTION")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("exit")]),e._v("\n")])])])]),e._v(" "),a("p",[e._v("First we will copy over our default environment settings file, install core dependencies, and then generate a\nnew application encryption key.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("cp")]),e._v(" .env.example .env\ncomposer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Only run the command below if you are installing this Panel for")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# the first time and do not have any Pterodactyl Panel data in the database.")]),e._v("\nphp artisan key:generate --force\n")])])]),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),a("p",[e._v("Back up your encryption key (APP_KEY in the "),a("code",[e._v(".env")]),e._v(" file). It is used as an encryption key for all data that needs to be stored securely (e.g. api keys).\nStore it somewhere safe - not just on your server. If you lose it all encrypted data is irrecoverable -- even if you have database backups.")])]),e._v(" "),a("h3",{attrs:{id:"environment-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#environment-configuration"}},[e._v("#")]),e._v(" Environment Configuration")]),e._v(" "),a("p",[e._v("Pterodactyl's core environment is easily configured using a few different CLI commands built into the app. This step\nwill cover setting up things such as sessions, caching, database credentials, and email sending.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan p:environment:setup\nphp artisan p:environment:database\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# To use PHP\'s internal mail sending (not recommended), select "mail". To use a')]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v('# custom SMTP server, select "smtp".')]),e._v("\nphp artisan p:environment:mail\n")])])]),a("h3",{attrs:{id:"database-setup"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-setup"}},[e._v("#")]),e._v(" Database Setup")]),e._v(" "),a("p",[e._v("Now we need to setup all of the base data for the Panel in the database you created earlier. "),a("strong",[e._v("The command below\nmay take some time to run depending on your machine. Please "),a("em",[e._v("DO NOT")]),e._v(" exit the process until it is completed!")]),e._v(" This\ncommand will setup the database tables and then add all of the Nests & Eggs that power Pterodactyl.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --seed --force\n")])])]),a("h3",{attrs:{id:"add-the-first-user"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#add-the-first-user"}},[e._v("#")]),e._v(" Add The First User")]),e._v(" "),a("p",[e._v("You'll then need to create an administrative user so that you can log into the panel. To do so, run the command below.\nAt this time passwords "),a("strong",[e._v("must")]),e._v(" meet the following requirements: 8 characters, mixed case, at least one number.")]),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:make\n")])])]),a("h3",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step in the installation process is to set the correct permissions on the Panel files so that the webserver can\nuse them correctly.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS)")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data /var/www/pterodactyl/*\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx /var/www/pterodactyl/*\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache /var/www/pterodactyl/*\n")])])]),a("h2",{attrs:{id:"queue-listeners"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#queue-listeners"}},[e._v("#")]),e._v(" Queue Listeners")]),e._v(" "),a("p",[e._v("We make use of queues to make the application faster and handle sending emails and other actions in the background.\nYou will need to setup the queue worker for these actions to be processed.")]),e._v(" "),a("h3",{attrs:{id:"crontab-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#crontab-configuration"}},[e._v("#")]),e._v(" Crontab Configuration")]),e._v(" "),a("p",[e._v("The first thing we need to do is create a new cronjob that runs every minute to process specific Pterodactyl tasks, such\nas session cleanup and sending scheduled tasks to daemons. You'll want to open your crontab using "),a("code",[e._v("sudo crontab -e")]),e._v(" and\nthen paste the line below.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("* * * * * php /var/www/pterodactyl/artisan schedule:run "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">>")]),e._v(" /dev/null "),a("span",{pre:!0,attrs:{class:"token operator"}},[a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("2")]),e._v(">")]),a("span",{pre:!0,attrs:{class:"token file-descriptor important"}},[e._v("&1")]),e._v("\n")])])]),a("h3",{attrs:{id:"create-queue-worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#create-queue-worker"}},[e._v("#")]),e._v(" Create Queue Worker")]),e._v(" "),a("p",[e._v("Next you need to create a new systemd worker to keep our queue process running in the background. This queue is responsible\nfor sending emails and handling many other background tasks for Pterodactyl.")]),e._v(" "),a("p",[e._v("Create a file called "),a("code",[e._v("pteroq.service")]),e._v(" in "),a("code",[e._v("/etc/systemd/system")]),e._v(" with the contents below.")]),e._v(" "),a("div",{staticClass:"language-text extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[e._v("# Pterodactyl Queue Worker File\n# ----------------------------------\n\n[Unit]\nDescription=Pterodactyl Queue Worker\nAfter=redis-server.service\n\n[Service]\n# On some systems the user and group might be different.\n# Some systems use `apache` or `nginx` as the user and group.\nUser=www-data\nGroup=www-data\nRestart=always\nExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3\nStartLimitInterval=180\nStartLimitBurst=30\nRestartSec=5s\n\n[Install]\nWantedBy=multi-user.target\n")])])]),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("Redis on CentOS")]),e._v(" "),a("p",[e._v("If you are using CentOS, you will need to replace "),a("code",[e._v("redis-server.service")]),e._v(" with "),a("code",[e._v("redis.service")]),e._v(" at the "),a("code",[e._v("After=")]),e._v(" line in order to ensure "),a("code",[e._v("redis")]),e._v(" starts before the queue worker.")])]),e._v(" "),a("div",{staticClass:"custom-block tip"},[a("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),a("p",[e._v("If you are not using "),a("code",[e._v("redis")]),e._v(" for anything you should remove the "),a("code",[e._v("After=")]),e._v(" line, otherwise you will encounter errors\nwhen the service starts.")])]),e._v(" "),a("p",[e._v("If you 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:")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now redis-server\n")])])]),a("p",[e._v("Finally, enable the service and set it to boot on machine start.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("enable")]),e._v(" --now pteroq.service\n")])])]),a("h3",{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, Pterodactyl will collect anonymous telemetry to help us better understand how the\nsoftware is being used. To learn more about this feature and to opt-out, please see our "),a("RouterLink",{attrs:{to:"/panel/1.0/additional_configuration.html#telemetry"}},[e._v("Telemetry")]),e._v("\ndocumentation. Make sure to continue with the rest of the installation process.")],1),e._v(" "),a("h4",{attrs:{id:"next-step-webserver-configuration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#next-step-webserver-configuration"}},[e._v("#")]),e._v(" Next Step: "),a("a",{attrs:{href:"./webserver_configuration"}},[e._v("Webserver Configuration")])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/65.98dc8be8.js b/assets/js/65.87602847.js similarity index 99% rename from assets/js/65.98dc8be8.js rename to assets/js/65.87602847.js index 775725d58..c5a63ec46 100644 --- a/assets/js/65.98dc8be8.js +++ b/assets/js/65.87602847.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{409:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"legacy-upgrades"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legacy-upgrades"}},[e._v("#")]),e._v(" Legacy Upgrades")]),e._v(" "),a("p",[e._v("This upgrade guide is for "),a("strong",[e._v("upgrading from 0.7.X to 1.3.x")]),e._v(". If you are trying to do an upgrade on a 1.X Panel\nplease "),a("RouterLink",{attrs:{to:"/panel/1.0/updating.html"}},[e._v("use this guide instead")]),e._v(". During this upgrade process you will have some periods\nof Panel unavailability, however none of the underlying game server instances will be stopped.")],1),e._v(" "),a("h2",{attrs:{id:"enter-maintenance-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enter-maintenance-mode"}},[e._v("#")]),e._v(" Enter Maintenance Mode")]),e._v(" "),a("p",[e._v("You'll want to put your Panel into maintenance mode by running the "),a("code",[e._v("down")]),e._v(" command below before starting. This\nwill prevent users from accessing the Panel during a period where things will be broken or not working correctly. Make sure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory when executing the command.")]),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("# Put the Panel into maintenance mode and deny user access")]),e._v("\nphp artisan down\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("You'll need to make sure your system dependencies are up to date before performing this upgrade. Please\nreference the list below to ensure you have all of the required versions.")]),e._v(" "),a("ul",[a("li",[e._v("PHP "),a("code",[e._v("8.0")]),e._v(" or "),a("code",[e._v("8.1")]),e._v(" (recommended) with the following extensions: "),a("code",[e._v("cli")]),e._v(", "),a("code",[e._v("openssl")]),e._v(", "),a("code",[e._v("gd")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("PDO")]),e._v(", "),a("code",[e._v("mbstring")]),e._v(",\n"),a("code",[e._v("tokenizer")]),e._v(", "),a("code",[e._v("bcmath")]),e._v(", "),a("code",[e._v("xml")]),e._v(" or "),a("code",[e._v("dom")]),e._v(", "),a("code",[e._v("curl")]),e._v(", "),a("code",[e._v("zip")]),e._v(", and "),a("code",[e._v("fpm")]),e._v(" if you are planning to use nginx. See our guide\nfor "),a("RouterLink",{attrs:{to:"/guides/php_upgrade.html"}},[e._v("Upgrading PHP")]),e._v(" for details.")],1),e._v(" "),a("li",[e._v("Composer v2 ("),a("code",[e._v("composer self-update --2")]),e._v(")")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Nginx")]),e._v(" "),a("p",[e._v("If you upgrade your PHP version and are using nginx as your webserver, you will have to update the\n"),a("code",[e._v("fastcgi_pass")]),e._v(" value in your nginx's "),a("code",[e._v("pterodactyl.conf")]),e._v(" configuration to use the correct "),a("code",[e._v("php-fpm")]),e._v(" socket.")])]),e._v(" "),a("ul",[a("li",[e._v("MySQL "),a("code",[e._v("5.7.22")]),e._v(" or higher (MySQL "),a("code",[e._v("8")]),e._v(" recommended) "),a("strong",[e._v("or")]),e._v(" MariaDB "),a("code",[e._v("10.2")]),e._v(" or higher.")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Seriously, Double Check your Database Version")]),e._v(" "),a("p",[e._v("Please make sure you are running the correct version of MariaDB or MySQL listed above! Failure to do so "),a("em",[e._v("will")]),e._v("\nresult in an error when you attempt to run the migrations.")]),e._v(" "),a("p",[e._v("Previous documentation (and just the age of this software) likely had you installing MariaDB 10.1 which "),a("em",[e._v("will not\nwork")]),e._v(" with this version of Pterodactyl.")])]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack the archive\ninto your current folder.")]),e._v(" "),a("p",[e._v("We will also be deleting the "),a("code",[e._v("app/")]),e._v(" directory. Because of the way we handle installations and upgrades deleted files\nare not always detected properly, so simply uppacking over this location will result in some confusing behavior.")]),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("# Delete the app directory to ensure we start with a clean slate here. This will not affect any")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# of your settings or servers.")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L -o panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf "),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("find")]),e._v(" app public resources -depth "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("head")]),e._v(" -n -1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" -Fv "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -tf panel.tar.gz"),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v('"')]),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Download the updated files and delete the archive file.")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -xzvf panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -f panel.tar.gz\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"update-dependencies-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies-2"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("composer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"clear-compiled-template-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-template-cache"}},[e._v("#")]),e._v(" Clear Compiled Template Cache")]),e._v(" "),a("p",[e._v("You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for\nusers.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\nphp artisan config:clear\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("p",[e._v("You'll also need to update your database schema for the newest version of Pterodactyl. Running the two commands below\nwill update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just\nremember, "),a("em",[e._v("never edit core eggs we ship")]),e._v("! They will be overwritten by this update process.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("If you used a custom plugin that allowed for server transfers on "),a("code",[e._v("0.7")]),e._v(" you "),a("strong",[e._v("MUST")]),e._v(" delete or rename the "),a("code",[e._v("server_transfers")]),e._v(" table\nbefore continuing.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --force\nphp artisan db:seed --force\n")])])]),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])]),a("h2",{attrs:{id:"restarting-queue-workers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restarting-queue-workers"}},[e._v("#")]),e._v(" Restarting Queue Workers")]),e._v(" "),a("p",[e._v("After "),a("em",[e._v("every")]),e._v(" update you should restart the queue worker to ensure that the new code is loaded in and used.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan queue:restart\n")])])]),a("h2",{attrs:{id:"exit-maintenance-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exit-maintenance-mode"}},[e._v("#")]),e._v(" Exit Maintenance Mode")]),e._v(" "),a("p",[e._v("Now that the upgrade is complete, exit maintenance mode and your Panel will now be available.")]),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("# Bring the Panel back up to receive connections.")]),e._v("\nphp artisan up\n")])])]),a("h2",{attrs:{id:"switch-to-wings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#switch-to-wings"}},[e._v("#")]),e._v(" Switch to Wings")]),e._v(" "),a("p",[e._v("We've deprecated the old Node.js daemon in favor of "),a("a",{attrs:{href:"https://github.com/pterodactyl/wings",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wings"),a("OutboundLink")],1),e._v(", our new server\ncontrol plane written in Go. This new system is significantly faster, easier to install, and much smaller. All you\nneed to do is install a single binary on your system and configure it to run on boot. "),a("strong",[e._v("You cannot use the old Node.js\nDaemon to run servers with Pterodactyl Panel 1.0.")])]),e._v(" "),a("p",[e._v("Please see "),a("RouterLink",{attrs:{to:"/wings/1.0/migrating.html"}},[e._v("Migrating to Wings")]),e._v(" for instructions.")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{412:function(e,t,a){"use strict";a.r(t);var s=a(48),n=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:"legacy-upgrades"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#legacy-upgrades"}},[e._v("#")]),e._v(" Legacy Upgrades")]),e._v(" "),a("p",[e._v("This upgrade guide is for "),a("strong",[e._v("upgrading from 0.7.X to 1.3.x")]),e._v(". If you are trying to do an upgrade on a 1.X Panel\nplease "),a("RouterLink",{attrs:{to:"/panel/1.0/updating.html"}},[e._v("use this guide instead")]),e._v(". During this upgrade process you will have some periods\nof Panel unavailability, however none of the underlying game server instances will be stopped.")],1),e._v(" "),a("h2",{attrs:{id:"enter-maintenance-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#enter-maintenance-mode"}},[e._v("#")]),e._v(" Enter Maintenance Mode")]),e._v(" "),a("p",[e._v("You'll want to put your Panel into maintenance mode by running the "),a("code",[e._v("down")]),e._v(" command below before starting. This\nwill prevent users from accessing the Panel during a period where things will be broken or not working correctly. Make sure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory when executing the command.")]),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("# Put the Panel into maintenance mode and deny user access")]),e._v("\nphp artisan down\n")])])]),a("h2",{attrs:{id:"update-dependencies"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("You'll need to make sure your system dependencies are up to date before performing this upgrade. Please\nreference the list below to ensure you have all of the required versions.")]),e._v(" "),a("ul",[a("li",[e._v("PHP "),a("code",[e._v("8.0")]),e._v(" or "),a("code",[e._v("8.1")]),e._v(" (recommended) with the following extensions: "),a("code",[e._v("cli")]),e._v(", "),a("code",[e._v("openssl")]),e._v(", "),a("code",[e._v("gd")]),e._v(", "),a("code",[e._v("mysql")]),e._v(", "),a("code",[e._v("PDO")]),e._v(", "),a("code",[e._v("mbstring")]),e._v(",\n"),a("code",[e._v("tokenizer")]),e._v(", "),a("code",[e._v("bcmath")]),e._v(", "),a("code",[e._v("xml")]),e._v(" or "),a("code",[e._v("dom")]),e._v(", "),a("code",[e._v("curl")]),e._v(", "),a("code",[e._v("zip")]),e._v(", and "),a("code",[e._v("fpm")]),e._v(" if you are planning to use nginx. See our guide\nfor "),a("RouterLink",{attrs:{to:"/guides/php_upgrade.html"}},[e._v("Upgrading PHP")]),e._v(" for details.")],1),e._v(" "),a("li",[e._v("Composer v2 ("),a("code",[e._v("composer self-update --2")]),e._v(")")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Nginx")]),e._v(" "),a("p",[e._v("If you upgrade your PHP version and are using nginx as your webserver, you will have to update the\n"),a("code",[e._v("fastcgi_pass")]),e._v(" value in your nginx's "),a("code",[e._v("pterodactyl.conf")]),e._v(" configuration to use the correct "),a("code",[e._v("php-fpm")]),e._v(" socket.")])]),e._v(" "),a("ul",[a("li",[e._v("MySQL "),a("code",[e._v("5.7.22")]),e._v(" or higher (MySQL "),a("code",[e._v("8")]),e._v(" recommended) "),a("strong",[e._v("or")]),e._v(" MariaDB "),a("code",[e._v("10.2")]),e._v(" or higher.")])]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("Seriously, Double Check your Database Version")]),e._v(" "),a("p",[e._v("Please make sure you are running the correct version of MariaDB or MySQL listed above! Failure to do so "),a("em",[e._v("will")]),e._v("\nresult in an error when you attempt to run the migrations.")]),e._v(" "),a("p",[e._v("Previous documentation (and just the age of this software) likely had you installing MariaDB 10.1 which "),a("em",[e._v("will not\nwork")]),e._v(" with this version of Pterodactyl.")])]),e._v(" "),a("h2",{attrs:{id:"fetch-updated-files"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#fetch-updated-files"}},[e._v("#")]),e._v(" Fetch Updated Files")]),e._v(" "),a("p",[e._v("The first step in the update process is to download the new panel files from GitHub. The command below will download\nthe release archive for the most recent version of Pterodactyl and save it in the current directory. Now is a good time\nto ensure that you're in the "),a("code",[e._v("/var/www/pterodactyl")]),e._v(" directory as the command below will automatically unpack the archive\ninto your current folder.")]),e._v(" "),a("p",[e._v("We will also be deleting the "),a("code",[e._v("app/")]),e._v(" directory. Because of the way we handle installations and upgrades deleted files\nare not always detected properly, so simply uppacking over this location will result in some confusing behavior.")]),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("# Delete the app directory to ensure we start with a clean slate here. This will not affect any")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# of your settings or servers.")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("curl")]),e._v(" -L -o panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -rf "),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("find")]),e._v(" app public resources -depth "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("head")]),e._v(" -n -1 "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" -Fv "),a("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[a("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -tf panel.tar.gz"),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v('"')]),a("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Download the updated files and delete the archive file.")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("tar")]),e._v(" -xzvf panel.tar.gz "),a("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&&")]),e._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("rm")]),e._v(" -f panel.tar.gz\n")])])]),a("p",[e._v("Once all of the files are downloaded we need to set the correct permissions on the cache and storage directories to avoid\nany webserver related errors.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chmod")]),e._v(" -R "),a("span",{pre:!0,attrs:{class:"token number"}},[e._v("755")]),e._v(" storage/* bootstrap/cache\n")])])]),a("h2",{attrs:{id:"update-dependencies-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#update-dependencies-2"}},[e._v("#")]),e._v(" Update Dependencies")]),e._v(" "),a("p",[e._v("After you've downloaded all of the new files you will need to upgrade the core components of the panel. To do this,\nsimply run the commands below and follow any prompts.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("composer "),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("install")]),e._v(" --no-dev --optimize-autoloader\n")])])]),a("h2",{attrs:{id:"clear-compiled-template-cache"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#clear-compiled-template-cache"}},[e._v("#")]),e._v(" Clear Compiled Template Cache")]),e._v(" "),a("p",[e._v("You'll also want to clear the compiled template cache to ensure that new and modified templates show up correctly for\nusers.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan view:clear\nphp artisan config:clear\n")])])]),a("h2",{attrs:{id:"database-updates"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#database-updates"}},[e._v("#")]),e._v(" Database Updates")]),e._v(" "),a("p",[e._v("You'll also need to update your database schema for the newest version of Pterodactyl. Running the two commands below\nwill update the schema and ensure the default eggs we ship are up to date (and add any new ones we might have). Just\nremember, "),a("em",[e._v("never edit core eggs we ship")]),e._v("! They will be overwritten by this update process.")]),e._v(" "),a("div",{staticClass:"custom-block warning"},[a("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),a("p",[e._v("If you used a custom plugin that allowed for server transfers on "),a("code",[e._v("0.7")]),e._v(" you "),a("strong",[e._v("MUST")]),e._v(" delete or rename the "),a("code",[e._v("server_transfers")]),e._v(" table\nbefore continuing.")])]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan migrate --force\nphp artisan db:seed --force\n")])])]),a("h2",{attrs:{id:"set-permissions"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#set-permissions"}},[e._v("#")]),e._v(" Set Permissions")]),e._v(" "),a("p",[e._v("The last step is to set the proper owner of the files to be the user that runs your webserver. In most cases this\nis "),a("code",[e._v("www-data")]),e._v(" but can vary from system to system — sometimes being "),a("code",[e._v("nginx")]),e._v(", "),a("code",[e._v("apache")]),e._v(", or even "),a("code",[e._v("nobody")]),e._v(".")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX or Apache (not on CentOS):")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R www-data:www-data *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using NGINX on CentOS:")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R nginx:nginx *\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# If using Apache on CentOS")]),e._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[e._v("chown")]),e._v(" -R apache:apache *\n")])])]),a("h2",{attrs:{id:"restarting-queue-workers"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#restarting-queue-workers"}},[e._v("#")]),e._v(" Restarting Queue Workers")]),e._v(" "),a("p",[e._v("After "),a("em",[e._v("every")]),e._v(" update you should restart the queue worker to ensure that the new code is loaded in and used.")]),e._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[e._v("php artisan queue:restart\n")])])]),a("h2",{attrs:{id:"exit-maintenance-mode"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#exit-maintenance-mode"}},[e._v("#")]),e._v(" Exit Maintenance Mode")]),e._v(" "),a("p",[e._v("Now that the upgrade is complete, exit maintenance mode and your Panel will now be available.")]),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("# Bring the Panel back up to receive connections.")]),e._v("\nphp artisan up\n")])])]),a("h2",{attrs:{id:"switch-to-wings"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#switch-to-wings"}},[e._v("#")]),e._v(" Switch to Wings")]),e._v(" "),a("p",[e._v("We've deprecated the old Node.js daemon in favor of "),a("a",{attrs:{href:"https://github.com/pterodactyl/wings",target:"_blank",rel:"noopener noreferrer"}},[e._v("Wings"),a("OutboundLink")],1),e._v(", our new server\ncontrol plane written in Go. This new system is significantly faster, easier to install, and much smaller. All you\nneed to do is install a single binary on your system and configure it to run on boot. "),a("strong",[e._v("You cannot use the old Node.js\nDaemon to run servers with Pterodactyl Panel 1.0.")])]),e._v(" "),a("p",[e._v("Please see "),a("RouterLink",{attrs:{to:"/wings/1.0/migrating.html"}},[e._v("Migrating to Wings")]),e._v(" for instructions.")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/66.853f7f54.js b/assets/js/66.465aedf0.js similarity index 99% rename from assets/js/66.853f7f54.js rename to assets/js/66.465aedf0.js index 06252730d..77d88c05d 100644 --- a/assets/js/66.853f7f54.js +++ b/assets/js/66.465aedf0.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{412:function(e,t,r){"use strict";r.r(t);var a=r(48),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"troubleshooting"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),r("p"),r("div",{staticClass:"table-of-contents"},[r("ul",[r("li",[r("a",{attrs:{href:"#reading-error-logs"}},[e._v("Reading Error Logs")]),r("ul",[r("li",[r("a",{attrs:{href:"#parsing-the-error"}},[e._v("Parsing the Error")])]),r("li",[r("a",{attrs:{href:"#understanding-the-error"}},[e._v("Understanding the Error")])]),r("li",[r("a",{attrs:{href:"#utilizing-grep"}},[e._v("Utilizing GREP")])])])]),r("li",[r("a",{attrs:{href:"#cannot-connect-to-server-errors"}},[e._v("Cannot Connect to Server Errors")]),r("ul",[r("li",[r("a",{attrs:{href:"#basic-debugging-steps"}},[e._v("Basic Debugging Steps")])]),r("li",[r("a",{attrs:{href:"#more-advanced-debugging-steps"}},[e._v("More Advanced Debugging Steps")])])])]),r("li",[r("a",{attrs:{href:"#invalid-mac-exception"}},[e._v("Invalid MAC Exception")])]),r("li",[r("a",{attrs:{href:"#selinux-issues"}},[e._v("SELinux Issues")]),r("ul",[r("li",[r("a",{attrs:{href:"#redis-permissions-errors"}},[e._v("Redis Permissions Errors")])]),r("li",[r("a",{attrs:{href:"#wings-connection-errors"}},[e._v("Wings Connection Errors")])])])]),r("li",[r("a",{attrs:{href:"#firewalld-issues"}},[e._v("FirewallD issues")])])])]),r("p"),e._v(" "),r("h2",{attrs:{id:"reading-error-logs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reading-error-logs"}},[e._v("#")]),e._v(" Reading Error Logs")]),e._v(" "),r("p",[e._v("If you ever encounter an unexpected error with the Panel the first thing you will likely be asked for is the logs.\nTo retrieve these, simply execute the command below which will output the last 100 lines of the Panel's log file.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("100")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log\n")])])]),r("h3",{attrs:{id:"parsing-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#parsing-the-error"}},[e._v("#")]),e._v(" Parsing the Error")]),e._v(" "),r("p",[e._v("When you run the command above, you'll probably be hit with a huge wall of text that might scare you. Fear not,\nthis is simply a stacktrace leading to the cause of the error, and you can actually ignore almost all of it when\nlooking for the cause of the error. Lets take a look at some example output below, which has been truncated to\nmake this easier to follow with.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("#70 /srv/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))\n#71 /srv/www/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))\n#72 {main}\n[2018-07-19 00:50:24] local.ERROR: ErrorException: file_put_contents(/srv/www/storage/framework/views/c9c05d1357df1ce4ec8fc5df78c16c493b0d4f48.php): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\nStack trace:\n#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'file_put_conten...', '/srv/www/vendor...', 122, Array)\n#1 /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/srv/www/storag...', 's...', 0)\n#2 /srv/www/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122): Illuminate\\Filesystem\\Filesystem->put('/srv/www/storag...', 's...')\n#3 /srv/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51): Illuminate\\View\\Compilers\\BladeCompiler->compile('/srv/www/resour...')\n#4 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(142): Illuminate\\View\\Engines\\CompilerEngine->get('/srv/www/resour...', Array)\n#5 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(125): Illuminate\\View\\View->getContents()\n")])])]),r("p",[e._v("The first thing you'll want to do is follow the chain of numbers "),r("em",[e._v("up")]),e._v(" until you find "),r("code",[e._v("#0")]),e._v(", this will be the function that\ntriggered the exception. Right above line 0 you will see a line that has the date and time in brackets, "),r("code",[e._v("[2018-07-19 00:50:24]")]),e._v("\nabove for example. This line will be the human readable exception that you can use to understand what went wrong.")]),e._v(" "),r("h3",{attrs:{id:"understanding-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#understanding-the-error"}},[e._v("#")]),e._v(" Understanding the Error")]),e._v(" "),r("p",[e._v("In the example above we can see that the actual error was:")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("local.ERROR: ErrorException: file_put_contents(...): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\n")])])]),r("p",[e._v("From this error we can determine that there was an error performing a "),r("a",{attrs:{href:"http://php.net/manual/en/function.file-put-contents.php",target:"_blank",rel:"noopener noreferrer"}},[e._v("file_put_contents()"),r("OutboundLink")],1),e._v(" call, and the error was\nthat we couldn't open the file because permissions were denied. Its okay if you don't understand the error at all, but\nit does help you get faster support if you're able to provide these logs, and at least find the source of the error.\nSometimes the errors are pretty straightforward and will tell you exactly what went wrong, such as a "),r("code",[e._v("ConnectionException")]),e._v("\nbeing thrown when the Panel can't connect to the Daemon.")]),e._v(" "),r("h3",{attrs:{id:"utilizing-grep"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#utilizing-grep"}},[e._v("#")]),e._v(" Utilizing GREP")]),e._v(" "),r("p",[e._v("If you're trying to go through a bunch of errors quickly, you can use the command below which will limit the results returned to only\nbe the actual error lines, without all of the stack traces.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("1000")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log "),r("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token string"}},[e._v('"\\['),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%Y"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v('"')]),e._v("\n")])])]),r("h2",{attrs:{id:"cannot-connect-to-server-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cannot-connect-to-server-errors"}},[e._v("#")]),e._v(" Cannot Connect to Server Errors")]),e._v(" "),r("h3",{attrs:{id:"basic-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#basic-debugging-steps"}},[e._v("#")]),e._v(" Basic Debugging Steps")]),e._v(" "),r("ul",[r("li",[e._v("Check that Wings is running, and not reporting errors. Use "),r("code",[e._v("systemctl status wings")]),e._v(" to check the current status of\nthe process.")]),e._v(" "),r("li",[e._v("Check your browser's console by pressing "),r("code",[e._v("Ctrl + Shift + J")]),e._v(" (in Chrome) or "),r("code",[e._v("Cmd + Alt + I")]),e._v(" (in Safari). If there is\na red error in it, chances are that it will narrow down the potential problem.")]),e._v(" "),r("li",[e._v("Make sure Wings is properly installed and the active configuration matches the configuration shown under\n"),r("code",[e._v("Admin -> Node -> Configuration")]),e._v(" in the Panel.")]),e._v(" "),r("li",[e._v("Check that the Wings ports are open on your firewall. Wings uses ports "),r("code",[e._v("8080")]),e._v(" or "),r("code",[e._v("8443")]),e._v(" for HTTP(s) traffic,\nand "),r("code",[e._v("2022")]),e._v(" for SFTP traffic.")]),e._v(" "),r("li",[e._v("Ensure you have AdBlock disabled or whitelisted for your Panel and Wings domains.")]),e._v(" "),r("li",[e._v("Check that the Panel can reach Wings using the domain that is configured on the Panel. Run "),r("code",[e._v("curl https://domain.com:8080")]),e._v(" on the Panel server and ensure that it can successfully connect to Wings.")]),e._v(" "),r("li",[e._v("Ensure that you are using the correct HTTP scheme for your Panel and Wings. If the Panel is running over HTTPS\nWings will also need to be running on HTTPS.")])]),e._v(" "),r("h3",{attrs:{id:"more-advanced-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#more-advanced-debugging-steps"}},[e._v("#")]),e._v(" More Advanced Debugging Steps")]),e._v(" "),r("ul",[r("li",[e._v("Stop Wings and run "),r("code",[e._v("wings --debug")]),e._v(" to see if there are any errors being output. If so, try resolving them manually,\nor reach out on "),r("a",{attrs:{href:"https://discord.gg/pterodactyl",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" for more assistance.")]),e._v(" "),r("li",[e._v("Check your DNS and ensure that the response you receive is the one you expect using a tool such as "),r("code",[e._v("nslookup")]),e._v(" or "),r("code",[e._v("dig")]),e._v(".")]),e._v(" "),r("li",[e._v("If you use CloudFlare make sure that the orange cloud is disabled for your Wings or Panel "),r("code",[e._v("A")]),e._v(" records.")]),e._v(" "),r("li",[e._v("Make sure when using Wings behind a firewall — pfSense, OpenSwitch, etc. — that the correct NAT settings to access\nthe Wing's ports from the outside network are setup.")]),e._v(" "),r("li",[e._v("If nothing is working so far, check your own DNS settings and consider switching DNS servers.")]),e._v(" "),r("li",[e._v("When running the Panel and Wings on one server it can sometimes help if to add an entry in "),r("code",[e._v("/etc/hosts")]),e._v(" that directs\nthe public IP back to the server. Sometimes the reverse path is also needed, so you may need to add an entry to your\nservers "),r("code",[e._v("/etc/hosts")]),e._v(" file that points the Panel's domain to the correct IP.")]),e._v(" "),r("li",[e._v("When running Wings and the Panel on separate VM's using the same adapter make sure the VM's can connect to each\nother. Promiscuous mode might be needed.")])]),e._v(" "),r("h2",{attrs:{id:"invalid-mac-exception"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalid-mac-exception"}},[e._v("#")]),e._v(" Invalid MAC Exception")]),e._v(" "),r("div",{staticClass:"custom-block warning"},[r("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),r("p",[e._v("This error should never happen if you correctly follow our installation and upgrade guides. The only time we have\never seen this error occur is when you blindly restore the Panel database from a backup and try to use a fresh\ninstallation of the Panel.")]),e._v(" "),r("p",[e._v("When restoring backups you should "),r("em",[e._v("always")]),e._v(" restore the "),r("code",[e._v(".env")]),e._v(" file!")])]),e._v(" "),r("p",[e._v("Sometimes when using the Panel you'll unexpectedly encounter a broken page, and upon checking the logs you'll see\nan exception mentioning an invalid MAC when decrypting. This error is caused by mismatched "),r("code",[e._v("APP_KEY")]),e._v("s in your "),r("code",[e._v(".env")]),e._v(" file\nwhen the data was encrypted versus decrypted.")]),e._v(" "),r("p",[e._v("If you are seeing this error the only solution is to restore the "),r("code",[e._v("APP_KEY")]),e._v(" from your "),r("code",[e._v(".env")]),e._v(" file. If you have lost that\noriginal key there is no way to recover the lost data.")]),e._v(" "),r("h2",{attrs:{id:"selinux-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#selinux-issues"}},[e._v("#")]),e._v(" SELinux Issues")]),e._v(" "),r("p",[e._v("On systems with SELinux installed you might encounter unexpected errors when running redis or attempting to connect\nto the daemon to perform actions. These issues can generally be resolved by executing the commands below to allow\nthese programs to work with SELinux.")]),e._v(" "),r("h3",{attrs:{id:"redis-permissions-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#redis-permissions-errors"}},[e._v("#")]),e._v(" Redis Permissions Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M redis_t\nsemodule -i redis_t.pp\n")])])]),r("h3",{attrs:{id:"wings-connection-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#wings-connection-errors"}},[e._v("#")]),e._v(" Wings Connection Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M http_port_t\nsemodule -i http_port_t.pp\n")])])]),r("h2",{attrs:{id:"firewalld-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-issues"}},[e._v("#")]),e._v(" FirewallD issues")]),e._v(" "),r("p",[e._v("If you are on a RHEL/CentOS server with "),r("code",[e._v("firewalld")]),e._v(" installed you may have broken DNS.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("firewall-cmd --permanent --zone=trusted --change-interface=pterodactyl0\nfirewall-cmd --reload\n")])])]),r("p",[e._v("Restart "),r("code",[e._v("docker")]),e._v(" and "),r("code",[e._v("wings")]),e._v(" after running these to be sure the rules are applied.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{410:function(e,t,r){"use strict";r.r(t);var a=r(48),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"troubleshooting"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[e._v("#")]),e._v(" Troubleshooting")]),e._v(" "),r("p"),r("div",{staticClass:"table-of-contents"},[r("ul",[r("li",[r("a",{attrs:{href:"#reading-error-logs"}},[e._v("Reading Error Logs")]),r("ul",[r("li",[r("a",{attrs:{href:"#parsing-the-error"}},[e._v("Parsing the Error")])]),r("li",[r("a",{attrs:{href:"#understanding-the-error"}},[e._v("Understanding the Error")])]),r("li",[r("a",{attrs:{href:"#utilizing-grep"}},[e._v("Utilizing GREP")])])])]),r("li",[r("a",{attrs:{href:"#cannot-connect-to-server-errors"}},[e._v("Cannot Connect to Server Errors")]),r("ul",[r("li",[r("a",{attrs:{href:"#basic-debugging-steps"}},[e._v("Basic Debugging Steps")])]),r("li",[r("a",{attrs:{href:"#more-advanced-debugging-steps"}},[e._v("More Advanced Debugging Steps")])])])]),r("li",[r("a",{attrs:{href:"#invalid-mac-exception"}},[e._v("Invalid MAC Exception")])]),r("li",[r("a",{attrs:{href:"#selinux-issues"}},[e._v("SELinux Issues")]),r("ul",[r("li",[r("a",{attrs:{href:"#redis-permissions-errors"}},[e._v("Redis Permissions Errors")])]),r("li",[r("a",{attrs:{href:"#wings-connection-errors"}},[e._v("Wings Connection Errors")])])])]),r("li",[r("a",{attrs:{href:"#firewalld-issues"}},[e._v("FirewallD issues")])])])]),r("p"),e._v(" "),r("h2",{attrs:{id:"reading-error-logs"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#reading-error-logs"}},[e._v("#")]),e._v(" Reading Error Logs")]),e._v(" "),r("p",[e._v("If you ever encounter an unexpected error with the Panel the first thing you will likely be asked for is the logs.\nTo retrieve these, simply execute the command below which will output the last 100 lines of the Panel's log file.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("100")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log\n")])])]),r("h3",{attrs:{id:"parsing-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#parsing-the-error"}},[e._v("#")]),e._v(" Parsing the Error")]),e._v(" "),r("p",[e._v("When you run the command above, you'll probably be hit with a huge wall of text that might scare you. Fear not,\nthis is simply a stacktrace leading to the cause of the error, and you can actually ignore almost all of it when\nlooking for the cause of the error. Lets take a look at some example output below, which has been truncated to\nmake this easier to follow with.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("#70 /srv/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))\n#71 /srv/www/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))\n#72 {main}\n[2018-07-19 00:50:24] local.ERROR: ErrorException: file_put_contents(/srv/www/storage/framework/views/c9c05d1357df1ce4ec8fc5df78c16c493b0d4f48.php): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\nStack trace:\n#0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'file_put_conten...', '/srv/www/vendor...', 122, Array)\n#1 /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(122): file_put_contents('/srv/www/storag...', 's...', 0)\n#2 /srv/www/vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php(122): Illuminate\\Filesystem\\Filesystem->put('/srv/www/storag...', 's...')\n#3 /srv/www/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(51): Illuminate\\View\\Compilers\\BladeCompiler->compile('/srv/www/resour...')\n#4 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(142): Illuminate\\View\\Engines\\CompilerEngine->get('/srv/www/resour...', Array)\n#5 /srv/www/vendor/laravel/framework/src/Illuminate/View/View.php(125): Illuminate\\View\\View->getContents()\n")])])]),r("p",[e._v("The first thing you'll want to do is follow the chain of numbers "),r("em",[e._v("up")]),e._v(" until you find "),r("code",[e._v("#0")]),e._v(", this will be the function that\ntriggered the exception. Right above line 0 you will see a line that has the date and time in brackets, "),r("code",[e._v("[2018-07-19 00:50:24]")]),e._v("\nabove for example. This line will be the human readable exception that you can use to understand what went wrong.")]),e._v(" "),r("h3",{attrs:{id:"understanding-the-error"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#understanding-the-error"}},[e._v("#")]),e._v(" Understanding the Error")]),e._v(" "),r("p",[e._v("In the example above we can see that the actual error was:")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("local.ERROR: ErrorException: file_put_contents(...): failed to open stream: Permission denied in /srv/www/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122\n")])])]),r("p",[e._v("From this error we can determine that there was an error performing a "),r("a",{attrs:{href:"http://php.net/manual/en/function.file-put-contents.php",target:"_blank",rel:"noopener noreferrer"}},[e._v("file_put_contents()"),r("OutboundLink")],1),e._v(" call, and the error was\nthat we couldn't open the file because permissions were denied. Its okay if you don't understand the error at all, but\nit does help you get faster support if you're able to provide these logs, and at least find the source of the error.\nSometimes the errors are pretty straightforward and will tell you exactly what went wrong, such as a "),r("code",[e._v("ConnectionException")]),e._v("\nbeing thrown when the Panel can't connect to the Daemon.")]),e._v(" "),r("h3",{attrs:{id:"utilizing-grep"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#utilizing-grep"}},[e._v("#")]),e._v(" Utilizing GREP")]),e._v(" "),r("p",[e._v("If you're trying to go through a bunch of errors quickly, you can use the command below which will limit the results returned to only\nbe the actual error lines, without all of the stack traces.")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[r("span",{pre:!0,attrs:{class:"token function"}},[e._v("tail")]),e._v(" -n "),r("span",{pre:!0,attrs:{class:"token number"}},[e._v("1000")]),e._v(" /var/www/pterodactyl/storage/logs/laravel-"),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%F"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(".log "),r("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" "),r("span",{pre:!0,attrs:{class:"token string"}},[e._v('"\\['),r("span",{pre:!0,attrs:{class:"token variable"}},[r("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),r("span",{pre:!0,attrs:{class:"token function"}},[e._v("date")]),e._v(" +%Y"),r("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v('"')]),e._v("\n")])])]),r("h2",{attrs:{id:"cannot-connect-to-server-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#cannot-connect-to-server-errors"}},[e._v("#")]),e._v(" Cannot Connect to Server Errors")]),e._v(" "),r("h3",{attrs:{id:"basic-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#basic-debugging-steps"}},[e._v("#")]),e._v(" Basic Debugging Steps")]),e._v(" "),r("ul",[r("li",[e._v("Check that Wings is running, and not reporting errors. Use "),r("code",[e._v("systemctl status wings")]),e._v(" to check the current status of\nthe process.")]),e._v(" "),r("li",[e._v("Check your browser's console by pressing "),r("code",[e._v("Ctrl + Shift + J")]),e._v(" (in Chrome) or "),r("code",[e._v("Cmd + Alt + I")]),e._v(" (in Safari). If there is\na red error in it, chances are that it will narrow down the potential problem.")]),e._v(" "),r("li",[e._v("Make sure Wings is properly installed and the active configuration matches the configuration shown under\n"),r("code",[e._v("Admin -> Node -> Configuration")]),e._v(" in the Panel.")]),e._v(" "),r("li",[e._v("Check that the Wings ports are open on your firewall. Wings uses ports "),r("code",[e._v("8080")]),e._v(" or "),r("code",[e._v("8443")]),e._v(" for HTTP(s) traffic,\nand "),r("code",[e._v("2022")]),e._v(" for SFTP traffic.")]),e._v(" "),r("li",[e._v("Ensure you have AdBlock disabled or whitelisted for your Panel and Wings domains.")]),e._v(" "),r("li",[e._v("Check that the Panel can reach Wings using the domain that is configured on the Panel. Run "),r("code",[e._v("curl https://domain.com:8080")]),e._v(" on the Panel server and ensure that it can successfully connect to Wings.")]),e._v(" "),r("li",[e._v("Ensure that you are using the correct HTTP scheme for your Panel and Wings. If the Panel is running over HTTPS\nWings will also need to be running on HTTPS.")])]),e._v(" "),r("h3",{attrs:{id:"more-advanced-debugging-steps"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#more-advanced-debugging-steps"}},[e._v("#")]),e._v(" More Advanced Debugging Steps")]),e._v(" "),r("ul",[r("li",[e._v("Stop Wings and run "),r("code",[e._v("wings --debug")]),e._v(" to see if there are any errors being output. If so, try resolving them manually,\nor reach out on "),r("a",{attrs:{href:"https://discord.gg/pterodactyl",target:"_blank",rel:"noopener noreferrer"}},[e._v("Discord"),r("OutboundLink")],1),e._v(" for more assistance.")]),e._v(" "),r("li",[e._v("Check your DNS and ensure that the response you receive is the one you expect using a tool such as "),r("code",[e._v("nslookup")]),e._v(" or "),r("code",[e._v("dig")]),e._v(".")]),e._v(" "),r("li",[e._v("If you use CloudFlare make sure that the orange cloud is disabled for your Wings or Panel "),r("code",[e._v("A")]),e._v(" records.")]),e._v(" "),r("li",[e._v("Make sure when using Wings behind a firewall — pfSense, OpenSwitch, etc. — that the correct NAT settings to access\nthe Wing's ports from the outside network are setup.")]),e._v(" "),r("li",[e._v("If nothing is working so far, check your own DNS settings and consider switching DNS servers.")]),e._v(" "),r("li",[e._v("When running the Panel and Wings on one server it can sometimes help if to add an entry in "),r("code",[e._v("/etc/hosts")]),e._v(" that directs\nthe public IP back to the server. Sometimes the reverse path is also needed, so you may need to add an entry to your\nservers "),r("code",[e._v("/etc/hosts")]),e._v(" file that points the Panel's domain to the correct IP.")]),e._v(" "),r("li",[e._v("When running Wings and the Panel on separate VM's using the same adapter make sure the VM's can connect to each\nother. Promiscuous mode might be needed.")])]),e._v(" "),r("h2",{attrs:{id:"invalid-mac-exception"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#invalid-mac-exception"}},[e._v("#")]),e._v(" Invalid MAC Exception")]),e._v(" "),r("div",{staticClass:"custom-block warning"},[r("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),r("p",[e._v("This error should never happen if you correctly follow our installation and upgrade guides. The only time we have\never seen this error occur is when you blindly restore the Panel database from a backup and try to use a fresh\ninstallation of the Panel.")]),e._v(" "),r("p",[e._v("When restoring backups you should "),r("em",[e._v("always")]),e._v(" restore the "),r("code",[e._v(".env")]),e._v(" file!")])]),e._v(" "),r("p",[e._v("Sometimes when using the Panel you'll unexpectedly encounter a broken page, and upon checking the logs you'll see\nan exception mentioning an invalid MAC when decrypting. This error is caused by mismatched "),r("code",[e._v("APP_KEY")]),e._v("s in your "),r("code",[e._v(".env")]),e._v(" file\nwhen the data was encrypted versus decrypted.")]),e._v(" "),r("p",[e._v("If you are seeing this error the only solution is to restore the "),r("code",[e._v("APP_KEY")]),e._v(" from your "),r("code",[e._v(".env")]),e._v(" file. If you have lost that\noriginal key there is no way to recover the lost data.")]),e._v(" "),r("h2",{attrs:{id:"selinux-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#selinux-issues"}},[e._v("#")]),e._v(" SELinux Issues")]),e._v(" "),r("p",[e._v("On systems with SELinux installed you might encounter unexpected errors when running redis or attempting to connect\nto the daemon to perform actions. These issues can generally be resolved by executing the commands below to allow\nthese programs to work with SELinux.")]),e._v(" "),r("h3",{attrs:{id:"redis-permissions-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#redis-permissions-errors"}},[e._v("#")]),e._v(" Redis Permissions Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M redis_t\nsemodule -i redis_t.pp\n")])])]),r("h3",{attrs:{id:"wings-connection-errors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#wings-connection-errors"}},[e._v("#")]),e._v(" Wings Connection Errors")]),e._v(" "),r("div",{staticClass:"language-bash extra-class"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[e._v("audit2allow -a -M http_port_t\nsemodule -i http_port_t.pp\n")])])]),r("h2",{attrs:{id:"firewalld-issues"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#firewalld-issues"}},[e._v("#")]),e._v(" FirewallD issues")]),e._v(" "),r("p",[e._v("If you are on a RHEL/CentOS server with "),r("code",[e._v("firewalld")]),e._v(" installed you may have broken DNS.")]),e._v(" "),r("div",{staticClass:"language- extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("firewall-cmd --permanent --zone=trusted --change-interface=pterodactyl0\nfirewall-cmd --reload\n")])])]),r("p",[e._v("Restart "),r("code",[e._v("docker")]),e._v(" and "),r("code",[e._v("wings")]),e._v(" after running these to be sure the rules are applied.")])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/69.08e493b7.js b/assets/js/69.08e493b7.js new file mode 100644 index 000000000..a6de1bb3d --- /dev/null +++ b/assets/js/69.08e493b7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{415:function(e,t,r){"use strict";r.r(t);var a=r(48),n=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"about"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[e._v("#")]),e._v(" About")]),e._v(" "),r("p"),r("div",{staticClass:"table-of-contents"},[r("ul",[r("li",[r("a",{attrs:{href:"#core-project-team"}},[e._v("Core Project Team")])]),r("li",[r("a",{attrs:{href:"#community-team"}},[e._v("Community Team")])]),r("li",[r("a",{attrs:{href:"#sponsors"}},[e._v("Sponsors")])]),r("li",[r("a",{attrs:{href:"#license"}},[e._v("License")])]),r("li",[r("a",{attrs:{href:"#release-signing"}},[e._v("Release Signing")])])])]),r("p"),e._v(" "),r("h2",{attrs:{id:"core-project-team"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#core-project-team"}},[e._v("#")]),e._v(" Core Project Team")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[e._v("Name")]),e._v(" "),r("th",[e._v("Discord Name")]),e._v(" "),r("th",[e._v("Primary Role")])])]),e._v(" "),r("tbody",[r("tr",[r("td",[r("a",{attrs:{href:"https://daneeveritt.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dane Everitt"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("code",[e._v(".tacticalfish")])]),e._v(" "),r("td",[e._v("Founder & Former Project Maintainer")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://matthewp.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matthew Penner"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("code",[e._v("matthewp")])]),e._v(" "),r("td",[e._v("Project Maintainer")])]),e._v(" "),r("tr",[r("td",[e._v("Stepan Fedotov")]),e._v(" "),r("td",[r("code",[e._v("trixter")])]),e._v(" "),r("td",[e._v("WHMCS Module Maintainer")])]),e._v(" "),r("tr",[r("td",[e._v("Michael Parker")]),e._v(" "),r("td",[r("code",[e._v("parkervcp")])]),e._v(" "),r("td",[e._v("Egg Developer, Docker Integration")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://lancepioch.com",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lance Pioch"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("code",[e._v("lance")])]),e._v(" "),r("td",[e._v("Panel Maintainer")])])])]),e._v(" "),r("p",[e._v("Members of the project team have a red username in our Discord server.")]),e._v(" "),r("h2",{attrs:{id:"community-team"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#community-team"}},[e._v("#")]),e._v(" Community Team")]),e._v(" "),r("p",[e._v("Pterodactyl would not be as successful as it is today without the help of our fantastic community support team. These\nmembers can be found in our Discord server and are distinguished with a yellow username.")]),e._v(" "),r("h2",{attrs:{id:"sponsors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sponsors"}},[e._v("#")]),e._v(" Sponsors")]),e._v(" "),r("p",[e._v("The following companies help fund Pterodactyl's development. "),r("a",{attrs:{href:"https://github.com/sponsors/matthewpi",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interested in becoming a sponsor?"),r("OutboundLink")],1)]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[e._v("Company")]),e._v(" "),r("th",[e._v("About")])])]),e._v(" "),r("tbody",[r("tr",[r("td",[r("a",{attrs:{href:"https://aussieserverhosts.com/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("Aussie Server Hosts")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("No frills Australian Owned and operated High Performance Server hosting for some of the most demanding games serving Australia and New Zealand.")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://www.bisecthosting.com/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("BisectHosting")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("BisectHosting provides Minecraft, Valheim and other server hosting services with the highest reliability and lightning fast support since 2012.")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://minestrator.com/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("MineStrator")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("Looking for the most highend French hosting company for your minecraft server? More than 24,000 members on our discord trust us. Give us a try!")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://vibegames.net/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("VibeGAMES")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("VibeGAMES is a game server provider that specializes in DDOS protection for the games we offer. We have multiple locations in the US, Brazil, France, Germany, Singapore, Australia and South Africa.")])])])]),e._v(" "),r("h2",{attrs:{id:"license"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[e._v("#")]),e._v(" License")]),e._v(" "),r("p",[e._v("Pterodactyl® Copyright © 2015 - 2022 Dane Everitt and contributors.")]),e._v(" "),r("p",[e._v("Code released under the "),r("a",{attrs:{href:"https://github.com/pterodactyl/panel/blob/develop/LICENSE.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT License"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"release-signing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#release-signing"}},[e._v("#")]),e._v(" Release Signing")]),e._v(" "),r("p",[e._v("Previously, releases were signed by a GPG key. All recent releases are now signed using an SSH signing key.")]),e._v(" "),r("p",[e._v("This key is used to sign release tags and commits created by Matthew Penner. This key was first used to sign\n"),r("code",[e._v("v1.10.2")]),e._v(" for the Panel and "),r("code",[e._v("v1.7.1")]),e._v(" for Wings and has been used ever since.")]),e._v(" "),r("div",{staticClass:"language-text extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKL873MsP1OFfffNC8n9WcVuOXOSW65/q26MIzib0K9k\n")])])])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/69.89cb2891.js b/assets/js/69.89cb2891.js deleted file mode 100644 index 8002cd0dd..000000000 --- a/assets/js/69.89cb2891.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{414:function(e,t,r){"use strict";r.r(t);var a=r(48),s=Object(a.a)({},(function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"about"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#about"}},[e._v("#")]),e._v(" About")]),e._v(" "),r("p"),r("div",{staticClass:"table-of-contents"},[r("ul",[r("li",[r("a",{attrs:{href:"#core-project-team"}},[e._v("Core Project Team")])]),r("li",[r("a",{attrs:{href:"#community-team"}},[e._v("Community Team")])]),r("li",[r("a",{attrs:{href:"#sponsors"}},[e._v("Sponsors")])]),r("li",[r("a",{attrs:{href:"#license"}},[e._v("License")])]),r("li",[r("a",{attrs:{href:"#release-signing"}},[e._v("Release Signing")])])])]),r("p"),e._v(" "),r("h2",{attrs:{id:"core-project-team"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#core-project-team"}},[e._v("#")]),e._v(" Core Project Team")]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[e._v("Name")]),e._v(" "),r("th",[e._v("Discord Name")]),e._v(" "),r("th",[e._v("Primary Role")])])]),e._v(" "),r("tbody",[r("tr",[r("td",[r("a",{attrs:{href:"https://daneeveritt.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Dane Everitt"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("code",[e._v(".tacticalfish")])]),e._v(" "),r("td",[e._v("Founder & Former Project Maintainer")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://matthewp.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Matthew Penner"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("code",[e._v("matthewp")])]),e._v(" "),r("td",[e._v("Project Maintainer")])]),e._v(" "),r("tr",[r("td",[e._v("Stepan Fedotov")]),e._v(" "),r("td",[r("code",[e._v("trixter")])]),e._v(" "),r("td",[e._v("WHMCS Module Maintainer")])]),e._v(" "),r("tr",[r("td",[e._v("Michael Parker")]),e._v(" "),r("td",[r("code",[e._v("parkervcp")])]),e._v(" "),r("td",[e._v("Egg Developer, Docker Integration")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://lancepioch.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lance Pioch"),r("OutboundLink")],1)]),e._v(" "),r("td",[r("code",[e._v("shadowlancer")])]),e._v(" "),r("td",[e._v("Developer")])])])]),e._v(" "),r("p",[e._v("Members of the project team have a red username in our Discord server.")]),e._v(" "),r("h2",{attrs:{id:"community-team"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#community-team"}},[e._v("#")]),e._v(" Community Team")]),e._v(" "),r("p",[e._v("Pterodactyl would not be as successful as it is today without the help of our fantastic community support team. These\nmembers can be found in our Discord server and are distinguished with a yellow username.")]),e._v(" "),r("h2",{attrs:{id:"sponsors"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#sponsors"}},[e._v("#")]),e._v(" Sponsors")]),e._v(" "),r("p",[e._v("The following companies help fund Pterodactyl's development. "),r("a",{attrs:{href:"https://github.com/sponsors/matthewpi",target:"_blank",rel:"noopener noreferrer"}},[e._v("Interested in becoming a sponsor?"),r("OutboundLink")],1)]),e._v(" "),r("table",[r("thead",[r("tr",[r("th",[e._v("Company")]),e._v(" "),r("th",[e._v("About")])])]),e._v(" "),r("tbody",[r("tr",[r("td",[r("a",{attrs:{href:"https://aussieserverhosts.com/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("Aussie Server Hosts")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("No frills Australian Owned and operated High Performance Server hosting for some of the most demanding games serving Australia and New Zealand.")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://www.bisecthosting.com/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("BisectHosting")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("BisectHosting provides Minecraft, Valheim and other server hosting services with the highest reliability and lightning fast support since 2012.")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://minestrator.com/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("MineStrator")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("Looking for the most highend French hosting company for your minecraft server? More than 24,000 members on our discord trust us. Give us a try!")])]),e._v(" "),r("tr",[r("td",[r("a",{attrs:{href:"https://vibegames.net/",target:"_blank",rel:"noopener noreferrer"}},[r("strong",[e._v("VibeGAMES")]),r("OutboundLink")],1)]),e._v(" "),r("td",[e._v("VibeGAMES is a game server provider that specializes in DDOS protection for the games we offer. We have multiple locations in the US, Brazil, France, Germany, Singapore, Australia and South Africa.")])])])]),e._v(" "),r("h2",{attrs:{id:"license"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#license"}},[e._v("#")]),e._v(" License")]),e._v(" "),r("p",[e._v("Pterodactyl® Copyright © 2015 - 2022 Dane Everitt and contributors.")]),e._v(" "),r("p",[e._v("Code released under the "),r("a",{attrs:{href:"https://github.com/pterodactyl/panel/blob/develop/LICENSE.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT License"),r("OutboundLink")],1),e._v(".")]),e._v(" "),r("h2",{attrs:{id:"release-signing"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#release-signing"}},[e._v("#")]),e._v(" Release Signing")]),e._v(" "),r("p",[e._v("Previously, releases were signed by a GPG key. All recent releases are now signed using an SSH signing key.")]),e._v(" "),r("p",[e._v("This key is used to sign release tags and commits created by Matthew Penner. This key was first used to sign\n"),r("code",[e._v("v1.10.2")]),e._v(" for the Panel and "),r("code",[e._v("v1.7.1")]),e._v(" for Wings and has been used ever since.")]),e._v(" "),r("div",{staticClass:"language-text extra-class"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[e._v("ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKL873MsP1OFfffNC8n9WcVuOXOSW65/q26MIzib0K9k\n")])])])])}),[],!1,null,null,null);t.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/70.4326eb04.js b/assets/js/70.ffe66906.js similarity index 98% rename from assets/js/70.4326eb04.js rename to assets/js/70.ffe66906.js index 8f03a555b..724abaa74 100644 --- a/assets/js/70.4326eb04.js +++ b/assets/js/70.ffe66906.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{416:function(e,t,i){"use strict";i.r(t);var o=i(48),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"community-standards"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#community-standards"}},[e._v("#")]),e._v(" Community Standards")]),e._v(" "),i("p",[e._v("Pterodactyl has grown from a community of tens in 2015 to a community of thousands in 2020. During that time\nthere have been countless growing pains and community has changed in an innumerable number of ways. At our heart\nhowever, Pterodactyl continues to exist for one purpose: to be "),i("em",[e._v("the")]),e._v(" platform for running your game servers.")]),e._v(" "),i("p",[e._v("In order to keep true to that goal, and continue to foster one of the largest open-source game panel communities\nout there, we've adopted a simple set of guidelines for participating in this community. The goal of these guidelines\nis to foster an inclusive, welcoming environment for new users, and provide a space for the thousands of existing\nusers, administrators, network owners, and hosting companies to co-exist.")]),e._v(" "),i("p",[e._v("These rules and guidelines extend to all facets of the Pterodactyl Community, including but not limited to our\nDiscord Server and all activities within the GitHub Organization.")]),e._v(" "),i("h2",{attrs:{id:"community-guidelines"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#community-guidelines"}},[e._v("#")]),e._v(" Community Guidelines")]),e._v(" "),i("p",[e._v("At the most basic level, these guidelines can be distilled down to:")]),e._v(" "),i("ol",[i("li",[e._v("Be a decent human.")]),e._v(" "),i("li",[e._v("Patience is a virtue.")])]),e._v(" "),i("h3",{attrs:{id:"be-mature"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#be-mature"}},[e._v("#")]),e._v(" Be Mature")]),e._v(" "),i("p",[e._v('You are expected to be mature and control your behavior in a manner that adheres to basic human decency. If you are\nunable to do this you will be removed from the community. Personal attacks, spam (in any form), "doxxing", or otherwise\nacting out is not allowed.')]),e._v(" "),i("p",[e._v("This community is fairly lax in regards to moderating language. However, the following are some examples of\nbehavior that is absolutely "),i("em",[e._v("not")]),e._v(" tolerated and for which you will be removed from the community.")]),e._v(" "),i("ul",[i("li",[e._v("Racist, sexist, homophobic, transphobic, or otherwise deregatory speech, images, insinuations, or any language whose\nsole purpose is to denigrate any individual, organization, or class of individual.")]),e._v(" "),i("li",[e._v('Threats of violence against any person, group, or organization including "doxxing" of these entities.')]),e._v(" "),i("li",[e._v("Pornographic or excessively violent content.")])]),e._v(" "),i("h3",{attrs:{id:"limit-the-drama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#limit-the-drama"}},[e._v("#")]),e._v(" Limit the Drama")]),e._v(" "),i("p",[e._v("Discussion, including linking to or discussing sites or software, that exists to cast a negative image of other\ncompanies or users is not allowed. This includes calling out hosts using nulled software, attempting to elicit negative\nreactions towards services or websites, or otherwise stirring up drama.")]),e._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),i("p",[e._v("Assume someone is acting in good faith when responding to them. You don't have to agree with everyone, and you\ndon't need to respond to everything.")])]),e._v(" "),i("h3",{attrs:{id:"be-patient"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#be-patient"}},[e._v("#")]),e._v(" Be Patient")]),e._v(" "),i("p",[e._v("This is an open-source project. No members of the development team are paid in an official capacity to write,\nmaintain, nor support this software. The following actions are discouraged in this community.")]),e._v(" "),i("ul",[i("li",[e._v("Repeatedly asking identical questions within the same channel (or across channels) within short periods of time.\n"),i("ul",[i("li",[e._v("It is expected that some questions will be missed. If it has been a reasonable amount of time and your question\nremains unanswered, you're welcome to re-post it.")])])]),e._v(" "),i("li",[e._v("Keep all support questions within the realm of the support channels.")]),e._v(" "),i("li",[e._v("Do not interrupt conversations in non-support channels solely to request that someone look in a support channel\nand help you.")])]),e._v(" "),i("h3",{attrs:{id:"no-commercial-services"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#no-commercial-services"}},[e._v("#")]),e._v(" No Commercial Services")]),e._v(" "),i("p",[e._v("Discussion of paid installation/upgrade services, modifications, or any other commercial offerings is strictly\nprohibited unless otherwise noted. This also includes reaching out to individuals via Direct Message and offering\nyour services without provocation.")]),e._v(" "),i("div",{staticClass:"custom-block warning"},[i("p",{staticClass:"custom-block-title"},[e._v("Check your Username")]),e._v(" "),i("p",[e._v("Advertising commercial services within your username or display name on Discord is forbidden.")])]),e._v(" "),i("p",[i("RouterLink",{attrs:{to:"/project/about.html#sponsors"}},[e._v("Sponsors")]),e._v(" at the silver tier and higher are exempt from this rule.")],1),e._v(" "),i("h3",{attrs:{id:"no-mention-or-ping-spam"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#no-mention-or-ping-spam"}},[e._v("#")]),e._v(" No Mention or Ping Spam")]),e._v(" "),i("p",[e._v("Please, do not direct message any administrative, development, or notable community members without first\nchecking with them. Keep all support queries within the public support channels unless you have been directly\nasked to move it elsewhere.")]),e._v(" "),i("p",[i("em",[e._v("But what if I am trying to respond back to someone?")]),e._v(" That is fine! We only ask that you not mention people\ndirectly if they're not already involved in a discussion with you.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{414:function(e,t,i){"use strict";i.r(t);var o=i(48),n=Object(o.a)({},(function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[i("h1",{attrs:{id:"community-standards"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#community-standards"}},[e._v("#")]),e._v(" Community Standards")]),e._v(" "),i("p",[e._v("Pterodactyl has grown from a community of tens in 2015 to a community of thousands in 2020. During that time\nthere have been countless growing pains and community has changed in an innumerable number of ways. At our heart\nhowever, Pterodactyl continues to exist for one purpose: to be "),i("em",[e._v("the")]),e._v(" platform for running your game servers.")]),e._v(" "),i("p",[e._v("In order to keep true to that goal, and continue to foster one of the largest open-source game panel communities\nout there, we've adopted a simple set of guidelines for participating in this community. The goal of these guidelines\nis to foster an inclusive, welcoming environment for new users, and provide a space for the thousands of existing\nusers, administrators, network owners, and hosting companies to co-exist.")]),e._v(" "),i("p",[e._v("These rules and guidelines extend to all facets of the Pterodactyl Community, including but not limited to our\nDiscord Server and all activities within the GitHub Organization.")]),e._v(" "),i("h2",{attrs:{id:"community-guidelines"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#community-guidelines"}},[e._v("#")]),e._v(" Community Guidelines")]),e._v(" "),i("p",[e._v("At the most basic level, these guidelines can be distilled down to:")]),e._v(" "),i("ol",[i("li",[e._v("Be a decent human.")]),e._v(" "),i("li",[e._v("Patience is a virtue.")])]),e._v(" "),i("h3",{attrs:{id:"be-mature"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#be-mature"}},[e._v("#")]),e._v(" Be Mature")]),e._v(" "),i("p",[e._v('You are expected to be mature and control your behavior in a manner that adheres to basic human decency. If you are\nunable to do this you will be removed from the community. Personal attacks, spam (in any form), "doxxing", or otherwise\nacting out is not allowed.')]),e._v(" "),i("p",[e._v("This community is fairly lax in regards to moderating language. However, the following are some examples of\nbehavior that is absolutely "),i("em",[e._v("not")]),e._v(" tolerated and for which you will be removed from the community.")]),e._v(" "),i("ul",[i("li",[e._v("Racist, sexist, homophobic, transphobic, or otherwise deregatory speech, images, insinuations, or any language whose\nsole purpose is to denigrate any individual, organization, or class of individual.")]),e._v(" "),i("li",[e._v('Threats of violence against any person, group, or organization including "doxxing" of these entities.')]),e._v(" "),i("li",[e._v("Pornographic or excessively violent content.")])]),e._v(" "),i("h3",{attrs:{id:"limit-the-drama"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#limit-the-drama"}},[e._v("#")]),e._v(" Limit the Drama")]),e._v(" "),i("p",[e._v("Discussion, including linking to or discussing sites or software, that exists to cast a negative image of other\ncompanies or users is not allowed. This includes calling out hosts using nulled software, attempting to elicit negative\nreactions towards services or websites, or otherwise stirring up drama.")]),e._v(" "),i("div",{staticClass:"custom-block tip"},[i("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),i("p",[e._v("Assume someone is acting in good faith when responding to them. You don't have to agree with everyone, and you\ndon't need to respond to everything.")])]),e._v(" "),i("h3",{attrs:{id:"be-patient"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#be-patient"}},[e._v("#")]),e._v(" Be Patient")]),e._v(" "),i("p",[e._v("This is an open-source project. No members of the development team are paid in an official capacity to write,\nmaintain, nor support this software. The following actions are discouraged in this community.")]),e._v(" "),i("ul",[i("li",[e._v("Repeatedly asking identical questions within the same channel (or across channels) within short periods of time.\n"),i("ul",[i("li",[e._v("It is expected that some questions will be missed. If it has been a reasonable amount of time and your question\nremains unanswered, you're welcome to re-post it.")])])]),e._v(" "),i("li",[e._v("Keep all support questions within the realm of the support channels.")]),e._v(" "),i("li",[e._v("Do not interrupt conversations in non-support channels solely to request that someone look in a support channel\nand help you.")])]),e._v(" "),i("h3",{attrs:{id:"no-commercial-services"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#no-commercial-services"}},[e._v("#")]),e._v(" No Commercial Services")]),e._v(" "),i("p",[e._v("Discussion of paid installation/upgrade services, modifications, or any other commercial offerings is strictly\nprohibited unless otherwise noted. This also includes reaching out to individuals via Direct Message and offering\nyour services without provocation.")]),e._v(" "),i("div",{staticClass:"custom-block warning"},[i("p",{staticClass:"custom-block-title"},[e._v("Check your Username")]),e._v(" "),i("p",[e._v("Advertising commercial services within your username or display name on Discord is forbidden.")])]),e._v(" "),i("p",[i("RouterLink",{attrs:{to:"/project/about.html#sponsors"}},[e._v("Sponsors")]),e._v(" at the silver tier and higher are exempt from this rule.")],1),e._v(" "),i("h3",{attrs:{id:"no-mention-or-ping-spam"}},[i("a",{staticClass:"header-anchor",attrs:{href:"#no-mention-or-ping-spam"}},[e._v("#")]),e._v(" No Mention or Ping Spam")]),e._v(" "),i("p",[e._v("Please, do not direct message any administrative, development, or notable community members without first\nchecking with them. Keep all support queries within the public support channels unless you have been directly\nasked to move it elsewhere.")]),e._v(" "),i("p",[i("em",[e._v("But what if I am trying to respond back to someone?")]),e._v(" That is fine! We only ask that you not mention people\ndirectly if they're not already involved in a discussion with you.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/71.17f571e3.js b/assets/js/71.6b549e82.js similarity index 97% rename from assets/js/71.17f571e3.js rename to assets/js/71.6b549e82.js index d4efd0c61..7edb05fc9 100644 --- a/assets/js/71.17f571e3.js +++ b/assets/js/71.6b549e82.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{415:function(e,t,o){"use strict";o.r(t);var a=o(48),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),o("p",[e._v("Pterodactyl is the open-source game server management panel built with PHP, React, and Go. Designed with\nsecurity in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful\nand intuitive UI to administrators and users. What more are you waiting for? Make game servers a first-class\ncitizen on your platform today.")]),e._v(" "),o("h2",{attrs:{id:"supported-games"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supported-games"}},[e._v("#")]),e._v(" Supported Games")]),e._v(" "),o("p",[e._v("We support a huge variety of games by utilizing Docker containers to isolate each instance, giving you the power\nto host your games across the world without having to bloat each physical machine with additional dependencies.")]),e._v(" "),o("p",[e._v("Some of our core supported games include:")]),e._v(" "),o("ul",[o("li",[e._v("Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more")]),e._v(" "),o("li",[e._v("Rust")]),e._v(" "),o("li",[e._v("Terraria")]),e._v(" "),o("li",[e._v("Teamspeak")]),e._v(" "),o("li",[e._v("Mumble")]),e._v(" "),o("li",[e._v("Team Fortress 2")]),e._v(" "),o("li",[e._v("Counter Strike: Global Offensive")]),e._v(" "),o("li",[e._v("Garry's Mod")]),e._v(" "),o("li",[e._v("ARK: Survival Evolved")])]),e._v(" "),o("p",[e._v("In addition to our standard nest of supported games, our community is constantly pushing the limits of this software\nand there are plenty more games available provided by the community. Some of these games include:")]),e._v(" "),o("ul",[o("li",[e._v("Factorio")]),e._v(" "),o("li",[e._v("San Andreas: MP")]),e._v(" "),o("li",[e._v("Pocketmine MP")]),e._v(" "),o("li",[e._v("Squad")]),e._v(" "),o("li",[e._v("FiveM")]),e._v(" "),o("li",[e._v("Xonotic")]),e._v(" "),o("li",[e._v("Discord ATLBot")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/parkervcp/eggs",target:"_blank",rel:"noopener noreferrer"}},[e._v("and many more..."),o("OutboundLink")],1)])]),e._v(" "),o("h2",{attrs:{id:"responsible-disclosure"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#responsible-disclosure"}},[e._v("#")]),e._v(" Responsible Disclosure")]),e._v(" "),o("p",[e._v("Pterodactyl is completely open-source, and as such completely open to independent users and auditors to browse our\ncode base and hunt for security issues. If you come across anything that raises red flags for you, please do not\nhesitate to reach out directly to "),o("code",[e._v("support@pterodactyl.io")]),e._v(". We ask that you please be responsible when disclosing\nany security concerns and "),o("em",[e._v("do not")]),e._v(" report them on our public facing bug tracker.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{416:function(e,t,o){"use strict";o.r(t);var a=o(48),r=Object(a.a)({},(function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"introduction"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),o("p",[e._v("Pterodactyl is the open-source game server management panel built with PHP, React, and Go. Designed with\nsecurity in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful\nand intuitive UI to administrators and users. What more are you waiting for? Make game servers a first-class\ncitizen on your platform today.")]),e._v(" "),o("h2",{attrs:{id:"supported-games"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#supported-games"}},[e._v("#")]),e._v(" Supported Games")]),e._v(" "),o("p",[e._v("We support a huge variety of games by utilizing Docker containers to isolate each instance, giving you the power\nto host your games across the world without having to bloat each physical machine with additional dependencies.")]),e._v(" "),o("p",[e._v("Some of our core supported games include:")]),e._v(" "),o("ul",[o("li",[e._v("Minecraft — including Spigot, Sponge, Bungeecord, Waterfall, and more")]),e._v(" "),o("li",[e._v("Rust")]),e._v(" "),o("li",[e._v("Terraria")]),e._v(" "),o("li",[e._v("Teamspeak")]),e._v(" "),o("li",[e._v("Mumble")]),e._v(" "),o("li",[e._v("Team Fortress 2")]),e._v(" "),o("li",[e._v("Counter Strike: Global Offensive")]),e._v(" "),o("li",[e._v("Garry's Mod")]),e._v(" "),o("li",[e._v("ARK: Survival Evolved")])]),e._v(" "),o("p",[e._v("In addition to our standard nest of supported games, our community is constantly pushing the limits of this software\nand there are plenty more games available provided by the community. Some of these games include:")]),e._v(" "),o("ul",[o("li",[e._v("Factorio")]),e._v(" "),o("li",[e._v("San Andreas: MP")]),e._v(" "),o("li",[e._v("Pocketmine MP")]),e._v(" "),o("li",[e._v("Squad")]),e._v(" "),o("li",[e._v("FiveM")]),e._v(" "),o("li",[e._v("Xonotic")]),e._v(" "),o("li",[e._v("Discord ATLBot")]),e._v(" "),o("li",[o("a",{attrs:{href:"https://github.com/parkervcp/eggs",target:"_blank",rel:"noopener noreferrer"}},[e._v("and many more..."),o("OutboundLink")],1)])]),e._v(" "),o("h2",{attrs:{id:"responsible-disclosure"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#responsible-disclosure"}},[e._v("#")]),e._v(" Responsible Disclosure")]),e._v(" "),o("p",[e._v("Pterodactyl is completely open-source, and as such completely open to independent users and auditors to browse our\ncode base and hunt for security issues. If you come across anything that raises red flags for you, please do not\nhesitate to reach out directly to "),o("code",[e._v("support@pterodactyl.io")]),e._v(". We ask that you please be responsible when disclosing\nany security concerns and "),o("em",[e._v("do not")]),e._v(" report them on our public facing bug tracker.")])])}),[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/app.aad50003.js b/assets/js/app.0618f353.js similarity index 88% rename from assets/js/app.aad50003.js rename to assets/js/app.0618f353.js index 4e2a78efe..c19ae01d2 100644 --- a/assets/js/app.aad50003.js +++ b/assets/js/app.0618f353.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 It(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 Dt(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(zt(),(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;zt()!==e&&(t?qt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return zt()},e}(Rt);function Ft(){var t=zt();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function zt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Bt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function qt(t){yt?bt(Bt(t)):window.location.hash=t}function Vt(t){yt?_t(Bt(t)):window.location.replace(Bt(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-4e72e1d8":function(){return n.e(30).then(n.bind(null,369))},"v-680eebc3":function(){return n.e(29).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-e4c1f74e":function(){return n.e(37).then(n.bind(null,379))},"v-047b1c1f":function(){return n.e(38).then(n.bind(null,380))},"v-030337f1":function(){return n.e(39).then(n.bind(null,381))},"v-cc322cfa":function(){return n.e(36).then(n.bind(null,382))},"v-26037fe3":function(){return n.e(40).then(n.bind(null,383))},"v-37f7de3e":function(){return n.e(42).then(n.bind(null,384))},"v-9619ebfa":function(){return n.e(41).then(n.bind(null,385))},"v-e046bab2":function(){return n.e(43).then(n.bind(null,386))},"v-e336830e":function(){return n.e(44).then(n.bind(null,387))},"v-07a77f72":function(){return n.e(46).then(n.bind(null,388))},"v-7c7b3203":function(){return n.e(45).then(n.bind(null,389))},"v-00d38f11":function(){return n.e(47).then(n.bind(null,390))},"v-d39223ba":function(){return n.e(21).then(n.bind(null,391))},"v-a31c3dba":function(){return n.e(48).then(n.bind(null,392))},"v-6f0eac21":function(){return n.e(49).then(n.bind(null,393))},"v-481dea23":function(){return n.e(50).then(n.bind(null,394))},"v-15b388aa":function(){return n.e(51).then(n.bind(null,395))},"v-7f0b5429":function(){return n.e(53).then(n.bind(null,396))},"v-8a6363ba":function(){return n.e(52).then(n.bind(null,397))},"v-29055241":function(){return n.e(54).then(n.bind(null,398))},"v-c0e60bfa":function(){return n.e(22).then(n.bind(null,399))},"v-019cb63a":function(){return n.e(56).then(n.bind(null,400))},"v-589003f5":function(){return n.e(55).then(n.bind(null,401))},"v-7ffeb723":function(){return n.e(57).then(n.bind(null,402))},"v-5baa92ba":function(){return n.e(60).then(n.bind(null,403))},"v-9478f2ba":function(){return n.e(58).then(n.bind(null,404))},"v-4f03fe0f":function(){return n.e(59).then(n.bind(null,405))},"v-27941b23":function(){return n.e(62).then(n.bind(null,406))},"v-c249e07a":function(){return n.e(61).then(n.bind(null,407))},"v-6f4baca5":function(){return n.e(63).then(n.bind(null,408))},"v-dacf6e56":function(){return n.e(65).then(n.bind(null,409))},"v-fa75e63a":function(){return n.e(64).then(n.bind(null,410))},"v-29d5bc56":function(){return n.e(67).then(n.bind(null,411))},"v-8eec473a":function(){return n.e(66).then(n.bind(null,412))},"v-cbda523a":function(){return n.e(68).then(n.bind(null,413))},"v-a75af93a":function(){return n.e(69).then(n.bind(null,414))},"v-d6319362":function(){return n.e(71).then(n.bind(null,415))},"v-22ba6d3a":function(){return n.e(70).then(n.bind(null,416))},"v-7b99cfba":function(){return n.e(19).then(n.bind(null,417))},"v-6ec4d123":function(){return n.e(72).then(n.bind(null,418))},"v-5c5d50fa":function(){return n.e(73).then(n.bind(null,419))},"v-6cd19ba3":function(){return n.e(74).then(n.bind(null,420))},"v-55eb8eca":function(){return n.e(20).then(n.bind(null,421))},"v-1ec46263":function(){return n.e(23).then(n.bind(null,422))},"v-9213d4fa":function(){return n.e(75).then(n.bind(null,423))}};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-4e72e1d8",path:"/",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-4e72e1d8").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-680eebc3",path:"/404.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-680eebc3").then(n)}},{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-e4c1f74e",path:"/community/installation-guides/panel/debian.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e4c1f74e").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-cc322cfa",path:"/community/installation-guides/panel/centos8.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-cc322cfa").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-37f7de3e",path:"/community/installation-guides/wings/debian.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-37f7de3e").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-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-07a77f72",path:"/daemon/0.6/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-07a77f72").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-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-7f0b5429",path:"/daemon/0.6/upgrade/0.6.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7f0b5429").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-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-019cb63a",path:"/panel/0.7/configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-019cb63a").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-7ffeb723",path:"/panel/0.7/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7ffeb723").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-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-27941b23",path:"/panel/0.7/webserver_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-27941b23").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-6f4baca5",path:"/panel/1.0/additional_configuration.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-6f4baca5").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-fa75e63a",path:"/panel/1.0/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-fa75e63a").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-8eec473a",path:"/panel/1.0/troubleshooting.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-8eec473a").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-d6319362",path:"/project/introduction.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-d6319362").then(n)}},{name:"v-22ba6d3a",path:"/project/community.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-22ba6d3a").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:[{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:"/"},{frontmatter:{},regularPath:"/404.html",relativePath:"404.md",key:"v-680eebc3",path:"/404.html"},{title:"Community Guides and Tutorials",frontmatter:{},regularPath:"/community/about.html",relativePath:"community/about.md",key:"v-7d127123",path:"/community/about.html",headers:[{level:2,title:"About",slug:"about"}]},{title:"Creating a Custom Egg",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_egg.html",relativePath:"community/config/eggs/creating_a_custom_egg.md",key:"v-4a1e6e3a",path:"/community/config/eggs/creating_a_custom_egg.html",headers:[{level:2,title:"Create New Option",slug:"create-new-option"},{level:2,title:"Configure Process Management",slug:"configure-process-management"},{level:3,title:"Stop Command",slug:"stop-command"},{level:3,title:"Log Storage",slug:"log-storage"},{level:3,title:"Configuration Files",slug:"configuration-files"},{level:3,title:"Start Configuration",slug:"start-configuration"},{level:2,title:"Copy Settings From",slug:"copy-settings-from"},{level:2,title:"Egg Variables",slug:"egg-variables"},{level:2,title:"List of default variables",slug:"list-of-default-variables"}]},{title:"Creating a Custom Docker Image",frontmatter:{},regularPath:"/community/config/eggs/creating_a_custom_image.html",relativePath:"community/config/eggs/creating_a_custom_image.md",key:"v-10fe793a",path:"/community/config/eggs/creating_a_custom_image.html",headers:[{level:2,title:"Creating the Dockerfile",slug:"creating-the-dockerfile"},{level:2,title:"Installing Dependencies",slug:"installing-dependencies"},{level:2,title:"Creating a Container User",slug:"creating-a-container-user"},{level:2,title:"Work Directory & Entrypoint",slug:"work-directory-entrypoint"},{level:2,title:"Entrypoint Script",slug:"entrypoint-script"},{level:2,title:"Modifying the Startup Command",slug:"modifying-the-startup-command"},{level:2,title:"Run the Command",slug:"run-the-command"},{level:3,title:"Note",slug:"note"}]},{title:"Creating a New Node",frontmatter:{},regularPath:"/community/config/nodes/add_node.html",relativePath:"community/config/nodes/add_node.md",key:"v-622f23e3",path:"/community/config/nodes/add_node.html",headers:[{level:2,title:"Location",slug:"location"},{level:2,title:"Information Required",slug:"information-required"},{level:2,title:"Install the Daemon",slug:"install-the-daemon"},{level:2,title:"Configuring the Node",slug:"configuring-the-node"},{level:3,title:"Auto-Deploy",slug:"auto-deploy"}]},{title:"Building Panel Assets",frontmatter:{},regularPath:"/community/customization/panel.html",relativePath:"community/customization/panel.md",key:"v-ef34fffa",path:"/community/customization/panel.html",headers:[{level:2,title:"Install Dependencies",slug:"install-dependencies"},{level:2,title:"Build Panel Assets",slug:"build-panel-assets"}]},{title:"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:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/panel/debian.html",relativePath:"community/installation-guides/panel/debian.md",key:"v-e4c1f74e",path:"/community/installation-guides/panel/debian.html",headers:[{level:2,title:"Dependency Installation",slug:"dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:3,title:"Download Files",slug:"download-files"}]},{title:"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 8, Rocky Linux 8, AlmaLinux 8, Fedora Server 38",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:"If using Fedora Server 38 install PHP 8.1 and Dependencies from this section. If not, skip this section.",slug:"if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"},{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 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:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/wings/debian.html",relativePath:"community/installation-guides/wings/debian.md",key:"v-37f7de3e",path:"/community/installation-guides/wings/debian.html",headers:[{level:2,title:"Install",slug:"install"}]},{title:"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:"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:"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:"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:"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.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 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",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:"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:"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:"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:"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:"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:"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:"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:"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:"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:"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:"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:"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:"Webserver Configuration",frontmatter:{},regularPath:"/panel/1.0/webserver_configuration.html",relativePath:"panel/1.0/webserver_configuration.md",key:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",headers:[{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-3"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-4"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-5"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-6"}]},{title:"About",frontmatter:{},regularPath:"/project/about.html",relativePath:"project/about.md",key:"v-a75af93a",path:"/project/about.html",headers:[{level:2,title:"Core Project Team",slug:"core-project-team"},{level:2,title:"Community Team",slug:"community-team"},{level:2,title:"Sponsors",slug:"sponsors"},{level:2,title:"License",slug:"license"},{level:2,title:"Release Signing",slug:"release-signing"}]},{title:"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:"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:"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"},{level:3,title:"Installing Caddy with Cloudflare DNS plugin",slug:"installing-caddy-with-cloudflare-dns-plugin"},{level:3,title:"Obtaining CloudFlare API Token",slug:"obtaining-cloudflare-api-token"},{level:3,title:"Reconfiguring Caddy to use Cloudflare DNS for obtaining certificates",slug:"reconfiguring-caddy-to-use-cloudflare-dns-for-obtaining-certificates"}]},{title:"Setting up MySQL",frontmatter:{},regularPath:"/tutorials/mysql_setup.html",relativePath:"tutorials/mysql_setup.md",key:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",headers:[{level:2,title:"Creating a database for Pterodactyl",slug:"creating-a-database-for-pterodactyl"},{level:3,title:"Logging In",slug:"logging-in"},{level:3,title:"Creating a user",slug:"creating-a-user"},{level:3,title:"Create a database",slug:"create-a-database"},{level:3,title:"Assigning permissions",slug:"assigning-permissions"},{level:2,title:"Creating a Database Host for Nodes",slug:"creating-a-database-host-for-nodes"},{level:3,title:"Creating a user",slug:"creating-a-user-2"},{level:3,title:"Assigning permissions",slug:"assigning-permissions-2"},{level:3,title:"Allowing external database access",slug:"allowing-external-database-access"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/wings/1.0/configuration.html",relativePath:"wings/1.0/configuration.md",key:"v-6cd19ba3",path:"/wings/1.0/configuration.html",headers:[{level:2,title:"Private Registries",slug:"private-registries"},{level:3,title:"Available Keys",slug:"available-keys"},{level:3,title:"Example of usage",slug:"example-of-usage"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:3,title:"Example of usage",slug:"example-of-usage-2"},{level:2,title:"Enabling Cloudflare proxy",slug:"enabling-cloudflare-proxy"},{level:2,title:"Container PID Limit",slug:"container-pid-limit"},{level:3,title:"Example of usage",slug:"example-of-usage-3"},{level:2,title:"Throttles Limits",slug:"throttles-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-4"},{level:2,title:"Installer Limits",slug:"installer-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-5"},{level:2,title:"Other values",slug:"other-values"}]},{title:"Installing Wings",frontmatter:{},regularPath:"/wings/1.0/installing.html",relativePath:"wings/1.0/installing.md",key:"v-55eb8eca",path:"/wings/1.0/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:2,title:"Installing Wings",slug:"installing-wings-2"},{level:2,title:"Configure",slug:"configure"},{level:3,title:"Starting Wings",slug:"starting-wings"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"},{level:3,title:"Node Allocations",slug:"node-allocations"}]},{title:"Migrating to Wings",frontmatter:{},regularPath:"/wings/1.0/migrating.html",relativePath:"wings/1.0/migrating.md",key:"v-1ec46263",path:"/wings/1.0/migrating.html",headers:[{level:2,title:"Install Wings",slug:"install-wings"},{level:2,title:"Copy New Configuration File",slug:"copy-new-configuration-file"},{level:2,title:"Remove Old Daemon",slug:"remove-old-daemon"},{level:3,title:"Remove Standalone SFTP",slug:"remove-standalone-sftp"},{level:2,title:"Daemonize Wings",slug:"daemonize-wings"}]},{title:"Upgrading Wings",frontmatter:{},regularPath:"/wings/1.0/upgrading.html",relativePath:"wings/1.0/upgrading.md",key:"v-9213d4fa",path:"/wings/1.0/upgrading.html",headers:[{level:2,title:"Wings Version Requirements",slug:"wings-version-requirements"},{level:2,title:"Download Updated Binary",slug:"download-updated-binary"},{level:2,title:"Restart Process",slug:"restart-process"}]}],themeConfig:{repo:"pterodactyl/panel",docsRepo:"pterodactyl/documentation",repoLabel:"GitHub",editLinkText:"Help us improve this page.",editLinks:!0,logo:"/logos/pterry.svg",nav:[{text:"Documentation",link:"/project/introduction.md"},{text:"Community Guides",link:"/community/about.md"},{text:"Get Help",link:"https://discord.gg/pterodactyl"},{text:"API",link:"https://dashflo.net/docs/api/pterodactyl/v1/"}],sidebar:{"/community/":[{title:"Community Guides",collapsable:!1,children:["/community/about.md"]},{title:"Panel Installation",collapsable:!1,children:["/community/installation-guides/panel/centos7.md","/community/installation-guides/panel/centos8.md","/community/installation-guides/panel/debian.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian.md"]},{title:"Creating Eggs",collapsable:!1,children:["/community/config/eggs/creating_a_custom_egg.md","/community/config/eggs/creating_a_custom_image.md"]},{title:"Game Configuration",collapsable:!1,children:["/community/games/minecraft.md"]},{title:"Tutorials",collapsable:!1,children:["/community/config/nodes/add_node.md","/community/tutorials/artisan.md"]},{title:"Customization",collapsable:!1,children:["/community/customization/panel.md","/community/customization/wings.md"]}],"/":[{title:"Project Information",collapsable:!1,children:["/project/introduction.md","/project/about.md","/project/terms.md","/project/community.md"]},{title:"Panel",collapsable:!1,path:"/panel/",currentVersion:"1.0",versions:[{title:"1.11",name:"1.0",status:"stable",children:["/getting_started","/webserver_configuration","/additional_configuration","/updating","/troubleshooting","/legacy_upgrade"]}]},{title:"Wings",collapsable:!1,path:"/wings/",currentVersion:"1.0",versions:[{title:"1.11",name:"1.0",status:"stable",children:["/installing","/upgrading","/migrating","/configuration"]}]},{title:"Tutorials",collapsable:!1,children:["/tutorials/mysql_setup.md","/tutorials/creating_ssl_certificates.md"]},{title:"Guides",collapsable:!1,children:["/guides/mounts.md"]}]}}},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 ze(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 It(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 Dt(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(zt(),(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;zt()!==e&&(t?qt(e):Vt(e))},e.prototype.getCurrentLocation=function(){return zt()},e}(Rt);function Ft(){var t=zt();return"/"===t.charAt(0)||(Vt("/"+t),!1)}function zt(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function Bt(t){var e=window.location.href,n=e.indexOf("#");return(n>=0?e.slice(0,n):e)+"#"+t}function qt(t){yt?bt(Bt(t)):window.location.hash=t}function Vt(t){yt?_t(Bt(t)):window.location.replace(Bt(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-7d127123":function(){return n.e(31).then(n.bind(null,370))},"v-4e72e1d8":function(){return n.e(30).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-e4c1f74e":function(){return n.e(37).then(n.bind(null,380))},"v-047b1c1f":function(){return n.e(38).then(n.bind(null,381))},"v-030337f1":function(){return n.e(39).then(n.bind(null,382))},"v-26037fe3":function(){return n.e(40).then(n.bind(null,383))},"v-9619ebfa":function(){return n.e(41).then(n.bind(null,384))},"v-e336830e":function(){return n.e(44).then(n.bind(null,385))},"v-e046bab2":function(){return n.e(43).then(n.bind(null,386))},"v-7c7b3203":function(){return n.e(45).then(n.bind(null,387))},"v-07a77f72":function(){return n.e(46).then(n.bind(null,388))},"v-00d38f11":function(){return n.e(47).then(n.bind(null,389))},"v-37f7de3e":function(){return n.e(42).then(n.bind(null,390))},"v-d39223ba":function(){return n.e(21).then(n.bind(null,391))},"v-a31c3dba":function(){return n.e(48).then(n.bind(null,392))},"v-6f0eac21":function(){return n.e(49).then(n.bind(null,393))},"v-481dea23":function(){return n.e(50).then(n.bind(null,394))},"v-15b388aa":function(){return n.e(51).then(n.bind(null,395))},"v-8a6363ba":function(){return n.e(52).then(n.bind(null,396))},"v-29055241":function(){return n.e(54).then(n.bind(null,397))},"v-7f0b5429":function(){return n.e(53).then(n.bind(null,398))},"v-c0e60bfa":function(){return n.e(22).then(n.bind(null,399))},"v-589003f5":function(){return n.e(55).then(n.bind(null,400))},"v-7ffeb723":function(){return n.e(57).then(n.bind(null,401))},"v-019cb63a":function(){return n.e(56).then(n.bind(null,402))},"v-9478f2ba":function(){return n.e(58).then(n.bind(null,403))},"v-4f03fe0f":function(){return n.e(59).then(n.bind(null,404))},"v-c249e07a":function(){return n.e(61).then(n.bind(null,405))},"v-5baa92ba":function(){return n.e(60).then(n.bind(null,406))},"v-27941b23":function(){return n.e(62).then(n.bind(null,407))},"v-6f4baca5":function(){return n.e(63).then(n.bind(null,408))},"v-fa75e63a":function(){return n.e(64).then(n.bind(null,409))},"v-8eec473a":function(){return n.e(66).then(n.bind(null,410))},"v-29d5bc56":function(){return n.e(67).then(n.bind(null,411))},"v-dacf6e56":function(){return n.e(65).then(n.bind(null,412))},"v-cbda523a":function(){return n.e(68).then(n.bind(null,413))},"v-22ba6d3a":function(){return n.e(70).then(n.bind(null,414))},"v-a75af93a":function(){return n.e(69).then(n.bind(null,415))},"v-d6319362":function(){return n.e(71).then(n.bind(null,416))},"v-7b99cfba":function(){return n.e(19).then(n.bind(null,417))},"v-6ec4d123":function(){return n.e(72).then(n.bind(null,418))},"v-5c5d50fa":function(){return n.e(73).then(n.bind(null,419))},"v-6cd19ba3":function(){return n.e(74).then(n.bind(null,420))},"v-55eb8eca":function(){return n.e(20).then(n.bind(null,421))},"v-1ec46263":function(){return n.e(23).then(n.bind(null,422))},"v-9213d4fa":function(){return n.e(75).then(n.bind(null,423))}};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-7d127123",path:"/community/about.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7d127123").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-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-e4c1f74e",path:"/community/installation-guides/panel/debian.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e4c1f74e").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-e336830e",path:"/community/installation-guides/wings/ubuntu2004.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-e336830e").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-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-37f7de3e",path:"/community/installation-guides/wings/debian.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-37f7de3e").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-29055241",path:"/daemon/0.6/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-29055241").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-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-7ffeb723",path:"/panel/0.7/getting_started.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-7ffeb723").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-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-c249e07a",path:"/panel/0.7/upgrading.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-c249e07a").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-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-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-dacf6e56",path:"/panel/1.0/legacy_upgrade.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-dacf6e56").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-22ba6d3a",path:"/project/community.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-22ba6d3a").then(n)}},{name:"v-a75af93a",path:"/project/about.html",component:Ae,beforeEnter:function(t,e,n){me("Layout","v-a75af93a").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:"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:"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:"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, Fedora Server 38",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:"If using Fedora Server 38 install PHP 8.1 and Dependencies from this section. If not, skip this section.",slug:"if-using-fedora-server-38-install-php-8-1-and-dependencies-from-this-section-if-not-skip-this-section"},{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 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/panel/debian.html",relativePath:"community/installation-guides/panel/debian.md",key:"v-e4c1f74e",path:"/community/installation-guides/panel/debian.html",headers:[{level:2,title:"Dependency Installation",slug:"dependency-installation"},{level:3,title:"Installing Composer",slug:"installing-composer"},{level:3,title:"Download Files",slug:"download-files"}]},{title:"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:"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:"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:"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:"Debian 11 & 12",frontmatter:{},regularPath:"/community/installation-guides/wings/debian.html",relativePath:"community/installation-guides/wings/debian.md",key:"v-37f7de3e",path:"/community/installation-guides/wings/debian.html",headers:[{level:2,title:"Install",slug:"install"}]},{title:"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",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:"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:"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:"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:"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:"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",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:"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:"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:"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:"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:"Webserver Configuration",frontmatter:{},regularPath:"/panel/1.0/webserver_configuration.html",relativePath:"panel/1.0/webserver_configuration.md",key:"v-cbda523a",path:"/panel/1.0/webserver_configuration.html",headers:[{level:3,title:"Enabling Configuration",slug:"enabling-configuration"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-2"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-3"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-4"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-5"},{level:3,title:"Enabling Configuration",slug:"enabling-configuration-6"}]},{title:"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:"About",frontmatter:{},regularPath:"/project/about.html",relativePath:"project/about.md",key:"v-a75af93a",path:"/project/about.html",headers:[{level:2,title:"Core Project Team",slug:"core-project-team"},{level:2,title:"Community Team",slug:"community-team"},{level:2,title:"Sponsors",slug:"sponsors"},{level:2,title:"License",slug:"license"},{level:2,title:"Release Signing",slug:"release-signing"}]},{title:"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"},{level:3,title:"Installing Caddy with Cloudflare DNS plugin",slug:"installing-caddy-with-cloudflare-dns-plugin"},{level:3,title:"Obtaining CloudFlare API Token",slug:"obtaining-cloudflare-api-token"},{level:3,title:"Reconfiguring Caddy to use Cloudflare DNS for obtaining certificates",slug:"reconfiguring-caddy-to-use-cloudflare-dns-for-obtaining-certificates"}]},{title:"Setting up MySQL",frontmatter:{},regularPath:"/tutorials/mysql_setup.html",relativePath:"tutorials/mysql_setup.md",key:"v-5c5d50fa",path:"/tutorials/mysql_setup.html",headers:[{level:2,title:"Creating a database for Pterodactyl",slug:"creating-a-database-for-pterodactyl"},{level:3,title:"Logging In",slug:"logging-in"},{level:3,title:"Creating a user",slug:"creating-a-user"},{level:3,title:"Create a database",slug:"create-a-database"},{level:3,title:"Assigning permissions",slug:"assigning-permissions"},{level:2,title:"Creating a Database Host for Nodes",slug:"creating-a-database-host-for-nodes"},{level:3,title:"Creating a user",slug:"creating-a-user-2"},{level:3,title:"Assigning permissions",slug:"assigning-permissions-2"},{level:3,title:"Allowing external database access",slug:"allowing-external-database-access"}]},{title:"Additional Configuration",frontmatter:{},regularPath:"/wings/1.0/configuration.html",relativePath:"wings/1.0/configuration.md",key:"v-6cd19ba3",path:"/wings/1.0/configuration.html",headers:[{level:2,title:"Private Registries",slug:"private-registries"},{level:3,title:"Available Keys",slug:"available-keys"},{level:3,title:"Example of usage",slug:"example-of-usage"},{level:2,title:"Custom Network Interfaces",slug:"custom-network-interfaces"},{level:3,title:"Example of usage",slug:"example-of-usage-2"},{level:2,title:"Enabling Cloudflare proxy",slug:"enabling-cloudflare-proxy"},{level:2,title:"Container PID Limit",slug:"container-pid-limit"},{level:3,title:"Example of usage",slug:"example-of-usage-3"},{level:2,title:"Throttles Limits",slug:"throttles-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-4"},{level:2,title:"Installer Limits",slug:"installer-limits"},{level:3,title:"Example of usage",slug:"example-of-usage-5"},{level:2,title:"Other values",slug:"other-values"}]},{title:"Installing Wings",frontmatter:{},regularPath:"/wings/1.0/installing.html",relativePath:"wings/1.0/installing.md",key:"v-55eb8eca",path:"/wings/1.0/installing.html",headers:[{level:2,title:"Supported Systems",slug:"supported-systems"},{level:2,title:"System Requirements",slug:"system-requirements"},{level:2,title:"Dependencies",slug:"dependencies"},{level:3,title:"Installing Docker",slug:"installing-docker"},{level:2,title:"Installing Wings",slug:"installing-wings-2"},{level:2,title:"Configure",slug:"configure"},{level:3,title:"Starting Wings",slug:"starting-wings"},{level:3,title:"Daemonizing (using systemd)",slug:"daemonizing-using-systemd"},{level:3,title:"Node Allocations",slug:"node-allocations"}]},{title:"Migrating to Wings",frontmatter:{},regularPath:"/wings/1.0/migrating.html",relativePath:"wings/1.0/migrating.md",key:"v-1ec46263",path:"/wings/1.0/migrating.html",headers:[{level:2,title:"Install Wings",slug:"install-wings"},{level:2,title:"Copy New Configuration File",slug:"copy-new-configuration-file"},{level:2,title:"Remove Old Daemon",slug:"remove-old-daemon"},{level:3,title:"Remove Standalone SFTP",slug:"remove-standalone-sftp"},{level:2,title:"Daemonize Wings",slug:"daemonize-wings"}]},{title:"Upgrading Wings",frontmatter:{},regularPath:"/wings/1.0/upgrading.html",relativePath:"wings/1.0/upgrading.md",key:"v-9213d4fa",path:"/wings/1.0/upgrading.html",headers:[{level:2,title:"Wings Version Requirements",slug:"wings-version-requirements"},{level:2,title:"Download Updated Binary",slug:"download-updated-binary"},{level:2,title:"Restart Process",slug:"restart-process"}]}],themeConfig:{repo:"pterodactyl/panel",docsRepo:"pterodactyl/documentation",repoLabel:"GitHub",editLinkText:"Help us improve this page.",editLinks:!0,logo:"/logos/pterry.svg",nav:[{text:"Documentation",link:"/project/introduction.md"},{text:"Community Guides",link:"/community/about.md"},{text:"Get Help",link:"https://discord.gg/pterodactyl"},{text:"API",link:"https://dashflo.net/docs/api/pterodactyl/v1/"}],sidebar:{"/community/":[{title:"Community Guides",collapsable:!1,children:["/community/about.md"]},{title:"Panel Installation",collapsable:!1,children:["/community/installation-guides/panel/centos7.md","/community/installation-guides/panel/centos8.md","/community/installation-guides/panel/debian.md"]},{title:"Wings Installation",collapsable:!1,children:["/community/installation-guides/wings/centos7.md","/community/installation-guides/wings/centos8.md","/community/installation-guides/wings/debian.md"]},{title:"Creating Eggs",collapsable:!1,children:["/community/config/eggs/creating_a_custom_egg.md","/community/config/eggs/creating_a_custom_image.md"]},{title:"Game Configuration",collapsable:!1,children:["/community/games/minecraft.md"]},{title:"Tutorials",collapsable:!1,children:["/community/config/nodes/add_node.md","/community/tutorials/artisan.md"]},{title:"Customization",collapsable:!1,children:["/community/customization/panel.md","/community/customization/wings.md"]}],"/":[{title:"Project Information",collapsable:!1,children:["/project/introduction.md","/project/about.md","/project/terms.md","/project/community.md"]},{title:"Panel",collapsable:!1,path:"/panel/",currentVersion:"1.0",versions:[{title:"1.11",name:"1.0",status:"stable",children:["/getting_started","/webserver_configuration","/additional_configuration","/updating","/troubleshooting","/legacy_upgrade"]}]},{title:"Wings",collapsable:!1,path:"/wings/",currentVersion:"1.0",versions:[{title:"1.11",name:"1.0",status:"stable",children:["/installing","/upgrading","/migrating","/configuration"]}]},{title:"Tutorials",collapsable:!1,children:["/tutorials/mysql_setup.md","/tutorials/creating_ssl_certificates.md"]},{title:"Guides",collapsable:!1,children:["/guides/mounts.md"]}]}}},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 ze(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 57d026c47..57f2bc540 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 @@ ← Debian 11 & 12
    - + diff --git a/community/config/eggs/creating_a_custom_image.html b/community/config/eggs/creating_a_custom_image.html index f2e8e17fb..e3f1ce47d 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 @@ ← Creating a Custom Egg
    - + diff --git a/community/config/nodes/add_node.html b/community/config/nodes/add_node.html index 7eb8ae669..36710b517 100644 --- a/community/config/nodes/add_node.html +++ b/community/config/nodes/add_node.html @@ -15,7 +15,7 @@ - + @@ -50,6 +50,6 @@ ← Minecraft
    - + diff --git a/community/customization/panel.html b/community/customization/panel.html index 77bb9345f..646b3055d 100644 --- a/community/customization/panel.html +++ b/community/customization/panel.html @@ -15,7 +15,7 @@ - + @@ -60,6 +60,6 @@ ← Artisan CLI
    - + diff --git a/community/customization/wings.html b/community/customization/wings.html index d69d3d892..1796cd137 100644 --- a/community/customization/wings.html +++ b/community/customization/wings.html @@ -15,7 +15,7 @@ - + @@ -49,6 +49,6 @@
    - + diff --git a/community/games/minecraft.html b/community/games/minecraft.html index a3ba05dd5..62c0f6578 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 41f7ba37e..c7fe1f473 100644 --- a/community/installation-guides/panel/centos7.html +++ b/community/installation-guides/panel/centos7.html @@ -15,7 +15,7 @@ - + @@ -172,6 +172,6 @@ ← Community Guides and Tutorials
    - + diff --git a/community/installation-guides/panel/centos8.html b/community/installation-guides/panel/centos8.html index 27a85da5c..f86dc4685 100644 --- a/community/installation-guides/panel/centos8.html +++ b/community/installation-guides/panel/centos8.html @@ -15,7 +15,7 @@ - + @@ -157,6 +157,6 @@ ← CentOS 7
    - + diff --git a/community/installation-guides/panel/debian.html b/community/installation-guides/panel/debian.html index d9fa80ca6..ba858f94d 100644 --- a/community/installation-guides/panel/debian.html +++ b/community/installation-guides/panel/debian.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,6 @@ ← CentOS 8, Rocky Linux 8, AlmaLinux 8, Fedora Server 38
    - + diff --git a/community/installation-guides/panel/ubuntu1804.html b/community/installation-guides/panel/ubuntu1804.html index 15b4593c2..490c43e58 100644 --- a/community/installation-guides/panel/ubuntu1804.html +++ b/community/installation-guides/panel/ubuntu1804.html @@ -15,7 +15,7 @@ - + @@ -130,6 +130,6 @@ }

    # 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 f4ecda445..ddf289be6 100644 --- a/community/installation-guides/panel/ubuntu2004.html +++ b/community/installation-guides/panel/ubuntu2004.html @@ -15,7 +15,7 @@ - + @@ -64,6 +64,6 @@ systemctl start php8.0-fpm

    # 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 14cbcee0e..2b459f9c9 100644 --- a/community/installation-guides/wings/centos7.html +++ b/community/installation-guides/wings/centos7.html @@ -15,7 +15,7 @@ - + @@ -58,6 +58,6 @@ ← Debian 11 & 12
    - + diff --git a/community/installation-guides/wings/centos8.html b/community/installation-guides/wings/centos8.html index 9851866db..4ca8dca81 100644 --- a/community/installation-guides/wings/centos8.html +++ b/community/installation-guides/wings/centos8.html @@ -15,7 +15,7 @@ - + @@ -58,6 +58,6 @@ ← CentOS 7
    - + diff --git a/community/installation-guides/wings/debian.html b/community/installation-guides/wings/debian.html index 51f4434bd..10611f0f0 100644 --- a/community/installation-guides/wings/debian.html +++ b/community/installation-guides/wings/debian.html @@ -15,7 +15,7 @@ - + @@ -41,6 +41,6 @@ ← CentOS 8, Rocky Linux 8, AlmaLinux 8
    - + diff --git a/community/installation-guides/wings/ubuntu1804.html b/community/installation-guides/wings/ubuntu1804.html index e2d5f2f5b..41065a4a1 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 4595440db..4d359d772 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 a86928982..d7dc495d2 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 51f8750d3..61198a70b 100644 --- a/daemon/0.6/configuration.html +++ b/daemon/0.6/configuration.html @@ -15,7 +15,7 @@ - + @@ -99,6 +99,6 @@ 'setfcap', ]

    # 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 52ed1c994..79c3cbc36 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 @@

    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 5cfb07b96..938aefc4a 100644 --- a/daemon/0.6/installing.html +++ b/daemon/0.6/installing.html @@ -15,7 +15,7 @@ - + @@ -106,6 +106,6 @@ 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 8abd35e37..6c643e549 100644 --- a/daemon/0.6/kernel_modifications.html +++ b/daemon/0.6/kernel_modifications.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,6 @@ 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 b8286b8fa..c2027f444 100644 --- a/daemon/0.6/standalone_sftp.html +++ b/daemon/0.6/standalone_sftp.html @@ -15,7 +15,7 @@ - + @@ -86,6 +86,6 @@

    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 c8c5df3a4..670a10369 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 @@ 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 171a5f23b..f7ff210a0 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 @@ 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 79415552f..9470a671a 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 @@ 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 86a7703e3..8f8d7cdd5 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 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 8a3808471..2195ff541 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 170013014..0814ea8f7 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 ab41a8ac6..d20624d58 100644 --- a/guides/php_upgrade.html +++ b/guides/php_upgrade.html @@ -15,7 +15,7 @@ - + @@ -64,6 +64,6 @@ a2enmod php8.1

    # Return to the 1.X.X Upgrade Guide

    - + diff --git a/index.html b/index.html index 5a4f4b54f..e2289e51f 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 ac0053a84..82d7fe073 100644 --- a/panel/0.7/configuration.html +++ b/panel/0.7/configuration.html @@ -15,7 +15,7 @@ - + @@ -82,6 +82,6 @@

    # 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 5ebef95a7..5b64646d3 100644 --- a/panel/0.7/getting_started.html +++ b/panel/0.7/getting_started.html @@ -15,7 +15,7 @@ - + @@ -142,6 +142,6 @@ 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 85e753774..344485d76 100644 --- a/panel/0.7/troubleshooting.html +++ b/panel/0.7/troubleshooting.html @@ -15,7 +15,7 @@ - + @@ -96,6 +96,6 @@ 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 515047cac..25ef73186 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 @@ # 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 4d38eaa07..554001166 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 @@ # If using Apache on CentOS chown -R apache:apache *
    - + diff --git a/panel/0.7/upgrading.html b/panel/0.7/upgrading.html index b07667a63..7d42b2746 100644 --- a/panel/0.7/upgrading.html +++ b/panel/0.7/upgrading.html @@ -15,7 +15,7 @@ - + @@ -55,6 +55,6 @@ 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 c5042e34e..f19be0146 100644 --- a/panel/0.7/webserver_configuration.html +++ b/panel/0.7/webserver_configuration.html @@ -15,7 +15,7 @@ - + @@ -212,6 +212,6 @@ sudo a2enmod rewrite systemctl restart apache2
    - + diff --git a/panel/1.0/additional_configuration.html b/panel/1.0/additional_configuration.html index 6f796f3f0..2cf07421f 100644 --- a/panel/1.0/additional_configuration.html +++ b/panel/1.0/additional_configuration.html @@ -15,7 +15,7 @@ - + @@ -134,6 +134,6 @@ 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 8468296c6..fcd66cf83 100644 --- a/panel/1.0/getting_started.html +++ b/panel/1.0/getting_started.html @@ -15,7 +15,7 @@ - + @@ -149,6 +149,6 @@

    # 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 bd8444340..5438e5981 100644 --- a/panel/1.0/legacy_upgrade.html +++ b/panel/1.0/legacy_upgrade.html @@ -15,7 +15,7 @@ - + @@ -95,6 +95,6 @@ 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 2d7ac7e48..a13045abd 100644 --- a/panel/1.0/troubleshooting.html +++ b/panel/1.0/troubleshooting.html @@ -15,7 +15,7 @@ - + @@ -94,6 +94,6 @@

    # 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 7557ad6eb..551136111 100644 --- a/panel/1.0/updating.html +++ b/panel/1.0/updating.html @@ -15,7 +15,7 @@ - + @@ -95,6 +95,6 @@

    # 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 30d1bef4d..96cbb6257 100644 --- a/panel/1.0/webserver_configuration.html +++ b/panel/1.0/webserver_configuration.html @@ -15,7 +15,7 @@ - + @@ -325,6 +325,6 @@ } }

    # Enabling Configuration

    The final step is to restart Caddy.

    systemctl restart caddy
     

    # Next Step: Wings Installation

    - + diff --git a/project/about.html b/project/about.html index a0551d66e..7f8faf9e3 100644 --- a/project/about.html +++ b/project/about.html @@ -15,7 +15,7 @@ - + @@ -45,13 +45,13 @@ 1.11 current

  • # About

    # Core Project Team

    Name Discord Name Primary Role
    Dane Everitt (opens new window) .tacticalfish Founder & Former Project Maintainer
    Matthew Penner (opens new window) matthewp Project Maintainer
    Stepan Fedotov trixter WHMCS Module Maintainer
    Michael Parker parkervcp Egg Developer, Docker Integration
    Lance Pioch (opens new window) shadowlancer Developer

    Members of the project team have a red username in our Discord server.

    # Community Team

    Pterodactyl would not be as successful as it is today without the help of our fantastic community support team. These + current

  • # About

    # Core Project Team

    Name Discord Name Primary Role
    Dane Everitt (opens new window) .tacticalfish Founder & Former Project Maintainer
    Matthew Penner (opens new window) matthewp Project Maintainer
    Stepan Fedotov trixter WHMCS Module Maintainer
    Michael Parker parkervcp Egg Developer, Docker Integration
    Lance Pioch (opens new window) lance Panel Maintainer

    Members of the project team have a red username in our Discord server.

    # Community Team

    Pterodactyl would not be as successful as it is today without the help of our fantastic community support team. These members can be found in our Discord server and are distinguished with a yellow username.

    # Sponsors

    The following companies help fund Pterodactyl's development. Interested in becoming a sponsor? (opens new window)

    Company About
    Aussie Server Hosts (opens new window) No frills Australian Owned and operated High Performance Server hosting for some of the most demanding games serving Australia and New Zealand.
    BisectHosting (opens new window) BisectHosting provides Minecraft, Valheim and other server hosting services with the highest reliability and lightning fast support since 2012.
    MineStrator (opens new window) Looking for the most highend French hosting company for your minecraft server? More than 24,000 members on our discord trust us. Give us a try!
    VibeGAMES (opens new window) VibeGAMES is a game server provider that specializes in DDOS protection for the games we offer. We have multiple locations in the US, Brazil, France, Germany, Singapore, Australia and South Africa.

    # License

    Pterodactyl® Copyright © 2015 - 2022 Dane Everitt and contributors.

    Code released under the MIT License (opens new window).

    # Release Signing

    Previously, releases were signed by a GPG key. All recent releases are now signed using an SSH signing key.

    This key is used to sign release tags and commits created by Matthew Penner. This key was first used to sign v1.10.2 for the Panel and v1.7.1 for Wings and has been used ever since.

    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKL873MsP1OFfffNC8n9WcVuOXOSW65/q26MIzib0K9k
     
    - + diff --git a/project/community.html b/project/community.html index b1e1a8abe..a4f8be6f5 100644 --- a/project/community.html +++ b/project/community.html @@ -15,7 +15,7 @@ - + @@ -71,6 +71,6 @@ ← Terminology
    - + diff --git a/project/introduction.html b/project/introduction.html index f96380f2c..0d9808fce 100644 --- a/project/introduction.html +++ b/project/introduction.html @@ -15,7 +15,7 @@ - + @@ -55,6 +55,6 @@ 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 07e1996f4..2c02ae241 100644 --- a/project/terms.html +++ b/project/terms.html @@ -15,7 +15,7 @@ - + @@ -53,6 +53,6 @@ ← About
    - + diff --git a/tutorials/creating_ssl_certificates.html b/tutorials/creating_ssl_certificates.html index 996284226..b94d2d200 100644 --- a/tutorials/creating_ssl_certificates.html +++ b/tutorials/creating_ssl_certificates.html @@ -15,7 +15,7 @@ - + @@ -121,6 +121,6 @@ ← Setting up MySQL
    - + diff --git a/tutorials/mysql_setup.html b/tutorials/mysql_setup.html index f6e0e6f93..acb380876 100644 --- a/tutorials/mysql_setup.html +++ b/tutorials/mysql_setup.html @@ -15,7 +15,7 @@ - + @@ -68,6 +68,6 @@ ← Community Standards
    - + diff --git a/wings/1.0/configuration.html b/wings/1.0/configuration.html index 4f4b34616..b20e72e01 100644 --- a/wings/1.0/configuration.html +++ b/wings/1.0/configuration.html @@ -15,7 +15,7 @@ - + @@ -73,6 +73,6 @@ 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 f4493bb52..27fef8182 100644 --- a/wings/1.0/installing.html +++ b/wings/1.0/installing.html @@ -15,7 +15,7 @@ - + @@ -93,6 +93,6 @@ 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 ff3d753f9..02e161b70 100644 --- a/wings/1.0/migrating.html +++ b/wings/1.0/migrating.html @@ -15,7 +15,7 @@ - + @@ -95,6 +95,6 @@

    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 0b805b6a1..403b54625 100644 --- a/wings/1.0/upgrading.html +++ b/wings/1.0/upgrading.html @@ -15,7 +15,7 @@ - + @@ -54,6 +54,6 @@

    # Restart Process

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

    systemctl restart wings
     
    - +