So installierst du Visual Studio Code Cloud IDE auf Rocky Linux 8

Visual Studio Code hat sich zu einer der beliebtesten IDEs für die Codierung entwickelt. Sie bietet integrierte Git- und Docker-Unterstützung, einen Code-Debugger, automatische Code-Vervollständigung, die Möglichkeit, mit Remote-Dateien zu arbeiten und unterstützt verschiedene Plugins.

In Zeiten, in denen sich alles in die Cloud verlagert, ist der Zugriff auf die IDE deiner Wahl von überall aus perfekt für die moderne Entwicklung. Die Cloud-IDE ermöglicht die Zusammenarbeit zwischen Entwicklern in Echtzeit und steigert so die Produktivität. coder-server ist eine Anwendung, mit der du Visual Studio Code von einem entfernten Server aus starten kannst und die über jeden Browser zugänglich ist.

In diesem Lernprogramm lernst du, wie du die Visual Studio Code IDE mit der coder-server Anwendung auf deinem Rocky Linux 8 Server installierst. Außerdem wirst du sie über eine öffentliche Domain mit SSL-Unterstützung zugänglich machen.

Voraussetzungen

  1. Ein Server mit Rocky Linux mit mindestens 2 GB RAM und 2 CPU-Kernen.
  2. Ein Nicht-Root-Benutzer mit sudo-Rechten.
  3. Eine registrierte Domain, die auf den Server zeigt.
  4. Nginx ist auf deinem Server installiert.
  5. Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo dnf update
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux wird mit der Firewall Firewalld ausgeliefert.

Überprüfe, ob die Firewall läuft.

$ sudo firewall-cmd --state

Die folgende Ausgabe beweist, dass die Firewall läuft.

running

Überprüfe die aktuell erlaubten Dienste/Ports.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe erscheinen.

dhcpv6-client mdns ssh

Öffne Port 8080 für den Code-Server.

$ sudo firewall-cmd --permanent --add-port=8080/tcp

Lasse HTTP- und HTTPS-Ports zu.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Überprüfe erneut den Status der Firewall.

$ sudo firewall-cmd --permanent --list-all

Du solltest eine ähnliche Ausgabe sehen.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Lade die Firewall neu, um die Änderungen zu aktivieren.

$ sudo systemctl reload firewalld

Schritt 2 – Installiere code-server

code-server wird mit einem Installationsskript geliefert, das die Linux-Version erkennt und die passende Binärdatei für deinen Server installiert. Du kannst das Installationsskript testen, um herauszufinden, ob es auf deinem Server funktioniert oder nicht.

Führe den folgenden Befehl aus, um einen Probelauf der Installation durchzuführen.

$ curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
Rocky Linux 8.4 (Green Obsidian)
Installing v3.12.0 of the amd64 rpm package from GitHub.

+ mkdir -p ~/.cache/code-server
+ curl -#fL -o ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete -C - https://github.com/cdr/code-server/releases/download/v3.12.0/code-server-3.12.0-amd64.rpm
+ mv ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete ~/.cache/code-server/code-server-3.12.0-amd64.rpm
+ sudo rpm -i ~/.cache/code-server/code-server-3.12.0-amd64.rpm

rpm package has been installed.

To have systemd start code-server now and restart on boot:
  sudo systemctl enable --now code-server@$USER
Or, if you don't want/need a background service you can run:
  code-server

Führe das Setup nach dem erfolgreichen Probelauf aus.

$ curl -fsSL https://code-server.dev/install.sh | sh

Das Installationsskript fragt dich möglicherweise nach deinem sudo-Passwort.

Aktiviere den CodeServer-Dienst.

$ sudo systemctl enable code-server@$USER

Wenn du deine Instanz von code-server aktualisieren möchtest, wiederhole den Installationsvorgang. code-server behält deine Dateien und Einstellungen bei.

Schritt 3 – Code-server konfigurieren

code-server speichert seine Konfigurationsdatei unter ~/.config/code-server/config.yaml. Öffne sie zur Bearbeitung.

$ sudo nano ~/.config/code-server/config.yaml

Hier findest du die Standardeinstellungen, die während der Installation festgelegt wurden.

bind-addr: 127.0.0.1:8080
auth: password
password: a4768b3439e5e93b5d62489b
cert: false

Die Standardkonfigurationsdatei aktiviert das folgende Verhalten:

  • Lauschen auf dem Loopback-IP-Port 8080
  • Ermöglicht die Passwortautorisierung mit einem zufällig generierten Passwort
  • Verwendet kein TLS

