Servidor de código fácil de instalar en Ubuntu 20.04

Servidor de código fácil de instalar en Ubuntu 20.04

En este artículo, lo guiaremos para instalar Code-Server en Ubuntu 20.04.

Code-server es una aplicación de servidor de código abierto que sirve VS Code en cualquier máquina en cualquier lugar y accede a ella en el navegador. Permite aprovechar potentes servidores en la nube para acelerar las compilaciones y pruebas, y ahorrar batería cuando está en movimiento.

Prerrequisitos

  • Un VPS instalado con Ubuntu 20.04 con mín. recomendado: 4 GB de RAM, 2 vCPU.
  • Un nombre de dominio válido que apunta al VPS.
  • Acceso de usuario root o usuario normal con privilegios administrativos.

Instalar Code-Server en Ubuntu 20.04

1. Actualiza el servidor

Mantenga el servidor actualizado.

# apt update -y

# apt upgrade -y

2. Instalar Code-Server

Descargue el servidor de código del repositorio oficial usando el siguiente comando:

# cd /home
# wget https://github.com/cdr/code-server/releases/download/v3.11.0/code-server-3.11.0-linux-amd64.tar.gz

Extraiga el archivo tar y cambie el nombre con el servidor de códigos usando el siguiente comando:

# tar xzf code-server-3.11.0-linux-amd64.tar.gz && rm code-server-3.11.0-linux-amd64.tar.gz
# mv code-server-3.11.0-linux-amd64 code-server

Haga ejecutable el binario del servidor de código.

# cd code-server

Ejecute el servidor de código.

./code-server --port 8000

Abra el navegador de su computadora y navegue hasta http: // YOUR_IP_ADDRESS: 8000. Se te solicitará una contraseña. Utilice la contraseña que se muestra en el terminal SSH. Se abrirá la interfaz de Visual Studio Code. Para detener el servidor, presione  CTRL + C  en el terminal SSH.

3. Cree un servicio de inicio del sistema

Podemos crear un servicio usando el administrador de servicios systemd de Linux . Sigue estos pasos:

Cree un nuevo archivo con el nombre code-server.service usando el siguiente comando:

# vi /lib/systemd/system/code-server.service

Copie y pegue el siguiente contenido y reemplácelo con la contraseña que desea establecer. Esta será la contraseña que utilizará para iniciar sesión en el servidor de códigos.

[Unit]
Description=Code Server Service
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=10
WorkingDirectory=/home/code-server
Environment='PASSWORD='
ExecStart=/home/code-server/code-server --port 8000
StandardOutput=file:/var/log/code-server-output.log
StandardError=file:/var/log/code-server-error.log

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo.

Ahora, inicie y habilite code-server.service usando los siguientes comandos:

# systemctl daemon-reload

# systemctl start code-server

# systemctl enable code-server

Abra el navegador de su computadora y navegue hasta http: // YOUR_IP_ADDRESS: 8000. Se te solicitará una contraseña. Utilice la contraseña que ha mencionado en el archivo code-server.service .

4. Instalar y configurar Nginx

Para acceder a la instalación a través de un nombre de dominio y agregar un certificado SSL, se recomienda configurar un proxy inverso. Para este propósito de demostración, usamos el servidor web Nginx como proxy inverso.

Para instalar Nginx use el siguiente comando:

# apt-get install nginx -y

Deshabilite el archivo de configuración del sitio Nginx predeterminado.

# rm /etc/nginx/sites-enabled/default

Cree un nuevo archivo de configuración del sitio Nginx para el servidor de código.

# vi /etc/nginx/sites-available/code-server

Pegue el siguiente fragmento en el archivo, reemplazando example.com con su propio nombre de dominio.

server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Habilite la configuración y reinicie el servidor web Nginx.

# ln -s /etc/nginx/sites-available/code-server /etc/nginx/sites-enabled/

Pruebe el archivo de configuración de Nginx.

# nginx -t

Si no ocurre ningún error, reinicie el servicio nginx .

# systemctl restart nginx

Si está utilizando UFW como firewall, permita las conexiones SSH y Nginx a través del firewall y habilite el firewall. Esto garantizará que solo se pueda acceder a la instalación del servidor de códigos a través del proxy inverso de Nginx.

# ufw allow ssh
# ufw allow 'Nginx Full'
# ufw enable

Navegue hasta su nombre de dominio para probar la instalación.

5. Instale Let's Encrypt SSL

Mantenga la conexión segura entre el servidor y el usuario final, se recomienda encarecidamente instalar el certificado SSL. Let's Encrypt es un certificado SSL gratuito que viene con una validez de 90 días y se renovará cada 90 días. Estamos usando certbot para instalar el certificado SSL.

Descargue e instale Certbot.

# apt-get install python3-certbot-nginx

Ejecute el siguiente comando para iniciar el instalador de línea de comandos de Certbot, reemplazando example.com con su propio nombre de dominio.

# certbot --nginx -d example.com

Continúe con el instalador interactivo. Cuando se le pregunte si desea redirigir el tráfico HTTP a HTTPS, elija redireccionar.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/code-server
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/code-server

6. Instale fail2ban (recomendado)

Fail2ban es una aplicación que analiza registros para detectar y mitigar ataques automatizados en un servidor. Cuando se detecta un número predefinido de intentos de inicio de sesión fallidos, fail2ban modificará las iptables del servidor para bloquear al atacante durante un período de tiempo predefinido.

Instale setuptools. Esto es necesario para instalar fail2ban.

# apt-get install python3-setuptools -y

Descargue e instale fail2ban.

git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python3 setup.py install
cp build/fail2ban.service /lib/systemd/system/fail2ban.service
cd .. && rm -rf fail2ban

Copie el archivo de configuración predeterminado jails.conf en jails.local y abra el archivo copiado en un editor de texto.

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# vi /etc/fail2ban/jail.local

Pegue el siguiente fragmento en la parte inferior del archivo. Puede cambiar los parámetros maxretry, findtime y bantime.

[code-server]
enabled = true
logpath = /var/log/code-server-output.log
# maxretry: The amount of unsuccessful login attempts after which a ban is issued.
maxretry = 5
# findtime: The amount of time within which the login attempts must occur.
findtime = 10m
# bantime: The amount of time for which an IP is banned from accessing the server.
bantime = 10m

Cree un nuevo archivo de configuración de filtro para definir el patrón de filtro para encontrar intentos de inicio de sesión fallidos en el registro del servidor de códigos.

# vi /etc/fail2ban/filter.d/code-server.conf

Pegue el siguiente fragmento en el archivo.

[Definition]
failregex = Failed login attempt {\'xForwardedFor\':\'\'.*
ignoreregex =
datepattern = "timestamp':{EPOCH}}$

Reinicie el servicio rsyslog y habilite e inicie el servicio fail2ban.

# systemctl restart rsyslog.service

# systemctl start fail2ban.service
# systemctl enable fail2ban.service

Eso es todo. La instalación se completó con éxito.

En este artículo, le explicamos cómo instalar Code-Server en Ubuntu 20.04