Strapi es un CMS Headless de código abierto basado en Node.js para cumplir todas las necesidades de interfaz de programación de aplicaciones y gestión de contenidos ahorrando tiempo a los desarrolladores. Permite crear API funcionales en cuestión de minutos y desarrollar sin la molestia de las complejidades de un CMS dando la libertad usando sus herramientas y marcos. Strapi también permite a los editores de contenido optimizar la entrega de contenido (texto, imágenes, video, etc.) en cualquier dispositivo.
En este artículo explicará cómo instalar Strapi en un servidor Ubuntu 20.04 LTS y configurando NGINX para realizar Proxy Inverso con SSL.
Instalación de Strapi
Descarga y ejecuta el script de Node.js para añadir el repositorio:
# curl -sL https://deb.nodesource.com/setup_14.x | bash -
E instala Nodejs desde apt:
# apt-get install -y nodejs
Posteriormente, comprueba que se ha instalado la versión de Nodejs v14 y npm:
# node -v && npm -v
Adicionalmente, recomendamos instalar algunas dependencias:
# apt-get install build-essential
Después, instala Strapi con npm:
# npm install strapi@latest
Y ahora podrás crear tu proyecto:
# npx create-strapi-app@latest mi-proyecto --no-run
Cuando haya terminado de instalar los paquetes, preguntará que tipo de instalación deseas y elige Quickstart (recomendado) pulsando Enter:
? Choose your installation type (Use arrow keys)
❯ Quickstart (recommended)
Custom (manual settings)
Creará el directorio del proyecto, la aplicación Strapi en él y instalará dependencias:
Creating a quickstart project.
Creating a new Strapi application at /root/Mi_Proyecto.
Creating files.
Dependencies installed successfully.
Your application was created at /root/mi-proyecto.
Available commands in your project:
npm run develop
Start Strapi in watch mode. (Changes in Strapi project files will trigger a server
restart)
npm run start
Start Strapi without watch mode.
npm run build
Build Strapi admin panel.
npm run strapi
Display all available commands.
You can start by doing:
cd /root/mi-proyecto
npm run develop
Posteriormente, accede al directorio creado del proyecto:
# cd mi-proyecto
Puedes comprobar la versión instalada de Strapi:
# npm run strapi version
4.1.0
Luego, para realizar Proxy Inverso y configurar el HTTPS, instala Certbot y NGINX:
# apt install python3-certbot-nginx -y
Crea el fichero de configuración del site de NGINX para Strapi:
# vi /etc/nginx/sites-available/strapi.conf
Con el siguiente contenido (modifica el server_name de ejemplo por tu registro):
server {
listen 80;
server_name api.ejemplo.com;
# Proxy Config
location / {
proxy_pass http://localhost:1337;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass_request_headers on;
}
}
Crea un enlace simbólico para el site:
# ln -s /etc/nginx/sites-available/strapi.conf /etc/nginx/sites-enabled/strapi.conf
Verifica la configuración creada para NGINX:
# nginx -t
Si es correcta, recarga la configuración de NGINX:
# systemctl reload nginx
Posteriormente, edita el fichero de configuración del proyecto Strapi:
# vi ./config/server.js
Para añadir la línea url para el registro:
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
url: 'https://api.dominio.com',
app: {
keys: env.array('APP_KEYS'),
},
});
Y utiliza Certbot para adquirir el certificado para el registro:
# certbot --nginx --redirect -d api.dominio.com
E inicia Strapi en modo de vigilancia (los cambios en los archivos del proyecto Strapi provocarán un reinicio de la aplicación):
# npm run develop
Aparecerá el siguiente resultado:
Running your Strapi application.
> mi-proyecto@0.1.0 develop
> strapi develop
Building your admin UI with development configuration ...
Admin UI built successfully
[2022-02-17 20:53:03.763] info: The Users & Permissions plugin automatically
generated a jwt secret and stored it in your .env file under the name JWT_SECRET.
Project information
┌────────────────────┬──────────────────────────────────────────────────┐
│ Time │ Thu Feb 17 2022 20:53:05 GMT+0100 (Central Euro… │
│ Launched in │ 2524 ms │
│ Environment │ development │
│ Process PID │ 10751 │
│ Version │ 4.1.0 (node v14.19.0) │
│ Edition │ Community │
└────────────────────┴──────────────────────────────────────────────────┘
Actions available
One more thing...
Create your first administrator 💻 by going to the administration panel at:
┌────────────────────────────────────┐
│ https://api.ejemplo.com/admin │
└────────────────────────────────────┘
Luego, accede mediante un navegador Web al registro configurado:
Haz clic en "Create the first administrator" para configurar tu usuario administrador de Strapi:
Una vez creado el usuario administrador, aparecerá el Dashboard de Strapi y podrás empezar a construir tu proyecto:
Informar que los desarrolladores de Strapi recomiendan el uso de pm2 para gestionar un proyecto en producción. PM2 es un gestor de procesos de producción para aplicaciones Node.js con un equilibrador de carga incorporado. Permite mantener las aplicaciones activas, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de administración del sistema.
Esperamos haberte ayudado con este tutorial. ¿Lo has probado? ¡Déjanos tus comentarios! 🙂
Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites!