Dernière mise à jour A domain ordered with hosting is checked, priced and registered

Installer PNLCS

PNLCS est une application Laravel. Elle fonctionne partout où PHP 8.4, MySQL ou MariaDB et un serveur web sont disponibles. Pour faire d’abord le tour du produit, la démo en ligne est une vraie installation.

Image officielle sur Docker Hub
docker pull panelica/pnlcs-runtime

Trois façons d’installer

MéthodeIdéal pourDuréeGuide
DockerEssayer PNLCS, ou le faire tourner dans un seul conteneurEnviron 5 minutesCommandes
Votre propre serveurUn VPS ou serveur dédié sans Docker : Ubuntu, Debian, AlmaLinux ou Rocky LinuxEnviron 30 minutesCommandes
Dans un panneau d’hébergementUn serveur qui fait déjà tourner Panelica, cPanel ou équivalentEnviron 20 minutesGuide

Démarrage rapide avec Docker

L’image officielle embarque PHP-FPM 8.4, nginx, Node.js 20 et supervisor, et récupère la dernière version du code au premier démarrage.

  1. Lancez les conteneursRemplacez d’abord changeme par vos propres mots de passe.
  2. Patientez 3 à 5 minutesLe premier démarrage installe les dépendances et compile le frontend.
  3. Ouvrez /installL’assistant vérifie les prérequis, crée votre compte administrateur, puis se verrouille.
Terminal
$ docker network create pnlcs-net

$ docker run -d --name pnlcs-db --network pnlcs-net \
  -e MYSQL_ROOT_PASSWORD=changeme \
  -e MYSQL_DATABASE=pnlcs -e MYSQL_USER=pnlcs \
  -e MYSQL_PASSWORD=changeme \
  mariadb:11

$ docker run -d --name pnlcs --network pnlcs-net \
  -p 8090:80 \
  -e DB_HOST=pnlcs-db -e DB_DATABASE=pnlcs \
  -e DB_USERNAME=pnlcs -e DB_PASSWORD=changeme \
  -e APP_URL=http://localhost:8090 \
  panelica/pnlcs-runtime:1.4

Installer sur votre propre serveur, sans Docker

PNLCS fonctionne comme une application Laravel ordinaire sur PHP-FPM 8.4, MySQL ou MariaDB et Nginx. Les commandes ci-dessous couvrent Ubuntu 24.04, Debian 13 et AlmaLinux 9 ; Rocky Linux 9 utilise les commandes AlmaLinux. Remplacez example.com par votre propre adresse.

Guide complet
  1. Préparer le serveur

    PHP 8.4 avec ses extensions, une base de données, Nginx, Node.js 20 pour compiler le frontend, et Composer. Passez cette étape s’ils sont déjà installés.

    Ubuntu 24.04 fournit PHP 8.3, donc PHP 8.4 vient du PPA ondrej. Debian 13 inclut PHP 8.4, fournit MariaDB au lieu de MySQL, et le paquet php8.4-imap n’existe pas. Sous AlmaLinux et Rocky, PHP 8.4 provient du dépôt Remi.

    Terminal
    $ sudo apt update
    $ sudo apt install -y software-properties-common git unzip curl cron
    $ sudo add-apt-repository -y ppa:ondrej/php
    $ sudo apt update
    $ sudo apt install -y php8.4-fpm php8.4-cli php8.4-mysql php8.4-mbstring \
      php8.4-xml php8.4-curl php8.4-zip php8.4-gd php8.4-bcmath php8.4-intl php8.4-imap
    $ sudo apt install -y mysql-server nginx
    
    $ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
    $ sudo apt install -y nodejs
    
    $ curl -sS https://getcomposer.org/installer | php
    $ sudo mv composer.phar /usr/local/bin/composer
  2. Installer l’application

    Le répertoire de PNLCS appartient à l’utilisateur du serveur web, et chaque commande composer, artisan et npm s’exécute sous cet utilisateur. La fonction pn s’en charge pour vous. Si le répertoire appartient à root, l’assistant d’installation et les mises à jour suivantes échouent.

    Choisissez un seul mot de passe de base de données et utilisez-le à la fois dans CREATE USER et dans .env pour qu’ils correspondent. La fonction pn ne dure que le temps de la session shell en cours ; redéfinissez-la après vous être reconnecté.

    N’exécutez pas db:seed. L’assistant d’installation remplit la base de données et crée l’administrateur de votre choix.

    Terminal
    $ sudo git clone https://github.com/Panelica/pnlcs.git /var/www/pnlcs
    $ sudo chown -R www-data:www-data /var/www/pnlcs
    $ cd /var/www/pnlcs
    $ pn() { sudo -u www-data HOME=/tmp/pnlcs-home COMPOSER_HOME=/tmp/pnlcs-home/composer "$@"; }
    
    $ pn composer install --no-dev --optimize-autoloader --no-interaction
    
    $ sudo mysql -e "CREATE DATABASE pnlcs CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      CREATE USER 'pnlcs'@'localhost' IDENTIFIED BY 'choose-a-strong-password';
      GRANT ALL PRIVILEGES ON pnlcs.* TO 'pnlcs'@'localhost'; FLUSH PRIVILEGES;"
    
    $ pn cp .env.example .env
    $ pn sed -i 's|^APP_URL=.*|APP_URL=http://example.com|; s|^DB_PASSWORD=.*|DB_PASSWORD=choose-a-strong-password|' .env
    $ sudo chmod 640 .env
    
    $ pn php artisan key:generate
    $ pn php artisan migrate --force
    $ pn npm ci
    $ pn npm run build
    $ pn php artisan storage:link
    $ pn php artisan optimize
  3. Pointer Nginx sur public/

    La racine du site est public/ et jamais la racine du projet : la racine du projet contient .env. Supprimez le site par défaut pour que l’adresse du serveur n’affiche plus la page d’accueil de Nginx.

    Apache et Caddy fonctionnent aussi, avec les mêmes règles : racine du site public/, PHP via PHP-FPM 8.4, et toute requête qui ne vise pas un fichier réécrite vers index.php.

    Terminal
    $ sudo tee /etc/nginx/sites-available/pnlcs > /dev/null <<'EOF'
    server {
        listen 80;
        server_name example.com;
        root /var/www/pnlcs/public;
        index index.php;
        charset utf-8;
        client_max_body_size 64M;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
            fastcgi_pass unix:/run/php/php8.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
        }
        location ~ /\.(?!well-known).* { deny all; }
    }
    EOF
    $ sudo ln -s /etc/nginx/sites-available/pnlcs /etc/nginx/sites-enabled/
    $ sudo rm -f /etc/nginx/sites-enabled/default
    $ sudo nginx -t && sudo systemctl reload nginx
  4. Terminer dans le navigateur, puis planifier et sécuriser

    Ouvrez http://example.com/install. L’assistant vérifie les prérequis, crée votre administrateur puis se ferme.

    Une seule ligne cron pour l’utilisateur du serveur web pilote les factures, les relances, les suspensions, les vérifications SSL et les sauvegardes. Les tâches en file d’attente n’ont pas besoin d’un worker séparé ; la même ligne cron les traite.

    Terminal
    $ cd /var/www/pnlcs
    $ WEB_USER=www-data   # AlmaLinux, Rocky: apache
    $ (sudo crontab -u $WEB_USER -l 2>/dev/null; echo '* * * * * cd /var/www/pnlcs && php artisan schedule:run >> /dev/null 2>&1') | sudo crontab -u $WEB_USER -
    
    $ sudo apt install -y certbot python3-certbot-nginx   # Ubuntu, Debian
    $ sudo certbot --nginx -d example.com
    $ pn sed -i 's|^APP_URL=http://|APP_URL=https://|' .env
    $ pn php artisan optimize

Prérequis

Une petite installation tourne confortablement avec 2 Go de mémoire et la base de données sur la même machine.

Prérequis complets

PHP8.4 ou plus récent
Base de donnéesMySQL 8.0 ou MariaDB 10.6+
Serveur webNginx ou Apache avec PHP-FPM
Node.js18+ (20 LTS recommandé), uniquement pour compiler le frontend
Composer2.x
Mémoire1 Go suffit pour une petite installation ; 2 Go offrent du confort
DisqueEnviron 130 Mo pour l’application ; prévoyez au moins 2 Go libres, car les données augmentent

Après l’installation