Getting Started
Install the Skyport panel for a production deployment.
This guide covers a recommended production-style installation of the Skyport panel.
Recommended software versions
Section titled “Recommended software versions”- Ubuntu 24.04 LTS or Debian 12
- PHP 8.4
- Composer 2
- Bun 1.3+
- PostgreSQL 16+
- Redis 7+
- Nginx
- Laravel Octane with Swoole
Recommended architecture
Section titled “Recommended architecture”For production, we strongly recommend:
- PostgreSQL as the main database
- Redis for cache, sessions, and queues
- Octane + Swoole behind Nginx
- a dedicated machine or VM for each node daemon
Required PHP extensions
Section titled “Required PHP extensions”Install the standard Laravel extensions plus the ones commonly needed for this stack:
bcmathcurlctypedomfileinfombstringopensslpcntlpdo_pgsqlredissessiontokenizerxmlzipswoole
1. Install system packages
Section titled “1. Install system packages”The exact package names vary by distribution, but your host should have:
sudo apt updatesudo apt install -y git unzip curl ca-certificates nginx redis-server postgresql postgresql-contribThen install PHP 8.4, Composer, Bun, and the Swoole extension using your preferred package sources.
2. Clone the panel
Section titled “2. Clone the panel”sudo mkdir -p /var/www/skyportsudo chown "$USER":"$USER" /var/www/skyportcd /var/www/skyport
git clone https://github.com/skyportsh/panel.git .3. Install PHP and frontend dependencies
Section titled “3. Install PHP and frontend dependencies”composer install --no-dev --optimize-autoloaderbun install --frozen-lockfile4. Create your environment file
Section titled “4. Create your environment file”cp .env.example .envAt minimum, update these values for production:
APP_NAME=SkyportAPP_ENV=productionAPP_DEBUG=falseAPP_URL=https://panel.example.com
DB_CONNECTION=pgsqlDB_HOST=127.0.0.1DB_PORT=5432DB_DATABASE=skyportDB_USERNAME=skyportDB_PASSWORD=change-me
CACHE_STORE=redisSESSION_DRIVER=redisQUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1REDIS_PORT=6379REDIS_PASSWORD=null
LOG_CHANNEL=stackLOG_LEVEL=info
OCTANE_SERVER=swoole5. Generate the application key and migrate
Section titled “5. Generate the application key and migrate”php artisan key:generatephp artisan migrate --force6. Build assets
Section titled “6. Build assets”bun run build7. Start the panel with Octane
Section titled “7. Start the panel with Octane”For a first boot test:
php artisan octane:start --server=swoole --host=127.0.0.1 --port=8000If the app loads on port 8000, continue to the webserver configuration step and place Nginx in front of it.
8. Create your first account
Section titled “8. Create your first account”Skyport includes a registration flow, so you can create the first account through the web UI at /register.
If you need to promote that first user to admin manually, use Tinker:
php artisan tinker$user = App\Models\User::where('email', 'you@example.com')->first();$user->is_admin = true;$user->save();9. Keep the queue running
Section titled “9. Keep the queue running”Even if the panel boots successfully, background work still needs a worker process in production.
A simple foreground check:
php artisan queue:work --tries=1 --timeout=0You will convert this into a systemd service in Additional Configuration.
Next step
Section titled “Next step”Continue with Webserver Configuration.