Введение

Eclipse Theia — это расширяемая облачная IDE, запущенная на удаленном сервере и доступная в браузере. Внешне она выглядит и работает наподобие Microsoft Visual Studio Code. Отличие Eclipse Theia от других облачных IDE состоит в возможности расширения; ее можно изменять с помощью пользовательских расширений, что позволяет получить облачную IDE, настроенную под ваши нужды.

В этом обучающем руководстве мы выполним развертывание Eclipse Theia на сервере Ubuntu 18.04 с помощью Docker Compose. Мы подключим среду к домену с помощью nginx-proxy и защитим ее TLS-сертификатом Let's Encrypt, выделяемым с помощью дополнительной надстройки. Более подробное описание можно найти в обучающем руководстве Настройка облачной IDE-платформы Eclipse Theia в Ubuntu 18.04.

Предварительные требования

eclipse theia illustration for: Предварительные требования
  • Зарегистрированное полное доменное имя. В этом обучающем руководстве мы будем использовать доменное имя <^>theia.your-domain<^>.
  • Запись DNS A с <^>theia.your-domain<^>, указывающим на публичный IP-адрес вашего сервера. В руководстве Введение в DNS hosting содержится подробная информация по их добавлению.

Шаг 1 — Развертывание nginx-proxy с Let's Encrypt

Создайте директорию для хранения всех данных Eclipse Theia:

				
					
mkdir ~/eclipse-theia

				
			

Перейдите в директорию:

				
					
cd ~/eclipse-theia

				
			

Создайте файл nginx-proxy-compose.yaml для сохранения конфигурации Docker Compose для nginx-proxy:

				
					
nano nginx-proxy-compose.yaml

				
			

Добавьте следующие строки:

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

				
			

Здесь мы определяем две службы, которые будет выполнять Docker Compose, nginx-proxy и его спутник Let's Encrypt. Для прокси вы должны задать в качестве образа jwilder/nginx-proxy, разметить порты HTTP и HTTPS, а также определить тома, которые будут доступны во время исполнения.

Сохраните и закройте файл.

Разверните конфигурацию:

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

				
			

Итоговый результат будет выглядеть следующим образом:

				
					
[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

				
			

Шаг 2 — Развертывание контейнеризованной среды Eclipse Theia

nginx-proxy ожидает, что комбинации для входа будут находиться в файле с именем подключенного домена, который имеет формат htpasswd и хранится в директории /etc/nginx/htpasswd в контейнере.

Выполните установку htpasswd:

				
					
sudo apt install apache2-utils

				
			

Пакет apache2-utils содержит утилиту htpasswd.

Создайте директорию /etc/nginx/htpasswd:

				
					
sudo mkdir -p /etc/nginx/htpasswd

				
			

Создайте файл для сохранения учетных данных вашего домена:

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

				
			

Запустите следующую команду, указав комбинацию имени пользователя и пароля:

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

				
			

htpasswd добавит имя пользователя и пароль в конец файла.

Создайте конфигурацию для развертывания Eclipse Theia:

				
					
nano eclipse-theia-compose.yaml

				
			

Добавьте следующие строки:

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

				
			

Вы определяете одну службу с именем eclipse-theia, задаете для параметра restart значение always и определяете theiaide/theia:next как образ контейнера. Также вы задаете для init значение true. Затем нужно задать две переменные среды в разделе environment: VIRTUAL_HOST и LETSENCRYPT_HOST.

Сохраните и закройте файл.

Теперь выполните развертывание Eclipse Theia с помощью следующей команды:

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

				
			

Вывод будет выглядеть следующим образом:

				
					
[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

				
			

Перейдите в домен, который вы используете для Eclipse Theia. Ваш браузер будет отображать запрос на выполнение входа. Вы войдете в Eclipse Theia и увидите графический интерфейс редактора. Также вы увидите символ замка, показывающий, что соединение является защищенным.

Заключение

Теперь вы можете использовать Eclipse Theia, универсальную облачную IDE, которая установлена на вашем сервере Ubuntu 18.04 с помощью Docker Compose и nginx-proxy. Вы обеспечили безопасность вашей установки с помощью бесплатного TLS-сертификата Let's Encrypt и создали экземпляр для запроса учетных данных пользователя при входе. Вы можете работать с исходным кодом и документами индивидуально или вместе с вашей командой. Также вы можете попробовать выполнить сборку вашей собственной версии Eclipse Theia, если вам требуются дополнительные функции. Дополнительную информацию о том, как это можно сделать, см. в документации Theia.