Visual Studio Code è diventato uno degli IDE più popolari per la codifica. Ha integrato il supporto Git e Docker, un debugger del codice, il completamento automatico del codice, la possibilità di lavorare con file remoti e supporta vari plugin.
Con tutto il passaggio al cloud, avere accesso all'IDE di tua scelta da qualsiasi luogo è perfetto per lo sviluppo moderno. Cloud IDE consente la collaborazione in tempo reale tra gli sviluppatori, migliorando così la produttività. coder-server è un'applicazione che consente di eseguire Visual Studio Code da un server remoto e lo rende accessibile tramite qualsiasi browser.
Questo tutorial ti insegnerà come installare Visual Studio Code IDE usando l'applicazione code-server sul tuo server Rocky Linux 8. Lo esporrai anche tramite un dominio pubblico insieme al supporto SSL.
Prerequisiti
-
Un server che esegue Rocky Linux con almeno 2 GB di RAM e 2 core CPU.
-
Un utente non root con privilegi sudo.
-
Un dominio registrato e puntato al server.
-
Nginx installato sul tuo server.
-
Assicurati che tutto sia aggiornato.
$ sudo dnf update
Passaggio 1:configurazione del firewall
Il primo passo è configurare il firewall. Rocky Linux viene fornito con il firewall Firewalld.
Controlla se il firewall è in esecuzione.
$ sudo firewall-cmd --state
Il seguente output dimostra che il firewall è in esecuzione.
running
Controlla i servizi/porte attualmente consentiti.
$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
dhcpv6-client mdns ssh
Apri la porta 8080 per il server di codice.
$ sudo firewall-cmd --permanent --add-port=8080/tcp
Consenti porte HTTP e HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Ricontrolla lo stato del firewall.
$ sudo firewall-cmd --permanent --list-all
Dovresti vedere un output simile.
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:
Ricarica il firewall per abilitare le modifiche.
$ sudo systemctl reload firewalld
Passaggio 2 - Installa code-server
code-server viene fornito con uno script di installazione in grado di rilevare la versione Linux e installare il binario appropriato per il tuo server. Puoi testare lo script di installazione per verificare se funzionerà o meno sul tuo server.
Esegui il comando seguente per eseguire un'esecuzione a secco dell'installazione.
$ 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 [email protected]$USER Or, if you don't want/need a background service you can run: code-server
Eseguire l'installazione dopo aver eseguito correttamente il dry run.
$ curl -fsSL https://code-server.dev/install.sh | sh
Lo script di installazione potrebbe richiedere la tua password sudo.
Abilita il servizio code-server.
$ sudo systemctl enable [email protected]$USER
Se desideri aggiornare la tua istanza di code-server, ripeti il processo di installazione. code-server conserverà i tuoi file e le tue impostazioni.
Passaggio 3 - Configura code-server
code-server memorizza il suo file di configurazione in ~/.config/code-server/config.yaml
. Aprilo per la modifica.
$ sudo nano ~/.config/code-server/config.yaml
Ecco le impostazioni predefinite impostate durante l'installazione.
bind-addr: 127.0.0.1:8080
auth: password
password: a4768b3439e5e93b5d62489b
cert: false
Il file di configurazione predefinito abilita il seguente comportamento:
- Ascolta sulla porta IP di loopback 8080
- Abilita l'autorizzazione della password con una password generata casualmente
- Non utilizza TLS
Puoi modificare la password modificandone il valore nel file.
Se desideri archiviare una versione con hash della password, devi prima installare npm. Una volta installato, esegui il comando seguente per impostare la password con hash.
$ echo -n "thisismypassword" | npx argon2-cli -e $argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4
Otterrai il valore hash sul tuo terminale. Copialo e incollalo nel file di configurazione.
auth: password hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4"
Assicurati di racchiudere la password con hash tra virgolette. Se vuoi disabilitare la telemetria, aggiungi la seguente riga nel file.
disable-telemetry: false
Ci sono altre opzioni che puoi definire nel file. Per controllare tutte le altre opzioni che puoi aggiungere, usa il comando seguente per elencare tutti i flag.
$ code-server --help
Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.
Fase 4 - Installa SSL
Per installare un certificato SSL utilizzando Let's Encrypt, è necessario scaricare lo strumento Certbot. Ma prima dobbiamo installare il repository EPEL.
Esegui i seguenti comandi per installare Certbot.
$ sudo dnf install epel-release $ sudo dnf install certbot
Genera il certificato SSL.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d code-server.example.com -m [email protected]
Il comando precedente scaricherà un certificato in /etc/letsencrypt/live/code-server.example.com
directory sul tuo server. Assicurati di sostituire [email protected]
con la tua email attuale.
Genera un gruppo Diffie-Hellman certificato.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Crea una directory webroot di sfida per il rinnovo automatico di Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, prima crea il file /etc/cron.daily/certbot-renew
e aprilo per la modifica.
$ sudo nano /etc/cron.daily/certbot-renew
Incolla il seguente codice.
#!/bin/sh certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Modifica le autorizzazioni sul file dell'attività per renderlo eseguibile.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Passaggio 5 - Installa e configura Nginx
Crea e apri il /etc/yum.repos.d/nginx.repo
file per la creazione del repository Nginx ufficiale.
[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
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Installa il server Nginx.
$ sudo dnf install nginx
Abilita il servizio Nginx.
$ sudo systemctl enable nginx
Crea un file di configurazione per code-server in /etc/nginx/conf.d
directory.
$ sudo nano /etc/nginx/conf.d/code-server.conf
Incolla il seguente codice al suo interno.
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; } }
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Convalida il file di configurazione.
$ sudo nginx -t
Se ottieni il seguente errore, dovrai modificare il file /etc/nginx/nginx.conf
per aggiungere/regolare la dimensione della variabile server_names_hash_bucket_size
.
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
Apri il file /etc/nginx/nginx.conf
per la modifica.
$ sudo nano /etc/nginx/nginx.conf
Aggiungi la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Salva il file premendo Ctrl + X e inserendo Y quando richiesto. Convalida di nuovo Nginx.
Avvia il server Nginx.
$ sudo systemctl start nginx
Passaggio 6 - Usa code-server
Avvia il dominio https://code-server.example.com
nel browser e inserire la password per autenticare l'installazione del server di codice. Immettere la password dal file di configurazione.
code-server chiederà le impostazioni del codice VS la prima volta che lo avvii.
Scegli una combinazione di colori, passa attraverso le sezioni rimanenti e fai clic su Segna come completato al termine.
Conclusione
Ora hai un'istanza di Visual Studio Code installata sul tuo server Rocky Linux. Ci sono alcuni avvertimenti con questo rispetto al codice VS ufficiale. Le estensioni disponibili non sono le estensioni ufficiali ma offerte dal repository non ufficiale del code-server. Puoi consultare i loro documenti ufficiali se desideri installare l'estensione ufficiale. Ci vorrà un po' di sforzo. Se hai domande, pubblicale nei commenti qui sotto.