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

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

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

Расширенную версию этого мануала вы найдете здесь.

Требования

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

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

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

mkdir ~/eclipse-theia

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

cd ~/eclipse-theia

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

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

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

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

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

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

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/theia.your-domain

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

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

sudo htpasswd /etc/nginx/htpasswd/theia.your-domain 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. Затем мы указываем две переменные среды в разделе environment: VIRTUAL_HOST и LETSENCRYPT_HOST.

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

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

Заключение

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

Tags: , , , , , , ,