> For the complete documentation index, see [llms.txt](https://docs.reviactyl.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.reviactyl.app/project/panel/getting-started.md).

# Getting Started

{% hint style="warning" %}
**Please Read Before Proceeding**

Only use this guide if you don't have a panel already. If you already have Pterodactyl installation, then follow the [migration guide](/project/panel/migrating-from-pterodactyl.md).

This 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.

You are expected to understand how to read documentation to use this Panel. 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. **If you expect to be able to install this with no understanding of basic linux system administration you should stop and turn around now.**
{% endhint %}

## Supported OSeS

Reviactyl runs on a wide range of operating systems, so pick whichever you are most familiar with.

This guide primarily focuses on **Ubuntu 26.04 LTS**. Extra Dependencies may or may not needed if you're using different supported OSeS.

| Operating System               | Status              | Notes                                                                               |
| ------------------------------ | ------------------- | ----------------------------------------------------------------------------------- |
| Ubuntu 22.04                   | Fully Supported     | Requires additional repositories for PHP                                            |
| Ubuntu 24.04                   | Fully Supported     | MariaDB can be installed without the repo setup script.                             |
| Ubuntu 26.04                   | Fully Supported     | MariaDB can be installed without the repo setup script.                             |
| Debian 11                      | Fully Supported     | Requires additional packages and configuration.                                     |
| Debian 12                      | Fully Supported     | Requires additional packages and configuration.                                     |
| Debian 12                      | Fully Supported     | Requires additional packages and configuration.                                     |
| Debian 13                      | Fully Supported     | Requires additional packages and configuration.                                     |
| RHEL / Rocky Linux / AlmaLinux | Fully Supported     | Extra repos are required.                                                           |
| MacOS 15 and above             | Partially Supported | Extra configuration needed. (Only for development, not recommended for production.) |
| Windows 10 & Above             | Not Supported\*     | Panel may behave weirdly. (Use macOS or Supported Linux Distros / or WSL)           |

## Dependencies

* PHP `8.2`, `8.3`, `8.4` or `8.5` (recommended) with the following extensions: `cli`, `openssl`, `gd`, `mysql`, `PDO`, `mbstring`, `tokenizer`, `bcmath`, `xml` or `dom`, `curl`, `zip`, `pgsql`, `sqlite3`, `redis`, `intl`, and `fpm` if you are planning to use NGINX.
* MySQL `9` **or** MariaDB `11` **or** PostgreSQL `18`
* Redis ( `redis-server`)
* A webserver (Apache, NGINX, Caddy, etc.)
* `curl`
* `tar`
* `unzip`
* `git`
* `composer` v2

#### Example Dependency Installation

```bash
# Add "add-apt-repository" command
apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg

# Add additional repositories for PHP (Ubuntu 22.04)
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

# Add Redis official APT repository
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

# Update repositories list
apt update

# Install Dependencies
apt -y install php8.5 php8.5-{common,cli,gd,mbstring,bcmath,xml,fpm,curl,zip,intl,redis,sqlite3} nginx tar unzip git redis-server

# Install MySQL/MariaDB Dependencies (If using MySQL or MariaDB)
apt install -y php8.5-mysql mariadb-server

# Install PostgreSQL Dependencies (If using PostgreSQL)
apt install -y php8.5-pgsql postgresql postgresql-contrib
```

{% stepper %}
{% step %}

## Installing Composer

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.

```bash
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
```

{% endstep %}

{% step %}

## Download Files

```bash
mkdir -p /var/www/reviactyl
cd /var/www/reviactyl
```

```bash
curl -Lo panel.tar.gz https://github.com/reviactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
```

{% endstep %}

{% step %}

## Installation

```bash
cp .env.example .env
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader
php artisan key:generate --force
```

{% hint style="warning" %}
**Backup Your APP\_KEY**

Back up your encryption key (`APP_KEY` in the `.env` file).\
If you lose it, all encrypted data is irrecoverable, even with database backups.
{% endhint %}

```bash
grep APP_KEY /var/www/reviactyl/.env
```

{% endstep %}

{% step %}

## Environment Configuration

```bash
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
```

{% endstep %}

{% step %}

## Database Setup

```bash
php artisan migrate --seed --force
```

{% endstep %}

{% step %}

## Create your First User

```bash
php artisan p:user:make
```

{% endstep %}

{% step %}

## Set Permissions

```bash
# If using NGINX, Apache or Caddy (not on RHEL / Rocky Linux / AlmaLinux)
chown -R www-data:www-data /var/www/reviactyl/*

# If using NGINX on RHEL / Rocky Linux / AlmaLinux
chown -R nginx:nginx /var/www/reviactyl/*

# If using Apache on RHEL / Rocky Linux / AlmaLinux
chown -R apache:apache /var/www/reviactyl/*
```

{% endstep %}

{% step %}

## Queue Listeners

### Crontab Configuration

```bash
* * * * * php /var/www/reviactyl/artisan schedule:run >> /dev/null 2>&1
```

### Create Queue Worker

```ini
# /etc/systemd/system/reviq.service
[Unit]
Description=Reviactyl Queue Worker
After=redis-server.service

[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/reviactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s

[Install]
WantedBy=multi-user.target
```

If you are using RHEL, Rocky Linux, or AlmaLinux, replace `redis-server.service` with `redis.service`. If you are not using Redis, remove the `After=` line.

```bash
sudo systemctl enable --now redis-server
sudo systemctl enable --now reviq.service
```

{% endstep %}
{% endstepper %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.reviactyl.app/project/panel/getting-started.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
