Visual Studio Code se ha convertido en uno de los IDE más populares para la codificación. Tiene compatibilidad integrada con Git y Docker, un depurador de código, autocompletado de código, la capacidad de trabajar con archivos remotos y admite varios complementos.
Con todo moviéndose a la nube, tener acceso al IDE de su elección desde cualquier lugar es perfecto para el desarrollo moderno. Cloud IDE permite la colaboración en tiempo real entre desarrolladores, lo que mejora la productividad. coder-server es una aplicación que le permite ejecutar Visual Studio Code desde un servidor remoto y lo hace accesible a través de cualquier navegador.
Este tutorial le enseñará cómo instalar Visual Studio Code IDE utilizando la aplicación de servidor de código en su servidor Rocky Linux 8. También lo expondrá a través de un dominio público junto con soporte SSL.
Requisitos
-
Un servidor que ejecuta Rocky Linux con al menos 2 GB de RAM y 2 núcleos de CPU.
-
Un usuario no root con privilegios sudo.
-
Un dominio registrado y apuntado al servidor.
-
Nginx instalado en su servidor.
-
Asegúrese 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.
Compruebe si el cortafuegos se está ejecutando.
$ sudo firewall-cmd --state
El siguiente resultado demuestra que el cortafuegos se está ejecutando.
running
Verifique los servicios/puertos permitidos actualmente.
$ sudo firewall-cmd --permanent --list-services
Debería mostrar el siguiente resultado.
dhcpv6-client mdns ssh
Abra el puerto 8080 para el servidor de códigos.
$ sudo firewall-cmd --permanent --add-port=8080/tcp
Permitir puertos HTTP y HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Vuelva a comprobar el estado del cortafuegos.
$ sudo firewall-cmd --permanent --list-all
Debería ver un resultado 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:
Vuelva a cargar el cortafuegos para habilitar los cambios.
$ sudo systemctl reload firewalld
Paso 2 - Instalar código-servidor
code-server viene con un script de instalación que puede detectar la versión de Linux e instalar el binario apropiado para su servidor. Puede probar el script de instalación para comprobar si funcionará o no en su servidor.
Ejecute 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
Ejecute la configuración después de la prueba exitosa.
$ curl -fsSL https://code-server.dev/install.sh | sh
El script de instalación puede solicitar su contraseña de sudo.
Habilite el servicio de servidor de códigos.
$ sudo systemctl enable [email protected]$USER
Si desea actualizar su instancia de Code-Server, repita el proceso de instalación. code-server conservará sus archivos y configuraciones.
Paso 3 - Configurar código-servidor
code-server almacena su archivo de configuración en ~/.config/code-server/config.yaml
. Ábralo para editarlo.
$ sudo nano ~/.config/code-server/config.yaml
Estos son los ajustes predeterminados establecidos durante la instalación.
bind-addr: 127.0.0.1:8080
auth: password
password: a4768b3439e5e93b5d62489b
cert: false
El archivo de configuración predeterminado permite el siguiente comportamiento:
- Escuche en el puerto IP loopback 8080
- Habilita la autorización de contraseña con una contraseña generada aleatoriamente
- No utiliza TLS
Puede cambiar la contraseña cambiando su valor en el archivo.
Si desea almacenar una versión cifrada de la contraseña, primero debe instalar npm. Una vez instalado, ejecute el siguiente comando para establecer la contraseña cifrada.
$ echo -n "thisismypassword" | npx argon2-cli -e $argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4
Obtendrá el valor hash en su terminal. Cópielo y péguelo en el archivo de configuración.
auth: password hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4"
Asegúrese de envolver la contraseña cifrada con comillas. Si desea deshabilitar la telemetría, agregue la siguiente línea en el archivo.
disable-telemetry: false
Hay otras opciones que puede definir en el archivo. Para verificar todas las otras opciones que puede agregar, use el siguiente comando para enumerar todas las banderas.
$ code-server --help
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.
Paso 4:instalar SSL
Para instalar un certificado SSL usando Let's Encrypt, necesitamos descargar la herramienta Certbot. Pero primero, necesitamos instalar el repositorio EPEL.
Ejecute los siguientes comandos para instalar Certbot.
$ sudo dnf install epel-release $ sudo dnf install certbot
Genere 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 /etc/letsencrypt/live/code-server.example.com
directorio en su servidor. Asegúrese de reemplazar [email protected]
con tu correo electrónico real.
Generar un grupo Diffie-Hellman certificado.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Cree un directorio webroot de desafío para la renovación automática de Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew
y ábralo para editarlo.
$ sudo nano /etc/cron.daily/certbot-renew
Pegue el siguiente código.
#!/bin/sh certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Cambie los permisos en el archivo de tareas para que sea ejecutable.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Paso 5:instalar y configurar Nginx
Cree y abra el /etc/yum.repos.d/nginx.repo
archivo 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
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Instale el servidor Nginx.
$ sudo dnf install nginx
Habilite el servicio Nginx.
$ sudo systemctl enable nginx
Cree un archivo de configuración para el servidor de códigos en /etc/nginx/conf.d
directorio.
$ sudo nano /etc/nginx/conf.d/code-server.conf
Pegue el siguiente código en él.
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; } }
Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.
Valide el archivo de configuración.
$ sudo nginx -t
Si obtiene el siguiente error, deberá editar el archivo /etc/nginx/nginx.conf
para agregar/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
Abra el archivo /etc/nginx/nginx.conf
para editar.
$ sudo nano /etc/nginx/nginx.conf
Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarde el archivo presionando Ctrl + X e ingresando Y Cuando se le solicite. Vuelva a validar Nginx.
Inicie el servidor Nginx.
$ sudo systemctl start nginx
Paso 6 - Usar código-servidor
Inicie el dominio https://code-server.example.com
en su navegador e ingrese la contraseña para autenticar la instalación de su servidor de códigos. Introduzca la contraseña del archivo de configuración.
code-server le pedirá la configuración del código VS la primera vez que lo inicie.
Elija un esquema de color, revise las secciones restantes y haga clic en Marcar como terminado cuando haya terminado.
Conclusión
Ahora tiene una instancia de Visual Studio Code instalada en su servidor Rocky Linux. Hay ciertas advertencias con esto en comparación con el Código VS oficial. Las extensiones disponibles no son las extensiones oficiales sino que se ofrecen desde el repositorio no oficial de Code-Server. Puede consultar sus documentos oficiales si desea instalar la extensión oficial. Tomará un poco de esfuerzo. Si tiene alguna pregunta, publíquela en los comentarios a continuación.