Cómo instalar el IDE de Visual Studio Code Cloud en Rocky Linux 8

Visual Studio Code se ha convertido en uno de los IDE más populares para la codificación. Tiene soporte integrado para Git y Docker, un depurador de código, autocompletado de código, la capacidad de trabajar con archivos remotos y soporta varios plugins.

Con el traslado de todo a la nube, tener acceso al IDE que elijas desde cualquier lugar es perfecto para el desarrollo actual. El IDE en la nube permite la colaboración en tiempo real entre desarrolladores, mejorando así la productividad.coder-server es una aplicación que te permite ejecutar Visual Studio Code desde un servidor remoto y lo hace accesible a través de cualquier navegador.

Este tutorial te enseñará a instalar el IDE de Visual Studio Code utilizando la aplicación coder-server en tu servidor Rocky Linux 8. También lo expondrás a través de un dominio público junto con el soporte SSL.

Requisitos previos

  1. Un servidor que ejecute Rocky Linux con al menos 2 GB de RAM y 2 núcleos de CPU.

  2. Un usuario no root con privilegios sudo.

  3. Un dominio registrado y apuntado al servidor.

  4. Nginx instalado en tu servidor.

  5. Asegúrate de que todo está actualizado.

    $ sudo dnf update
    

Paso 1 – Configurar el cortafuegos

El primer paso es configurar el cortafuegos. Rocky Linux viene con el cortafuegos Firewalld.

Comprueba si el cortafuegos se está ejecutando.

$ sudo firewall-cmd --state

La siguiente salida demuestra que el cortafuegos se está ejecutando.

running

Comprueba los servicios/puertos permitidos actualmente.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar la siguiente salida.

dhcpv6-client mdns ssh

Abre el puerto 8080 para el servidor de código.

$ sudo firewall-cmd --permanent --add-port=8080/tcp

Permite los puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vuelve a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --permanent --list-all

Deberías ver una salida similar.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Recarga el cortafuegos para activar los cambios.

$ sudo systemctl reload firewalld

Paso 2 – Instalar code-server

code-server viene con un script de instalación que puede detectar la versión de Linux e instalar el binario adecuado para tu servidor. Puedes probar el script de instalación para comprobar si funcionará o no en tu servidor.

Ejecuta el siguiente comando para realizar una ejecución en seco de la instalación.

$ curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
Rocky Linux 8.4 (Green Obsidian)
Installing v3.12.0 of the amd64 rpm package from GitHub.

+ mkdir -p ~/.cache/code-server
+ curl -#fL -o ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete -C - https://github.com/cdr/code-server/releases/download/v3.12.0/code-server-3.12.0-amd64.rpm
+ mv ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete ~/.cache/code-server/code-server-3.12.0-amd64.rpm
+ sudo rpm -i ~/.cache/code-server/code-server-3.12.0-amd64.rpm

rpm package has been installed.

To have systemd start code-server now and restart on boot:
  sudo systemctl enable --now [email protected]$USER
Or, if you don't want/need a background service you can run:
  code-server

Ejecuta la instalación después de la ejecución en seco con éxito.

$ curl -fsSL https://code-server.dev/install.sh | sh

Es posible que el script de instalación te pida tu contraseña sudo.

Activa el servicio de servidor de código.

$ sudo systemctl enable [email protected]$USER

Si quieres actualizar tu instancia de code-server, repite el proceso de instalación. code-server conservará tus archivos y configuraciones.

Paso 3 – Configurar code-server

code-server almacena su archivo de configuración en ~/.config/code-server/config.yaml. Ábrelo para editarlo.

$ sudo nano ~/.config/code-server/config.yaml

Aquí están los ajustes por defecto establecidos durante la instalación.

bind-addr: 127.0.0.1:8080
auth: password
password: a4768b3439e5e93b5d62489b
cert: false

El archivo de configuración por defecto permite el siguiente comportamiento

  • Escucha en el puerto IP loopback 8080
  • Activa la autorización por contraseña con una contraseña generada aleatoriamente
  • No utiliza TLS

Puedes cambiar la contraseña modificando su valor en el archivo.

