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


Cómo usar Python como una calculadora de línea de comandos

Cómo usar Python como una calculadora de línea de comandos

Si bien puede usar una calculadora gráfica en su computadora, el intérprete del lenguaje de programación Python puede funcionar como una calculadora de escritorio. Es una broma de ejecución tan popular en la comunidad de Python que se menciona en el tutorial oficial. Así es como puedes usar Python como calculadora.

Los 8 mejores blogs de Java para programadores

Los 8 mejores blogs de Java para programadores

Como programador, debe enfrentar desafíos para sobrevivir y construir algunas maravillas en el campo del desarrollo o la programación. Por lo tanto, si está buscando aprender un lenguaje de programación avanzado para mejorar sus habilidades profesionales, Java es uno de los mejores prospectos que existen.

7 comandos vitales para comenzar con Python para principiantes

7 comandos vitales para comenzar con Python para principiantes

Aprender un nuevo lenguaje de programación como Python se vuelve fácil si tiene una hoja de ruta completa que detalla qué conceptos aprender como principiante y cómo progresar más para alcanzar el siguiente hito. Incluso los programadores intermedios deberían repasar con frecuencia sus conceptos básicos para construir una base sólida para ellos mismos.

Principios de diseño web receptivo

Principios de diseño web receptivo

Hoy en día, es una práctica común crear un sitio web o una aplicación que ajuste su interfaz de usuario según el navegador o el dispositivo. Hay dos enfoques para lograr este objetivo. La primera implica la creación de diferentes versiones de su sitio web o aplicación para diferentes dispositivos. Pero es ineficiente y puede provocar errores impredecibles.

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Cómo contar la cantidad de dígitos en un número usando C ++, Python y JavaScript

Trabajar con números es una parte integral de la programación. Todos los lenguajes de programación brindan soporte para manipular números de muchas formas diferentes. En este artículo, aprenderá a encontrar el número total de dígitos en un entero utilizando enfoques iterativos, basados ​​en registros y basados ​​en cadenas.

Las 9 mejores alternativas de Docker para la gestión de contenedores

Las 9 mejores alternativas de Docker para la gestión de contenedores

Los contenedores son muy beneficiosos para el desarrollo, la implementación y la administración de software en un entorno virtual. Docker es útil en el proceso de contenedorización, pero no es la única plataforma que existe. Si está buscando algunas alternativas a Docker, no busque más. Esta lista muestra algunas alternativas de Docker eficientes y ricas en funciones para usar en su próximo proyecto.

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

SQL vs. NoSQL: ¿Cuál es la mejor base de datos para su próximo proyecto?

Cómo incrustar tweets en sus publicaciones de WordPress

Cómo incrustar tweets en sus publicaciones de WordPress

Incrustar servicios de terceros en sus publicaciones de WordPress es una forma emocionante de cautivar el interés de un visitante. El contenido incrustado también proporciona señales visuales que facilitan el escaneo. WordPress ha facilitado la adición de este tipo de contenido.

Cómo eliminar la carpeta de módulos de nodo con npkill

Cómo eliminar la carpeta de módulos de nodo con npkill

Node.js es un entorno de ejecución de JavaScript que le permite ejecutar JavaScript fuera de los navegadores web, lo que lo convierte en una opción popular para desarrollar todo tipo de aplicaciones. Parte de su popularidad se debe a la gran cantidad de paquetes de NPM que existen para facilitar la experiencia del desarrollador.

Cómo escribir y compilar su primer código de solidez

Cómo escribir y compilar su primer código de solidez

La solidez es el lenguaje de programación utilizado por los contratos inteligentes en la cadena de bloques Ethereum. Es un lenguaje de programación orientado a objetos de tipo estático.