Cuando desarrollamos aplicaciones web, lo normal es empezar en un entorno local, ejecutándolas en nuestro propio ordenador. Ahí probamos que el código funciona correctamente, ya sea con un servidor sencillo en Node.js, con Apache/PHP, o con cualquier otra tecnología.
Sin embargo, trabajar solo en local tiene un límite: la aplicación solo está disponible para nosotros. El siguiente paso es llevarla a un entorno real en Internet, donde otras personas pueda acceder a través de una dirección IP o un nombre de dominio. Este proceso se conoce como el despliegue o paso a producción.
Hoy en día, el despliegue puede hacerse de distintas formas. En cualquier caso, no es solo “subir archivos”: también implica configurar, mantener y asegurar el servidor y, en muchos casos, automatizar el proceso con Git y pipelines de integración continua (CI/CD).
En este documento aprenderemos los pasos básicos para poner en marcha un servidor remoto y desplegar una aplicación web real, partiendo de la opción más versátil y cercana a la realidad profesional: un VPS con Linux y Node.js.
El despliegue en un servidor remoto es el proceso que permite que una aplicación web deje de estar limitada al ordenador del desarrollador (localhost) y pase a ser accesible desde cualquier lugar del mundo.
Antes de poder desplegar, necesitamos preparar algunos elementos básicos:
Servidor o alojamiento público
Debemos disponer de una ubicación en Internet donde instalar la aplicación. Puede ser un servidor compartido, un VPS, un servidor dedicado o incluso un servicio en la nube (AWS, Azure, Vercel, etc.). Una vez contratado, en estos servidores es habitual usar tecnologías modernas como Nginx para servir aplicaciones, o Docker para empaquetarlas y moverlas fácilmente entre entornos.
En este módulo trabajaremos con un VPS, porque combina flexibilidad, bajo coste y un entorno realista de aprendizaje.
Mecanismo de acceso y transferencia de archivos
Para administrar el servidor y subir nuestra aplicación necesitamos algún tipo de conexión remota:
Una vez que tenemos claro dónde vamos a desplegar y cómo nos conectaremos al servidor, podremos comenzar a instalar los servicios necesarios (servidor web, base de datos, etc.) y subir nuestro proyecto.
A la hora de elegir dónde desplegar una aplicación web, existen varias opciones que varían en precio, flexibilidad y nivel de control. En la mayoría de los casos, se recurre a empresas especializadas en alojamiento que se encargan del mantenimiento de la infraestructura, la seguridad y la disponibilidad del servicio, garantizada mediante un acuerdo de nivel de servicio (Service Level Agreement, SLA).
Un servidor dedicado es un equipo físico reservado en exclusiva para una empresa o proyecto. Puede estar en las instalaciones de la propia organización (con su propia IP pública y administración interna), o bien en un centro de datos gestionado por un proveedor.
La gran ventaja de este modelo es que ofrece el máximo rendimiento y seguridad, ya que no se comparten recursos con otros clientes. Sin embargo, su principal inconveniente es el coste elevado, que suele empezar en torno a los 100–110 € al mes para configuraciones modestas y puede superar fácilmente los 150–300 € mensuales en servidores más potentes, además de requerir conocimientos técnicos avanzados para administrarlo correctamente.
Entre los proveedores habituales se encuentran OVHcloud, IONOS o Acens.
El hosting compartido es la opción más sencilla y económica de alojamiento web, pensada para proyectos que requieren pocos recursos. Hablamos de aplicaciones o sitios con pocas bases de datos, escasa necesidad de almacenamiento y bajos requisitos de ancho de banda o conexiones simultáneas.
En este modelo varios clientes comparten un mismo servidor físico, lo que abarata costes pero impone limitaciones claras: el espacio en disco, el ancho de banda y el número de bases de datos disponibles son reducidos, y además suele restringirse el uso de ciertos lenguajes, siendo PHP el más habitual, normalmente acompañado de bases de datos MySQL o MariaDB.
En comparación con los servidores dedicados, este tipo de alojamiento presenta más problemas de seguridad. Al compartir recursos con otros usuarios, si uno de ellos tiene una vulnerabilidad en su sitio web, un atacante podría intentar aprovecharla para acceder a otros sitios dentro del mismo servidor.
En cuanto al precio, los planes más básicos pueden encontrarse hoy desde 1–3 € al mes, mientras que los servicios con mayores recursos y prestaciones suelen situarse en un rango de 5–10 € mensuales, aunque los planes más completos de hosting compartido pueden alcanzar fácilmente los 15–20 € según el proveedor.
Entre los proveedores habituales de este tipo de alojamiento encontramos IONOS o Hostinger.
Un VPS (Virtual Private Server) es una máquina virtual que simula el funcionamiento de un servidor dedicado, pero que en realidad ocupa una parte de un servidor físico compartido con otros clientes. Cada VPS dispone de su propio sistema operativo, procesadores virtuales, memoria RAM y almacenamiento asignados, lo que da la sensación de tener un servidor completo con gran libertad de configuración, pero con un coste mucho menor que el de un servidor dedicado.
La principal ventaja de esta opción es su equilibrio entre flexibilidad y coste: permite instalar cualquier software que necesitemos y administrar el servidor como si fuera propio, pero sin la elevada inversión de un servidor dedicado. El inconveniente es que, aunque más sencillo que un dedicado, sigue requiriendo conocimientos básicos de administración de sistemas para gestionarlo correctamente.
En cuanto al coste, los planes básicos de VPS en proveedores como OVHcloud pueden encontrarse desde 4–7 € al mes, mientras que configuraciones más potentes con más RAM, CPU y almacenamiento suelen situarse en un rango de 15–30 € mensuales.
Entre los proveedores habituales de este tipo de servicio encontramos OVHcloud, IONOS o Hostalia.
Por su versatilidad, en este tema nos basaremos en la opción del VPS en OVHcloud, aunque los pasos a seguir serían muy similares con cualquier otra empresa de hosting.
En este apartado explicaremos los pasos a seguir para contratar un VPS básico con la empresa OVHcloud, y veremos qué características ofrece este tipo de servicio. Para comenzar, debemos acceder a la web de la empresa. Aunque en el módulo trabajaremos con OVHcloud, los pasos a seguir en otros proveedores son muy similares. Como vamos a contratar un producto, deberemos registrarnos desde el Área de cliente en la parte superior, eligiendo después la opción de Crear una cuenta. Si ya somos clientes, podemos loguearnos desde esta misma sección de Área de cliente.
Para elegir el VPS a contratar, vamos a la sección Bare Metal y elegir Contratar. Allí podremos elegir Servidores privados virtuales y, entre ellos, la opción que más se ajuste a nuestras necesidades.
Veremos los distintos planes de VPS ofertados. En nuestro caso elegiremos la opción más básica y económica. Si hacemos clic en el botón correspondiente de Configurar, se mostrarán las opciones para configurar nuestra instancia de VPS.
Nos pedirá que especifiquemos el período de compromiso y algunas opciones más, como la localización de nuestro VPS (Europa, si es posible). Permite elegir qué distribución de sistema operativo preinstalar. Podemos elegir entre distintas, como Linux Debian, CentOS, Ubuntu… En nuestro caso, utilizaremos una distribución Debian con la aplicación Docker instalada.
Una vez completado el registro, y pasado un tiempo, recibiremos un e-mail de confirmación con los datos para acceder al VPS. A través del área de cliente de la página web, al que se accede con el usuario y contraseña que indicamos al registrarnos, podremos gestionar algunos aspectos: reinstalar el VPS, ampliar sus capacidades, asociar un nombre de dominio, etc.
Inicialmente se asignará un nombre de dominio con un código aleatorio con el patrón vps-XXXXXX.vps.ovh.net, siendo XXXXXX el código que se nos haya asignado. Podemos, además, contratar otros nombres de dominio y asociarlos a nuestro VPS, como veremos a continuación.
En la sección de Inicio podemos consultar, entre otras cosas, qué dirección IP se nos ha asignado (IPv4 e IPv6), el nombre del VPS, y en la parte izquierda hay una serie de opciones para, por ejemplo, reiniciar el servidor, o reinstalarlo de nuevo (en el caso de que alguna instalación haya resultado defectuosa y necesitemos volver a empezar, por ejemplo), usando los botones de puntos suspensivos (…) de algunas opciones.
Un paso habitual si vamos a desarrollar una aplicación web con cierta visibilidad es contratar un nombre de dominio asociado, de forma que podamos acceder a la aplicación con dicho nombre de dominio.
Desde la propia plataforma de OVH podemos contratar el dominio, con diferentes extensiones (.es, .com, .net, .org, .eu…). Podemos, no obstante, utilizar el nombre de dominio vps-XXXXXX.vps.ovh.net que nos han asignado, para hacer webs de uso privado o restringido. También podemos contratar un dominio .ovh si buscamos un precio económico. Estos dominios se suelen ofrecer por entre 1 y 3 euros al año, aproximadamente.
Desde la sección de Web Cloud en nuestra área de clientes podemos contratar el dominio.
Buscaremos primero el dominio que queremos comprar (por ejemplo, maycalle.ovh), y la plataforma nos informará de si está disponible y su precio anual. Una vez seleccionado el dominio en cuestión, los siguientes pasos son:
Cuando ya tengamos contratado el dominio con las opciones que hayamos elegido, debemos asociar el dominio al VPS. En la sección Web Cloud de nuestra área de clientes existe una subsección Dominios, donde podemos ver los dominios que tenemos contratados. Haciendo clic en uno de ellos veremos su configuración actual.
En la pestaña de Redirección veremos el dominio con la IP actualmente asignada. Dicha IP corresponde a una página de bienvenida por defecto de OVH. Hacemos clic en el botón de configuración a la derecha de la IP, y elegimos modificar registro. Asignamos la que tenemos asignada a nuestro VPS.
Además, debemos ir a la sección Zona DNS y modificar los registros A (Address Record) para que nuestro dominio apunte a la IP de nuestro VPS.
Pasados unos días tendremos disponible el dominio (de no ser así, deberemos contactar con OVH a través del soporte del panel de cliente para que lo refresquen). Podemos comprobarlo haciendo ping a dicho dominio, y viendo que la IP a la que intenta conectar corresponde con la nuestra.
ping maycalle.ovh
PING maycalle.ovh (92.222.22.170): 56 data bytes...
NOTA: si pasadas 24 o 48 horas seguimos sin tener asociada la IP a nuestro dominio, siguiendo la documentación oficial de OVH, debemos acudir a la misma sección de dominios vista antes, pero en lugar de ir a Redirección, debemos ir a la sección Zona DNS, y hacer clic en el botón Editar en modo texto de la parte derecha. Aparecerá un cuadro para editar la configuración de DNS manualmente, pero basta con que enviemos esta configuración sin más para solicitar que se propague.
Añadir subdominios
Si queremos añadir subdominios de uno contratado (por ejemplo, pruebas.maycalle.ovh), bastaría con acceder a este mismo panel de redirecciones y pulsar el botón de Crear una redirección en la parte derecha. Pondremos el nombre del subdominio:
Después indicaremos a qué lo vamos a redirigir (podemos redirigir a una web, o a un servidor). En este caso, redirigiríamos a nuestro servidor VPS:
Después, elegimos el método de redirección (por IP), y finalmente especificamos la dirección IP, que será la que se nos ha asignado para el VPS. Tras este paso, confirmaremos los datos y quedará el subdominio registrado en las redirecciones.
Existen diferentes formas de acceder al VPS para subir archivos, descargarlos o instalar software, entre otras cosas. Analizaremos aquí algunas de las más habituales y cómodas.
El protocolo SSH (Secure Shell) permite conectarnos de forma segura y cifrada a nuestro servidor. A través de SSH podremos ejecutar comandos en el servidor, instalar programas, modificar configuraciones o consultar registros, como si trabajásemos directamente en el propio servidor.
Una forma rudimentaria, pero útil, de acceder al servidor, es a través de un terminal por SSH (Secure Shell). Para ello, tenemos que abrir la terminal del sistema operativo y escribir el siguiente comando, indicando el nombre del VPS que nos dieron en el correo de confirmación.
ssh debian@vps-xxxxxxxx.vps.ovh.net
En el caso de tener un dominio contratado y ya enlazado con el VPS (por ejemplo, maycalle.ovh), podemos conectar así:
ssh debian@maycalle.ovh
Observa que se antepone el usuario a la dirección del VPS, separados por una arroba.
La primera vez que te conectes, el cliente SSH (tu ordenador) te preguntará si confías en la huella digital (fingerprint) del servidor. Es una medida de seguridad para evitar ataques de suplantación (man-in-the-middle). La huella digital del servidor identifica de forma única a tu VPS. Si algún día vuelves a conectarte y SSH te avisa de que la clave ha cambiado, eso podría indicar un problema de seguridad o una reinstalación del servidor.
Escribe yes y pulsa Enter. SSH guardará la clave del servidor en tu equipo (en el archivo C:\Users\<tu_usuario>\.ssh\known_hosts) y ya no volverá a preguntar la próxima vez que conectes.
A continuación, te pedirá la contraseña del usuario root (la que recibiste por correo al contratar el VPS). Al escribirla no se mostrarán caracteres en pantalla, pero se está introduciendo correctamente. Pulsa Enter para acceder. Una vez dentro, y desde el terminal, podremos instalar el software que necesitemos (servidores web, servidores de bases de datos, etc), y también detener o reiniciar estos servicios, como veremos más adelante.
También es posible utilizar algún cliente SSH que recuerde los datos de la conexión para no tenerlos que indicar cada vez. En el caso de Windows y Linux, podemos utilizar OpenSSH, por ejemplo. En el caso específico de Windows disponemos de Solar Putty, que permite, entre otras cosas, tener varias pestañas de terminal abiertas. En lo que respecta a sistemas Mac, podemos emplear la herramienta Termius, por ejemplo. La principal ventaja de estas herramientas es simplemente el recordar los datos de la conexión para no tenerlos que poner cada vez, pero podemos conectar por SSH con un simple terminal del sistema operativo.
Aquí vemos un ejemplo con SolarPutty. Pulsando en el botón de New Session configuramos las credenciales de acceso según las que nos haya facilitado la plataforma:
Aunque podemos acceder al servidor introduciendo la contraseña del usuario debian, una forma segura y profesional de hacerlo es mediante autenticación con clave SSH. Este método usa un par de claves (una pública y una privada) que permite conectarse sin necesidad de escribir contraseñas, evitando ataques por fuerza bruta.
Cuando conectas, el servidor verifica que tu clave privada coincide con su clave pública asociada, y te permite entrar automáticamente.
Paso 1. Crear tu clave SSH (Windows):
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com", donde -t ed25519 indica el tipo de encriptación, y -C se usa para añadir un comentario asociado a la clave, que en este caso es el correo electrónico porque suele ser habitual, a modo identificativo. Verás algo como esto:Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\TuUsuario/.ssh/id_ed25519):
Enter para aceptar la ruta por defecto. Después te pedirá una frase de contraseña opcional (passphrase) para proteger tu clave privada.
id_ed25519 queda cifrado. Aunque alguien copie tu clave privada, no podrá usarla sin esa passphrase. Tendrás que introducirla cuando uses la clave (o usar un agente SSH para recordarla).Enter passphrase (empty for no passphrase):
C:\Users\<tu_usuario>\.ssh\:
dir ~/.sshPaso 2. Copiar la clave pública al VPS:
Debemos copiar el contenido del archivo id_ed25519.pub dentro de /home/debian/.ssh/authorized_keys en el servidor.
Podemos hacerlo de dos formas:
type "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh debian@vps-xxxxxxxx.vps.ovh.net "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Manual:
id_ed25519.pub en tu PC y copia toda la línea.mkdir -p ~/.sshnano ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysPaso 3. Conectarse al VPS sin contraseña
Una vez copiada la clave, ya puedes acceder sin escribir la contraseña. SSH usará tu clave privada automáticamente y no pedirá la contraseña.
ssh debian@vps-xxxxxxxx.vps.ovh.net
Paso 4. Desactivar el acceso por contraseña (opcional)
Una vez verificado que la conexión con clave funciona correctamente, puedes desactivar el acceso por contraseña para reforzar la seguridad del VPS.
nano /etc/ssh/sshd_configPasswordAuthentication nosudo systemctl restart sshA partir de ese momento, solo se podrá acceder con clave SSH.
NOTA: Si accedemos al mismo VPS desde varios equipos (por ejemplo, el ordenador de clase y el portátil personal), debemos repetir este proceso en cada uno. El VPS almacenará todas las claves públicas autorizadas, una por línea, en el archivo
/home/debian/.ssh/authorized_keys.
Una de las formas más cómodas y profesionales de trabajar con tu VPS es mediante Visual Studio Code y su extensión Remote - SSH. Esta opción permite conectarte al servidor y editar, compilar o desplegar código directamente en el VPS, sin tener que subir archivos manualmente por FTP o similares. Es la forma de trabajo más habitual en entornos de desarrollo web y en equipos DevOps.
Como paso previo, debemos asegurarnos de que el acceso SSH está bien configurado y funcionando desde la terminal (como se explicó en el apartado 4.2). De lo contrario, la conexión tampoco funcionará desde VS Code.
Para instalar la extensión, accedemos al apartado de extensiones (Ctrl+Shift+X, o Cmd+Shift+X en Mac) y buscamos Remote - SSH (de Microsoft), y la instalamos. Ahora debemos configurar el acceso SSH en VS Code. Se recomienda crear una configuración SSH permanente, que deberá ser C:\Users\<tu_usuario>\.ssh\config. Lo creamos y añadimos esta configuración:
Host vps-ovh
HostName vps-xxxxxxxx.vps.ovh.net
User debian
IdentityFile C:\Users\<tu_usuario>\.ssh\id_ed25519
AddKeysToAgent yes
ForwardAgent no
Ahora podrás conectar con solo escribir ssh vps-ovh desde la terminal o seleccionarlo desde VS Code.
Una vez conectado, puedes abrir carpetas del servidor (File → Open Folder), usar la terminal integrada (Ctrl+ñ) que ejecuta comandos en el VPS, o instalar extensiones (Prettier, ESLint…) directamente en el servidor remoto. Los cambios se guardan en el VPS, no en tu equipo local.
Ejercicio 1. Acceso inicial y configuración segura del VPS
Accede al VPS de OVHCloud y déjalo configurado para trabajar de forma segura durante el resto del curso: acceso sin contraseña y conexión desde VS Code.
Sigue los siguientes pasos:
- Accede al VPS como debian y verifica que puedes ejecutar comandos básicos (ls, apt update)
- Configura el acceso por clave SSH
- Genera un par de claves SSH
- Copia tu clave pública al VPS para el usuario nuevo
- Asegúrate de poder acceder sin escribir la contraseña
- (Opcional) Bloquea el acceso por contraseña
- Configura VSCode para trabajar con el VPS
- Instala la extensión
Remote - SSHen VSCode- Crea o edita
C:\Users\<tu_usuario>\.ssh\configcomo se explica en los apuntes (apartado 4.2)- Conéctate desde VSCode y abre
/var/www- Crea un archivo
prueba.txty verifica su existencia en la terminal remota
Ahora que ya hemos visto distintos mecanismos para acceder a nuestro VPS y gestionar las carpetas y comandos que necesitemos, en este apartado veremos algunos mecanismos que nos permitirán subir archivos (y, en algunos casos, también descargarlos).
Si tenemos abierta una sesión SSH, podemos emplear la herramienta git para descargar aplicaciones que tengamos subidas a algún repositorio tipo GitHub, BitBucket o similar. Para ello, basta con que:
git, si no lo hemos hecho ya:sudo apt install git
git config --global user.email tu_email@dominio.com
git config --global user.name tu_nick_en_github
git clone, seguida de la URL del repositorio a clonar:git clone url_repositorio_git
NOTA: se creará una subcarpeta con el nombre del repositorio en cuestión.
git pull, desde la carpeta del proyecto en sí:git pull
Ejercicio 2:
Instala git en tu VPS y configúralo con tus credenciales
Si no tenemos ningún repositorio remoto disponible, podemos utilizar VS Code para conectar un repositorio local con un repositorio remoto. Este proceso implica los siguientes pasos:
git init en la terminal.
git add en el terminal.
git commit -m "mensaje" en el terminal.git remote add origin URL_DEL_REPOSITORIO).git push, enviando tus cambios locales a la rama remota que acabas de crear.README.md con una breve descripción inicial. Por ejemplo:
Para cualquier nueva modificación que se realice en el proyecto local, es importante seguir un proceso sistemático para asegurarse de que los cambios se registren y se sincronicen correctamente con el repositorio remoto:
Otra vía de acceso, aprovechando la conexión SSH citada anteriormente, consiste en utilizar un cliente gráfico que soporte SFTP (SSH File Transfer Protocol). SFTP utiliza la sesión SSH y por tanto cifra credenciales y datos: es seguro siempre que uses SFTP (no FTP) y no te conectes como root.
Un cliente SFTP permite ver de forma gráfica el sistema de archivos remoto. De esta forma podemos navegar hasta cualquier carpeta y subir o descargar archivos. Algunos cliente habituales son: FileZilla (multiplataforma, web oficial), WinSCP (Windows) o Cyberduck (macOS/Windows). En nuestro ejemplo usaremos FileZilla:
Desde el gestor de sitios de FileZilla (botón de la esquina superior izquierda) podemos configurar una nueva conexión. Crea una nueva entrada, con los siguientes parámetros:
id_ed25519, que se habrá generado siguiendo los pasos del apartado 4.2En caso de no haber configurado las claves SSH, podemos conectar con usuario y contraseña. En cualquier caso, al conectar veremos en el panel derecho el sistema de archivos del servidor, y en el izquierdo el nuestro local. De esta forma es sencillo subir y descargar archivos.