Introducción
Con las herramientas de desarrollo que se trasladan a la nube, la adopción de plataformas en la nube del entorno de desarrollo integrado (IDE) está creciendo. Los IDE en la nube son accesibles desde todo tipo de dispositivos modernos a través de navegadores web y ofrecen numerosos beneficios para escenarios de colaboración en tiempo real. Trabajar en un IDE en la nube proporciona un entorno de prueba y desarrollo unificado para usted y su equipo, minimizando las incompatibilidades de plataforma. Accesibles a través de un navegador web, los IDE en la nube están disponibles desde todos los tipos de dispositivos modernos.
Eclipse Theia es un IDE de nube extensible que se ejecuta en un servidor remoto y es accesible desde un navegador web. Visualmente, está diseñado para verse y comportarse de manera similar a Microsoft Visual Studio, lo que significa que admite muchos lenguajes de programación, tiene un diseño flexible y tiene una terminal incorporada. Lo que separa a Eclipse Theia de otro software IDE en la nube es su extensibilidad; se puede cambiar utilizando extensiones personalizadas, que le permiten crear un IDE en la nube que se adapte a sus necesidades.
En este tutorial, implementará Eclipse Theia en su servidor Ubuntu 18.04 utilizando Docker Compose, una herramienta de orquestación de contenedores. Lo expondrá a su dominio utilizando nginx-proxy, un sistema automatizado para Docker que simplifica el proceso de configuración de Nginx para que actúe como un proxy inverso para un contenedor. También lo protegerá utilizando un certificado TLS Let's Encrypt gratuito, que proporcionará mediante su complemento especializado. Eventualmente, tendrá Eclipse Theia ejecutándose en su servidor Ubuntu 18.04 disponible a través de HTTPS y solicitando al usuario que inicie sesión.
Prerrequisitos
- Un servidor Ubuntu 18.04 con privilegios de root y una cuenta secundaria no root.
- Docker instalado en su servidor. Cómo instalar Docker en Ubuntu 18.04.
- Docker Compose instalado en su servidor. Siga el paso 1 de Cómo instalar Docker Compose en Ubuntu 18.04.
- Un nombre de dominio completamente registrado. En este tutorial usaremos el dominio
theia.your_domain
Si su intención es instalar Eclipse IDE Theia Cloud en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Configure nginx-proxy con Let's Encrypt
En esta sección, distribuye nginx-proxy
y su complemento Let's Encrypt mediante Docker Compose. Esto permitirá el aprovisionamiento automático y la renovación del certificado TLS, de modo que cuando implemente Eclipse Theia será accesible en su dominio a través de HTTPS.
Para los propósitos de este tutorial, todos los archivos se almacenarán en ~/eclipse-theia
. Cree el directorio ejecutando el siguiente comando:
mkdir ~/eclipse-theia
Navega hasta él:
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
Agrega las siguientes líneas:
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í está definiendo dos servicios que Docker Compose ejecutará nginx-proxy
y su compañero Let's Encrypt. Para el proxy, especifique jwilder/nginx-proxy
como una imagen, asigne los puertos HTTP y HTTPS y defina los volúmenes a los que podrá acceder en tiempo de ejecución.
Los volúmenes son directorios en su servidor a los que el servicio definido tendrá acceso completo, que luego utilizará para configurar la autenticación de usuario. Para lograr esto, utilizará el primer volumen de la lista, que asigna el directorio local /etc/nginx/htpasswd
al mismo contenedor. En esa carpeta, nginx-proxy
espera encontrar un archivo con el nombre exacto del dominio de destino, que contiene las credenciales de inicio de sesión para la autenticación del usuario en formato htpasswd
username:hashed_password
).
Para el complemento, asigne un nombre a la imagen de Docker y permita el acceso al socket de Docker definiendo un volumen. Luego, especifica que el complemento debe heredar el acceso a los volúmenes definidos para nginx-proxy
. Ambos servicios tienen el parámetro de restart
always
, lo que indica a Docker que reinicie los contenedores en caso de que el sistema se bloquee o se reinicie.
Guarde y cierre el archivo.
Aplique la configuración ejecutando este comando:
docker-compose -f nginx-proxy-compose.yaml up -d
Aquí pasa el nombre de archivo nginx-proxy-compose.yaml
al parámetro -f
docker-compose
, que especifica el archivo a ejecutar. Luego, pasa el up
que le dice que ejecute los contenedores. La -d
habilita el modo separado, lo que significa que Docker Compose ejecutará los contenedores en segundo plano.
La salida final se verá así:
Creating 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
Ha implementado nginx-proxy
y el componente Let's Encrypt usando Docker Compose. Ahora pasará a configurar Eclipse Theia en su dominio y protegerlo.
Configurar Dockerized Eclipse Theia
En esta sección, creará un archivo que contiene todas las combinaciones de acceso permitidas que un usuario deberá ingresar. Luego, implementará Eclipse Theia en su servidor usando Docker Compose.
Como se explicó en el paso anterior, nginx-proxy
espera que las combinaciones de acceso se encuentren en un archivo con el nombre del dominio expuesto, en el htpasswd
y se almacenen en el directorio del /etc/nginx/htpasswd
. El directorio local que se asigna al directorio virtual no tiene que ser necesariamente el mismo que el especificado en la configuración del nginx-proxy
Para crear combinaciones de acceso, primero debe instalar htpasswd
ejecutando el siguiente comando:
sudo apt install apache2-utils
El apache2-utils
contiene la utilidad htpasswd
Cree el /etc/nginx/htpasswd
:
sudo mkdir -p /etc/nginx/htpasswd
Cree un archivo que almacenará los inicios de sesión para su dominio:
sudo touch /etc/nginx/htpasswd/theia.your_domain
Recuerde reemplazar theia.your_domain
con su propio dominio.
Para agregar una combinación de nombre de usuario y contraseña, ejecute el siguiente comando:
sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username
Reemplace el username
con el nombre de usuario que desea agregar. Se le pedirá una contraseña dos veces. Después de proporcionarlo, htpasswd
agregará el par de nombre de usuario y contraseña hash al final del archivo. Puede repetir este comando para todos los inicios de sesión que desee agregar.
Ahora creará la configuración para implementar Eclipse Theia. Lo guardará en un archivo llamado eclipse-theia-compose.yaml
. Créelo usando su editor de texto:
nano eclipse-theia-compose.yaml
Agrega las siguientes líneas:
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, definimos un único servicio llamado eclipse-theia
con el restart
establecido en always
y theiaide/theia:next
como la imagen del contenedor. También configuramos init
en true
para decirle a Docker que use init
como el controlador del proceso principal cuando ejecute Eclipse Theia dentro del contenedor.
Luego, especifica dos variables de entorno en la sección de environment
VIRTUAL_HOST
y LETSENCRYPT_HOST
. El primero se usa con nginx-proxy
que le dice a qué dominio debe estar expuesto el contenedor, mientras que el segundo lo usa el complemento Let's Encrypt y especifica para qué dominio solicitar certificados TLS. A menos que especifique un carácter comodín como valor para VIRTUAL_HOST
, deben ser iguales.
Recuerde reemplazar theia.your_domain
con el dominio deseado, luego guarde y cierre el archivo.
Ahora implemente Eclipse Theia ejecutando:
docker-compose -f eclipse-theia-compose.yaml up -d
La salida final se verá así:
...
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, vaya al dominio que está usando para Eclipse Theia. Su navegador le mostrará un mensaje pidiéndole que inicie sesión. Después de proporcionar las credenciales correctas, ingresará a Eclipse Theia y verá inmediatamente la GUI de su editor. En la barra de direcciones verá un candado que indica que la conexión es segura. Si no lo ve de inmediato, espere unos minutos hasta que se aprovisionen los certificados TLS y luego vuelva a cargar la página.
Ahora que puede iniciar sesión de forma segura en su IDE en la nube, comenzará a usar el editor en el siguiente paso.
Utilice la interfaz de Eclipse Theia
En esta sección, explorará algunas de las características de la interfaz de Eclipse Theia.
En el lado izquierdo del IDE, hay una fila vertical de cuatro botones que abren las funciones más utilizadas en un panel lateral.
Esta barra es personalizable para que pueda mover estas vistas en un orden diferente o eliminarlas de la barra. De forma predeterminada, la primera vista abre el panel Explorador que proporciona una navegación de árbol de la estructura del proyecto. Puede administrar sus carpetas y archivos aquí, crearlos, eliminarlos, moverlos y cambiarles el nombre según sea necesario.
Después de crear un nuevo archivo a través del menú Archivo, verá un archivo vacío abierto en una nueva pestaña. Una vez guardado, puede ver el nombre del archivo en el panel lateral del Explorador. Para crear carpetas, haga clic con el botón derecho en la barra lateral del Explorador y haga clic en Nueva carpeta. Puede expandir una carpeta haciendo clic en su nombre, así como arrastrando y soltando archivos y carpetas en la parte superior de la jerarquía para moverlos a una nueva ubicación.
Las siguientes dos opciones brindan acceso a la función de búsqueda y reemplazo. A continuación, el siguiente le brinda una vista de los sistemas de control de fuente que podría estar utilizando, como Git.
La vista final es la opción del depurador, que proporciona todas las acciones de depuración comunes en el panel. Las configuraciones de depuración se pueden guardar en el archivo launch.json
La parte central de la GUI es su editor, que puede separar por pestañas para editar el código. Puede cambiar la vista de edición en un sistema de cuadrícula o en filas en mosaico. Como todos los IDE modernos, Eclipse Theia admite el resaltado de sintaxis para su código.
Puede acceder a una terminal escribiendo CTRL+SHIFT+`
o haciendo clic en Terminal en el menú superior y seleccionando Nueva terminal. La terminal se abrirá en un panel inferior y su directorio de trabajo se establecerá en el espacio de trabajo del proyecto, que contiene los archivos y carpetas que se muestran en el panel lateral del Explorador.
Conclusión
Ahora tiene Eclipse Theia, un IDE de nube versátil, instalado en su servidor Ubuntu 18.04 usando Docker Compose y nginx-proxy
. Lo aseguró con un certificado TLS Let's Encrypt gratuito y configuró la instancia para requerir las credenciales de inicio de sesión del usuario.