Si quieres almacenar una versión con hash de la contraseña, debes instalar primero npm. Una vez instalado, ejecuta el siguiente comando para establecer la contraseña con hash.

$ echo -n "thisismypassword" | npx argon2-cli -e
$argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4

Obtendrás el valor hash en tu terminal. Cópialo y pégalo en el archivo de configuración.

auth: password
hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4"

Asegúrate de rodear la contraseña con comillas. Si quieres desactivar la Telemetría, añade la siguiente línea en el archivo.

disable-telemetry: false

Hay otras opciones que puedes definir en el archivo. Para comprobar todas las demás opciones que puedes añadir, utiliza el siguiente comando para listar todas las banderas.

$ code-server --help

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida una vez hayas terminado.

Paso 4 - Instalar SSL

Para instalar un certificado SSL con Let's Encrypt, tenemos que descargar la herramienta Certbot. Pero antes, tenemos que instalar el repositorio EPEL.

Ejecuta los siguientes comandos para instalar Certbot.

$ sudo dnf install epel-release
$ sudo dnf install certbot

Generar el certificado SSL.

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d code-server.example.com -m [email protected]

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/code-server.example.com de tu servidor. Asegúrate de sustituir [email protected] por tu correo electrónico real.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Crea un directorio webroot de desafío para la renovación automática de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crea un Cron Job para renovar el SSL. Se ejecutará cada día para comprobar el certificado y renovarlo si es necesario. Para ello, primero crea el archivo /etc/cron.daily/certbot-renew y ábrelo para editarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Pega el siguiente código.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.

Cambia los permisos del archivo de la tarea para que sea ejecutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Paso 5 - Instalar y configurar Nginx

Crea y abre el archivo /etc/yum.repos.d/nginx.repo para crear el repositorio oficial de Nginx.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Instala el servidor Nginx.

$ sudo dnf install nginx

Activa el servicio Nginx.

$ sudo systemctl enable nginx

Crea un archivo de configuración para el servidor de código en el directorio /etc/nginx/conf.d.

$ sudo nano /etc/nginx/conf.d/code-server.conf

Pega en él el siguiente código.

server {
    	listen 80; listen [::]:80;
	    server_name code-server.example.com;
    	return 301 https://$host$request_uri;
}

server {
        server_name code-server.example.com;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        access_log /var/log/nginx/code-server.access.log;
        error_log /var/log/nginx/code-server.error.log;

        ssl_certificate /etc/letsencrypt/live/code-server.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/code-server.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/code-server.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
 
	   location / {
	       proxy_pass http://localhost:8080/;
	       proxy_set_header Host $host;
	       proxy_set_header Upgrade $http_upgrade;
	       proxy_set_header Connection upgrade;
	       proxy_set_header Accept-Encoding gzip;
	   }
}

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Valida el archivo de configuración.

$ sudo nginx -t

Si obtienes el siguiente error, tendrás que editar el archivo /etc/nginx/nginx.conf para añadir/ajustar el tamaño de la variable server_names_hash_bucket_size.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf

Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida. Vuelve a validar Nginx.

Inicia el servidor Nginx.

$ sudo systemctl start nginx

Paso 6 - Utilizar el servidor de código

Inicia el dominio https://code-server.example.com en tu navegador, e introduce la contraseña para autentificar tu instalación de code-server. Introduce la contraseña del archivo de configuración.

Pregunta sobre la contraseña del servidor de código

code-server te pedirá la configuración de VS Code la primera vez que lo inicies.

Pantalla de configuración del servidor de código

Elige un esquema de colores, recorre las secciones restantes y haz clic en Marcar como Hecho cuando hayas terminado.

servidor de código Inicio

Conclusión

Ahora tienes una instancia de Visual Studio Code instalada en tu servidor Rocky Linux. Hay ciertas advertencias con esto en comparación con el VS Code oficial. Las extensiones disponibles no son las oficiales, sino que se ofrecen desde el repositorio no oficial de code-server. Puedes consultar su documentación oficial si quieres instalar la extensión oficial. Te costará un poco de esfuerzo. Si tienes alguna duda, publícala en los comentarios de abajo.

También te podría gustar...