Tutorial

Настройка облачной IDE-платформы Eclipse Theia на Ubuntu 18.04 [Краткое руководство]

Published on March 5, 2020
Русский
Настройка облачной IDE-платформы Eclipse Theia на Ubuntu 18.04 [Краткое руководство]

Введение

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.

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

  • Сервер Ubuntu 18.04 с привилегиями root и дополнительной учетной записью без привилегий root, настроенный в соответствии с указаниями руководства Начальная настройка сервера Ubuntu 18.04.
  • Установленная на сервере система Docker в соответствии с шагом 1 и шагом 2 руководства Установка Docker в Ubuntu 18.04.
  • Установленная на сервере служба Docker Compose в соответствии с шагом 1 руководства Установка Docker Compose в Ubuntu 18.04.
  • Зарегистрированное полное доменное имя. В этом обучающем руководстве мы будем использовать доменное имя theia.your-domain.
  • Запись DNS A с theia.your-domain, указывающим на публичный IP-адрес вашего сервера. В руководстве Введение в DigitalOcean DNS содержится подробная информация по их добавлению.

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

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

  1. mkdir ~/eclipse-theia

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

  1. cd ~/eclipse-theia

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

  1. nano nginx-proxy-compose.yaml

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

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

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

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

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

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

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:

  1. sudo apt install apache2-utils

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

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

  1. sudo mkdir -p /etc/nginx/htpasswd

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

  1. sudo touch /etc/nginx/htpasswd/theia.your-domain

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

  1. sudo htpasswd /etc/nginx/htpasswd/theia.your-domain username

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

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

  1. nano eclipse-theia-compose.yaml

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

~/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

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

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

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

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

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

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

Заключение

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar
Savic

author



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel