Table of Contents
Introducción
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. Visualmente, está diseñado para tener un aspecto y comportamiento similares a los de Microsoft Visual Studio Code. 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.
En este tutorial, implementará Eclipse Theia en su servidor de Ubuntu 18.04 usando Docker Compose. Lo expondrá en su dominio usando nginx-proxy y lo protegerá con un certificado TLS de Let´s Encrypt, que proporcionará con un complemento. Para ver una versión más detallada de este tutorial, consulte Cómo configurar la plataforma de IDE en la nube de Eclipse Theia en Ubuntu 18.04.
Requisitos previos
- Un servidor Ubuntu 18.04 con privilegios root y una segunda cuenta no root, conforme a la Guía de configuración inicial de servidores para Ubuntu 18.04.
- Docker instalado en su servidor; siga el paso 1 y el paso 2 de 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 registrado por completo. En este tutorial, se utilizará
<^>theia.your-domain<^>en todo momento.
- 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 the cloud provider para obtener más información sobre cómo agregarlos.
Paso 1: Implementar nginx-proxy con Let´s Encrypt
Cree el directorio en el que se almacenarán todos los datos para Eclipse Theia:
mkdir ~/eclipse-theia
Diríjase a este:
cd ~/eclipse-theia
Cree nginx-proxy-compose.yaml para almacenar la configuración de Docker Compose para nginx-proxy:
nano nginx-proxy-compose.yaml
Añada las siguientes líneas:
[label ~/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.
Guarde y cierre el archivo.
Implemente la configuración:
docker-compose -f nginx-proxy-compose.yaml up -d
El resultado final tendrá el siguiente aspecto:
[secondary_label Output]
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
Paso 2: Implementar Eclipse Theia con Docker
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.
Instale htpasswd:
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 para almacenar los inicios de sesión de su dominio:
sudo touch /etc/nginx/htpasswd/<^>theia.your-domain<^>
Ejecute el siguiente comando con una combinación de nombre de usuario y contraseña:
sudo htpasswd /etc/nginx/htpasswd/<^>theia.your-domain<^> <^>username<^>
htpasswd agregará el par de nombre de usuario y contraseña con hash al final del archivo.
Cree la configuración para la implementación de Eclipse Theia:
nano eclipse-theia-compose.yaml
Añada las siguientes líneas:
[label ~/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<^>
Definirá un servicio único llamado eclipse-theia con restart fijado en always y theiaide/theia:next como la imagen del contenedor. También fijará init en true. Luego, se especifican dos variables de entorno en la sección environment: VIRTUAL_HOST y LETSENCRYPT_HOST.
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:
[secondary_label 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
Diríjase al dominio que usa para Eclipse Theia. Su navegador le mostrará un mensaje que le solicitará iniciar sesión. Entrará en Eclipse Theia y verá la GUI de su editor. También verá un candado que indica que la conexión es segura.
Conclusión
Ahora, tendrá instalado Eclipse Theia, un IDE en la nube versátil, en su servidor de Ubuntu 18.04 con 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.