Introducción

code-server es Microsoft Visual Studio Code en ejecución en un servidor remoto, y usted puede acceder a él de forma directa desde su navegador. Esto significa que puede usar varios dispositivos con diferentes sistemas operativos y tener siempre a mano un entorno de desarrollo uniforme.

A través de este tutorial, configurará la plataforma de IDE en la nube code-server en su equipo con Ubuntu 18.04 y la expondrá en su dominio, protegida con Let´s Encrypt. Para hallar una versión más detallada de este tutorial, consulte Cómo configurar la plataforma de IDE en la nube code-server en Ubuntu 18.04.

Requisitos previos

code-server illustration for: Requisitos previos
  • Un nombre de dominio registrado por completo para alojar code-server, orientado a su servidor. En este tutorial, se utilizará <^>code-server.your-domain<^>​​​ en todo momento. Puede adquirir un nombre de dominio en Namecheap, obtener uno gratuito en Freenom o utilizar un registrador de dominios que elija.
  • Un registro A con <^>your-domain<^> orientado a la dirección IP pública de su servidor.
  • Un registro A con www.<^>your-domain<^>​​​1​​​ orientado a la dirección IP pública de su servidor.

Paso 1: Instalar code-server

Cree el directorio para almacenar todos los datos para code-server:

				
					
mkdir ~/code-server

				
			

Diríjase a este:

				
					
cd ~/code-server

				
			

Visite la página de versiones de Github de code-server y seleccione la última compilación de Linux. Descárguela usando lo siguiente:

				
					
wget &lt;^&gt;https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Desempaque el archivo:

				
					
tar -xzvf &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Diríjase al directorio que contiene el ejecutable de code-server:

				
					
cd &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64&lt;^&gt;

				
			

Para acceder al ejecutable de code-server en su sistema, cópielo con lo siguiente:

				
					
sudo cp code-server /usr/local/bin

				
			

Cree una carpeta para que code-server almacene los datos del usuario:

				
					
sudo mkdir /var/lib/code-server

				
			

Cree un servicio systemd, code-server.service, en el directorio /lib/systemd/system:

				
					
sudo nano /lib/systemd/system/code-server.service

				
			

Añada las siguientes líneas:

				
					
[label /lib/systemd/system/code-server.service]

[Unit]

Description=code-server

After=nginx.service



[Service]

Type=simple

Environment=PASSWORD=&lt;^&gt;your_password&lt;^&gt;

ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

Restart=always



[Install]

WantedBy=multi-user.target

				
			
  • --host 127.0.0.1 lo vincula a localhost.
  • --user-data-dir /var/lib/code-server establece su directorio de datos de usuario.
  • --auth password especifica que debe autenticar a los visitantes con una contraseña.

Recuerde sustituir <^>your_password<^> por la contraseña que elija.

Guarde y cierre el archivo.

Inicie el servicio code-server:

				
					
sudo systemctl start code-server

				
			

Compruebe que se haya iniciado correctamente:

				
					
sudo systemctl status code-server

				
			

Verá un resultado similar al siguiente:

				
					
[secondary_label Output]

● code-server.service - code-server

   Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)

   Active: active (running) since Mon 2019-12-09 20:07:28 UTC; 4s ago

 Main PID: 5216 (code-server)

    Tasks: 23 (limit: 2362)

   CGroup: /system.slice/code-server.service

           ├─5216 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

           └─5240 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

...

				
			

Habilite el servicio code-server para que se inicie automáticamente después de un reinicio del servidor:

				
					
sudo systemctl enable code-server

				
			

Paso 2: Exponer code-server

Ahora, configurará Nginx como un proxy inverso para code-server.

Cree code-server.conf para almacenar la configuración para exponer code-server en su dominio:

				
					
sudo nano /etc/nginx/sites-available/code-server.conf

				
			

Añada las siguientes líneas para configurar el bloque de su servidor con las directivas necesarias:

				
					
[label /etc/nginx/sites-available/code-server.conf]

server {

	listen 80;

	listen [::]:80;



	server_name &lt;^&gt;code-server.your_domain&lt;^&gt;;



	location / {

		proxy_pass http://localhost:8080/;

		proxy_set_header Upgrade $http_upgrade;

		proxy_set_header Connection upgrade;

		proxy_set_header Accept-Encoding gzip;

	}

}

				
			

Sustituya <^>code-server.your_domain<^> por el dominio de su elección; luego guarde y cierre el archivo.

Para activar esta configuración del sitio, cree un enlace simbólico de la misma:

				
					
sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf

				
			

Pruebe la validez de la configuración:

				
					
sudo nginx -t

				
			

Verá el siguiente resultado:

				
					
[secondary_label Output]

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

				
			

Para que la configuración se aplique, reinicie Nginx:

				
					
sudo systemctl restart nginx

				
			

Paso 3: Proteger su dominio

Ahora, protegerá su dominio utilzando un certificado TLS de Let´s Encrypt.

Añada el repositorio de paquetes de Certbot a su servidor:

				
					
sudo add-apt-repository ppa:certbot/certbot

				
			

Instale Certbot y su complemento de Nginx:

				
					
sudo apt install python-certbot-nginx

				
			

Configure ufw para aceptar tráfico cifrado:

				
					
sudo ufw allow https

				
			

El resultado será lo siguiente:

				
					
[secondary_label Output]

Rule added

Rule added (v6)

				
			

Realice la carga de nuevo para que la configuración se aplique:

				
					
sudo ufw reload

				
			

El resultado será el siguiente:

				
					
[secondary_label Output]

Firewall reloaded

				
			

Diríjase a su dominio de code-server.

Introduzca su contraseña de code-server. Verá la interfaz expuesta en su dominio.

Para protegerla, instale un certificado TLS de Let´s Encrypt usando Certbot.

Solicite un certificado para su dominio con lo siguiente:

				
					
sudo certbot --nginx -d &lt;^&gt;code-server.your_domain&lt;^&gt;

				
			

Proporcione una dirección de correo electrónico para los avisos urgentes, acepte las Condiciones de servicio de la EFF y decida si todo el tráfico HTTP se redirecciona a HTTPS.

El resultado tendrá un aspecto similar a este:

				
					
[secondary_label Output]

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/privkey.pem

   Your cert will expire on ... To obtain a new or tweaked

   version of this certificate in the future, simply run certbot again

   with the "certonly" option. To non-interactively renew *all* of

   your certificates, run "certbot renew"

...

				
			

Así, Certbot generó con éxito certificados TLS y los aplicó en la configuración de Nginx para su dominio.

Conclusión

Ahora dispone de code-server, un IDE en la nube versátil, instalado en su servidor de Ubuntu 18.04, expuesto en su dominio y protegido con certificados de Let´s Encrypt. Para obtener más información, consulte la documentación de Visual Studio Code sobre características adicionales e instrucciones detalladas relacionadas con otros componentes de code-server.