Eclipse Theia ist eine erweiterbare Cloud-IDE, die auf einem Remote-Server läuft und von einem Webbrowser aus zugänglich ist. Visual ist sie so konzipiert, dass sie ähnlich wie Microsoft Visual Studio aussieht und sich auch ähnlich verhält. Was Eclipse Theia von anderer Cloud-IDE-Software unterscheidet, ist die Erweiterbarkeit; sie kann mit benutzerdefinierten Erweiterungen modifiziert werden, damit Sie eine Cloud-IDE für Ihre Bedürfnisse erstellen können.
In diesem Tutorial verwenden Sie Eclipse Theia auf Ihrem Ubuntu-18.04-Server mit Docker Compose. Sie machen ihn auf Ihrer Domäne mit nginx-proxy verfügbar und sichern ihn mit einem Let’s Encrypt TLS-Zertifikat, dem Sie ein Add-on hinzufügen. Eine ausführlichere Version dieses Tutorials finden Sie unter So richten Sie die Eclipse-Theia-Cloud-IDE-Plattform unter Ubuntu 18.04 ein.
theia.your-domain
.theia.your-domain
, der auf die öffentliche IP-Adresse Ihres Servers verweist. Sie finden in dieser Einführung in DigitalOcean DNS Details dazu, wie Sie sie hinzufügen können.Erstellen Sie das Verzeichnis, um alle Daten für Eclipse Theia zu speichern:
- mkdir ~/eclipse-theia
Navigieren Sie dorthin:
- cd ~/eclipse-theia
Erstellen Sie nginx-proxy-compose.yaml
, um die Docker Compose-Konfiguration für nginx-proxy
zu speichern:
- nano nginx-proxy-compose.yaml
Fügen Sie die folgenden Zeilen hinzu:
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"
Hier definieren Sie zwei Dienste, die Docker Compose ausführen wird, nginx-proxy
und seinen Let’s Encrypt-Begleiter. Für den Proxy geben Sie jwilder/nginx-proxy
als Image ein, ordnen Sie HTTP- und HTTPS-Ports zu und definieren Sie Volumes, die während der Laufzeit zugänglich sind.
Speichern und schließen Sie die Datei.
Stellen Sie die Konfiguration bereit:
- docker-compose -f nginx-proxy-compose.yaml up -d
Die endgültige Ausgabe sieht ungefähr so aus:
OutputCreating 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
geht davon aus, dass Log-In-Kombinationen in einer Datei vorliegen, die nach der verfügbar gestellten Domäne benannt wurde, im Format htpasswd
vorliegen und unter dem Verzeichnis /etc/nginx/htpasswd
im Container gespeichert sind.
Installieren Sie htpasswd
:
- sudo apt install apache2-utils
Das apache2-utils
-Paket enthält das htpasswd
-Dienstprogramm.
Erstellen Sie das Verzeichnis /etc/nginx/htpasswd
:
- sudo mkdir -p /etc/nginx/htpasswd
Erstellen Sie eine Datei, um die Logins für Ihre Domäne zu speichern:
- sudo touch /etc/nginx/htpasswd/theia.your-domain
Führen Sie den folgenden Befehl mit einem Benutzernamen und einer Passwort-Kombination aus:
- sudo htpasswd /etc/nginx/htpasswd/theia.your-domain username
htpasswd
fügt den Benutzernamen und ein Passwort-Paar mit Hash am Ende der Datei hinzu.
Erstellen Sie die Konfiguration für die Bereitstellung von Eclipse Theia:
- nano eclipse-theia-compose.yaml
Fügen Sie die folgenden Zeilen hinzu:
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
Sie definieren einen einzigen Dienst namens eclipse-theia
mit einem restart
, der auf always
eingestellt ist und theiaide/theia:next
als Container-Image. Außerdem setzen Sie init
auf true
. Dann bestimmen Sie zwei Umgebungsvariablen im Abschnitt environment
: VIRTUAL_HOST
und LETSENCRYPT_HOST
.
Speichern und schließen Sie die Datei.
Stellen Sie jetzt Eclipse Theia bereit, indem Sie Folgendes ausführen:
- docker-compose -f eclipse-theia-compose.yaml up -d
Der endgültige Ausgabe sieht ungefähr so aus:
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
Navigieren Sie zur Domäne, die Sie für Eclipse Theia verwenden. Ihr Browser zeigt Ihnen eine Eingabeaufforderung, mit der Sie zur Anmeldung aufgefordert werden. Sie rufen Eclipse Theia auf und sehen die Editor-GUI. Außerdem sehen Sie ein Schloss, das anzeigt, dass die Verbindung sicher ist.
Sie haben jetzt Eclipse Theia, eine vielseitige Cloud IDE, auf Ihrem Ubuntu-18.04-Server mit Docker Compose und nginx-proxy
installiert. Sie haben es mit einem kostenlosen Let’s Encrypt TLS-Zertifikat gesichert und eine Instanz eingerichtet, um Anmeldedaten des Benutzers anzufordern. Sie können damit an Ihrem Quellcode und Dokumenten einzeln arbeiten oder im Team zusammenarbeiten. Sie können auch versuchen, Ihre eigene Version von Eclipse Theia zu erstellen, wenn Sie zusätzliche Funktionen benötigen. Weitere Informationen dazu finden Sie unter Theia Docs.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
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!
I set it up this way, but when I visit the domain (and enter username & password), Theia is stuck on the loading screen. If I expose the port 3000 in eclipse-theia-compose.yaml everything works fine, so it‘s an nginx issue. (I obviously can‘t keep it that way, because that way it‘s without SSL & password protection.)
The issue was already mentioned here: https://github.com/theia-ide/theia-apps/issues/129. I tried adding the proposed solution as a manual configuration in /etc/nginx/vhost.d, but it didn’t change anything. However, it shouldn’t make a difference anyways, because according to the nginx-proxy repo this configuration is set by default anyways.
I replicated the steps from this tutorial one-by-one. Why doesn’t it work?