Cómo configurar la plataforma de IDE en la nube de Eclipse Theia en Debian 10

El autor seleccionó la Free and Open Source Fund para recibir una donación como parte del programa Write for DOnations.

Introducción

Con el traslado de las herramientas de desarrollo a la nube, la adopción de plataformas de IDE (entorno de desarrollo integrado) en la nube se encuentra en expansión. Los IDE en la nube, a los cuales se puede acceder desde cualquier tipo de dispositivo moderno a través de los navegadores web, ofrecen numerosas ventajas para casos de colaboración en tiempo real. Trabajar en un IDE en la nube permite disponer de un entorno unificado de desarrollo y pruebas para usted y su equipo, a la vez que minimiza las incompatibilidades en la plataforma. Los IDE en la nube, a los que se puede acceder a través de los navegadores web, se encuentran disponibles en cualquier tipo de dispositivo moderno.

Eclipse Theia es un IDE en la nube extensible que se ejecuta en un servidor remoto y al que es posible acceder desde un navegador web. Desde el punto de vista visual, está diseñado para que luzca y se comporte de manera similar a Microsoft Visual Studio Code, lo cual significa que es compatible con muchos lenguajes de programación, tiene un diseño flexible y cuenta con una terminal integrada. Lo que diferencia a Eclipse Theia de otras plataformas de software de IDE en la nube es su extensibilidad; se puede modificar usando extensiones personalizadas, que le permiten crear un IDE en la nube adaptado a sus necesidades.

A través de este tutorial, implementará Eclipse Theia en su servidor de Debian 10 usando Docker Compose, una herramienta de orquestación de contenedores. Lo expondrá en su dominio usando nginx-proxy, un sistema automatizado para Docker que simplifica el proceso de configuración de Nginx a fin de que funcione como proxy inverso para un contenedor. También lo protegerá usando un certificado TLS de Let´s Encrypt gratuito, que proporcionará usando su complemento especializado. Al finalizar, dejará funcionando Eclipse Theia en su servidor de Debian 10 disponible a través de HTTPS y hará que solicite iniciar sesión a los usuarios.

Requisitos previos

  • Un servidor de Debian 10 con privilegios root y una cuenta secundaria no root. Puede configurarlo siguiendo nuestra Guía de configuración inicial para servidores de Debian 10. Para este tutorial, el usuario no root es sammy.
  • Docker instalado en su servidor. Siga el paso 1 y el *paso 2 *de Cómo instalar Docker en Debian 10. Para acceder a una introducción a Docker, consulte El ecosistema de Docker: introducción a los componentes comunes.
  • Docker Compose instalado en su servidor. Siga el paso 1 de Cómo instalar Docker Compose en Debian 10.
  • Un nombre de dominio registrado por completo. Para este tutorial, se utilizará theia.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 DNS A con theia.your_domain orientado a la dirección IP pública de su servidor. Puede utilizar esta introducción al DNS de DigitalOcean para obtener más información sobre cómo agregarlos.

Paso 1: Implementar nginx-proxy con Let´s Encrypt

A lo largo de esta sección, implementará nginx-proxy y su complemento de Let´s Encrypt utilizando Docker Compose. Esto permitirá el suministro y la renovación automática de certificados TLS, para que cuando implemente Eclipse Theia sea posible acceder a este en su dominio a traves de HTTPS.

A los efectos de este tutorial, almacenará todos los archivos en ~/eclipse-theia. Cree el directorio ejecutando el siguiente comando:

  • mkdir ~/eclipse-theia

Diríjase a este:

  • cd ~/eclipse-theia

Almacenará la configuración de Docker Compose para nginx-proxy en un archivo llamado nginx-proxy-compose.yaml. Créelo usando su editor de texto:

  • nano nginx-proxy-compose.yaml

Añada las siguientes líneas:

~/eclipse-theia/nginx-proxy-compose.yaml

version: '2'  services:   nginx-proxy:     restart: always     image: jwilder/nginx-proxy     ports:       - "80:80"       - "443:443"     volumes:       - "/etc/nginx/htpasswd:/etc/nginx/htpasswd"       - "/etc/nginx/vhost.d"       - "/usr/share/nginx/html"       - "/var/run/docker.sock:/tmp/docker.sock:ro"       - "/etc/nginx/certs"    letsencrypt-nginx-proxy-companion:     restart: always     image: jrcs/letsencrypt-nginx-proxy-companion     volumes:       - "/var/run/docker.sock:/var/run/docker.sock:ro"     volumes_from:       - "nginx-proxy" 

Aquí, definirá dos servicios que Docker Compose ejecutará: nginx-proxy y su complemento de Let´s Encrypt. Para el proxy, especificará jwilder/nginx-proxy como la imagen, asignará puertos HTTP y HTTPS, y definirá los volúmenes a los que se podrá acceder durante el tiempo de ejecución.

Los volúmenes son directorios que se encuentran en su servidor, a los que el servicio definido tendrá acceso total y que más adelante usará para configurar la autenticación de usuarios. Para lograr eso, utilizará el primer volumen de la lista, que asigna el directorio local /etc/nginx/htpasswd al mismo en el contenedor. En esa carpeta, nginx-proxy prevé que encontrará un archivo que tendrá un nombre exactamente igual al del dominio de destino y contendrá las credenciales de inicio de sesión para la autenticación de usuarios en el formato htpasswd(username:hashed_password).

Para el complemento, se da un nombre a la imagen de Docker y se permite el acceso al socket de Docker definiendo un volumen. Luego, se especifica que en el complemento se debe heredar el acceso a los volúmenes definidos para nginx-proxy. Para ambos servicios se fijó restart en always, lo cual ordena a Docker reiniciar los contenedores en caso de que se produzca alguna falla o se reinicie el sistema.

Guarde y cierre el archivo.

Implemente la configuración ejecutando lo siguiente:

  • docker-compose -f nginx-proxy-compose.yaml up -d

Aquí pasará el nombre del archivo nginx-proxy-compose.yaml al parámetro -f del comando docker-compose, que especifica el archivo que se ejecutará. Luego, pasará el verbo up que le indica ejecutar los contenedores. El indicador -d habilita el modo separado, lo cual significa que Docker Compose ejecutará los contenedores en segundo plano.

El resultado final tendrá el siguiente aspecto:

OutputCreating network "eclipse-theia_default" with the default driver Pulling nginx-proxy (jwilder/nginx-proxy:)... latest: Pulling from jwilder/nginx-proxy 8d691f585fa8: Pull complete 5b07f4e08ad0: Pull complete ... Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28 Status: Downloaded newer image for jwilder/nginx-proxy:latest Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)... latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion 89d9c30c1d48: Pull complete 668840c175f8: Pull complete ... Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest Creating eclipse-theia_nginx-proxy_1 ... done Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 ... done 

Con esto, habrá implementado nginx-proxy y su complemento de Let´s Encrypt usando Docker Compose. Ahora, continuará con la configuración de Eclipse Theia en su dominio y lo protegerá.

Paso 2: Implementar Eclipse Theia con Docker

A lo largo de esta sección, creará un archivo que contenga todas las combinaciones de inicio de sesión permitidas que un usuario deberá ingresar. Luego, implementará Eclipse Theia en su servidor usando Docker Compose y lo expondrá en su dominio protegido usando nginx-proxy.

Como se explicó en el paso anterior, nginx-proxy prevé que las combinaciones de inicio de sesión se encuentren en un archivo con el nombre del dominio expuesto, en el formato htpasswd y almacenado en el directorio /etc/nginx/htpasswd del contenedor. El directorio local que se asigna al virtual no necesita ser el mismo, como se indicó en la configuración de nginx-proxy.

Para crear combinaciones de inicio de sesión, primero deberá instalar htpasswd ejecutando el siguiente comando:

  • sudo apt install apache2-utils

El paquete apache2-utils contiene la utilidad htpasswd.

Cree el directorio /etc/nginx/htpasswd:

  • sudo mkdir -p /etc/nginx/htpasswd

Cree un archivo que almacenará los inicios de sesión de su dominio:

  • sudo touch /etc/nginx/htpasswd/theia.your_domain

Recuerde sustituir theia.your_domain por su dominio de Eclipse Theia.

Para añadir una combinación de nombre de usuario y contraseña, ejecute el siguiente comando:

  • sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username

Sustituya username por el nombre de usuario que prefiera añadir. Se le solicitará una contraseña dos veces. Una vez que la proporcione, htpasswd agregará el par de nombre de usuario y contraseña con hash al final del archivo. Puede repetir este comando para todos los inicios de sesión que desee añadir.

Ahora, creará una configuración para implementar Eclipse Theia. Lo almacenará en un archivo llamado eclipse-theia-compose.yaml. Créelo usando su editor de texto:

  • nano eclipse-theia-compose.yaml

Añada las siguientes líneas:

~/eclipse-theia/eclipse-theia-compose.yaml

version: '2.2'  services:   eclipse-theia:     restart: always     image: theiaide/theia:next     init: true     environment:       - VIRTUAL_HOST=theia.your_domain       - LETSENCRYPT_HOST=theia.your_domain 

En esta configuración, se define un único servicio llamado eclipse-theia con restart fijado en always y theiaide/theia:next como imagen del contenedor. También se fija init en true para indicar que en Docker se utilice init como el principal administrador de procesos al ejecutar Eclipse Theia dentro del contenedor.

Luego, se especifican dos variables de entorno en la sección environment:VIRTUAL_HOSTy LETSENCRYPT_HOST. El primero se pasa a nginx-proxy e indica el dominio en el cual se debe exponer el contenedor, mientras que este último se utiliza a través de su complemento de Let´s Encrypt y especifica el dominio para el cual se solicitarán los certificados TLS. A menos que especifique un comodín como valor para VIRTUAL_HOST, deben ser los mismos.

Recuerde sustituir theia.your_domain por el dominio que desee, y luego guarde y cierre el archivo.

Ahora implemente Eclipse Theia ejecutando lo siguiente:

  • docker-compose -f eclipse-theia-compose.yaml up -d

El resultado final tendrá este aspecto:

Output... Pulling eclipse-theia (theiaide/theia:next)... next: Pulling from theiaide/theia 63bc94deeb28: Pull complete 100db3e2539d: Pull complete ... Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109 Status: Downloaded newer image for theiaide/theia:next Creating eclipse-theia_eclipse-theia_1 ... done 

Luego, en su navegador, diríjase al dominio que utiliza para Eclipse Theia. Su navegador le mostrará un mensaje que le solicitará iniciar sesión. Después de proporcionar las credenciales correctas, ingresará en Eclipse Theia e inmediatamente verá la GUI de su editor. En la barra de direcciones, visualizará un candado que indica que la conexión es segura. Si no lo ve inmediatamente, espere unos minutos para el aprovisionamiento de los certificados TLS y luego vuelva a cargar la página.

GUI de Eclipse Theia

Ahora que puede acceder de forma segura a la IDE en la nube, comenzará a usar el editor en el siguiente paso.

Paso 3: Usar la interfaz de Eclipse Theia

En esta sección, conocerá algunas de las características de la interfaz de Eclipse Theia.

Del lado izquierdo del IDE, hay una fila vertical con cuatro botones que abren las funciones utilizadas con mayor frecuencia en el panel lateral.

GUI de Eclipse Theia: panel lateral

Esta barra es personalizable, para que pueda cambiar el orden de estas vistas o eliminarlas de ella. De forma predeterminada, la primera vista abre el panel de Explorer que permite explorar la estructura del proyecto con forma de árbol. Aquí, puede administrar sus carpetas y archivos. Esto incluye crear, eliminar, mover y modificar nombres según sea necesario.

Después de crear un nuevo archivo a través del menú File, verá un archivo vacío abierto en una nueva pestaña. Una vez que lo guarde, podrá ver el nombre del archivo en el panel lateral de Explorer. Para crear carpetas, haga clic en la barra lateral de Explorer y luego en** New Folder**. Puede expandir una carpeta haciendo clic en su nombre, y también arrastrando archivos y carpetas y soltándolos en partes superiores de la jerarquía para trasladarlas a una nueva ubicación.

GUI de Eclipse Theia: New Folder

Las siguientes dos opciones proporcionan acceso a la funcionalidad de búsqueda y reemplazo. La que sigue presenta una vista de los sistemas de control de fuentes que puede estar utilizando, como Git.

La vista final es la opción de depuración, que ofrece todas las acciones comunes para realizar depuraciones en el panel. Puede guardar las configuraciones de depuración en el archivo launch.json.

Vista del depurador con launch.json abierto

La parte central de la GUI es su editor, que usted puede separar por pestañas para editar su código. Puede cambiar la vista de edición a un sistema de cuadrícula o a archivos en paralelo. Al igual que en todos los IDE modernos, en Eclipse Theia se admite el resalte de sintaxis para su código.

Vista de sistema de cuadrícula

Puede obtener acceso a un terminal presionando CTRL+SHIFT+` o seleccionando Terminal en el menú superior y luego New Terminal. La terminal se abrirá en un panel inferior y su directorio de trabajo fijará en el espacio de trabajo del proyecto, que contiene los archivos y las carpetas que se muestran en el panel lateral de Explorer.

Terminal abierto

Pudo ver una descripción general de alto nivel de la interfaz de Eclipse Theia y revisó algunas de las características más utilizadas.

Conclusión

Con esto, habrá instalado Eclipse Theia, un IDE en la nube versátil, en su servidor de Debian 10 mediante Docker Compose y nginx-proxy. Lo protegió con un certificado TLS gratuito de Let´s Encrypt y configuró la instancia para que exija las credenciales de inicio de sesión del usuario. Con él puede trabajar en su código fuente y sus documentos de forma individual o colaborar con su equipo. También puede intentar crear su propia versión de Eclipse Theia si necesita funciones adicionales. Para obtener más información sobre cómo hacerlo, consulte la documentación de Theia.