Instalación de Code-Server en un VPS: VS Code en el navegador, SSL y seguridad
TL;DR
En esta guía detallada, configuraremos paso a paso Code-Server en su VPS, proporcionándole un entorno de desarrollo completo de Visual Studio Code directamente en el navegador. Aprenderá cómo asegurar la conexión con SSL/TLS a través de Caddy, configurar medidas básicas de protección del servidor y automatizar las copias de seguridad. Esto le permitirá trabajar en proyectos desde cualquier parte del mundo, utilizando la potencia de su servidor remoto.
- Instalación de Code-Server en Ubuntu 24.04 LTS.
- Configuración del servidor web Caddy para proxy y obtención automática de certificados SSL de Let's Encrypt.
- Medidas de seguridad básicas: firewall UFW, Fail2Ban, autenticación por claves SSH.
- Provisión de acceso remoto a su IDE a través de un nombre de dominio y HTTPS.
- Recomendaciones para la elección de la configuración del VPS y la estrategia de copias de seguridad.
Qué configuramos y por qué
En este tutorial, nos ocuparemos de la instalación y configuración de Code-Server en su propio VPS. Code-Server es una herramienta potente que le permite ejecutar Visual Studio Code en un servidor remoto y acceder a él a través de un navegador web. Imagine que tiene un IDE completo, accesible desde cualquier dispositivo, ya sea un portátil, una tableta o incluso un smartphone, sin necesidad de instalar nada localmente.
Al final, obtendrá un entorno de desarrollo completamente funcional y seguro, que siempre estará disponible, siempre será el mismo, sin importar dónde se encuentre. Todos sus proyectos, extensiones, configuraciones y el terminal residirán en el servidor remoto, lo que garantiza consistencia y gestión centralizada.
¿Por qué Code-Server en un VPS?
Existen varias alternativas para el desarrollo remoto o los IDE en la nube:
- VS Code local con SSH Remote: Una excelente opción si siempre tiene un ordenador local potente. Sin embargo, lo ata a una máquina específica y requiere la instalación de VS Code en cada dispositivo.
- IDE en la nube (Gitpod, GitHub Codespaces, AWS Cloud9): Estos servicios proporcionan entornos de desarrollo listos para usar en la nube. Son convenientes, pero pueden ser más caros, tienen sus limitaciones y ofrecen menos control sobre la infraestructura. También depende de su política de precios y disponibilidad.
- Code-Server autohospedado en un VPS: Este enfoque combina la flexibilidad de las soluciones en la nube con el control total sobre su infraestructura. Usted paga solo por el VPS, puede configurar el servidor según sus necesidades, instalar cualquier herramienta y extensión, y controlar completamente la seguridad de los datos. Es la opción ideal para desarrolladores, fundadores en solitario, criptoentusiastas y todos aquellos que valoran la privacidad y la independencia.
Elegir Code-Server en un VPS le permite ser dueño de su entorno de desarrollo, optimizar costos y tener confianza en la seguridad de sus datos, lo cual es especialmente importante para proyectos confidenciales.
Qué configuración de VPS se necesita para esta tarea
La elección de la configuración correcta del VPS es crucial para un trabajo cómodo con Code-Server. Los requisitos mínimos dependen de la complejidad de sus proyectos, la cantidad de archivos abiertos simultáneamente, las extensiones utilizadas y los compiladores.
Requisitos mínimos para un solo usuario y proyectos pequeños:
- CPU: 2 vCPU. Esto será suficiente para la mayoría de las tareas, incluyendo la compilación de proyectos pequeños y la ejecución de servicios básicos.
- RAM: 2-4 GB. Code-Server por sí mismo consume alrededor de 500 MB, además cada extensión abierta, terminal y servidor de lenguaje añaden carga. Para un trabajo cómodo con JavaScript, Python o Go, 4 GB serán óptimos.
- Disco: 40-60 GB NVMe SSD. El SSD acelera significativamente las operaciones de lectura/escritura, lo cual es importante para la carga de proyectos, la instalación de dependencias y el trabajo con archivos. Un NVMe SSD garantizará el mejor rendimiento.
- Red: 100 Mbit/s o 1 Gbit/s Uplink. Una alta velocidad de red es importante para la carga rápida de las páginas del IDE en el navegador y para trabajar con repositorios remotos.
Plan de VPS recomendado para un solo usuario y proyectos medianos (válido para 2026):
Para un trabajo más cómodo, especialmente si planea ejecutar contenedores Docker, bases de datos o procesos que consumen más recursos en paralelo con Code-Server, considere la siguiente configuración:
- CPU: 4 vCPU
- RAM: 8 GB
- Disco: 80-160 GB NVMe SSD
- Red: 1 Gbit/s Uplink
Un VPS con las características indicadas proporcionará suficiente margen de rendimiento para la mayoría de los escenarios de desarrollo.
¿Cuándo se necesita un servidor dedicado?
Un servidor dedicado puede ser necesario si:
- Planea usar Code-Server para un equipo grande (más de 10 personas), donde cada desarrollador tendrá su propio entorno aislado.
- Sus proyectos son muy intensivos en recursos (por ejemplo, compilación del kernel de Linux, trabajo con big data, aprendizaje automático) y requieren el máximo rendimiento de CPU y RAM.
- Necesita un aislamiento completo del hardware y un rendimiento predecible sin "vecindad" con otros usuarios.
En estos casos, un servidor dedicado adecuado puede ser una solución más económica y productiva a largo plazo.
Ubicación del VPS: qué influye
Elija una ubicación de VPS que esté geográficamente más cerca de usted o de su equipo. Esto minimizará la latencia al trabajar con el IDE en el navegador, haciendo que la experiencia de uso de Code-Server sea más fluida y receptiva. Para la mayoría de los usuarios europeos, un VPS en Europa Occidental o Central será la elección óptima.
Preparación del servidor
Antes de instalar Code-Server, es necesario realizar una configuración básica de su VPS para garantizar la seguridad y estabilidad. Utilizaremos Ubuntu Server 24.04 LTS (Noble Numbat), ya que es una versión actual y compatible para el año 2026.
1. Conexión por SSH y creación de un nuevo usuario
Trabaje siempre como un usuario limitado con permisos sudo, no como root. Esto reduce los riesgos de seguridad.
# Conéctese como root (o el usuario proporcionado por el proveedor)
ssh root@ВАШ_IP_АДРЕС
# Cree un nuevo usuario (reemplace 'suusuario' con el nombre deseado)
adduser suusuario
# Agregue el usuario al grupo sudo
usermod -aG sudo suusuario
# Cambie al nuevo usuario
su - suusuario
Ahora trabajará como el nuevo usuario.
2. Configuración de la autenticación por claves SSH
El uso de claves SSH es mucho más seguro que las contraseñas. Si aún no tiene un par de claves, genérelas en su máquina local:
# En la máquina local
ssh-keygen -t ed25519 -C "[email protected]"
Luego, copie la clave pública al servidor:
# En la máquina local
ssh-copy-id suusuario@ВАШ_IP_АДРЕС
Después de esto, intente conectarse usando la nueva clave. Luego, desactive la autenticación por contraseña para aumentar la seguridad. Edite el archivo /etc/ssh/sshd_config:
# En el servidor
sudo nano /etc/ssh/sshd_config
Busque y modifique las siguientes líneas (si no existen, agréguelas):
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
Guarde el archivo (Ctrl+O, Enter, Ctrl+X) y reinicie el servicio SSH:
sudo systemctl restart sshd
IMPORTANTE: ¡Antes de desconectarse del servidor, asegúrese de poder iniciar sesión con la clave SSH! Si no, corre el riesgo de perder el acceso.
3. Configuración del firewall UFW
UFW (Uncomplicated Firewall) es una forma sencilla de gestionar las reglas del firewall.
# Permitir SSH (puerto 22 por defecto)
sudo ufw allow OpenSSH
# Permitir HTTP (puerto 80) y HTTPS (puerto 443) para Caddy
sudo ufw allow http
sudo ufw allow https
# Habilitar el firewall
sudo ufw enable
# Confirme 'y'
Verifique el estado del firewall:
sudo ufw status verbose
4. Instalación y configuración de Fail2Ban
Fail2Ban escanea los registros en busca de actividades sospechosas (por ejemplo, múltiples intentos fallidos de inicio de sesión SSH) y bloquea temporalmente las direcciones IP de los infractores.
# Instalación de Fail2Ban
sudo apt install fail2ban -y
# Creación de una copia de la configuración para modificaciones
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Edición de jail.local para la configuración
sudo nano /etc/fail2ban/jail.local
En el archivo jail.local, puede configurar parámetros como bantime (tiempo de bloqueo), findtime (período para buscar intentos) y maxretry (número máximo de intentos). Para la mayoría de los casos, la configuración predeterminada es suficiente, pero puede aumentar bantime, por ejemplo, a 1d (1 día).
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 1d # Bloquear por 1 día
maxretry = 3 # Bloquear después de 3 intentos fallidos
Guarde el archivo y reinicie Fail2Ban:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
Verifique el estado de Fail2Ban:
sudo fail2ban-client status sshd
5. Actualización del sistema
Actualice siempre el sistema a los últimos paquetes de seguridad.
# Actualización de la lista de paquetes
sudo apt update
# Actualización de los paquetes instalados
sudo apt upgrade -y
# Eliminación de paquetes innecesarios (opcional)
sudo apt autoremove -y
Ahora su servidor está listo para la instalación de Code-Server y Caddy.
Instalación de software — paso a paso
En este paso, instalaremos Code-Server y Caddy en nuestro VPS. Utilizaremos las versiones actuales disponibles en 2026. Para Code-Server, será la versión 4.20.0, y para Caddy, la 2.7.5.
1. Instalación de Code-Server
La forma más sencilla de instalar Code-Server es utilizar el script de instalación oficial, que se encargará de las dependencias y la configuración del servicio Systemd.
# Actualización del índice de paquetes e instalación de utilidades necesarias
sudo apt update && sudo apt install -y curl wget git
# Descarga y ejecución del script de instalación oficial de Code-Server (versión 4.20.0)
# Este comando descargará e instalará Code-Server, y también creará un servicio Systemd
curl -fsSL https://code-server.dev/install.sh | sh -s -- --version 4.20.0
Una vez completada la instalación, Code-Server se configurará como un servicio del sistema. Puede verificar su estado:
# Verificación del estado del servicio Code-Server
systemctl status code-server@вашпользователь
Si el servicio no está en ejecución o muestra un error, es posible que deba reiniciarlo o verificar los registros. Por defecto, Code-Server se ejecuta en el puerto 8080.
2. Instalación de Caddy Web Server
Caddy es un servidor web potente y fácil de usar con soporte HTTPS automático (Let's Encrypt). Es ideal para actuar como proxy de Code-Server.
# Instalación de los paquetes necesarios para añadir el repositorio de Caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
# Añadiendo la clave GPG de Caddy
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# Añadiendo el repositorio de Caddy a la lista de fuentes
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# Actualización del índice de paquetes e instalación de Caddy (versión 2.7.5)
sudo apt update
sudo apt install caddy -y
Después de la instalación, Caddy también se configurará como un servicio del sistema y se iniciará automáticamente. Puede verificar su estado de la siguiente manera:
# Verificación del estado del servicio Caddy
systemctl status caddy
3. Configuración del nombre de dominio
Para que Caddy funcione con HTTPS automático, necesitará un nombre de dominio. Registre un dominio si no tiene uno y cree un registro A que apunte a la dirección IP de su VPS. Por ejemplo: code.вашдомен.com -> SU_DIRECCIÓN_IP.
Asegúrese de que el registro DNS se haya propagado por la red antes de pasar al siguiente paso (esto puede tardar desde unos minutos hasta varias horas).
4. Configuración del firewall para Caddy
Ya permitimos HTTP y HTTPS, pero asegúrese de que estén activos.
# Verificación del estado de UFW
sudo ufw status verbose
Debería ver reglas para los puertos 80 y 443 (HTTP y HTTPS) en estado ALLOW.