Servidor VPS

Configuración de un dominio y un alojamiento en Internet

Se desea disponer de un alojamiento en Internet configurado con un servidor ssh, servidor web y servidor de correo. Se añadirán medidas de seguridad y de monitorización.

Para ello se utilizará un dominio y un servidor VPS. Se puede usar el pack de Github.

– Registrar un dominio en Namecheap (o Name, Hostalia, Piensa Solutions,  . . . )

Configurar los DNS del alojamiento que se va a utilizar.

– Utilizar un VPS en DigitalOcean ( o PiensaSolutionsContabo, OVH, Clouding,  . . . )

How To Install Linux, Nginx, MySQL, PHP (LEMP stack) on Ubuntu 22.04

  • Añadir el dominio y crear un registro tipo A

Conectarse por ssh

ssh root@your_server_ip
 
ssh root@your_domain_server

Usuarios de Windows: Tutorial de SSH en Windows Terminal

Más información: Los mejores clientes SSH para Windows

Crear un nuevo usuario y añadirlo al grupo sudo

adduser nombre_usuario

usermod -aG sudo nombre_usuario

Abrir el fichero de configuración del servidor ssh

sudo nano /etc/ssh/sshd_config

Modificar la opción PermitRootLogin y guardar el archivo

PermitRootLogin no

Reiniciar el servidor ssh

sudo systemctl restart ssh

 

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

Comprobación de renovación automática (2 veces al día):

sudo systemctl status certbot.timer sudo certbot renew --dry-run

Renovación del certificado SSL

Red Sift Certificates Lite

 

 

  • Proteger el servidor con fail2ban.

Instalar y configurar Fail2Ban

Configura Fail2ban para evitar ataques SASL en Postfix

sudo apt update
sudo apt install fail2ban

sudo cp /etc/fail2ban/jail.{conf,local}

sudo nano /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 23.34.45.56

reiniciar fail2ban

sudo systemctl restart fail2ban

 

 Fichero datos.html en la carpeta ejemplo:

<!DOCTYPE html>

<html lang="es">

<head>

   <meta charset="UTF-8">

   <meta name="viewport" content="width=device-width, initial-scale=1.0">

   <title>Datos de ejemplo</title>

</head>

<body>

   <h2>Este es el contenido de la página de datos</h2>

</body>

</html>

Situarse en la carpeta de documentos del servidor VPS: /var/www/html

cd  /var/www/html

crear la carpeta ejemplo

sudo su
mkdir ejemplo

crear el fichero datos en la carpeta ejemplo

cd ejemplo
nano datos.html

probar el acceso desde el navegador

alumno.me/ejemplo/datos.html

 

SMTP en DigitalOcean.com

SMTP ports 25, 465, and 587 are blocked on Droplets to prevent spam and other abuses on our platform. This block applies to all Droplets by default and includes traffic passing through a Reserved IP address.

SMTP Relay con Mailjet

Mail Relay con smtp2go

 

Installing on Debian

curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
sudo sh setup-repos.sh
sudo apt-get install webmin --install-recommends

Abrir puerto 10000 en el cortafuegos

sudo ufw allow 10000

Acceso desde el navegador (introducir un user y password de un usuario en el equipo):
midominio.es:10000/

Instalar el módulo para administrar Nginx desde Webmin:

 

https://www.justindhoffman.com/sites/justindhoffman.com/files/nginx-0.11.wbm_.gz

En Ubuntu 20.04 da error en el módulo:

sudo apt install libhtml-parser-perl

  • Configurar un certificado de Let’s Encrypt para Webmin

Parar el servidor web

sudo systemctl stop nginx

Pedir el certificado de Let’s Encrypt en Webmin / Configuration / SSL Encryption

https://alumno.me:10000/webmin/edit_ssl.cgi?xnavigation=1

Iniciar de nuevo el servidor web

sudo systemctl start nginx
  • Crear un servidor virtual

Consola:

Creating a Virtual Host in NGINX

Webmin

server {
 listen 80;
 # sustituir usuario por el nombre de usuario usado
 root /home/usuario/ejemplo;
 # Add index.php to the list if you are using PHP
 index index.php index.html;
 # sustituir alumno.me por el dominio usado
 server_name laravel.alumno.me;
 location / {
            # First attempt to serve request as file, then as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
            }
}

aplicar los cambios en el servidor Nginx

dar permiso de acceso a la carpeta usuario al resto de usuarios (incluido www-data, el propietario del servidor web):

sudo chmod 755 /home/usuario

configurar el DNS en el droplet: añadir un registro tipo A

Crear el fichero /home/usuario/ejemplo/index.html:

cd ~
mkdir ejemplo
// sustituir alumno.me por el dominio usado
echo "Servidor virtual laravel.alumno.me" > ejemplo/index.html

instalar un certificado ssl:

// sustituir alumno.me por el dominio usado
sudo certbot --nginx -d laravel.alumno.me

Comprobar el acceso desde el navegador:

https://laravel.alumno.me

 

  • Usar netdata para monitorizar el funcionamiento del servidor:

Configurar Netdata

Webinar: ilert and Netdata – AIOps from Monitoring to Alerting

 

Recomendable:

– Instalar Midnight Commander (en el VPS), explorador de archivos en consola

sudo apt install mc

– Instalar Filezilla (en el equipo local), para transferir archivos entre el equipo local y el VPS

sudo apt install filezilla

– Montar el sistema de ficheros remoto del VPS en una carpeta en el equipo local:

cd ~
mkdir servidor
sudo apt install sshfs

sshfs  usuario@alumno.me:/home/usuario  servidor

y desmontarlo al terminar

fusermount -u servidor

Deja una respuesta