Du kannst das Passwort ändern, indem du seinen Wert in der Datei änderst.

Wenn du eine Hash-Version des Passworts speichern willst, musst du zuerst npm installieren. Nach der Installation führst du den folgenden Befehl aus, um das Hash-Passwort zu setzen.

$ echo -n "thisismypassword" | npx argon2-cli -e
$argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4

Du erhältst den gehashten Wert in deinem Terminal. Kopiere ihn und füge ihn in die Konfigurationsdatei ein.

auth: password
hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4"

Achte darauf, das Hash-Passwort mit Anführungszeichen zu umschließen. Wenn du die Telemetrie deaktivieren willst, füge die folgende Zeile in die Datei ein.

disable-telemetry: false

Es gibt noch weitere Optionen, die du in der Datei festlegen kannst. Um alle anderen Optionen zu überprüfen, die du hinzufügen kannst, verwende den folgenden Befehl, um alle Flags aufzulisten.

$ code-server --help

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Schritt 4 – SSL installieren

Um ein SSL-Zertifikat mit Let’s Encrypt zu installieren, müssen wir das Tool Certbot herunterladen. Aber zuerst müssen wir das EPEL-Repository installieren.

Führe die folgenden Befehle aus, um Certbot zu installieren.

$ sudo dnf install epel-release
$ sudo dnf install certbot

Erstelle das SSL-Zertifikat.

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d code-server.example.com -m name@example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/code-server.example.com auf deinem Server heruntergeladen. Achte darauf, dass du name@example.com durch deine tatsächliche E-Mail-Adresse ersetzt.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Erstelle ein Challenge-Webroot-Verzeichnis für die automatische Erneuerung von Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Erstelle einen Cron Job, um das SSL zu erneuern. Er wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstelle dazu zunächst die Datei /etc/cron.daily/certbot-renew und öffne sie zur Bearbeitung.

$ sudo nano /etc/cron.daily/certbot-renew

Füge den folgenden Code ein.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Ändere die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Schritt 5 – Nginx installieren und konfigurieren

Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo, um das offizielle Nginx-Repository zu erstellen.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Installiere den Nginx-Server.

$ sudo dnf install nginx

Aktiviere den Nginx-Dienst.

$ sudo systemctl enable nginx

Erstelle eine Konfigurationsdatei für code-server im Verzeichnis /etc/nginx/conf.d.

$ sudo nano /etc/nginx/conf.d/code-server.conf

Füge den folgenden Code in die Datei ein.

server {
    	listen 80; listen [::]:80;
	    server_name code-server.example.com;
    	return 301 https://$host$request_uri;
}

server {
        server_name code-server.example.com;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        access_log /var/log/nginx/code-server.access.log;
        error_log /var/log/nginx/code-server.error.log;

        ssl_certificate /etc/letsencrypt/live/code-server.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/code-server.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/code-server.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
 
	   location / {
	       proxy_pass http://localhost:8080/;
	       proxy_set_header Host $host;
	       proxy_set_header Upgrade $http_upgrade;
	       proxy_set_header Connection upgrade;
	       proxy_set_header Accept-Encoding gzip;
	   }
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe die Konfigurationsdatei.

$ sudo nginx -t

Wenn du die folgende Fehlermeldung erhältst, musst du die Datei /etc/nginx/nginx.conf bearbeiten, um die Größe der Variable server_names_hash_bucket_size hinzuzufügen/anzupassen.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Bestätige Nginx erneut.

Starte den Nginx-Server.

$ sudo systemctl start nginx

Schritt 6 – Code-Server verwenden

Starte die Domain https://code-server.example.com in deinem Browser und gib das Passwort ein, um deine Code-Server-Installation zu authentifizieren. Gib das Passwort aus der Konfigurationsdatei ein.

code-server Passwortabfrage

code-server fragt beim ersten Start nach den VS-Code-Einstellungen.

code-server Konfigurationsbildschirm

Wähle ein Farbschema, gehe durch die restlichen Abschnitte und klicke auf Fertig markieren, wenn du fertig bist.

code-server Startseite

Fazit

Du hast jetzt eine Visual Studio Code-Instanz auf deinem Rocky Linux-Server installiert. Im Vergleich zum offiziellen VS Code gibt es hier einige Einschränkungen. Die verfügbaren Erweiterungen sind nicht die offiziellen Erweiterungen, sondern werden aus dem inoffiziellen Repository des Code-Servers angeboten. Du kannst die offiziellen Dokumente konsultieren, wenn du die offiziellen Erweiterungen installieren möchtest. Es wird einige Mühe kosten. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …