{"id":573,"date":"2026-07-12T08:06:00","date_gmt":"2026-07-12T06:06:00","guid":{"rendered":"https:\/\/blumhost.net\/blog\/?p=573"},"modified":"2026-07-10T11:19:16","modified_gmt":"2026-07-10T09:19:16","slug":"instalar-nodejs-vps-ubuntu","status":"publish","type":"post","link":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/","title":{"rendered":"C\u00f3mo instalar Node.js en un VPS Ubuntu"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Node.js es el entorno de ejecuci\u00f3n m\u00e1s popular para aplicaciones web en tiempo real, APIs REST, bots, herramientas de automatizaci\u00f3n y aplicaciones Next.js o Express. Instalarlo en un <a href=\"https:\/\/blumhost.net\/vps\" target=\"_blank\" rel=\"noreferrer noopener\">VPS Ubuntu<\/a> es el primer paso para desplegar cualquiera de estos proyectos con control total sobre el entorno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta gu\u00eda te explico la forma correcta de instalar Node.js en un VPS, c\u00f3mo gestionar m\u00faltiples versiones con NVM, c\u00f3mo mantener tu aplicaci\u00f3n corriendo con PM2 y c\u00f3mo exponerla con un dominio propio y SSL.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de Contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Por_que_usar_un_VPS_para_Nodejs\" >Por qu\u00e9 usar un VPS para Node.js<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Requisitos_previos\" >Requisitos previos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Metodo_recomendado_instalar_Nodejs_con_NVM\" >M\u00e9todo recomendado: instalar Node.js con NVM<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_1_Actualiza_el_sistema\" >Paso 1: Actualiza el sistema<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_2_Instala_las_dependencias_necesarias\" >Paso 2: Instala las dependencias necesarias<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_3_Descarga_e_instala_NVM\" >Paso 3: Descarga e instala NVM<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_4_Carga_NVM_en_la_sesion_actual\" >Paso 4: Carga NVM en la sesi\u00f3n actual<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_5_Verifica_que_NVM_esta_instalado\" >Paso 5: Verifica que NVM est\u00e1 instalado<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_6_Instala_Nodejs_LTS\" >Paso 6: Instala Node.js LTS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_7_Establece_la_version_por_defecto\" >Paso 7: Establece la versi\u00f3n por defecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Paso_8_Verifica_la_instalacion\" >Paso 8: Verifica la instalaci\u00f3n<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Metodo_alternativo_instalar_Nodejs_desde_el_repositorio_oficial_de_NodeSource\" >M\u00e9todo alternativo: instalar Node.js desde el repositorio oficial de NodeSource<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Gestionar_versiones_de_Nodejs_con_NVM\" >Gestionar versiones de Node.js con NVM<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Usar_nvmrc_para_fijar_la_version_por_proyecto\" >Usar .nvmrc para fijar la versi\u00f3n por proyecto<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Tu_primera_aplicacion_Nodejs_en_el_VPS\" >Tu primera aplicaci\u00f3n Node.js en el VPS<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Crear_la_estructura_del_proyecto\" >Crear la estructura del proyecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Inicializar_el_proyecto\" >Inicializar el proyecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Crear_el_servidor_basico\" >Crear el servidor b\u00e1sico<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Instalar_Express\" >Instalar Express<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Probar_la_aplicacion\" >Probar la aplicaci\u00f3n<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#PM2_manten_Nodejs_corriendo_en_produccion\" >PM2: mant\u00e9n Node.js corriendo en producci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Instalar_PM2\" >Instalar PM2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Iniciar_la_aplicacion_con_PM2\" >Iniciar la aplicaci\u00f3n con PM2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Comandos_basicos_de_PM2\" >Comandos b\u00e1sicos de PM2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Arranque_automatico_al_reiniciar_el_servidor\" >Arranque autom\u00e1tico al reiniciar el servidor<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Gestionar_multiples_aplicaciones_con_PM2\" >Gestionar m\u00faltiples aplicaciones con PM2<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Archivo_de_configuracion_de_PM2_ecosystemconfigjs\" >Archivo de configuraci\u00f3n de PM2 (ecosystem.config.js)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Exponer_la_aplicacion_con_Nginx_como_proxy_inverso\" >Exponer la aplicaci\u00f3n con Nginx como proxy inverso<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Instalar_Nginx\" >Instalar Nginx<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Crear_la_configuracion_del_sitio\" >Crear la configuraci\u00f3n del sitio<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Activar_el_sitio\" >Activar el sitio<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Instalar_SSL_con_Certbot_Lets_Encrypt\" >Instalar SSL con Certbot (Let&#8217;s Encrypt)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Configurar_el_firewall\" >Configurar el firewall<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Despliegue_de_actualizaciones\" >Despliegue de actualizaciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Variables_de_entorno_en_produccion\" >Variables de entorno en producci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Monitorizacion_y_logs\" >Monitorizaci\u00f3n y logs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Ver_logs_de_la_aplicacion\" >Ver logs de la aplicaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Ver_logs_de_Nginx\" >Ver logs de Nginx<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Monitor_de_recursos_en_tiempo_real\" >Monitor de recursos en tiempo real<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Casos_de_uso_habituales_de_Nodejs_en_VPS\" >Casos de uso habituales de Node.js en VPS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#Preguntas_frecuentes\" >Preguntas frecuentes<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Por_que_usar_un_VPS_para_Nodejs\"><\/span>Por qu\u00e9 usar un VPS para Node.js<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js en hosting compartido tiene limitaciones importantes: no puedes ejecutar procesos persistentes, no tienes control sobre la versi\u00f3n de Node.js instalada y los timeouts del servidor web cortan las conexiones largas que muchas aplicaciones Node.js necesitan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un VPS elimina todas estas restricciones:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Proceso Node.js persistente que no se mata entre peticiones<\/li>\n\n\n\n<li>Versi\u00f3n de Node.js exacta que necesitas<\/li>\n\n\n\n<li>Puertos personalizados para tu aplicaci\u00f3n<\/li>\n\n\n\n<li>WebSockets y conexiones de larga duraci\u00f3n sin timeout<\/li>\n\n\n\n<li>Control total sobre variables de entorno y configuraci\u00f3n<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Requisitos_previos\"><\/span>Requisitos previos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de empezar necesitas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un VPS con Ubuntu 22.04 LTS o Ubuntu 24.04 LTS<\/li>\n\n\n\n<li>Acceso SSH con usuario root o con permisos sudo<\/li>\n\n\n\n<li>Un dominio apuntando a la IP del VPS (si quieres exponerlo con HTTPS)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Si acabas de contratar el VPS y es la primera vez que te conectas, el art\u00edculo sobre <a href=\"https:\/\/blumhost.net\/blog\/seguridad-vps-linux-guia\/\">seguridad b\u00e1sica en VPS Linux<\/a> cubre los primeros pasos recomendados antes de instalar nada: cambiar el puerto SSH, crear un usuario no root y configurar el firewall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con\u00e9ctate al VPS por SSH:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh root@IP_DE_TU_VPS<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metodo_recomendado_instalar_Nodejs_con_NVM\"><\/span>M\u00e9todo recomendado: instalar Node.js con NVM<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">NVM (Node Version Manager) es la forma m\u00e1s recomendada de instalar Node.js en un servidor. Las ventajas sobre otros m\u00e9todos son claras:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Puedes instalar y cambiar entre m\u00faltiples versiones de Node.js sin conflictos<\/li>\n\n\n\n<li>No necesitas sudo para instalar paquetes globales de npm<\/li>\n\n\n\n<li>Actualizar Node.js es tan sencillo como un comando<\/li>\n\n\n\n<li>Puedes tener proyectos diferentes usando versiones diferentes de Node.js<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_1_Actualiza_el_sistema\"><\/span>Paso 1: Actualiza el sistema<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update &amp;&amp; apt upgrade -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_2_Instala_las_dependencias_necesarias\"><\/span>Paso 2: Instala las dependencias necesarias<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y curl git build-essential<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_3_Descarga_e_instala_NVM\"><\/span>Paso 3: Descarga e instala NVM<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.39.7\/install.sh | bash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_4_Carga_NVM_en_la_sesion_actual\"><\/span>Paso 4: Carga NVM en la sesi\u00f3n actual<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export NVM_DIR=\"$HOME\/.nvm\"\n&#91; -s \"$NVM_DIR\/nvm.sh\" ] &amp;&amp; \\. \"$NVM_DIR\/nvm.sh\"\n&#91; -s \"$NVM_DIR\/bash_completion\" ] &amp;&amp; \\. \"$NVM_DIR\/bash_completion\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para que NVM est\u00e9 disponible en todas las sesiones futuras, estas l\u00edneas se a\u00f1aden autom\u00e1ticamente al <code>~\/.bashrc<\/code> o <code>~\/.zshrc<\/code> durante la instalaci\u00f3n. Verifica que est\u00e1n a\u00f1adidas:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat ~\/.bashrc | grep NVM<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_5_Verifica_que_NVM_esta_instalado\"><\/span>Paso 5: Verifica que NVM est\u00e1 instalado<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Deber\u00edas ver el n\u00famero de versi\u00f3n de NVM (algo como <code>0.39.7<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_6_Instala_Nodejs_LTS\"><\/span>Paso 6: Instala Node.js LTS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LTS significa Long Term Support \u2014 la versi\u00f3n con soporte garantizado a largo plazo. Es la opci\u00f3n recomendada para producci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm install --lts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para instalar una versi\u00f3n espec\u00edfica:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm install 20        # Node.js 20 LTS (Iron)\nnvm install 22        # Node.js 22 LTS (Jod)\nnvm install 18        # Node.js 18 LTS (Hydrogen)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_7_Establece_la_version_por_defecto\"><\/span>Paso 7: Establece la versi\u00f3n por defecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nvm use --lts\nnvm alias default node<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Paso_8_Verifica_la_instalacion\"><\/span>Paso 8: Verifica la instalaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node --version\nnpm --version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Deber\u00edas ver las versiones instaladas de Node.js y npm.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Metodo_alternativo_instalar_Nodejs_desde_el_repositorio_oficial_de_NodeSource\"><\/span>M\u00e9todo alternativo: instalar Node.js desde el repositorio oficial de NodeSource<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si prefieres gestionar Node.js como un paquete del sistema (con apt) en lugar de usar NVM, NodeSource mantiene repositorios oficiales para Ubuntu:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Para Node.js 20 LTS\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_20.x | bash -\napt install -y nodejs<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Para Node.js 22 LTS\ncurl -fsSL https:\/\/deb.nodesource.com\/setup_22.x | bash -\napt install -y nodejs<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este m\u00e9todo es m\u00e1s sencillo pero menos flexible: cambiar de versi\u00f3n requiere repetir el proceso completo. Para producci\u00f3n con una sola versi\u00f3n, es perfectamente v\u00e1lido.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Gestionar_versiones_de_Nodejs_con_NVM\"><\/span>Gestionar versiones de Node.js con NVM<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una de las ventajas de NVM es poder tener varios proyectos con versiones diferentes:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ver versiones instaladas\nnvm ls\n\n# Ver versiones disponibles para instalar\nnvm ls-remote --lts\n\n# Cambiar a una versi\u00f3n espec\u00edfica\nnvm use 20\n\n# Ver la versi\u00f3n activa\nnode --version\n\n# Desinstalar una versi\u00f3n\nnvm uninstall 18<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Usar_nvmrc_para_fijar_la_version_por_proyecto\"><\/span>Usar .nvmrc para fijar la versi\u00f3n por proyecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes varios proyectos, puedes crear un archivo <code>.nvmrc<\/code> en la ra\u00edz de cada proyecto con la versi\u00f3n requerida:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"20\" &gt; \/var\/www\/miapp\/.nvmrc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Al entrar al directorio, basta con ejecutar <code>nvm use<\/code> para cambiar autom\u00e1ticamente a la versi\u00f3n del proyecto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Tu_primera_aplicacion_Nodejs_en_el_VPS\"><\/span>Tu primera aplicaci\u00f3n Node.js en el VPS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Crear_la_estructura_del_proyecto\"><\/span>Crear la estructura del proyecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/var\/www\/miapp\ncd \/var\/www\/miapp<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Inicializar_el_proyecto\"><\/span>Inicializar el proyecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Crear_el_servidor_basico\"><\/span>Crear el servidor b\u00e1sico<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano index.js<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Escribe este servidor Express b\u00e1sico:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('\/', (req, res) =&gt; {\n    res.json({\n        mensaje: 'Servidor Node.js funcionando en VPS BlumHost',\n        fecha: new Date().toISOString(),\n        version: process.version\n    });\n});\n\napp.get('\/salud', (req, res) =&gt; {\n    res.json({ estado: 'ok' });\n});\n\napp.listen(PORT, () =&gt; {\n    console.log(`Servidor escuchando en puerto ${PORT}`);\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Guarda con <code>Ctrl+X<\/code>, <code>Y<\/code>, <code>Enter<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalar_Express\"><\/span>Instalar Express<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install express<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Probar_la_aplicacion\"><\/span>Probar la aplicaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node index.js<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ver\u00e1s el mensaje <code>Servidor escuchando en puerto 3000<\/code>. Abre otra terminal y verifica que responde:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl http:\/\/localhost:3000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Det\u00e9n el servidor con <code>Ctrl+C<\/code>. Esta forma de ejecutarlo no es adecuada para producci\u00f3n \u2014 para eso usaremos PM2.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PM2_manten_Nodejs_corriendo_en_produccion\"><\/span>PM2: mant\u00e9n Node.js corriendo en producci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PM2 es el gestor de procesos est\u00e1ndar para Node.js en producci\u00f3n. Se encarga de:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mantener la aplicaci\u00f3n corriendo aunque cierres la sesi\u00f3n SSH<\/li>\n\n\n\n<li>Reiniciarla autom\u00e1ticamente si el proceso muere o el servidor se reinicia<\/li>\n\n\n\n<li>Gestionar logs de la aplicaci\u00f3n<\/li>\n\n\n\n<li>Permitir reinicios sin tiempo de inactividad (zero-downtime reload)<\/li>\n\n\n\n<li>Monitorizar el uso de CPU y RAM en tiempo real<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalar_PM2\"><\/span>Instalar PM2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install -g pm2<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Iniciar_la_aplicacion_con_PM2\"><\/span>Iniciar la aplicaci\u00f3n con PM2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/var\/www\/miapp\npm2 start index.js --name \"miapp\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Comandos_basicos_de_PM2\"><\/span>Comandos b\u00e1sicos de PM2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 list                    # Ver todas las aplicaciones\npm2 status                  # Estado detallado\npm2 logs miapp              # Ver logs en tiempo real\npm2 logs miapp --lines 100  # \u00daltimas 100 l\u00edneas de log\npm2 restart miapp           # Reiniciar la aplicaci\u00f3n\npm2 reload miapp            # Reinicio sin downtime\npm2 stop miapp              # Detener la aplicaci\u00f3n\npm2 delete miapp            # Eliminar de PM2\npm2 monit                   # Monitor en tiempo real (CPU\/RAM)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Arranque_automatico_al_reiniciar_el_servidor\"><\/span>Arranque autom\u00e1tico al reiniciar el servidor<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 startup<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">PM2 mostrar\u00e1 un comando que debes copiar y ejecutar (empieza por <code>sudo env PATH=...<\/code>). Ejec\u00fatalo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s guarda el estado actual de PM2:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 save<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A partir de ahora, si el servidor se reinicia, PM2 arrancar\u00e1 autom\u00e1ticamente todas tus aplicaciones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Gestionar_multiples_aplicaciones_con_PM2\"><\/span>Gestionar m\u00faltiples aplicaciones con PM2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si tienes varias aplicaciones Node.js en el mismo VPS:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 start \/var\/www\/app1\/index.js --name \"app1\" --port 3001\npm2 start \/var\/www\/app2\/index.js --name \"app2\" --port 3002\npm2 start \/var\/www\/app3\/index.js --name \"app3\" --port 3003\npm2 save<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Archivo_de_configuracion_de_PM2_ecosystemconfigjs\"><\/span>Archivo de configuraci\u00f3n de PM2 (ecosystem.config.js)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para proyectos m\u00e1s complejos, usa un archivo de configuraci\u00f3n:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>module.exports = {\n    apps: &#91;{\n        name: 'miapp',\n        script: 'index.js',\n        cwd: '\/var\/www\/miapp',\n        instances: 'max',        \/\/ Un proceso por core de CPU\n        exec_mode: 'cluster',    \/\/ Modo cluster para aprovechar m\u00faltiples cores\n        env: {\n            NODE_ENV: 'development',\n            PORT: 3000\n        },\n        env_production: {\n            NODE_ENV: 'production',\n            PORT: 3000\n        },\n        error_file: '\/var\/log\/pm2\/miapp-error.log',\n        out_file: '\/var\/log\/pm2\/miapp-out.log',\n        log_date_format: 'YYYY-MM-DD HH:mm:ss'\n    }]\n};<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Inicia con:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 start ecosystem.config.js --env production<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Exponer_la_aplicacion_con_Nginx_como_proxy_inverso\"><\/span>Exponer la aplicaci\u00f3n con Nginx como proxy inverso<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tu aplicaci\u00f3n Node.js escucha en el puerto 3000. Para acceder desde internet con un dominio y HTTPS, necesitas un proxy inverso. Nginx es la opci\u00f3n est\u00e1ndar \u2014 es el mismo servidor web que se usa para <a href=\"https:\/\/blumhost.net\/blog\/instalar-wordpress-vps-ubuntu-nginx\/\">instalar WordPress en VPS<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalar_Nginx\"><\/span>Instalar Nginx<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y nginx\nsystemctl enable nginx\nsystemctl start nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Crear_la_configuracion_del_sitio\"><\/span>Crear la configuraci\u00f3n del sitio<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/etc\/nginx\/sites-available\/miapp<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">nginx<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>server {\n    listen 80;\n    server_name tudominio.com www.tudominio.com;\n\n    # Logs\n    access_log \/var\/log\/nginx\/miapp-access.log;\n    error_log \/var\/log\/nginx\/miapp-error.log;\n\n    location \/ {\n        proxy_pass http:\/\/localhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_cache_bypass $http_upgrade;\n        proxy_read_timeout 86400;    # Necesario para WebSockets\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Activar_el_sitio\"><\/span>Activar el sitio<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ln -s \/etc\/nginx\/sites-available\/miapp \/etc\/nginx\/sites-enabled\/\nnginx -t                    # Verificar que la configuraci\u00f3n es correcta\nsystemctl reload nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalar_SSL_con_Certbot_Lets_Encrypt\"><\/span>Instalar SSL con Certbot (Let&#8217;s Encrypt)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y certbot python3-certbot-nginx\ncertbot --nginx -d tudominio.com -d www.tudominio.com<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Certbot detecta autom\u00e1ticamente la configuraci\u00f3n de Nginx, instala el certificado SSL y configura la redirecci\u00f3n HTTP \u2192 HTTPS. La renovaci\u00f3n autom\u00e1tica se configura como un servicio del sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifica la renovaci\u00f3n autom\u00e1tica:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>certbot renew --dry-run<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Configurar_el_firewall\"><\/span>Configurar el firewall<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si no tienes firewall configurado, hazlo ahora:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ufw allow OpenSSH\nufw allow 'Nginx Full'    # Puertos 80 y 443\nufw enable\nufw status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">No abras el puerto 3000 directamente al exterior \u2014 el tr\u00e1fico debe pasar siempre por Nginx. Esto mejora la seguridad y permite gestionar m\u00faltiples aplicaciones desde el mismo servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para configuraci\u00f3n avanzada de firewall en VPS, el art\u00edculo sobre <a href=\"https:\/\/blumhost.net\/blog\/iptables-guia-completa\/\">iptables<\/a> cubre todas las opciones disponibles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Despliegue_de_actualizaciones\"><\/span>Despliegue de actualizaciones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando actualices el c\u00f3digo de tu aplicaci\u00f3n:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/var\/www\/miapp\ngit pull origin main        # Si usas Git\nnpm install                 # Instala nuevas dependencias\npm2 reload miapp            # Reinicio sin downtime<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con <code>pm2 reload<\/code> en lugar de <code>pm2 restart<\/code>, PM2 inicia nuevos procesos con el c\u00f3digo actualizado antes de detener los antiguos, garantizando cero tiempo de inactividad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Variables_de_entorno_en_produccion\"><\/span>Variables de entorno en producci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nunca hardcodees credenciales en el c\u00f3digo. Usa un archivo <code>.env<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano \/var\/www\/miapp\/.env<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>NODE_ENV=production\nPORT=3000\nDB_HOST=localhost\nDB_USER=usuario\nDB_PASS=contrase\u00f1a_segura\nAPI_KEY=tu_clave_api<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Instala dotenv:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install dotenv<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En tu <code>index.js<\/code>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">javascript<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>require('dotenv').config();\nconst PORT = process.env.PORT || 3000;\nconst DB_HOST = process.env.DB_HOST;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00f1ade <code>.env<\/code> al <code>.gitignore<\/code> para no subir credenciales al repositorio:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \".env\" &gt;&gt; .gitignore<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Monitorizacion_y_logs\"><\/span>Monitorizaci\u00f3n y logs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ver_logs_de_la_aplicacion\"><\/span>Ver logs de la aplicaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 logs miapp              # Tiempo real\npm2 logs miapp --lines 200  # \u00daltimas 200 l\u00edneas<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ver_logs_de_Nginx\"><\/span>Ver logs de Nginx<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tail -f \/var\/log\/nginx\/miapp-access.log\ntail -f \/var\/log\/nginx\/miapp-error.log<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Monitor_de_recursos_en_tiempo_real\"><\/span>Monitor de recursos en tiempo real<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pm2 monit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Muestra CPU, RAM, n\u00famero de peticiones y logs de todas las aplicaciones en una interfaz de terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para monitorizaci\u00f3n m\u00e1s avanzada del disco y recursos del servidor, el art\u00edculo sobre <a href=\"https:\/\/blumhost.net\/blog\/estado-discos-linux\/\">ver el estado de los discos en Linux<\/a> cubre los comandos m\u00e1s \u00fatiles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Casos_de_uso_habituales_de_Nodejs_en_VPS\"><\/span>Casos de uso habituales de Node.js en VPS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>API REST para aplicaci\u00f3n m\u00f3vil o SPA:<\/strong> Express o Fastify como backend, PM2 en modo cluster para aprovechar todos los cores del VPS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Servidor de WebSockets:<\/strong> chat en tiempo real, notificaciones push, actualizaciones en vivo. Node.js + Socket.io con Nginx configurado para pasar el protocolo WebSocket.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bot de Telegram o Discord:<\/strong> proceso persistente que mantiene la conexi\u00f3n con la API del servicio. PM2 garantiza que el bot se reinicia si cae. Parecido a lo que se explica en el art\u00edculo de <a href=\"https:\/\/blumhost.net\/blog\/openclaw-telegram-configuracion\/\" target=\"_blank\" rel=\"noreferrer noopener\">OpenClaw con Telegram<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Next.js en producci\u00f3n:<\/strong> aplicaciones React con SSR. <code>pm2 start npm --name \"nextapp\" -- start<\/code> con el proxy Nginx apuntando al puerto de Next.js.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Herramientas de automatizaci\u00f3n con n8n:<\/strong> n8n est\u00e1 construido sobre Node.js. Si quieres instalarlo en tu VPS, el art\u00edculo sobre <a href=\"https:\/\/blumhost.net\/blog\/instalar-n8n-docker-vps\/\" target=\"_blank\" rel=\"noreferrer noopener\">instalar n8n con Docker en VPS<\/a> cubre el proceso completo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Preguntas_frecuentes\"><\/span>Preguntas frecuentes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfQu\u00e9 versi\u00f3n de Node.js debo instalar para producci\u00f3n?<\/strong><br>La versi\u00f3n LTS activa. En 2026, Node.js 20 LTS (Iron) y Node.js 22 LTS (Jod) son las opciones recomendadas. Evita versiones impares (21, 23) para producci\u00f3n \u2014 son versiones de desarrollo sin soporte a largo plazo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfPuedo usar Node.js en hosting compartido?<\/strong><br>Con limitaciones. Algunos hostings permiten ejecutar scripts Node.js pero no procesos persistentes. Para aplicaciones reales que necesitan correr continuamente, un VPS es imprescindible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfCu\u00e1nta RAM necesita una aplicaci\u00f3n Node.js?<\/strong><br>Depende de la aplicaci\u00f3n. Una API Express sencilla puede funcionar con 512 MB. Next.js en producci\u00f3n necesita al menos 1 GB. Para aplicaciones con tr\u00e1fico medio-alto, 2-4 GB es lo recomendable. El <em>VPS II<\/em> de BlumHost con 4 GB de RAM es una buena base para la mayor\u00eda de proyectos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfNVM o NodeSource para producci\u00f3n?<\/strong><br>Ambos son v\u00e1lidos. NVM es m\u00e1s flexible (m\u00faltiples versiones, sin sudo para paquetes globales). NodeSource es m\u00e1s sencillo si solo necesitas una versi\u00f3n y prefieres gestionar Node.js como un paquete del sistema con apt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfPM2 o Docker para desplegar Node.js?<\/strong><br>PM2 es m\u00e1s sencillo para proyectos individuales. Docker a\u00f1ade aislamiento y reproducibilidad, ideal cuando tienes m\u00faltiples servicios o necesitas garantizar que el entorno de desarrollo y producci\u00f3n son id\u00e9nticos. El art\u00edculo sobre <a href=\"https:\/\/blumhost.net\/blog\/instalar-docker-vps-ubuntu\/\" target=\"_blank\" rel=\"noreferrer noopener\">instalar Docker en VPS Ubuntu<\/a> cubre Docker en profundidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00bfC\u00f3mo actualizo Node.js a una versi\u00f3n m\u00e1s nueva?<\/strong><br>Con NVM: <code>nvm install 22 &amp;&amp; nvm alias default 22<\/code>. Con NodeSource: repite el proceso de instalaci\u00f3n con el nuevo script de setup. Recuerda probar que tu aplicaci\u00f3n es compatible con la nueva versi\u00f3n antes de actualizarla en producci\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Node.js es el entorno de ejecuci\u00f3n m\u00e1s popular para aplicaciones web en tiempo real, APIs REST, bots, herramientas de automatizaci\u00f3n y aplicaciones Next.js o Express. Instalarlo en un VPS Ubuntu es el primer paso para desplegar cualquiera de estos proyectos&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,55],"tags":[48],"class_list":["post-573","post","type-post","status-publish","format-standard","hentry","category-tutoriales","category-vps","tag-vps"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>C\u00f3mo instalar Node.js en un VPS Ubuntu: gu\u00eda completa 2026 - Blog de BlumHost<\/title>\n<meta name=\"description\" content=\"Instala Node.js en un VPS Ubuntu paso a paso. NVM, versiones LTS, npm, PM2 para producci\u00f3n y c\u00f3mo desplegar tu primera aplicaci\u00f3n con dominio y SSL incluidos.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo instalar Node.js en un VPS Ubuntu: gu\u00eda completa 2026 - Blog de BlumHost\" \/>\n<meta property=\"og:description\" content=\"Instala Node.js en un VPS Ubuntu paso a paso. NVM, versiones LTS, npm, PM2 para producci\u00f3n y c\u00f3mo desplegar tu primera aplicaci\u00f3n con dominio y SSL incluidos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog de BlumHost\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/BlumHost\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-12T06:06:00+00:00\" \/>\n<meta name=\"author\" content=\"Miguel Taboada\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Miguel Taboada\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\"},\"author\":{\"name\":\"Miguel Taboada\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7\"},\"headline\":\"C\u00f3mo instalar Node.js en un VPS Ubuntu\",\"datePublished\":\"2026-07-12T06:06:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\"},\"wordCount\":1635,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#organization\"},\"keywords\":[\"vps\"],\"articleSection\":[\"Tutoriales\",\"VPS\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\",\"url\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\",\"name\":\"C\u00f3mo instalar Node.js en un VPS Ubuntu: gu\u00eda completa 2026 - Blog de BlumHost\",\"isPartOf\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#website\"},\"datePublished\":\"2026-07-12T06:06:00+00:00\",\"description\":\"Instala Node.js en un VPS Ubuntu paso a paso. NVM, versiones LTS, npm, PM2 para producci\u00f3n y c\u00f3mo desplegar tu primera aplicaci\u00f3n con dominio y SSL incluidos.\",\"breadcrumb\":{\"@id\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/blumhost.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3mo instalar Node.js en un VPS Ubuntu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blumhost.net\/blog\/#website\",\"url\":\"https:\/\/blumhost.net\/blog\/\",\"name\":\"Blog de BlumHost\",\"description\":\"Gu\u00eda completa con consejos pr\u00e1cticos, precios y ventajas reales para tu proyecto.\",\"publisher\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blumhost.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blumhost.net\/blog\/#organization\",\"name\":\"Blog de BlumHost\",\"url\":\"https:\/\/blumhost.net\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp\",\"contentUrl\":\"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp\",\"width\":240,\"height\":67,\"caption\":\"Blog de BlumHost\"},\"image\":{\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/BlumHost\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7\",\"name\":\"Miguel Taboada\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/blumhost.net\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g\",\"caption\":\"Miguel Taboada\"},\"description\":\"Ingeniero en Telecomunicaciones e Inform\u00e1tica. Cre\u00e9 BlumHost para ofrecer un hosting distinto a los dem\u00e1s, que ofrezca la mejor atenci\u00f3n al cliente, al menor precio y con la mejor calidad.\",\"sameAs\":[\"https:\/\/blumhost.net\/\",\"https:\/\/es.linkedin.com\/in\/miguel-taboada-iglesias\"],\"url\":\"https:\/\/blumhost.net\/blog\/author\/miguel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo instalar Node.js en un VPS Ubuntu: gu\u00eda completa 2026 - Blog de BlumHost","description":"Instala Node.js en un VPS Ubuntu paso a paso. NVM, versiones LTS, npm, PM2 para producci\u00f3n y c\u00f3mo desplegar tu primera aplicaci\u00f3n con dominio y SSL incluidos.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo instalar Node.js en un VPS Ubuntu: gu\u00eda completa 2026 - Blog de BlumHost","og_description":"Instala Node.js en un VPS Ubuntu paso a paso. NVM, versiones LTS, npm, PM2 para producci\u00f3n y c\u00f3mo desplegar tu primera aplicaci\u00f3n con dominio y SSL incluidos.","og_url":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/","og_site_name":"Blog de BlumHost","article_publisher":"https:\/\/www.facebook.com\/BlumHost","article_published_time":"2026-07-12T06:06:00+00:00","author":"Miguel Taboada","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Miguel Taboada","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#article","isPartOf":{"@id":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/"},"author":{"name":"Miguel Taboada","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7"},"headline":"C\u00f3mo instalar Node.js en un VPS Ubuntu","datePublished":"2026-07-12T06:06:00+00:00","mainEntityOfPage":{"@id":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/"},"wordCount":1635,"commentCount":0,"publisher":{"@id":"https:\/\/blumhost.net\/blog\/#organization"},"keywords":["vps"],"articleSection":["Tutoriales","VPS"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/","url":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/","name":"C\u00f3mo instalar Node.js en un VPS Ubuntu: gu\u00eda completa 2026 - Blog de BlumHost","isPartOf":{"@id":"https:\/\/blumhost.net\/blog\/#website"},"datePublished":"2026-07-12T06:06:00+00:00","description":"Instala Node.js en un VPS Ubuntu paso a paso. NVM, versiones LTS, npm, PM2 para producci\u00f3n y c\u00f3mo desplegar tu primera aplicaci\u00f3n con dominio y SSL incluidos.","breadcrumb":{"@id":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blumhost.net\/blog\/instalar-nodejs-vps-ubuntu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blumhost.net\/blog\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo instalar Node.js en un VPS Ubuntu"}]},{"@type":"WebSite","@id":"https:\/\/blumhost.net\/blog\/#website","url":"https:\/\/blumhost.net\/blog\/","name":"Blog de BlumHost","description":"Gu\u00eda completa con consejos pr\u00e1cticos, precios y ventajas reales para tu proyecto.","publisher":{"@id":"https:\/\/blumhost.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blumhost.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blumhost.net\/blog\/#organization","name":"Blog de BlumHost","url":"https:\/\/blumhost.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp","contentUrl":"https:\/\/blumhost.net\/blog\/wp-content\/uploads\/2025\/05\/cropped-blumhost.webp","width":240,"height":67,"caption":"Blog de BlumHost"},"image":{"@id":"https:\/\/blumhost.net\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/BlumHost"]},{"@type":"Person","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/person\/33aa890af362ded38723fc4c1ef65ee7","name":"Miguel Taboada","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blumhost.net\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bf9731b74ae636e457ef0ddcebbeb20f37a75f89668501ce0a80767a29e02722?s=96&d=mm&r=g","caption":"Miguel Taboada"},"description":"Ingeniero en Telecomunicaciones e Inform\u00e1tica. Cre\u00e9 BlumHost para ofrecer un hosting distinto a los dem\u00e1s, que ofrezca la mejor atenci\u00f3n al cliente, al menor precio y con la mejor calidad.","sameAs":["https:\/\/blumhost.net\/","https:\/\/es.linkedin.com\/in\/miguel-taboada-iglesias"],"url":"https:\/\/blumhost.net\/blog\/author\/miguel\/"}]}},"_links":{"self":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts\/573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/comments?post=573"}],"version-history":[{"count":2,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts\/573\/revisions"}],"predecessor-version":[{"id":575,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/posts\/573\/revisions\/575"}],"wp:attachment":[{"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/media?parent=573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/categories?post=573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blumhost.net\/blog\/wp-json\/wp\/v2\/tags?post=573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}