Introdução

O code-server é o Visual Studio Code da Microsoft em execução em um servidor remoto e acessível diretamente do seu navegador. Isso significa que você pode usar vários dispositivos, executando sistemas operacionais diferentes , tendo sempre um ambiente de desenvolvimento consistente à mão.

Neste tutorial, você irá configurar a plataforma de IDE (Ambiente de Desenvolvimento Integrado) em nuvem code-server em sua máquina com Ubuntu 18.04 e expô-la no seu domínio, protegida com o certificado Let's Encrypt. Para obter uma versão mais detalhada deste tutorial, consulte o artigo sobre Como configurar a plataforma de IDE em nuvem code-server no Ubuntu 18.04.

Pré-requisitos

code-server illustration for: Pré-requisitos
  • Um nome de domínio totalmente registrado para hospedar o code-server, apontado para o seu servidor. Neste tutorial usaremos o <^>code-server.your-domain<^> durante todo o processo. Você pode comprar um nome de domínio em Namecheap, obter um gratuitamente em Freenom ou usar o registrador de domínios de sua escolha.
  • Um registro do tipo A, com o <^>your-domain<^> apontando para o endereço IP público do seu servidor.
  • Um registro do tipo A, com o www.<^>your-domain<^> apontando para o endereço IP público do seu servidor.

Passo 1 — Instalando o code-server

Crie o diretório para armazenar todos os dados para o code-server:

				
					
mkdir ~/code-server

				
			

Navegue até ele:

				
					
cd ~/code-server

				
			

Visite a página de versões do Github do code-server e escolha a última compilação do Linux. Baixe a versão, usando o seguinte:

				
					
wget &lt;^&gt;https://github.com/cdr/code-server/releases/download/2.1692-vsc1.39.2/code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Descompacte o arquivo:

				
					
tar -xzvf &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64.tar.gz&lt;^&gt;

				
			

Navegue até o diretório que contém o executável do code-server:

				
					
cd &lt;^&gt;code-server2.1692-vsc1.39.2-linux-x86_64&lt;^&gt;

				
			

Para acessar o executável do code-server pelo seu sistema, copie-o com:

				
					
sudo cp code-server /usr/local/bin

				
			

Crie uma pasta para o code-server armazenar os dados do usuário:

				
					
sudo mkdir /var/lib/code-server

				
			

Crie um serviço systemd, code-server.service, no diretório /lib/systemd/system:

				
					
sudo nano /lib/systemd/system/code-server.service

				
			

Adicione as linhas seguintes:

				
					
[label /lib/systemd/system/code-server.service]

[Unit]

Description=code-server

After=nginx.service



[Service]

Type=simple

Environment=PASSWORD=&lt;^&gt;your_password&lt;^&gt;

ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

Restart=always



[Install]

WantedBy=multi-user.target

				
			
  • --host 127.0.0.1 vincula-o ao localhost.
  • --user-data-dir /var/lib/code-server define seu diretório de dados do usuário.
  • --auth password especifica que ele deve autenticar visitantes com uma senha.

Lembre-se de substituir o <^>your_password<^> pela sua senha desejada.

Salve e feche o arquivo.

Inicie o serviço code-server:

				
					
sudo systemctl start code-server

				
			

Verifique se ele foi iniciado corretamente:

				
					
sudo systemctl status code-server

				
			

Você verá um resultado parecido com este:

				
					
[secondary_label Output]

● code-server.service - code-server

   Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)

   Active: active (running) since Mon 2019-12-09 20:07:28 UTC; 4s ago

 Main PID: 5216 (code-server)

    Tasks: 23 (limit: 2362)

   CGroup: /system.slice/code-server.service

           ├─5216 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

           └─5240 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password

...

				
			

Habilite o serviço code-server para iniciar automaticamente após a reinicialização de um servidor:

				
					
sudo systemctl enable code-server

				
			

Passo 2 — Expondo o code-server

Agora, você irá configurar o Nginx como um proxy reverso para o code-server.

Crie o code-server.conf para armazenar a configuração para expor o code-server no seu domínio:

				
					
sudo nano /etc/nginx/sites-available/code-server.conf

				
			

Adicione as linhas a seguir para instalar o seu bloco de servidor com as diretivas necessárias:

				
					
[label /etc/nginx/sites-available/code-server.conf]

server {

	listen 80;

	listen [::]:80;



	server_name &lt;^&gt;code-server.your_domain&lt;^&gt;;



	location / {

		proxy_pass http://localhost:8080/;

		proxy_set_header Upgrade $http_upgrade;

		proxy_set_header Connection upgrade;

		proxy_set_header Accept-Encoding gzip;

	}

}

				
			

Substitua <^>code-server.your_domain<^> pelo seu domínio desejado, na sequência, salve e feche o arquivo.

Para tornar a configuração deste site ativa, crie um symlink dele:

				
					
sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf

				
			

Teste a validade da configuração:

				
					
sudo nginx -t

				
			

Você verá o seguinte resultado:

				
					
[secondary_label Output]

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

				
			

Para que a configuração entre em vigor, reinicie o Nginx:

				
					
sudo systemctl restart nginx

				
			

Passo 3 — Protegendo seu domínio

Agora, você irá proteger seu domínio usando um certificado TLS do Let's Encrypt.

Adicione o repositório de pacotes Certbot ao seu servidor:

				
					
sudo add-apt-repository ppa:certbot/certbot

				
			

Instale o Certbot e seu plug-in do Nginx:

				
					
sudo apt install python-certbot-nginx

				
			

Configure o ufw para aceitar o tráfego criptografado:

				
					
sudo ufw allow https

				
			

O resultado será:

				
					
[secondary_label Output]

Rule added

Rule added (v6)

				
			

Recarregue-o para que a configuração entre em vigor:

				
					
sudo ufw reload

				
			

A saída mostrará:

				
					
[secondary_label Output]

Firewall reloaded

				
			

Navegue até seu domínio do code-server

Digite sua senha do code-server. Você verá a interface exposta no seu domínio.

Para protegê-lo, instale um certificado TLS do Let's Encrypt usando o Certbot.

Peça um certificado para seu domínio com:

				
					
sudo certbot --nginx -d &lt;^&gt;code-server.your_domain&lt;^&gt;

				
			

Forneça um endereço de e-mail para avisos urgentes, aceite os Termos de serviço do EFF e decida se quer redirecionar todo o tráfego HTTP para o HTTPS.

A saída será semelhante a esta:

				
					
[secondary_label Output]

IMPORTANT NOTES:

 - Congratulations! Your certificate and chain have been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/fullchain.pem

   Your key file has been saved at:

   /etc/letsencrypt/live/&lt;^&gt;code-server.your_domain&lt;^&gt;/privkey.pem

   Your cert will expire on ... To obtain a new or tweaked

   version of this certificate in the future, simply run certbot again

   with the "certonly" option. To non-interactively renew *all* of

   your certificates, run "certbot renew"

...

				
			

O Certbot gerou os certificados TLS com êxito e os aplicou à configuração do Nginx para seu domínio.

Conclusão

Agora, você tem o code-server, um IDE em nuvem versátil, instalado no seu servidor Ubuntu 18.04, exposto no seu domínio e protegido com os certificados do Let's Encrypt. Para obter mais informações, consulte a documentação do Visual Studio Code para obter recursos adicionais e instruções detalhadas sobre outros componentes do code-server.