Skip to content
AquadactylAquadactyl
Panel

Installing the Panel

Complete step-by-step manual installation guide for Aquadactyl Panel on a Linux server without running the automated installer script.

This guide walks you through manually installing Aquadactyl Panel step-by-step without using the automated installer script.

Looking for a fast automated install? See the Automated Install guide to install in minutes using the standalone deployment script.


System Requirements

Before starting, ensure your server meets the following requirements:

ComponentMinimum / Supported Specification
Operating SystemUbuntu: 24.04 LTS, 24.10, 26.04+ LTS
Debian: 12 (Bookworm), 13 (Trixie)
PHPPHP 8.5 (recommended) or PHP 8.4 with PHP-FPM via Ondřej Surý repo (PHP 8.2 & 8.3 unsupported)
PHP Extensionsbcmath, curl, gd, intl, mbstring, pdo_mysql, posix, redis, xml, zip
Node.js & pnpmNode.js 24 (via NVM v0.40.8 with npm@latest) and pnpm 12.10.1 (pinned)
ComposerComposer 2
Database & CacheMariaDB 10.11+ / MySQL 8.0+ and Redis 6+
System Toolsrsync, util-linux (flock, runuser), zip, unzip, git, curl, mariadb-client / mysqldump
Hardware2+ CPU Cores, 2 GB RAM, 20+ GB SSD/NVMe

Deprecation Notice: Debian ≤ 11 and Ubuntu ≤ 22.04 are deprecated and no longer supported. Please upgrade to Ubuntu 24.04+ or Debian 12+ before installing Aquadactyl.


Step 1: Install System Packages

To configure the needed packages, update your system and install the required dependencies:

Install system packages
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y lsb-release ca-certificates curl apt-transport-https gnupg

# Add Sury PHP repository
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
rm -f /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update

# Install PHP 8.5 and required extensions
sudo apt-get install -y php8.5 php8.5-cli php8.5-fpm php8.5-gd php8.5-mysql php8.5-mbstring \
  php8.5-bcmath php8.5-xml php8.5-curl php8.5-zip php8.5-posix php8.5-intl php8.5-redis \
  mariadb-server mariadb-client nginx redis-server git tar zip unzip rsync util-linux certbot python3-certbot-nginx

# Install Composer 2
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

# Install Node.js 24 & pinned pnpm 12.10.1 via NVM v0.40.8
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.8/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 24
nvm use 24
npm install --global npm@latest
npm install --global [email protected]

Step 2: Configure MariaDB Database

Open your database shell:

Access MariaDB
sudo mariadb -u root

Create the database and grant permissions:

CREATE DATABASE aquadactyl;
CREATE USER 'aquadactyl'@'127.0.0.1' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON aquadactyl.* TO 'aquadactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Step 3: Download Panel Code

Create the panel directory and clone the Aquadactyl repository:

Clone repository
sudo mkdir -p /var/www/aquadactyl
cd /var/www/aquadactyl
sudo git clone https://github.com/Aquadactyl/aquadactyl.git .

Step 4: Configure Environment

Copy the example environment file and set secure permissions:

Setup .env
sudo cp .env.example .env
sudo chmod 640 .env
sudo nano .env

Configure your domain name and credentials:

/var/www/aquadactyl/.env
APP_URL=https://panel.example.com
DB_HOST=127.0.0.1
DB_DATABASE=aquadactyl
DB_USERNAME=aquadactyl
DB_PASSWORD=your_secure_password
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

Step 5: Install Dependencies

Install Composer PHP packages and Node frontend dependencies using the frozen lockfiles:

Install PHP & Node packages
cd /var/www/aquadactyl

# Install PHP dependencies
sudo COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --prefer-dist --no-interaction --optimize-autoloader

# Install Node dependencies
sudo pnpm install --frozen-lockfile

Step 6: Generate Encryption Keys

Generate the Laravel application key and configure Hashids salt in .env:

Generate application key
sudo php artisan key:generate --force

If HASHIDS_SALT is empty in .env, generate a 32-character random string and add it:

Set HASHIDS_SALT
sudo sed -i "s/^HASHIDS_SALT=.*$/HASHIDS_SALT=$(openssl rand -hex 16)/" .env

Step 7: Database Migrations & Seeders

Run the database migrations and seed the bundled Blueprint framework tables:

Run migrations and seeders
sudo php artisan migrate --force
sudo php artisan db:seed --class=BlueprintSeeder --force

# Seed default nests & eggs for game servers
sudo php artisan db:seed --class=DatabaseSeeder --force

Step 8: Initialize Blueprint & Build Frontend

Initialize the bundled Blueprint beta-2026-08 integration and compile the production frontend:

Initialize Blueprint and build
# Initialize Blueprint
sudo BLUEPRINT_ENVIRONMENT=ci bash blueprint.sh
sudo php artisan bp:cache

# Build production assets
sudo pnpm run build

Step 9: Configure File Permissions

Set the strict production permissions model (code owned by root:www-data, only storage/ and bootstrap/cache/ writable by www-data):

Set permissions
cd /var/www/aquadactyl

sudo chown -R root:www-data /var/www/aquadactyl

# Restore executable flags for tools and scripts
sudo chmod 0750 blueprint.sh

# Writable application state directories
sudo mkdir -p storage/framework/{cache/data,sessions,views} storage/logs bootstrap/cache
sudo chown -R www-data:www-data storage bootstrap/cache
sudo chmod 0640 .env

You can also restore strict permissions automatically at any time using: curl -fsSL https://raw.githubusercontent.com/Aquadactyl/Installer/main/deploy.sh | sudo bash -s -- permissions


Step 10: Create Initial Administrator

Create your administrative user:

Create administrative user
sudo -u www-data php artisan p:user:make

Follow the interactive prompts to enter your email address, username, first name, last name, and password.


Step 11: Cache Configuration & Optimize

Cache Laravel configuration, routes, and views:

Cache configuration
sudo -u www-data php artisan config:cache
sudo -u www-data php artisan route:cache
sudo -u www-data php artisan view:cache

Next Steps

Complete your installation by configuring the web server and background queue worker:

  1. Webserver Configuration — Set up Nginx or Caddy with SSL.
  2. Additional Configuration — Configure the background queue worker (aquaq.service), cron scheduler, and Redis.