Última atualização A domain ordered with hosting is checked, priced and registered

Coloque o PNLCS para rodar

O PNLCS é uma aplicação Laravel. Ele roda em qualquer ambiente com PHP 8.4, MySQL ou MariaDB e um servidor web. Se quiser conhecer antes, a demonstração ao vivo é uma instalação real.

Imagem oficial no Docker Hub
docker pull panelica/pnlcs-runtime

Três formas de instalar

FormaIndicada paraTempoGuia
DockerExperimentar o PNLCS ou rodá-lo como um único contêinerCerca de 5 minutosComandos
Seu próprio servidorUm VPS ou servidor dedicado sem Docker: Ubuntu, Debian, AlmaLinux ou Rocky LinuxCerca de 30 minutosComandos
Dentro de um painel de hospedagemUm servidor que já roda Panelica, cPanel ou similarCerca de 20 minutosGuia

Início rápido com Docker

A imagem oficial inclui PHP-FPM 8.4, nginx, Node.js 20 e supervisor, e baixa o código mais recente na primeira inicialização.

  1. Inicie os contêineresAntes, substitua changeme pelas suas próprias senhas.
  2. Aguarde de 3 a 5 minutosA primeira inicialização instala as dependências e compila o frontend.
  3. Abra /installO assistente verifica os requisitos, cria sua conta de administrador e depois se bloqueia.
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

Instalar no seu próprio servidor, sem Docker

O PNLCS roda como uma aplicação Laravel comum sobre PHP-FPM 8.4, MySQL ou MariaDB e Nginx. Os comandos abaixo cobrem Ubuntu 24.04, Debian 13 e AlmaLinux 9; o Rocky Linux 9 usa os comandos do AlmaLinux. Substitua example.com pelo seu próprio endereço.

Guia completo
  1. Preparar o servidor

    PHP 8.4 com suas extensões, um banco de dados, Nginx, Node.js 20 para compilar o frontend e Composer. Pule esta etapa se eles já estiverem instalados.

    O Ubuntu 24.04 traz PHP 8.3, então o PHP 8.4 vem do PPA ondrej. O Debian 13 já inclui PHP 8.4, traz MariaDB em vez de MySQL, e o pacote php8.4-imap não existe. No AlmaLinux e no Rocky, o PHP 8.4 vem do repositório 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. Instalar a aplicação

    O diretório do PNLCS pertence ao usuário do servidor web, e todo comando composer, artisan e npm roda como esse usuário. A função pn faz isso por você. Se o diretório pertencer ao root, o assistente de instalação e as atualizações futuras falham.

    Escolha uma única senha para o banco de dados e use-a tanto no CREATE USER quanto no .env para que coincidam. A função pn vale só para a sessão atual do shell; defina-a de novo depois de entrar outra vez.

    Não execute o db:seed. O assistente de instalação popula o banco de dados e cria o administrador que você escolher.

    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. Apontar o Nginx para public/

    A raiz de documentos é public/ e nunca a raiz do projeto: a raiz do projeto contém o .env. Remova o site padrão para que o endereço do servidor não continue mostrando a página de boas-vindas do Nginx.

    Apache e Caddy também funcionam, com as mesmas regras: raiz de documentos public/, PHP via PHP-FPM 8.4 e toda requisição que não for um arquivo reescrita para 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. Conclua no navegador, depois agende e proteja

    Abra http://example.com/install. O assistente verifica os requisitos, cria seu administrador e depois se fecha.

    Uma linha de cron para o usuário do servidor web cuida de faturas, lembretes, suspensões, verificações de SSL e backups. Jobs em fila não precisam de um worker separado; a mesma linha de cron os processa.

    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

Requisitos

Uma instalação pequena roda com folga em 2 GB de memória, com o banco de dados na mesma máquina.

Requisitos completos

PHP8.4 ou mais recente
Banco de dadosMySQL 8.0 ou MariaDB 10.6+
Servidor webNginx ou Apache com PHP-FPM
Node.js18+ (20 LTS recomendado), apenas para compilar o frontend
Composer2.x
Memória1 GB funciona para uma instalação pequena; 2 GB dá folga
DiscoCerca de 130 MB para a aplicação; reserve pelo menos 2 GB livres, já que os dados crescem

Depois de instalar