Установка облачной IDE-платформы Eclipse Theia в Ubuntu 18.04

С переходом инструментов разработки в облачную среду начала расти потребность в создании и внедрении облачных платформ IDE (Integrated Development Environment, интегрированная среда разработки). Облачные IDE-среды позволяют большим командам разработчиков совместно развивать проект в режиме реального времени. При этом они используют единую среду, что сводит к минимуму несовместимости и повышает производительность. Облачные IDE, доступные в веб-браузерах, работают с любого типа современного устройства.

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

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

Требования

  • Сервер Ubuntu 18.04, настроенный по этому мануалу.
  • Установка Docker (инструкции вы найдете в мануале Установка и использование Docker в Ubuntu 18.04).
  • Docker Compose, установленный по этому мануалу.
  • Зарегистрированное доменное имя, указывающее на ваш сервер. В этом мануале будет использоваться условный домен theia.your_domain.
  • DNS-запись А (для theia.your_domain), направленная на ваш внешний IP-адрес.

Читайте также: Экосистема Docker: базовые компоненты

1: Развертывание nginx-proxy и расширения Let’s Encrypt

Сначала нужно развернуть nginx-proxy и его аддон для its Let’s Encrypt с помощью Docker Compose. Это активирует автоматическое получение и обновление TLS-сертификатов, благодаря чему после развертывания платформа Eclipse Theia будет доступна по HTTPS.

В этом мануале мы будем хранить все файлы в каталоге ~/eclipse-theia. Создайте его:

mkdir ~/eclipse-theia

Перейдите в каталог:

cd ~/eclipse-theia

Конфигурация Docker Compose для nginx-proxy будет храниться в файле nginx-proxy-compose.yaml. Откройте этот файл в текстовом редакторе:

nano 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 и определяются тома, которые будут доступны серверу во время выполнения.

Тома – это каталоги на сервере, к которым есть полный доступ у определенного сервиса и которые вы позже будете использовать для настройки аутентификации пользователя. Для этого мы будем использовать первый том из списка, который связывает локальный каталог /etc/nginx/htpasswd с таким же каталогом в контейнере. В этой папке nginx-proxy ищет файл с именем целевого домена, содержащий учетные данные для аутентификации пользователя в формате htpasswd  (username:hashed_password).

Затем указывается образ Docker для расширения, открывается доступ к сокету Docker и определяется том. После этого мы указываем, что аддон должен наследовать доступ к томам nginx-proxy. Оба сервиса имеют значение always в строке restart, благодаря чему Docker будет перезапускать контейнеры в случае сбоя или перезагрузки системы.

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

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

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

Здесь нужно передать имя файла nginx-proxy-compose.yaml параметру -f команды docker-compose – он указывает файл, который нужно запустить. Затем мы передаем оператор up, который запустит контейнеры. Флаг -d включает режим detached, что означает, что Docker Compose будет запускать контейнеры в фоновом режиме.

Вывод команды будет выглядеть так:

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

Итак, мы развернули nginx-proxy и его расширение для Let’s Encrypt через Docker Compose. Теперь можно установить Eclipse Theia.

2: Развертывание Eclipse Theia

Сейчас мы создадим файл, содержащий все валидные комбинации входа, которые должен будет ввести пользователь. Затем мы развернем Eclipse Theia на своем сервере с помощью Docker Compose и и откроем к нему доступ по своему домену с помощью nginx-proxy.

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

Для создания комбинаций учетных данных для входа в систему сначала необходимо установить htpasswd. Выполните следующую команду:

sudo apt install apache2-utils

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

Создайте каталог /etc/nginx/htpasswd

sudo mkdir -p /etc/nginx/htpasswd

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

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

Вместо theia.your_domain укажите ваш домен.

Чтобы добавить в файл имя и пароль, введите такую команду:

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

Замените username на имя, которое вы хотите добавить в файл. Вас дважды попросят ввести пароль. После этого htpasswd добавит имя пользователя и хешированный пароль в конец файла. Вы можете повторить эту команду с новыми учетными данными, чтобы добавить в файл другие записи.

Теперь нужно создать конфигурацию для развертывания Eclipse Theia. Хранить ее мы будем в файле eclipse-theia-compose.yaml. Создайте его в текстовом редакторе:

nano 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

В этой конфигурации мы определяем один сервис eclipse-theia с theiaide/theia:next в качестве образа контейнера, где параметр restart имеет значение always. Параметр init имеет значение true, чтобы Docker мог использовать init в качестве главного менеджера процессов при запуске Eclipse Theia внутри контейнера.

Затем мы указываем две переменные среды в разделе environment: VIRTUAL_HOST и LETSENCRYPT_HOST. Первая переменная передается nginx-proxy и сообщает ему, на каком домене должен быть открыт контейнер, а вторая используется  расширением Let’s Encrypt и указывает, для какого домена запрашивать сертификаты TLS. Значения этих переменных должны быть одинаковыми (если только вы не указали подстановочный знак в качестве значения для VIRTUAL_HOST).

Не забудьте заменить theia.your_domain своим доменом, затем сохраните и закройте файл.

Теперь можно развернуть Eclipse Theia.

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

В итоге вы получите такой вывод:

...
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. В адресной строке вы увидите зеленый замочек (слева от адреса сайта), что означает, что ваше соединение надежно защищено. Если сейчас этого значка там нет, подождите пару минут и перезагрузите страницу – возможно, на получение сертификатов ушло немного больше времени.

3: Использование интерфейса Eclipse Theia

В этом разделе мы попробуем использовать базовые функции интерфейса Eclipse Theia.

С левой стороны панели IDE расположен вертикальный ряд из четырех кнопок, они представляют наиболее часто используемые функции боковой панели.

Эту панель вы можете настроить самостоятельно: при желании можно легко изменить порядок этих кнопок, переместить или удалить их из панели. По умолчанию первая кнопка открывает панель Explorer, которая предоставляет древовидную навигацию по структуре проекта. Здесь вы можете управлять своими папками и файлами, создавая, удаляя, перемещая и переименовывая их по мере необходимости.

После создания нового файла через меню File  в новой вкладке откроется пустой файл, а после сохранения его имя будет отображаться на боковой панели Explorer. Создание папок происходит при помощи клика правой кнопкой мыши по боковой панели Explorer; здесь выберите New Folder. Вы можете развернуть папку, кликнув на ее имя; перетащив файлы и папки в верхние части иерархии, вы переместите их в новое место.

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

Центром GUI является ваш редактор, который вы можете разделить вкладками для редактирования кода. Вы также можете изменить вид редактирования на сеточную систему или параллельные файлы. Как и все современные платформы IDE, Eclipse Theia поддерживает выделение в коде.

Вы можете получить доступ к терминалу с помощью сочетания клавиш CTRL+SHIFT+`. Также можно нажать Terminal в раскрывающемся меню вверху и выбрать New Terminal. Терминал откроется в нижней панели. Его рабочий каталог будет находиться в рабочей области проекта, которая содержит файлы и папки, показанные на боковой панели Explorer.

Заключение

Теперь у вас есть Eclipse Theia, универсальная облачная платформа IDE. Вы настроили обратный прокси nginx-proxy и защитили ее доверенным сертификатом от Let’s Encrypt, благодаря чему ее можно открыть в браузере. Теперь вы можете работать над проектами индивидуально и в команде, используя единую среду. Установка облачной среды IDE освобождает ресурсы на локальном компьютере и позволяет масштабировать их при необходимости. Кроме того, вы можете собрать свою собственную версию Eclipse Theia. За дополнительной информацией и подробными инструкциями обращайтесь к документации проекта.

Tags: , , , , , ,