Última actualización A domain ordered with hosting is checked, priced and registered

Pon PNLCS en marcha

PNLCS es una aplicación Laravel. Funciona en cualquier sitio donde haya PHP 8.4, MySQL o MariaDB y un servidor web. Si antes quieres echar un vistazo, la demo en vivo es una instalación real.

Imagen oficial en Docker Hub
docker pull panelica/pnlcs-runtime

Tres formas de instalarlo

MétodoIdeal paraTiempoGuía
DockerProbar PNLCS, o ejecutarlo como un único contenedorUnos 5 minutosComandos
Tu propio servidorUn VPS o servidor dedicado sin Docker: Ubuntu, Debian, AlmaLinux o Rocky LinuxUnos 30 minutosComandos
Dentro de un panel de hostingUn servidor que ya ejecuta Panelica, cPanel o similarUnos 20 minutosGuía

Inicio rápido con Docker

La imagen oficial incluye PHP-FPM 8.4, nginx, Node.js 20 y supervisor, y descarga el código más reciente en el primer arranque.

  1. Inicia los contenedoresAntes, sustituye changeme por tus propias contraseñas.
  2. Espera de 3 a 5 minutosEl primer arranque instala las dependencias y compila el frontend.
  3. Abre /installEl asistente comprueba los requisitos, crea tu cuenta de administrador y después se bloquea.
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 en tu propio servidor, sin Docker

PNLCS funciona como una aplicación Laravel normal sobre PHP-FPM 8.4, MySQL o MariaDB y Nginx. Los comandos siguientes cubren Ubuntu 24.04, Debian 13 y AlmaLinux 9; Rocky Linux 9 usa los comandos de AlmaLinux. Sustituye example.com por tu propia dirección.

Guía completa
  1. Preparar el servidor

    PHP 8.4 con sus extensiones, una base de datos, Nginx, Node.js 20 para compilar el frontend y Composer. Omite este paso si ya están instalados.

    Ubuntu 24.04 trae PHP 8.3, así que PHP 8.4 viene del PPA de ondrej. Debian 13 incluye PHP 8.4, trae MariaDB en lugar de MySQL, y el paquete php8.4-imap no existe. En AlmaLinux y Rocky, PHP 8.4 viene del repositorio 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 la aplicación

    El directorio de PNLCS pertenece al usuario del servidor web, y todo comando composer, artisan y npm se ejecuta como ese usuario. La función pn lo hace por ti. Si el directorio pertenece a root, el asistente de instalación y las actualizaciones posteriores fallan.

    Elige una sola contraseña para la base de datos y úsala tanto en CREATE USER como en .env para que coincidan. La función pn solo dura la sesión actual de la shell; vuelve a definirla cuando inicies sesión de nuevo.

    No ejecutes db:seed. El asistente de instalación llena la base de datos y crea el administrador que elijas.

    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. Apuntar Nginx a public/

    La raíz de documentos es public/ y nunca la raíz del proyecto: la raíz del proyecto contiene .env. Elimina el sitio por defecto para que la dirección del servidor no siga mostrando la página de bienvenida de Nginx.

    Apache y Caddy también funcionan, con las mismas reglas: raíz de documentos public/, PHP a través de PHP-FPM 8.4 y toda petición que no sea un archivo reescrita a 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. Termina en el navegador, luego programa y protege

    Abre http://example.com/install. El asistente comprueba los requisitos, crea tu administrador y después se cierra.

    Una línea de cron para el usuario del servidor web se encarga de facturas, recordatorios, suspensiones, comprobaciones SSL y copias de seguridad. Los trabajos en cola no necesitan un worker aparte; la misma línea de cron los procesa.

    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

Una instalación pequeña funciona holgada con 2 GB de memoria y la base de datos en la misma máquina.

Requisitos completos

PHP8.4 o superior
Base de datosMySQL 8.0 o MariaDB 10.6+
Servidor webNginx o Apache con PHP-FPM
Node.js18+ (se recomienda 20 LTS), solo para compilar el frontend
Composer2.x
Memoria1 GB basta para una instalación pequeña; con 2 GB va holgada
DiscoUnos 130 MB para la aplicación; deja al menos 2 GB libres, porque los datos crecen

Después de instalar