如何在 Debian 10 上设置 Eclipse Theia 云 IDE 平台

作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

随着开发人员的工具转向云,云 IDE(集成开发环境)平台的采用正在增加。云 ID 可通过 Web 浏览器从任何现代设备访问,并为实时协作场景提供了众多优点。在云 IDE 中工作为您和您的团队提供统一的开发和测试环境,同时最大限度地减少平台不兼容性。

Eclipse Theia是一个可扩展的云 IDE,可在远程服务器上运行,并可通过 Web 浏览器访问。视觉上,它设计的外观和行为类似于 Microsoft Visual Studio Code,这意味着它支持许多编程语言,具有灵活的布局,并具有集成的终端。

在本教程中,您将使用 Docker Compose 将 Eclipse Theia 部署到您的 Debian 10 服务器上,这是一种集装箱编排工具。您将使用 nginx-proxy在您的领域中展示它,这是一种用于 Docker 的自动化系统,它简化了配置 Nginx 作为一个集装箱的反向代理程序的过程。您还将使用免费的 Let's Encrypt TLS 证书来保护它,您将使用其专门的 add-on来提供它。最后,您将有 Eclipse Theia 运行在您的 Debian 10 服务器上通过 HTTPS 可用,并要求用户登录。

前提条件

步骤 1 — 使用 Let’s Encrypt 部署 nginx 代理

在本节中,您将使用 Docker Compose 部署 'nginx-proxy' 及其 Let's Encrypt add-on,这将允许自动提供和更新 TLS 证书,因此当您部署 Eclipse Theia 时,它将通过 HTTPS 在您的域中可访问。

对于本教程的目的,你将存储所有文件在 ~/eclipse-theia. 通过运行以下命令创建目录:

1mkdir ~/eclipse-theia

导航它:

1cd ~/eclipse-theia

您将将nginx-proxy的Docker Compose配置存储在名为nginx-proxy-compose.yaml的文件中。

1nano nginx-proxy-compose.yaml

添加以下几行:

 1[label ~/eclipse-theia/nginx-proxy-compose.yaml]
 2version: '2'
 3
 4services:
 5  nginx-proxy:
 6    restart: always
 7    image: jwilder/nginx-proxy
 8    ports:
 9      - "80:80"
10      - "443:443"
11    volumes:
12      - "/etc/nginx/htpasswd:/etc/nginx/htpasswd"
13      - "/etc/nginx/vhost.d"
14      - "/usr/share/nginx/html"
15      - "/var/run/docker.sock:/tmp/docker.sock:ro"
16      - "/etc/nginx/certs"
17
18  letsencrypt-nginx-proxy-companion:
19    restart: always
20    image: jrcs/letsencrypt-nginx-proxy-companion
21    volumes:
22      - "/var/run/docker.sock:/var/run/docker.sock:ro"
23    volumes_from:
24      - "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定义的卷的访问权限。

保存并关闭文件。

通过运行部署配置:

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

在这里,您将nginx-proxy-compose.yaml文件名转移到docker-compose命令的f参数,该参数指定要运行的文件。

最终的结果将是这样的:

 1[secondary_label Output]
 2Creating network "eclipse-theia_default" with the default driver
 3Pulling nginx-proxy (jwilder/nginx-proxy:)...
 4latest: Pulling from jwilder/nginx-proxy
 58d691f585fa8: Pull complete
 65b07f4e08ad0: Pull complete
 7...
 8Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
 9Status: Downloaded newer image for jwilder/nginx-proxy:latest
10Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)...
11latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
1289d9c30c1d48: Pull complete
13668840c175f8: Pull complete
14...
15Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
16Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
17Creating eclipse-theia_nginx-proxy_1 ... done
18Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 ... done

您已经部署了「nginx-proxy」及其使用 Docker Compose 的 Let's Encrypt 伴侣,现在您将继续在您的域中设置 Eclipse Theia 并保护它。

步骤 2 – 部署 Dockerized Eclipse Theia

在本节中,您将创建一个包含用户需要输入的允许登录组合的文件,然后,您将使用 Docker Compose 部署 Eclipse Theia 到您的服务器,并使用nginx-proxy将其暴露到您的安全域。

正如前一步所解释的那样,nginx-proxy 预计登录组合将在一个名为暴露的域名的文件中,以htpasswd格式,并存储在容器中的/etc/nginx/htpasswd目录中。

要创建登录组合,您首先需要通过运行以下命令来安装htpasswd:

1sudo apt install apache2-utils

apache2-utils包包含了htpasswd实用程序。

