Introdução

O Eclipse Theia é um IDE em nuvem extensível que executa em um servidor remoto, podendo ser acessado a partir de um navegador Web. Visualmente, ele foi projetado para parecer e se comportar de maneira similar ao Microsoft Visual Studio Code. O que separa o Eclipse Theia de outros softwares de IDE em nuvem é a sua extensibilidade; ele pode ser modificado com extensões personalizadas, o que permite que você crie um IDE em nuvem adequado às suas necessidades.

Neste tutorial, você implantará o Eclipse Theia para seu servidor Ubuntu 18.04, usando o Docker Compose. Você irá expô-lo em seu domínio usando o nginx-proxy e o protegerá com um certificado TLS do Let's Encrypt, o qual você irá provisionar com um add-on. Para obter uma versão mais detalhada deste tutorial, consulte o artigo sobre Como configurar a plataforma de IDE em nuvem Eclipse Theia no Ubuntu 18.04.

Pré-requisitos

eclipse theia illustration for: Pré-requisitos
  • Um nome de domínio totalmente registrado. Este tutorial utilizará o <^>theia.your-domain<^> durante todo o processo.
  • Um registro de DNS de tipo A com o <^>theia.your_domain<^> apontando para o endereço IP público do seu servidor. Você pode seguir esta Introdução ao DNS da the cloud provider para obter mais detalhes sobre como adicioná-los.

Passo 1 — Implantando o nginx-proxy com o Let's Encrypt

Crie o diretório para armazenar todos os dados do Eclipse Theia:

				
					
mkdir ~/eclipse-theia

				
			

Navegue até ele:

				
					
cd ~/eclipse-theia

				
			

Crie o nginx-proxy-compose.yaml para armazenar a configuração do Docker Compose para o nginx-proxy:

				
					
nano nginx-proxy-compose.yaml

				
			

Adicione as linhas a seguir:

				
					
[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"

				
			

Aqui, você definirá dois serviços que o Docker Compose irá executar, o nginx-proxy e seu companheiro Let's Encrypt. Para o proxy, você especificará o jwilder/nginx-proxy como a imagem, mapeando as portas HTTP e HTTPS e definindo os volumes que ficarão acessíveis para o proxy durante o tempo de execução.

Salve e feche o arquivo.

Implante a configuração:

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

				
			

O resultado final ficará parecido com este:

				
					
[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

				
			

Passo 2 — Implantando o Eclipse Theia em Docker

O nginx-proxy espera que as combinações de login estejam em um arquivo que tem o mesmo nome do domínio exposto, no formato htpasswd e armazenadas sob o diretório /etc/nginx/htpasswd, no contêiner.

Instale o htpasswd:

				
					
sudo apt install apache2-utils

				
			

O pacote apache2-utils contém o utilitário htpasswd.

Crie o diretório /etc/nginx/htpasswd:

				
					
sudo mkdir -p /etc/nginx/htpasswd

				
			

Crie um arquivo para armazenar os logins do seu domínio:

				
					
sudo touch /etc/nginx/htpasswd/&lt;^&gt;theia.your-domain&lt;^&gt;

				
			

Execute o comando a seguir com um nome de usuário e uma combinação de senha:

				
					
sudo htpasswd /etc/nginx/htpasswd/&lt;^&gt;theia.your-domain&lt;^&gt; &lt;^&gt;username&lt;^&gt;

				
			

O htpasswd adicionará o nome de usuário e a senha hash ao final do arquivo.

Crie a configuração para a implantação do Eclipse Theia:

				
					
nano eclipse-theia-compose.yaml

				
			

Adicione as linhas a seguir:

				
					
[label ~/eclipse-theia/eclipse-theia-compose.yaml]

version: '2.2'



services:

  eclipse-theia:

    restart: always

    image: theiaide/theia:next

    init: true

    environment:

      - VIRTUAL_HOST=&lt;^&gt;theia.your-domain&lt;^&gt;

      - LETSENCRYPT_HOST=&lt;^&gt;theia.your-domain&lt;^&gt;

				
			

Você define um serviço único chamado eclipse-theia com o restart configurado para always e o theiaide/theia:next como a imagem do contêiner. Defina também o init para true. Em seguida, especifique duas variáveis de ambiente na seção de environment: VIRTUAL_HOST e LETSENCRYPT_HOST.

Salve e feche o arquivo.

Agora, implante o Eclipse Theia, executando:

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

				
			

O resultado final se parecerá com o seguinte:

				
					
[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

				
			

Navegue para o domínio que estiver usando para o Eclipse Theia. Seu navegador mostrará um prompt pedindo que você faça login. Você entrará no Eclipse Theia e verá a GUI do seu editor. Você verá também um cadeado indicando que a conexão é segura.

Conclusão

Agora, você tem o Eclipse Theia, um IDE em nuvem versátil, instalado no seu servidor Ubuntu 18.04, usando o Docker Compose e o nginx-proxy. Você o protegeu com um certificado TLS do Let's Encrypt gratuito e configurou a instância para exigir as credenciais de login do usuário. Você pode trabalhar no seu código-fonte e nos documentos com ele, de maneira independente ou em colaboração com sua equipe. Você também pode tentar compilar sua própria versão do Eclipse Theia se precisar de recursos adicionais. Para obter mais informações sobre como fazer isso, acesse os documentos do Theia.