documentation/panel/1.0/getting_started.html
2021-08-03 21:47:26 +00:00

138 lines
33 KiB
HTML

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Getting Started | Pterodactyl</title>
<meta name="generator" content="VuePress 1.8.2">
<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="description" content="Pterodactyl is an open-source game server management panel built with PHP 7, 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.">
<meta name="msapplication-config" content="/favicons/browserconfig.xml">
<meta name="theme-color" content="#0e4688">
<link rel="preload" href="/assets/css/0.styles.b4cb0fef.css" as="style"><link rel="preload" href="/assets/js/app.f09e52bb.js" as="script"><link rel="preload" href="/assets/js/4.6431cc96.js" as="script"><link rel="preload" href="/assets/js/1.d0c981d7.js" as="script"><link rel="preload" href="/assets/js/67.38d5b57b.js" as="script"><link rel="prefetch" href="/assets/js/10.27cec751.js"><link rel="prefetch" href="/assets/js/11.53217705.js"><link rel="prefetch" href="/assets/js/12.55bef2af.js"><link rel="prefetch" href="/assets/js/13.bd04c4ec.js"><link rel="prefetch" href="/assets/js/14.57b7488c.js"><link rel="prefetch" href="/assets/js/15.a6802091.js"><link rel="prefetch" href="/assets/js/16.f2dea920.js"><link rel="prefetch" href="/assets/js/17.c2840444.js"><link rel="prefetch" href="/assets/js/18.fcb158a9.js"><link rel="prefetch" href="/assets/js/19.308a7ac5.js"><link rel="prefetch" href="/assets/js/2.21e1a937.js"><link rel="prefetch" href="/assets/js/20.b1deab3a.js"><link rel="prefetch" href="/assets/js/21.d6c9c101.js"><link rel="prefetch" href="/assets/js/22.db83ce68.js"><link rel="prefetch" href="/assets/js/23.3a0120cf.js"><link rel="prefetch" href="/assets/js/24.6e894c0a.js"><link rel="prefetch" href="/assets/js/25.5a8ed612.js"><link rel="prefetch" href="/assets/js/26.0b63e77f.js"><link rel="prefetch" href="/assets/js/27.0711df74.js"><link rel="prefetch" href="/assets/js/28.317f71e4.js"><link rel="prefetch" href="/assets/js/29.69216217.js"><link rel="prefetch" href="/assets/js/30.8204ea7c.js"><link rel="prefetch" href="/assets/js/31.e7b25719.js"><link rel="prefetch" href="/assets/js/32.db8f117e.js"><link rel="prefetch" href="/assets/js/33.731812d7.js"><link rel="prefetch" href="/assets/js/34.30f48224.js"><link rel="prefetch" href="/assets/js/35.39990a3a.js"><link rel="prefetch" href="/assets/js/36.8ec9602c.js"><link rel="prefetch" href="/assets/js/37.81b1b06a.js"><link rel="prefetch" href="/assets/js/38.e1f447b2.js"><link rel="prefetch" href="/assets/js/39.d8c67b81.js"><link rel="prefetch" href="/assets/js/40.f8a8112a.js"><link rel="prefetch" href="/assets/js/41.bdff0171.js"><link rel="prefetch" href="/assets/js/42.89114514.js"><link rel="prefetch" href="/assets/js/43.40649380.js"><link rel="prefetch" href="/assets/js/44.ad1ccee8.js"><link rel="prefetch" href="/assets/js/45.e976638f.js"><link rel="prefetch" href="/assets/js/46.8b794c5e.js"><link rel="prefetch" href="/assets/js/47.3dc1dfde.js"><link rel="prefetch" href="/assets/js/48.c14d7ed1.js"><link rel="prefetch" href="/assets/js/49.fc33633a.js"><link rel="prefetch" href="/assets/js/5.73a53d7a.js"><link rel="prefetch" href="/assets/js/50.fb19455f.js"><link rel="prefetch" href="/assets/js/51.786f6418.js"><link rel="prefetch" href="/assets/js/52.24fbb394.js"><link rel="prefetch" href="/assets/js/53.c517ee4e.js"><link rel="prefetch" href="/assets/js/54.11009636.js"><link rel="prefetch" href="/assets/js/55.dac5f93e.js"><link rel="prefetch" href="/assets/js/56.f286a8ea.js"><link rel="prefetch" href="/assets/js/57.4f76cdaf.js"><link rel="prefetch" href="/assets/js/58.78f0d59d.js"><link rel="prefetch" href="/assets/js/59.7681f6ba.js"><link rel="prefetch" href="/assets/js/6.8999fd8a.js"><link rel="prefetch" href="/assets/js/60.cdccfa2a.js"><link rel="prefetch" href="/assets/js/61.bca7dd5a.js"><link rel="prefetch" href="/assets/js/62.0d6c7a24.js"><link rel="prefetch" href="/assets/js/63.318bb69c.js"><link rel="prefetch" href="/assets/js/64.b0806748.js"><link rel="prefetch" href="/assets/js/65.1f7d038c.js"><link rel="prefetch" href="/assets/js/66.ef6f7035.js"><link rel="prefetch" href="/assets/js/68.321dd68b.js"><link rel="prefetch" href="/assets/js/69.0a4d59ac.js"><link rel="prefetch" href="/assets/js/7.9f1ce256.js"><link rel="prefetch" href="/assets/js/70.250cb0d9.js"><link rel="prefetch" href="/assets/js/71.5f8c8915.js"><link rel="prefetch" href="/assets/js/72.c1a0015d.js"><link rel="prefetch" href="/assets/js/73.0f242c47.js"><link rel="prefetch" href="/assets/js/74.3dbad093.js"><link rel="prefetch" href="/assets/js/75.b2e7a917.js"><link rel="prefetch" href="/assets/js/76.d94be659.js"><link rel="prefetch" href="/assets/js/77.011164d8.js"><link rel="prefetch" href="/assets/js/78.4e09480d.js"><link rel="prefetch" href="/assets/js/8.4c71898e.js"><link rel="prefetch" href="/assets/js/9.7af626f7.js">
<link rel="stylesheet" href="/assets/css/0.styles.b4cb0fef.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="nav"><div class="sidebar-button block md:hidden flex-no-shrink"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <div class="logo-container"><a href="/" class="home-link router-link-active"><img src="/logos/pterry.svg" class="logo"> <span class="site-name hidden md:inline can-hide">Pterodactyl</span></a></div> <div class="w-full"><div class="flex"><div class="search-box"><input aria-label="Search" placeholder="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links flex-no-shrink hidden md:flex"><div class="nav-item"><a href="/project/introduction.html" class="nav-link">Documentation
</a></div><div class="nav-item"><a href="/community/about.html" class="nav-link">Community Guides
</a></div><div class="nav-item"><a href="https://discord.gg/pterodactyl" target="_blank" rel="noopener noreferrer" class="nav-link external">
Get Help
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://dashflo.net/docs/api/pterodactyl/v1/" target="_blank" rel="noopener noreferrer" class="nav-link external">
API
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <div class="nav-item"><a href="https://github.com/pterodactyl/panel" target="_blank" rel="noopener noreferrer" class="nav-link">
Contribute
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div></nav></div></div></header> <div class="sidebar-mask"></div> <div class="sidebar"><nav class="nav-links flex-no-shrink block md:hidden"><div class="nav-item"><a href="/project/introduction.html" class="nav-link">Documentation
</a></div><div class="nav-item"><a href="/community/about.html" class="nav-link">Community Guides
</a></div><div class="nav-item"><a href="https://discord.gg/pterodactyl" target="_blank" rel="noopener noreferrer" class="nav-link external">
Get Help
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><a href="https://dashflo.net/docs/api/pterodactyl/v1/" target="_blank" rel="noopener noreferrer" class="nav-link external">
API
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div> <div class="nav-item"><a href="https://github.com/pterodactyl/panel" target="_blank" rel="noopener noreferrer" class="nav-link">
Contribute
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div></nav> <ul class="sidebar-links"><li><div class="sidebar-group first"><p class="sidebar-heading open"><span>Project Information</span> <!----> <!----></p> <ul class="sidebar-group-items"><li><a href="/project/introduction.html" class="sidebar-link">Introduction</a></li><li><a href="/project/about.html" class="sidebar-link">About</a></li><li><a href="/project/terms.html" class="sidebar-link">Terminology</a></li><li><a href="/project/community.html" class="sidebar-link">Community Standards</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Panel</span> <!----> <div tabindex="0" class="version-select custom-select float-right"><div class="selected"><div class="inline-block">
1.5
<span class="rounded-full ml-2 text-green-dark">current</span></div> <span class="arrow"></span></div> <div class="items hidden"><div class="item"><div class="inline-block">
1.5
<span class="rounded-full ml-2 text-green-dark">current</span></div></div></div></div></p> <ul class="sidebar-group-items"><li><a href="/panel/1.0/getting_started.html" aria-current="page" class="active sidebar-link">Getting Started</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/panel/1.0/getting_started.html#picking-a-server-os" class="sidebar-link">Picking a Server OS</a></li><li class="sidebar-sub-header"><a href="/panel/1.0/getting_started.html#dependencies" class="sidebar-link">Dependencies</a></li><li class="sidebar-sub-header"><a href="/panel/1.0/getting_started.html#download-files" class="sidebar-link">Download Files</a></li><li class="sidebar-sub-header"><a href="/panel/1.0/getting_started.html#installation" class="sidebar-link">Installation</a></li><li class="sidebar-sub-header"><a href="/panel/1.0/getting_started.html#queue-listeners" class="sidebar-link">Queue Listeners</a></li></ul></li><li><a href="/panel/1.0/webserver_configuration.html" class="sidebar-link">Webserver Configuration</a></li><li><a href="/panel/1.0/additional_configuration.html" class="sidebar-link">Additional Configuration</a></li><li><a href="/panel/1.0/updating.html" class="sidebar-link">Updating the Panel</a></li><li><a href="/panel/1.0/troubleshooting.html" class="sidebar-link">Troubleshooting</a></li><li><a href="/panel/1.0/legacy_upgrade.html" class="sidebar-link">Legacy Upgrades</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Wings</span> <!----> <div tabindex="0" class="version-select custom-select float-right"><div class="selected"><div class="inline-block">
1.4
<span class="rounded-full ml-2 text-green-dark">current</span></div> <span class="arrow"></span></div> <div class="items hidden"><div class="item"><div class="inline-block">
1.4
<span class="rounded-full ml-2 text-green-dark">current</span></div></div></div></div></p> <ul class="sidebar-group-items"><li><a href="/wings/1.0/installing.html" class="sidebar-link">Installing Wings</a></li><li><a href="/wings/1.0/upgrading.html" class="sidebar-link">Upgrading Wings</a></li><li><a href="/wings/1.0/migrating.html" class="sidebar-link">Migrating to Wings</a></li><li><a href="/wings/1.0/configuration.html" class="sidebar-link">Additional Configuration</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Tutorials</span> <!----> <!----></p> <ul class="sidebar-group-items"><li><a href="/tutorials/mysql_setup.html" class="sidebar-link">Setting up MySQL</a></li><li><a href="/tutorials/creating_ssl_certificates.html" class="sidebar-link">Creating SSL Certificates</a></li></ul></div></li><li><div class="sidebar-group"><p class="sidebar-heading"><span>Guides</span> <!----> <!----></p> <ul class="sidebar-group-items"><li><a href="/guides/mounts.html" class="sidebar-link">Using Mounts</a></li></ul></div></li><li><div class="sidebar-group collapsable"><p class="sidebar-heading"><span>Development &amp; Ops</span> <span class="arrow right"></span> <!----></p> <!----></div></li></ul> </div> <div class="page"> <div class="content content__default"><h1 id="getting-started"><a href="#getting-started" class="header-anchor">#</a> Getting Started</h1> <p></p><div class="table-of-contents"><ul><li><a href="#picking-a-server-os">Picking a Server OS</a></li><li><a href="#dependencies">Dependencies</a><ul><li><a href="#example-dependency-installation">Example Dependency Installation</a></li><li><a href="#installing-composer">Installing Composer</a></li></ul></li><li><a href="#download-files">Download Files</a></li><li><a href="#installation">Installation</a><ul><li><a href="#environment-configuration">Environment Configuration</a></li><li><a href="#database-setup">Database Setup</a></li><li><a href="#add-the-first-user">Add The First User</a></li><li><a href="#set-permissions">Set Permissions</a></li></ul></li><li><a href="#queue-listeners">Queue Listeners</a><ul><li><a href="#crontab-configuration">Crontab Configuration</a></li><li><a href="#create-queue-worker">Create Queue Worker</a></li></ul></li></ul></div><p></p> <p>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.</p> <p>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
software; take some time and read rather than copy and pasting and then complaining when things do not work. This panel does
not exist as a drag-and-drop service to run your servers. It is a highly complex system requiring multiple dependencies and
administrators willing to spend some time learning how to use it. <strong>If you expect to be able to install this with no understanding
of basic linux system administration you should stop and turn around now.</strong></p> <div class="custom-block tip"><p class="custom-block-title">Looking for something simple to setup?</p> <p><a href="https://wisp.gg" target="_blank" rel="noopener noreferrer">WISP<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 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 href="https://wisp.gg/features" target="_blank" rel="noopener noreferrer">learn more<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p></div> <h2 id="picking-a-server-os"><a href="#picking-a-server-os" class="header-anchor">#</a> Picking a Server OS</h2> <p>Pterodactyl runs on a wide range of operating systems, so pick whichever you are most comfortable using.</p> <div class="custom-block warning"><p class="custom-block-title">WARNING</p> <p>Pterodactyl does not support most OpenVZ systems due to incompatabilities with Docker. If you are planning on running
this software on an OpenVZ based system you will — most likely — not be successful.</p></div> <table><thead><tr><th>Operating System</th> <th>Version</th> <th style="text-align:center;">Supported</th> <th>Notes</th></tr></thead> <tbody><tr><td><strong>Ubuntu</strong></td> <td>18.04</td> <td style="text-align:center;"></td> <td>Documentation written assuming Ubuntu 18.04 as the base OS.</td></tr> <tr><td></td> <td>20.04</td> <td style="text-align:center;"></td> <td></td></tr> <tr><td><strong>CentOS</strong></td> <td>7</td> <td style="text-align:center;"></td> <td>Extra repos are required.</td></tr> <tr><td></td> <td>8</td> <td style="text-align:center;"></td> <td></td></tr> <tr><td><strong>Debian</strong></td> <td>9</td> <td style="text-align:center;"></td> <td>Extra repos are required.</td></tr> <tr><td></td> <td>10</td> <td style="text-align:center;"></td> <td></td></tr></tbody></table> <h2 id="dependencies"><a href="#dependencies" class="header-anchor">#</a> Dependencies</h2> <ul><li>PHP <code>7.4</code> or <code>8.0</code> (recommended) with the following extensions: <code>cli</code>, <code>openssl</code>, <code>gd</code>, <code>mysql</code>, <code>PDO</code>, <code>mbstring</code>, <code>tokenizer</code>, <code>bcmath</code>, <code>xml</code> or <code>dom</code>, <code>curl</code>, <code>zip</code>, and <code>fpm</code> if you are planning to use NGINX.</li> <li>MySQL <code>5.7.22</code> or higher (MySQL <code>8</code> recommended) <strong>or</strong> MariaDB <code>10.2</code> or higher.</li> <li>Redis (<code>redis-server</code>)</li> <li>A webserver (Apache, NGINX, Caddy, etc.)</li> <li><code>curl</code></li> <li><code>tar</code></li> <li><code>unzip</code></li> <li><code>git</code></li> <li><code>composer</code> v2</li></ul> <h3 id="example-dependency-installation"><a href="#example-dependency-installation" class="header-anchor">#</a> Example Dependency Installation</h3> <p>The commands below are simply an example of how you might install these dependencies. Please consult with your
operating system's package manager to determine the correct packages to install.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token comment"># Add &quot;add-apt-repository&quot; command</span>
<span class="token function">apt</span> -y <span class="token function">install</span> software-properties-common <span class="token function">curl</span> apt-transport-https ca-certificates gnupg
<span class="token comment"># Add additional repositories for PHP, Redis, and MariaDB</span>
<span class="token assign-left variable"><span class="token environment constant">LC_ALL</span></span><span class="token operator">=</span>C.UTF-8 add-apt-repository -y ppa:ondrej/php
add-apt-repository -y ppa:chris-lea/redis-server
<span class="token function">curl</span> -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token function">bash</span>
<span class="token comment"># Update repositories list</span>
<span class="token function">apt</span> update
<span class="token comment"># Add universe repository if you are on Ubuntu 18.04</span>
apt-add-repository universe
<span class="token comment"># Install Dependencies</span>
<span class="token function">apt</span> -y <span class="token function">install</span> php8.0 php8.0-<span class="token punctuation">{</span>cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip<span class="token punctuation">}</span> mariadb-server nginx <span class="token function">tar</span> <span class="token function">unzip</span> <span class="token function">git</span> redis-server
</code></pre></div><h3 id="installing-composer"><a href="#installing-composer" class="header-anchor">#</a> Installing Composer</h3> <p>Composer is a dependency manager for PHP that allows us to ship everything you'll need code wise to operate the Panel. You'll
need composer installed before continuing in this process.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">curl</span> -sS https://getcomposer.org/installer <span class="token operator">|</span> <span class="token function">sudo</span> php -- --install-dir<span class="token operator">=</span>/usr/local/bin --filename<span class="token operator">=</span>composer
</code></pre></div><h2 id="download-files"><a href="#download-files" class="header-anchor">#</a> Download Files</h2> <p>The first step in this process is to create the folder where the panel will live and then move ourselves into that
newly created folder. Below is an example of how to perform this operation.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">mkdir</span> -p /var/www/pterodactyl
<span class="token builtin class-name">cd</span> /var/www/pterodactyl
</code></pre></div><p>Once you have created a new directory for the Panel and moved into it you'll need to download the Panel files. This
is as simple as using <code>curl</code> to download our pre-packaged content. Once it is downloaded you'll need to unpack the archive
and then set the correct permissions on the <code>storage/</code> and <code>bootstrap/cache/</code> directories. These directories
allow us to store files as well as keep a speedy cache available to reduce load times.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">curl</span> -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
<span class="token function">tar</span> -xzvf panel.tar.gz
<span class="token function">chmod</span> -R <span class="token number">755</span> storage/* bootstrap/cache/
</code></pre></div><h2 id="installation"><a href="#installation" class="header-anchor">#</a> Installation</h2> <p>Now that all of the files have been downloaded we need to configure some core aspects of the Panel.</p> <div class="custom-block tip"><p class="custom-block-title">Database Configuration</p> <p>You will need a database setup and a user with the correct permissions created for that database before
continuing any further. If you are unsure how to do this, please have a look at <a href="/tutorials/mysql_setup.html">Setting up MySQL</a>.</p></div> <p>First we will copy over our default environment settings file, install core dependencies, and then generate a
new application encryption key.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">cp</span> .env.example .env
composer <span class="token function">install</span> --no-dev --optimize-autoloader
<span class="token comment"># Only run the command below if you are installing this Panel for</span>
<span class="token comment"># the first time and do not have any Pterodactyl Panel data in the database.</span>
php artisan key:generate --force
</code></pre></div><div class="custom-block danger"><p class="custom-block-title">DANGER</p> <p>Back up your encryption key (APP_KEY in the <code>.env</code> file). It is used as an encryption key for all data that needs to be stored securely (e.g. api keys).
Store it somewhere safe - not just on your server. If you lose it all encrypted data is irrecoverable -- even if you have database backups.</p></div> <h3 id="environment-configuration"><a href="#environment-configuration" class="header-anchor">#</a> Environment Configuration</h3> <p>Pterodactyl's core environment is easily configured using a few different CLI commands built into the app. This step
will cover setting up things such as sessions, caching, database credentials, and email sending.</p> <div class="language-bash extra-class"><pre class="language-bash"><code>php artisan p:environment:setup
php artisan p:environment:database
<span class="token comment"># To use PHP's internal mail sending (not recommended), select &quot;mail&quot;. To use a</span>
<span class="token comment"># custom SMTP server, select &quot;smtp&quot;.</span>
php artisan p:environment:mail
</code></pre></div><h3 id="database-setup"><a href="#database-setup" class="header-anchor">#</a> Database Setup</h3> <p>Now we need to setup all of the base data for the Panel in the database you created earlier. <strong>The command below
may take some time to run depending on your machine. Please <em>DO NOT</em> exit the process until it is completed!</strong> This
command will setup the database tables and then add all of the Nests &amp; Eggs that power Pterodactyl.</p> <div class="language-bash extra-class"><pre class="language-bash"><code>php artisan migrate --seed --force
</code></pre></div><h3 id="add-the-first-user"><a href="#add-the-first-user" class="header-anchor">#</a> Add The First User</h3> <p>You'll then need to create an administrative user so that you can log into the panel. To do so, run the command below.
At this time passwords <strong>must</strong> meet the following requirements: 8 characters, mixed case, at least one number.</p> <div class="language-bash extra-class"><pre class="language-bash"><code>php artisan p:user:make
</code></pre></div><h3 id="set-permissions"><a href="#set-permissions" class="header-anchor">#</a> Set Permissions</h3> <p>The last step in the installation process is to set the correct permissions on the Panel files so that the webserver can
use them correctly.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token comment"># If using NGINX or Apache (not on CentOS):</span>
<span class="token function">chown</span> -R www-data:www-data /var/www/pterodactyl/*
<span class="token comment"># If using NGINX on CentOS:</span>
<span class="token function">chown</span> -R nginx:nginx /var/www/pterodactyl/*
<span class="token comment"># If using Apache on CentOS</span>
<span class="token function">chown</span> -R apache:apache /var/www/pterodactyl/*
</code></pre></div><h2 id="queue-listeners"><a href="#queue-listeners" class="header-anchor">#</a> Queue Listeners</h2> <p>We make use of queues to make the application faster and handle sending emails and other actions in the background.
You will need to setup the queue worker for these actions to be processed.</p> <h3 id="crontab-configuration"><a href="#crontab-configuration" class="header-anchor">#</a> Crontab Configuration</h3> <p>The first thing we need to do is create a new cronjob that runs every minute to process specific Pterodactyl tasks, such
as session cleanup and sending scheduled tasks to daemons. You'll want to open your crontab using <code>sudo crontab -e</code> and
then paste the line below.</p> <div class="language-bash extra-class"><pre class="language-bash"><code>* * * * * php /var/www/pterodactyl/artisan schedule:run <span class="token operator">&gt;&gt;</span> /dev/null <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span><span class="token file-descriptor important">&amp;1</span>
</code></pre></div><h3 id="create-queue-worker"><a href="#create-queue-worker" class="header-anchor">#</a> Create Queue Worker</h3> <p>Next you need to create a new systemd worker to keep our queue process running in the background. This queue is responsible
for sending emails and handling many other background tasks for Pterodactyl.</p> <p>Create a file called <code>pteroq.service</code> in <code>/etc/systemd/system</code> with the contents below.</p> <div class="language-text extra-class"><pre class="language-text"><code># Pterodactyl Queue Worker File
# ----------------------------------
[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
[Service]
# On some systems the user and group might be different.
# Some systems use `apache` or `nginx` as the user and group.
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
[Install]
WantedBy=multi-user.target
</code></pre></div><div class="custom-block tip"><p class="custom-block-title">Redis on CentOS</p> <p>If you are using CentOS, you will need to replace <code>redis-server.service</code> with <code>redis.service</code> at the <code>After=</code> line in order to ensure <code>redis</code> starts before the queue worker.</p></div> <div class="custom-block tip"><p class="custom-block-title">TIP</p> <p>If you are not using <code>redis</code> for anything you should remove the <code>After=</code> line, otherwise you will encounter errors
when the service starts.</p></div> <p>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:</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">sudo</span> systemctl <span class="token builtin class-name">enable</span> --now redis-server
</code></pre></div><p>Finally, enable the service and set it to boot on machine start.</p> <div class="language-bash extra-class"><pre class="language-bash"><code><span class="token function">sudo</span> systemctl <span class="token builtin class-name">enable</span> --now pteroq.service
</code></pre></div><h4 id="next-step-webserver-configuration"><a href="#next-step-webserver-configuration" class="header-anchor">#</a> Next Step: <a href="./webserver_configuration">Webserver Configuration</a></h4></div> <div class="page-edit"><div class="edit-link"><a href="https://github.com/pterodactyl/documentation/edit/master/panel/1.0/getting_started.md" target="_blank" rel="noopener noreferrer">Help us improve this page.</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></div> <!----> </div></div><div class="global-ui"></div></div>
<script src="/assets/js/app.f09e52bb.js" defer></script><script src="/assets/js/4.6431cc96.js" defer></script><script src="/assets/js/1.d0c981d7.js" defer></script><script src="/assets/js/67.38d5b57b.js" defer></script>
</body>
</html>