创建 /etc/nginx/htpasswd 目录:

1sudo mkdir -p /etc/nginx/htpasswd

创建一个存储您的域名登录的文件:

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

请记住,用你的 Eclipse Theia 域代替 theia.your_domain

若要添加用户名和密码组合,请运行以下命令:

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

用您想要添加的用户名替换用户名。您将被要求提供密码两次。提供密码后,htpasswd将添加用户名和哈希密码对到文件的末尾。

现在,您将创建部署 Eclipse Theia 的配置,将其存储在名为 'eclipse-theia-compose.yaml' 的文件中。

1nano eclipse-theia-compose.yaml

添加以下几行:

 1[label ~/eclipse-theia/eclipse-theia-compose.yaml]
 2version: '2.2'
 3
 4services:
 5  eclipse-theia:
 6    restart: always
 7    image: theiaide/theia:next
 8    init: true
 9    environment:
10      - VIRTUAL_HOST=theia.your_domain
11      - LETSENCRYPT_HOST=theia.your_domain

在此配置中,您定义了一个名为eclipse-theia的单一服务,将重启设置为总是theiaide/theia:next作为容器图像。

然后,您在环境部分中指定两个环境变量:VIRTUAL_HOSTLETSENCRYPT_HOST。前者被传送到nginx-proxy并告诉它该容器应该暴露在哪个域,而后者被其Let’s Encrypt插件使用,并指定要为哪个域请求TLS证书。

请记住,用您想要的域名替换 domain.your_domain,然后保存并关闭文件。

现在通过运行部署 Eclipse Theia:

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

最终的结果将看起来像:

 1[secondary_label Output]
 2...
 3Pulling eclipse-theia (theiaide/theia:next)...
 4next: Pulling from theiaide/theia
 563bc94deeb28: Pull complete
 6100db3e2539d: Pull complete
 7...
 8Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
 9Status: Downloaded newer image for theiaide/theia:next
10Creating eclipse-theia_eclipse-theia_1 ... done

然后,在您的浏览器中,导航到您正在使用的域名 Eclipse Theia. 您的浏览器将向您显示一个提示,要求您登录. 提供正确的凭证后,您将输入 Eclipse Theia,并立即看到其编辑器的GUI。 在您的地址栏中,您将看到一个锁定,表示连接是安全的。 如果您没有立即看到这一点,请等待几分钟才能提供TLS证书,然后重新加载页面。

Eclipse Theia GUI

现在您可以安全访问云 IDE,您将在下一步开始使用编辑器。

步骤 3 — 使用 Eclipse Theia 接口

在本节中,您将探索Eclipse Theia界面的一些功能。

在IDE的左侧,有一个四个按钮的垂直行,打开了侧面面板中最常用的功能。

Eclipse Theia GUI - Sidepanel

此栏是可自定义的,所以您可以将这些视图移动到不同的顺序或从栏中删除它们. 默认情况下,第一个视图会打开 Explorer 面板,为项目结构提供树形导航。

通过 ** 文件 ** 菜单创建新文件后,你会看到一个空的文件在一个新的卡上打开. 一旦保存,你可以查看文件的名称在浏览器侧面板. 要创建文件夹,右键单击浏览器侧面栏,然后单击 ** 新文件夹**. 您可以通过点击其名称来扩展文件夹,并将文件和文件夹拖放到层次的顶部,将其移动到一个新的位置。

Eclipse Theia GUI - New Folder

接下来的两个选项提供访问搜索和替换功能,然后,下一个选项提供您可能正在使用的源控制系统的视图,例如 Git

最后的视图是调试选项,该选项提供了面板中调试的所有常见操作,您可以将调试配置保存到launch.json文件中。

Debugger View with launch.json open

GUI的中心部分是您的编辑器,您可以通过编辑代码的标签进行分离。您可以将编辑视图更改为网格系统或旁边的文件。

Editor Grid View

您可以通过键入CTRL+SHIFT+来访问终端,或者在上方菜单中单击终端并选择新终端

Terminal open

你已经探索了Eclipse Theia界面的高级概述,并审查了一些最常用的功能。

结论

你现在有 Eclipse Theia,一个多功能的云 IDE,安装在你的Debian 10服务器上,使用Docker Compose和nginx-proxy。你已经用免费的Let's Encrypt TLS证书保护了它,并设置了该实例以要求用户登录凭证。你可以单独使用它来处理源代码和文档,或者与你的团队合作。如果你需要额外的功能,你也可以尝试构建你自己的Eclipse Theia版本。

Published At
Categories with 技术
comments powered by Disqus