Advanced 15 min

Install Pelican Panel & Wings

Full procedure: required, installation Panel/Wings, node, phpMyAdmin, MariaDB and first game servers.

#Pelican#Wings#Panel games#Docker#MariaDB

Ready to start your service? Check offers and order online.

View offers and order

Objective

Install Pelican Panel and Wings on a Linux VPS (Debian / Ubuntu), then configure a node, phpMyAdmin and MariaDB in a clean and secure manner.

Pelican is the open-source evolution of the Pterodactyl ecosystem: the Panel manages the web interface, Wings launches the Docker containers from the game servers.

Pelican Panel Architecture, Wings and Servers
Panel → Wings → game server containers
Estimated time about 15 to 25 minutes with a domain already pointed to the VPS. The installer does the bulk of the work.
Version beta Pelican is evolving rapidly. See official documentation for changes between versions.

Prerequisite

  • VPS Anthony IT Solutions (Debian 11/12/13 or Ubuntu 22.04/24.04)
  • Access root to SSH (first SSH connection)
  • Recommended minimum: 2 vCPU / 4 GB RAM / 40GB disk (more if Panel + Wings on the same machine)
  • A domain (e.g. panel.votredomaine.fr) in registration A to the IP of the VPS
  • Ports: 22, 80/443, 2022 (Wings / SFTP), + game ports (25565, 30120...)
  • Recommended Virtualization KVM (Docker does not work on OpenVZ / LXC)

1. Preparing the system

Log in as a root, update and restart:

apt update apt full-upgrade -y apt install -y bash curl wget sudo unzip nano ca-certificates gnupg reboot

Reconnect after reboot and check the OS:

cat /etc/os-release hostnamectl systemd-detect-virt
Firewall If UFW is active, leave SSH/HTTP/HTTPS open: Configure UFW.

2. Install Panel and Wings

Launch the interactive installer (community, modeled on the Pterodactyl installer):

bash <(curl -Ss https://raw.githubusercontent.com/Zinidia/Pelinstaller/Production/install.sh)
  1. Installation option

    First install Panel, then Wings on the same machine (ideal for a single VPS), or both at once.

  2. FQDN domain

    Ex. panel.votredomaine.fr - the DNS A must already point to the VPS.

  3. E-mail & SSL

    Enter a valid e-mail and accept Lets Encrypt when the script offers it.

  4. Database

    Note the MariaDB password / Panel user displayed by the script.

  5. Web Installer

    Finish the configuration on https://panel.votredomaine.fr/installer If the script redirects you to it.

  6. Admin account

    Create admin Panel (e-mail, username, strong password) via web installer or CLI prompts.

Check the services:

systemctl status nginx systemctl status mariadb systemctl status wings systemctl status docker

Open https://panel.votredomaine.fr and log in with the created admin account.

Manual installation Would you rather follow the official doc step by step? See Getting Started and Installing Wings.

3. Configure Node

  1. Rental

    Admin → Rentals → Create (ex. France / FR-01).

  2. Node

    Admin → Nodes → Create :

    • Name : node-01
    • FQDN : same domain or node.votredomaine.fr
    • Memory / Disk: leave a margin for the system
    • Daemon Port : port displayed by the Panel (often 2022 or according to your config)
    • SFTP Port : 2022 default on Pelican

  3. Allowances

    Add public IP + a port range (e.g. 25565-25600, 30120).

  4. Config Wings

    Open the node → tab Configuration → Copy the displayed YAML, or use the button Auto Deploy.

Paste the config on the VPS:

sudo nano /etc/pelican/config.yml

Then restart Wings:

systemctl restart wings systemctl status wings

Test debug (optional) before switching to systemd service:

sudo wings --debug
config.yml Contains the token Wings Never share it. Restart wings after each change. If the Panel is HTTPS, Wings should also use SSL.

4. Open ports (UFW)

ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw allow 2022/tcp ufw allow 25565:25600/tcp ufw allow 30120/tcp ufw allow 30120/udp ufw enable ufw status

5. Install phpMyAdmin (optional)

cd /var/www/pelican/public mkdir -p phpmyadmin && cd phpmyadmin wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip unzip phpMyAdmin-5.2.1-all-languages.zip mv phpMyAdmin-5.2.1-all-languages/* . rm -rf phpMyAdmin-5.2.1-all-languages phpMyAdmin-5.2.1-all-languages.zip cp config.sample.inc.php config.inc.php nano config.inc.php

Define a blowfish_secret random (32+ characters):

$cfg['blowfish_secret'] = 'REMPLACEZ_PAR_UNE_CHAINE_ALEATOIRE_32+';

Access: https://panel.votredomaine.fr/phpmyadmin

Security Protect phpMyAdmin (Basic Auth, IP whitelist or Fail2ban). Don't expose a MariaDB account too privileged.

6. Configure MariaDB

Recommended local listening:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 127.0.0.1
systemctl restart mariadb

Create users (strong passwords):

mysql -u root -p
CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'MOT_DE_PASSE_FORT'; GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'phpmyadmin'@'localhost'; CREATE USER 'games'@'localhost' IDENTIFIED BY 'AUTRE_MOT_DE_PASSE_FORT'; GRANT ALL PRIVILEGES ON *.* TO 'games'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; EXIT;
APP_KEY Save Key APP_KEY file /var/www/pelican/.env Without it, the Panel's encrypted data are unrecoverable.

7. Create the first game server

  1. Eggs

    Admin → Eggs / Nests: choose l enquiry (Paper, FiveM, Palworld, etc.) - see also Pelican Hub.

  2. User

    Admin → Users: client account (or admin to test).

  3. Server

    Admin → Servers → Create : node, allocation, RAM/CPU/disc, egg, then Start.

  4. MySQL base

    Create a dedicated database with the user games and inform it in the server variables.

8. Verifications

  • HTTPS Panel OK
  • Node Connected (green heart)
  • systemctl is-active wings docker nginx mariadb → active
  • Test server starts correctly
journalctl -u wings -n 50 --no-pager docker ps df -h free -h

Troubleshooting

  • Offline node : token / config.yml / Wings port / systemctl restart wings
  • SSL failed: DNS A incorrect or port 80 closed
  • Installation blocked : Docker, full disk, invalid egg
  • MariaDB refused : user/host/password or bind-address
  • Missing Docker : curl -sSL https://get.docker.com/ | CHANNEL=stable sh then restart Wings

Related guides